<?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>161581</bug_id>
          
          <creation_ts>2016-09-04 18:59:12 -0700</creation_ts>
          <short_desc>Make MarkedBlock state tracking support overlapped allocation and marking state</short_desc>
          <delta_ts>2016-09-28 17:09:10 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>160125</dependson>
    
    <dependson>161847</dependson>
    
    <dependson>161869</dependson>
    
    <dependson>161933</dependson>
          <blocked>162122</blocked>
    
    <blocked>162296</blocked>
    
    <blocked>149432</blocked>
    
    <blocked>162121</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1226322</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-04 18:59:12 -0700</bug_when>
    <thetext>For example, each MarkedAllocator could have a Vector&lt;std::unique_ptr&lt;MarkedBlock::Handle&gt;&gt; m_blocks.  Then it could have the following sets represented by bitvectors indexed by the handle&apos;s index in m_blocks:
- m_canAllocate, which contains all non-empty non-retired blocks.
- m_snapshot, which contains all blocks in the block snapshot.
- m_empty, which contains all empty blocks.
- m_eden, which contains all blocks that have new objects.
- m_allocated, which contains all blocks that have been completely filled up.

If we do this, then we can get rid of block state, the m_blocksWithNewObjects vector, and the block snapshot vector.  The following operations become cheap operations over bitvectors:

- All of the flips:
    - Full GC flip: m_empty = 0, m_canAllocate = 0, m_allocated = 0.
    - Eden GC flip: m_canAllocate |= m_eden, m_allocated = 0.
    - Full GC snapshot: m_snapshot = 1.
    - Eden GC snapshot: m_snapshot |= m_eden.

- All of the iterations:
    - Allocate: scan m_canAllocate, then scan m_empty, then scan m_empty of other size classes (so we can rebalance the heap cheaply!).
    - Incremental sweep: scan (m_snapshot &amp; ~m_allocated).

We could allocate WeakSets outside MarkedBlocks, and have them also be tracked in their own Vector&lt;std::unique_ptr&lt;WeakSet&gt;&gt;, owned by MarkedSpace, and also track various sets of them using bitvectors.

This ought to reduce any per-block overheads by so much that they should appear invisible.  We did lose some perf by going from 64KB to 16KB even with many optimizations, so this may be enough to bring us back to where we were before.  For example, consider what happens when we are using 200MB.  That means having to sometimes consider about 13000 blocks, which the current code does by looping over that many things, and those things are unlikely to reside on the same cache line.  But with bitvectors, the typical flipping operation would only have to touch 13000 / 8 = 1625 bytes of contiguous bits.  Using 64-bit operations, that means only having to loop over about 200 words.  That means that the previous flipping operations that would take about 13000 iterations just to touch each block will now only require 200 iterations - as in we actually have a chance of speeding up those operations by 65x.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226356</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-04 23:27:16 -0700</bug_when>
    <thetext>Another benefit of this approach is that on-the-fly retirement during marking will now be a CAS to clear the can-allocate bit rather than some crazy locking.

Maybe we can even make the clearing of the can-allocate bit racy.  In the worst case, we would forget that we had retired some blocks.  That&apos;s not the end of the world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226357</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-04 23:29:10 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; require 200 iterations - as in we actually have a chance of speeding up
&gt; those operations by 65x.

It&apos;s actually speeding up by exactly 64x.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228583</commentid>
    <comment_count>3</comment_count>
      <attachid>288519</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-10 20:53:08 -0700</bug_when>
    <thetext>Created attachment 288519
it begins

I&apos;m starting out by creating a super-flexible bitvector framework.  What I have now will make FastBitVector capable of the following amazing stuff:

FastBitVector a;
FastBitVector b;
FastBitVector c;
... // do things to populate a, b, c
auto intersection = a.bitAnd(b); // Returns a view of a &amp; b that is computed on the fly.
intersection.forEachSetBit([&amp;] (size_t i) { print(i); }); // Super efficiently walks the words of a &amp; b.
a.bitAnd(b.bitOr(c).bitNot()).forEachClearBit([&amp;] (size_t i) { print (i); });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228770</commentid>
    <comment_count>4</comment_count>
      <attachid>288574</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-12 09:59:10 -0700</bug_when>
    <thetext>Created attachment 288574
it begins for real

Starting to turn the MarkedAllocator into a thingy that does bitvectors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228782</commentid>
    <comment_count>5</comment_count>
      <attachid>288578</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-12 10:26:29 -0700</bug_when>
    <thetext>Created attachment 288578
a bit more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228833</commentid>
    <comment_count>6</comment_count>
      <attachid>288595</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-12 11:48:57 -0700</bug_when>
    <thetext>Created attachment 288595
I think that I know how to allocate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228859</commentid>
    <comment_count>7</comment_count>
      <attachid>288602</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-12 12:34:52 -0700</bug_when>
    <thetext>Created attachment 288602
sweeping is starting to make sense!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229178</commentid>
    <comment_count>8</comment_count>
      <attachid>288690</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-13 09:30:59 -0700</bug_when>
    <thetext>Created attachment 288690
I think that MarkedBlock looks good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229205</commentid>
    <comment_count>9</comment_count>
      <attachid>288699</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-13 10:57:36 -0700</bug_when>
    <thetext>Created attachment 288699
close to done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229216</commentid>
    <comment_count>10</comment_count>
      <attachid>288702</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-13 11:12:10 -0700</bug_when>
    <thetext>Created attachment 288702
holy cow it might be done

This patch turned out so wonderful.  I think I&apos;ve axed all of the block scans in the GC!

And look what we&apos;re left with.  For example, setting up the block states after marking:

    m_empty = m_live &amp; ~m_markingNotEmpty;
    m_canAllocate = m_live &amp; m_markingNotEmpty &amp; ~m_markingRetired;

Or snapshotting in an eden collection:

    m_snapshot |= m_eden;

It&apos;s like garbage poetry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229255</commentid>
    <comment_count>11</comment_count>
      <attachid>288714</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-13 12:22:51 -0700</bug_when>
    <thetext>Created attachment 288714
more things

I made a few changes after I thought through how a collection cycle really works.

I added a big comment that illustrates how the various bits work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229260</commentid>
    <comment_count>12</comment_count>
      <attachid>288716</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-13 12:36:30 -0700</bug_when>
    <thetext>Created attachment 288716
starting to compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229262</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-13 12:41:22 -0700</bug_when>
    <thetext>I changed the title of the bug to reflect the most significant end goal that this change achieves.

Even if it was perf-neutral, we&apos;d still take it since unlike trunk, this would take us a big step closer to allowing allocation to happen during marking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229383</commentid>
    <comment_count>14</comment_count>
      <attachid>288750</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-13 17:07:03 -0700</bug_when>
    <thetext>Created attachment 288750
more compiling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229400</commentid>
    <comment_count>15</comment_count>
      <attachid>288757</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-13 18:10:08 -0700</bug_when>
    <thetext>Created attachment 288757
it compiles!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229727</commentid>
    <comment_count>16</comment_count>
      <attachid>288855</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-14 14:06:11 -0700</bug_when>
    <thetext>Created attachment 288855
fixing it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229754</commentid>
    <comment_count>17</comment_count>
      <attachid>288866</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-14 14:50:20 -0700</bug_when>
    <thetext>Created attachment 288866
it just ran a program</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230106</commentid>
    <comment_count>18</comment_count>
      <attachid>288976</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-15 11:19:20 -0700</bug_when>
    <thetext>Created attachment 288976
it ran splay</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230440</commentid>
    <comment_count>19</comment_count>
      <attachid>289068</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-16 10:13:47 -0700</bug_when>
    <thetext>Created attachment 289068
it passed testapi in debug mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230488</commentid>
    <comment_count>20</comment_count>
      <attachid>289080</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-16 11:09:44 -0700</bug_when>
    <thetext>Created attachment 289080
more

It now has ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230506</commentid>
    <comment_count>21</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-16 11:34:00 -0700</bug_when>
    <thetext>Wow, it passes JSC tests!  Let&apos;s see what EWS has to say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230507</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-16 11:35:10 -0700</bug_when>
    <thetext>Attachment 289080 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:244:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:254:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:192:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:297:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:141:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 5 in 37 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>1230739</commentid>
    <comment_count>23</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-16 19:08:37 -0700</bug_when>
    <thetext>Something is wrong:

   earley                                            0.23629+-0.00409    !     0.28332+-0.00153       ! definitely 1.1990x slower

I&apos;m investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230862</commentid>
    <comment_count>24</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-17 11:22:47 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Something is wrong:
&gt; 
&gt;    earley                                            0.23629+-0.00409    !  
&gt; 0.28332+-0.00153       ! definitely 1.1990x slower
&gt; 
&gt; I&apos;m investigating.

Ha!  Found two issues:

1) When we moved a MarkedBlock from one allocator to another, we weren&apos;t fixing up its cellSize and attributes.  I have no idea why this didn&apos;t cause a ton of test failures.  I fixed it but now I&apos;m going to have to write some kind of test for it.  Though this wasn&apos;t the reason for the perf regression - I just found it while investigating.

2) The reason for the regression was that we were first allocating out of non-empty blocks and then allocating out of empty blocks. In practice this meant that we would spend more time overall allocating out of non-empty blocks, which meant doing more popping and less bumping.  It also seemed to create more fragmentation overall.  This was so easy to fix.  I just switched:

        m_allocationCursor = m_canAllocate.findBit(m_allocationCursor, true);

to this:

        m_allocationCursor = (m_canAllocate | m_empty).findBit(m_allocationCursor, true);

and voila, no regression on earley.

Still running other tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230864</commentid>
    <comment_count>25</comment_count>
      <attachid>289175</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-17 11:26:04 -0700</bug_when>
    <thetext>Created attachment 289175
fixed the earley regression, got what might be a splay progression!

Replaced the best-fit search (canAllocate first, empty second) with a first-fit search (scan both canAllocate and empty in tandem).  This seems to work a lot better.

Also fixed a bug where we weren&apos;t properly reassigning blocks between allocators.

Also made lookForEmptyBlocksInOtherAllocators into an Option.  It&apos;s great for debugging, since this feature is 100% optional for correctness and it&apos;s a super likely source of bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230867</commentid>
    <comment_count>26</comment_count>
      <attachid>289177</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-17 12:47:36 -0700</bug_when>
    <thetext>Created attachment 289177
looking quite nice indeed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230868</commentid>
    <comment_count>27</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-17 12:48:54 -0700</bug_when>
    <thetext>I messed with how WeakInlines.h gets included because it was causing a nasty header cycle, so this is going to require more header rewiring in the DOM.  I&apos;m going to do that next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230876</commentid>
    <comment_count>28</comment_count>
      <attachid>289178</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-17 15:41:01 -0700</bug_when>
    <thetext>Created attachment 289178
it should build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230877</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-17 15:43:17 -0700</bug_when>
    <thetext>Attachment 289178 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:244:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:254:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:83:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:85:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:96:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:192:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:297:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:156:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_internals_wrapper_header.py:65:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 9 in 45 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>1230878</commentid>
    <comment_count>30</comment_count>
      <attachid>289179</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-17 15:43:43 -0700</bug_when>
    <thetext>Created attachment 289179
performance

Looks to be neutral on things that matter.

I&apos;ll run in-browser benchmarks next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230880</commentid>
    <comment_count>31</comment_count>
      <attachid>289178</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-09-17 16:35:16 -0700</bug_when>
    <thetext>Comment on attachment 289178
it should build

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

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230881</commentid>
    <comment_count>32</comment_count>
      <attachid>289180</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-09-17 16:35:22 -0700</bug_when>
    <thetext>Created attachment 289180
Archive of layout-test-results from ews101 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews101  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230882</commentid>
    <comment_count>33</comment_count>
      <attachid>289178</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-09-17 16:39:53 -0700</bug_when>
    <thetext>Comment on attachment 289178
it should build

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

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230883</commentid>
    <comment_count>34</comment_count>
      <attachid>289181</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-09-17 16:39:58 -0700</bug_when>
    <thetext>Created attachment 289181
Archive of layout-test-results from ews107 for mac-yosemite-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107  Port: mac-yosemite-wk2  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230884</commentid>
    <comment_count>35</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-17 16:46:05 -0700</bug_when>
    <thetext>Wow. I bet I messed up the incremental sweeper. I&apos;ll investigate later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230885</commentid>
    <comment_count>36</comment_count>
      <attachid>289178</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-09-17 16:47:20 -0700</bug_when>
    <thetext>Comment on attachment 289178
it should build

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

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230886</commentid>
    <comment_count>37</comment_count>
      <attachid>289182</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-09-17 16:47:24 -0700</bug_when>
    <thetext>Created attachment 289182
Archive of layout-test-results from ews121 for ios-simulator-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews121  Port: ios-simulator-elcapitan-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230989</commentid>
    <comment_count>38</comment_count>
      <attachid>289211</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-18 14:21:06 -0700</bug_when>
    <thetext>Created attachment 289211
fixed the crashes

I was forgetting to set m_needsDestruction correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230990</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-18 14:23:48 -0700</bug_when>
    <thetext>Attachment 289211 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:241:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:251:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:83:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:85:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:96:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:192:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:297:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:156:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_internals_wrapper_header.py:65:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 9 in 45 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>1230992</commentid>
    <comment_count>40</comment_count>
      <attachid>289212</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-18 14:49:25 -0700</bug_when>
    <thetext>Created attachment 289212
more fixes

It passes tests for me.  I think it just needs some #include love to build on all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230993</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-18 14:51:05 -0700</bug_when>
    <thetext>Attachment 289212 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:241:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:251:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:83:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:85:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:96:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:192:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:297:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:156:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_internals_wrapper_header.py:65:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 9 in 46 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>1231102</commentid>
    <comment_count>42</comment_count>
      <attachid>289232</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-19 08:56:21 -0700</bug_when>
    <thetext>Created attachment 289232
fixed looking for empty blocks

The feature to look for empty blocks in other allocators didn&apos;t actually work, because MarkedSpace::m_allocatorForEmptyAllocation was stuck null.  Fixing that without doing anything else causes a splay regression and divergent memory usage (1GB after a couple seconds instead of steady at 200MB) because we didn&apos;t check for the need to collect until we failed in tryAllocateWithoutCollecting().  So, this also changes allocateSlowCaseImpl() to always check for the need to collect before doing tryAllocateWithoutCollecting().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231105</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-19 08:58:20 -0700</bug_when>
    <thetext>Attachment 289232 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:241:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:251:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:83:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:85:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:96:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:192:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:297:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:156:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_internals_wrapper_header.py:65:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 9 in 47 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231149</commentid>
    <comment_count>44</comment_count>
      <attachid>289238</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-19 10:48:28 -0700</bug_when>
    <thetext>Created attachment 289238
the patch

Still running experiments, but I think it&apos;s ready for review.

Note that some benchmarks regress when I enable searching for empty blocks, while others progress.  If I disable it, then this is perf-neutral.  That part of this patch is not on the critical path for concurrent GC.  I&apos;ll land with it either turned on or off depending on what all of the benchmarks say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231150</commentid>
    <comment_count>45</comment_count>
      <attachid>289239</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-19 10:49:40 -0700</bug_when>
    <thetext>Created attachment 289239
performance

Short programs that allocate lots of strings seem not to like searching for empty blocks in other allocators or the change to trigger GC as soon as the eden size is consumed.  Larger programs don&apos;t seem to mind this.  I&apos;m going to test in-browser next to get a definitive answer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231151</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-19 10:49:41 -0700</bug_when>
    <thetext>Attachment 289238 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:241:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:251:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:83:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:85:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:96:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:192:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:297:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:156:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_internals_wrapper_header.py:65:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 9 in 50 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>1231455</commentid>
    <comment_count>47</comment_count>
      <attachid>289291</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-19 17:32:37 -0700</bug_when>
    <thetext>Created attachment 289291
more

I&apos;ve made some changes to deal with a PLT regression.  I think I&apos;ve got it under control now.  Now I&apos;ll test it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231456</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-19 17:34:17 -0700</bug_when>
    <thetext>Attachment 289291 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:241:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:251:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:83:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:85:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:96:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:192:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:297:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:156:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_internals_wrapper_header.py:65:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 9 in 50 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>1231498</commentid>
    <comment_count>49</comment_count>
      <attachid>289306</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-19 20:45:17 -0700</bug_when>
    <thetext>Created attachment 289306
performance

neutral on everything except Microbenchmarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231499</commentid>
    <comment_count>50</comment_count>
      <attachid>289307</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-19 20:51:00 -0700</bug_when>
    <thetext>Created attachment 289307
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231500</commentid>
    <comment_count>51</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-19 20:54:02 -0700</bug_when>
    <thetext>Attachment 289307 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:241:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:251:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:83:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:85:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:96:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:192:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:297:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:156:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_internals_wrapper_header.py:65:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 9 in 50 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>1231716</commentid>
    <comment_count>52</comment_count>
      <attachid>289364</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-20 09:55:46 -0700</bug_when>
    <thetext>Created attachment 289364
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231720</commentid>
    <comment_count>53</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-20 09:57:48 -0700</bug_when>
    <thetext>Attachment 289364 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:241:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:251:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:83:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:85:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:96:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:192:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:297:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:156:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_internals_wrapper_header.py:65:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 9 in 50 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>1231725</commentid>
    <comment_count>54</comment_count>
      <attachid>289367</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-20 10:03:46 -0700</bug_when>
    <thetext>Created attachment 289367
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231730</commentid>
    <comment_count>55</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-20 10:05:52 -0700</bug_when>
    <thetext>Attachment 289367 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:241:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:251:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:83:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:85:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/WeakGCMap.h:96:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:192:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/SlotVisitor.cpp:297:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:156:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_internals_wrapper_header.py:65:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 9 in 50 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>1231790</commentid>
    <comment_count>56</comment_count>
      <attachid>289367</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-09-20 11:07:24 -0700</bug_when>
    <thetext>Comment on attachment 289367
the patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:81
&gt; +        Browser benchmarks:

Did the rebalancing feature produce a high watermark memory reduction in the end on v8-splay or v8-earley?

&gt; Source/JavaScriptCore/heap/MarkedAllocator.cpp:349
&gt; +        // FIXME: Make this work again.
&gt; +        // https://bugs.webkit.org/show_bug.cgi?id=162296

Should probably RELEASE_ASSERT here so someone doesn&apos;t fall into a trap.

&gt; Source/JavaScriptCore/heap/MarkedAllocator.h:84
&gt; +// - by default we have clear markingNotEmpty/markingRetired bits.

cleared?

&gt; Source/JavaScriptCore/heap/MarkedAllocator.h:134
&gt; +// After this, we just need to answer the question: what does an object allocated during eden GC
&gt; +// look like to the GC?
&gt; +//
&gt; +// I&apos;ve come up with two compelling answers.

I think the paragraphs below belong better in a comment on a concurrent GC bugzilla or in the ChangeLog. For the time being, they don&apos;t describe the behavior of the code.

&gt; Source/JavaScriptCore/heap/MarkedAllocator.h:145
&gt; +// we&apos;d make the object is eligible for freeing at the next eden GC. There&apos;s a bunch of things we

is eligible

&gt; Source/JavaScriptCore/heap/MarkedSpace.cpp:241
&gt; +        //dataLog(&quot;Allocated &quot;, RawPointer(result), &quot;\n&quot;);

Revert.

&gt; Source/JavaScriptCore/heap/MarkedSpace.cpp:251
&gt; +        //dataLog(&quot;Try-allocated &quot;, RawPointer(result), &quot;\n&quot;);

Revert.

&gt; Source/JavaScriptCore/heap/SlotVisitor.cpp:297
&gt; +    //dataLog(&quot;Visiting &quot;, RawPointer(cell), &quot;\n&quot;);

Revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231798</commentid>
    <comment_count>57</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-20 11:11:51 -0700</bug_when>
    <thetext>(In reply to comment #56)
&gt; Comment on attachment 289367 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=289367&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:81
&gt; &gt; +        Browser benchmarks:
&gt; 
&gt; Did the rebalancing feature produce a high watermark memory reduction in the
&gt; end on v8-splay or v8-earley?

It did.  It reduces the heap capacity in splay from ~200KB to ~180KB.  I&apos;ll note it in the changelog.

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedAllocator.cpp:349
&gt; &gt; +        // FIXME: Make this work again.
&gt; &gt; +        // https://bugs.webkit.org/show_bug.cgi?id=162296
&gt; 
&gt; Should probably RELEASE_ASSERT here so someone doesn&apos;t fall into a trap.

Good idea.

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedAllocator.h:84
&gt; &gt; +// - by default we have clear markingNotEmpty/markingRetired bits.
&gt; 
&gt; cleared?

Yup.

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedAllocator.h:134
&gt; &gt; +// After this, we just need to answer the question: what does an object allocated during eden GC
&gt; &gt; +// look like to the GC?
&gt; &gt; +//
&gt; &gt; +// I&apos;ve come up with two compelling answers.
&gt; 
&gt; I think the paragraphs below belong better in a comment on a concurrent GC
&gt; bugzilla or in the ChangeLog. For the time being, they don&apos;t describe the
&gt; behavior of the code.

Removed.

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedAllocator.h:145
&gt; &gt; +// we&apos;d make the object is eligible for freeing at the next eden GC. There&apos;s a bunch of things we
&gt; 
&gt; is eligible
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedSpace.cpp:241
&gt; &gt; +        //dataLog(&quot;Allocated &quot;, RawPointer(result), &quot;\n&quot;);
&gt; 
&gt; Revert.
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedSpace.cpp:251
&gt; &gt; +        //dataLog(&quot;Try-allocated &quot;, RawPointer(result), &quot;\n&quot;);
&gt; 
&gt; Revert.
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/SlotVisitor.cpp:297
&gt; &gt; +    //dataLog(&quot;Visiting &quot;, RawPointer(cell), &quot;\n&quot;);
&gt; 
&gt; Revert.

I removed these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231799</commentid>
    <comment_count>58</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-20 11:14:53 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/206154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234624</commentid>
    <comment_count>59</comment_count>
      <attachid>289367</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-28 17:07:40 -0700</bug_when>
    <thetext>Comment on attachment 289367
the patch

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

&gt; Source/JavaScriptCore/heap/Heap.cpp:1079
&gt; +    if (false) {

Is it worth putting this under logGC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234625</commentid>
    <comment_count>60</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-28 17:08:25 -0700</bug_when>
    <thetext>This looks like a 3-4% octane progression on macs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234627</commentid>
    <comment_count>61</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-28 17:09:10 -0700</bug_when>
    <thetext>(In reply to comment #60)
&gt; This looks like a 3-4% octane progression on macs.

And on some iOS devices as well.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288519</attachid>
            <date>2016-09-10 20:53:08 -0700</date>
            <delta_ts>2016-09-12 09:59:10 -0700</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>21139</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCShy
ZXZpc2lvbiAyMDU3NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsMjkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldE5leHRCbG9ja1RvU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIAogICAg
IEZyZWVMaXN0IG1fZnJlZUxpc3Q7CisgICAgCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxN
YXJrZWRCbG9jazo6SGFuZGxlPj4gbV9ibG9ja3M7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2Zy
ZWVCbG9ja0luZGljZXM7CisgICAgCisgICAgLy8gTm90ZTogYSBkZWFkIGJsb2NrIHNob3VsZCBo
YXZlIHplcm8gaW4gYWxsIGJpdHMuCisgICAgRmFzdEJpdFZlY3RvciBtX2xpdmU7IC8vIFRoZSBz
ZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4KKyAgICBGYXN0Qml0
VmVjdG9yIG1fZW1wdHk7IC8vIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2
ZSBvYmplY3RzLgorICAgIEZhc3RCaXRWZWN0b3IgbV9hbGxvY2F0ZWQ7IC8vIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4KKyAgICBGYXN0Qml0VmVj
dG9yIG1fY2FuQWxsb2NhdGU7IC8vIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNhbiBiZSBh
bGxvY2F0ZWQgaW4gcmlnaHQgbm93LgorICAgIEZhc3RCaXRWZWN0b3IgbV9lZGVuOyAvLyBUaGUg
c2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG9iamVjdHMgaW4gZWRlbi4KKyAgICBGYXN0Qml0
VmVjdG9yIG1fc25hcHNob3Q7IC8vIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNvdWxkIGJl
IHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLgorICAgIAorICAgIC8vIFRoZXNlIGFy
ZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gV2UgdXNlIHRoZW0gYWZ0ZXIgbWFya2luZyB0byBj
b21wdXRlIG1fZW1wdHkgYW5kCisgICAgLy8gbV9jYW5BbGxvY2F0ZToKKyAgICAvLworICAgIC8v
IG1fZW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHkKKyAgICAvLyBtX2NhbkFsbG9j
YXRlID0gbV9saXZlICYgfm1fbWFya2luZ1JldGlyZWQgJiBtX21hcmtpbmdOb3RFbXB0eQorICAg
IEZhc3RCaXRWZWN0b3IgbV9tYXJraW5nTm90RW1wdHk7IC8vIFRoZSBzZXQgb2YgYWxsIGJsb2Nr
cyB0aGF0IGFyZSBub3QgZW1wdHkuCisgICAgRmFzdEJpdFZlY3RvciBtX21hcmtpbmdSZXRpcmVk
OyAvLyBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBzaG91bGQgYmUgcmV0aXJlZC4KKyAgICAK
KyAgICB1bnNpZ25lZCBtX2FsbG9jYXRpb25DdXJzb3I7IC8vIFBvaW50cyB0byB0aGUgbmV4dCBi
bG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBhbGxvY2F0aW9uLgorICAgIHVuc2lnbmVkIG1f
c25hcHNob3RDdXJzb3I7IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2Fu
ZGlkYXRlIGZvciBpbmNyZW1lbnRhbCBzd2VlcGluZy4KKyAgICAKICAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBtX2N1cnJlbnRCbG9jazsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2xhc3RB
Y3RpdmVCbG9jazsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHRCbG9ja1RvU3dlZXA7
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9CaXRWZWN0b3IuaAkocmV2aXNpb24gMjA1NzY3KQorKysgU291cmNlL1dURi93dGYv
Qml0VmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMywyMSArNDAzLDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIHNpemUoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIGJvb2wgZmlu
ZEJpdEluV29yZCh1aW50cHRyX3Qgd29yZCwgc2l6ZV90JiBpbmRleCwgc2l6ZV90IGVuZEluZGV4
LCBib29sIHZhbHVlKQotICAgIHsKLSAgICAgICAgd29yZCA+Pj0gaW5kZXg7Ci0gICAgICAgIAot
ICAgICAgICB3aGlsZSAoaW5kZXggPCBlbmRJbmRleCkgewotICAgICAgICAgICAgaWYgKCh3b3Jk
ICYgMSkgPT0gc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBpbmRleCsrOwotICAgICAgICAgICAgd29yZCA+Pj0g
MTsKLSAgICAgICAgfQotCi0gICAgICAgIGluZGV4ID0gZW5kSW5kZXg7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgCiAgICAgY2xhc3MgT3V0T2ZMaW5lQml0cyB7CiAgICAgcHVi
bGljOgogICAgICAgICBzaXplX3QgbnVtQml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQml0czsg
fQpJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKHJldmlzaW9uIDIwNTc2NykKKysrIFNv
dXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmFzdEJpdFZlY3Rvci5oIgotCi0jaW5jbHVkZSAi
UHJpbnRTdHJlYW0uaCIKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgRmFzdEJpdFZlY3Rvcjo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX251bUJpdHM7ICsraSkKLSAgICAgICAgb3V0LnByaW50KGdldChpKSA/ICIxIiA6ICIt
Iik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5o
CShyZXZpc2lvbiAyMDU3NjcpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDQyICszMywxMDkgQEAgbmFtZXNwYWNlIFdURiB7
CiAKIGNsYXNzIFByaW50U3RyZWFtOwogCi1jbGFzcyBGYXN0Qml0VmVjdG9yIHsKK2lubGluZSBz
aXplX3QgZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKHNpemVfdCBudW1CaXRzKSB7IHJldHVybiAo
bnVtQml0cyArIDMxKSA+PiA1OyB9CisKK2NsYXNzIEZhc3RCaXRWZWN0b3JXb3JkVmlldyB7CiBw
dWJsaWM6Ci0gICAgRmFzdEJpdFZlY3RvcigpID0gZGVmYXVsdDsKKyAgICB0eXBlZGVmIEZhc3RC
aXRWZWN0b3JXb3JkVmlldyBWaWV3VHlwZTsKKyAgICAKKyAgICBGYXN0Qml0VmVjdG9yV29yZFZp
ZXcoKSB7IH0KKyAgICAKKyAgICBGYXN0Qml0VmVjdG9yV29yZFZpZXcoY29uc3QgdWludDMyX3Qq
IGFycmF5LCBzaXplX3QgbnVtQml0cykKKyAgICAgICAgOiBtX3dvcmRzKGFycmF5KQorICAgICAg
ICAsIG1fbnVtQml0cyhudW1CaXRzKQorICAgIHsKKyAgICB9CisgICAgCisgICAgc2l6ZV90IG51
bUJpdHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbnVtQml0czsKKyAgICB9Cisg
ICAgCisgICAgdWludDMyX3Qgd29yZChzaXplX3QgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IGFycmF5TGVuZ3RoKCkp
OworICAgICAgICByZXR1cm4gbV93b3Jkc1tpbmRleF07CisgICAgfQorICAgIAorcHJpdmF0ZToK
KyAgICBjb25zdCB1aW50MzJfdCogbV93b3JkcyB7IG51bGxwdHIgfTsKKyAgICBzaXplX3QgbV9u
dW1CaXRzIHsgMCB9OworfTsKIAotICAgIEZhc3RCaXRWZWN0b3IoRmFzdEJpdFZlY3RvciYmIG90
aGVyKQotICAgICAgICA6IG1fYXJyYXkoc3RkOjpleGNoYW5nZShvdGhlci5tX2FycmF5LCBudWxs
cHRyKSkKK2NsYXNzIEZhc3RCaXRWZWN0b3JXb3JkT3duZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZhc3RCaXRWZWN0b3JXb3JkT3duZXIpOworcHVibGljOgorICAgIHR5cGVkZWYgRmFz
dEJpdFZlY3RvcldvcmRWaWV3IFZpZXdUeXBlOworICAgIAorICAgIEZhc3RCaXRWZWN0b3JXb3Jk
T3duZXIoKSA9IGRlZmF1bHQ7CisgICAgCisgICAgRmFzdEJpdFZlY3RvcldvcmRPd25lcihGYXN0
Qml0VmVjdG9yV29yZE93bmVyJiYgb3RoZXIpCisgICAgICAgIDogbV93b3JkcyhzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fd29yZHMsIG51bGxwdHIpKQogICAgICAgICAsIG1fbnVtQml0cyhzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fbnVtQml0cywgMCkpCiAgICAgewogICAgIH0KIAotICAgIEZhc3RCaXRW
ZWN0b3IoY29uc3QgRmFzdEJpdFZlY3RvciYgb3RoZXIpCi0gICAgICAgIDogbV9hcnJheSgwKQot
ICAgICAgICAsIG1fbnVtQml0cygwKQorICAgIEZhc3RCaXRWZWN0b3JXb3JkT3duZXIoY29uc3Qg
RmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCiAgICAgewogICAgICAgICAqdGhpcyA9IG90
aGVyOwogICAgIH0KICAgICAKLSAgICB+RmFzdEJpdFZlY3RvcigpCisgICAgfkZhc3RCaXRWZWN0
b3JXb3JkT3duZXIoKQogICAgIHsKLSAgICAgICAgaWYgKG1fYXJyYXkpCi0gICAgICAgICAgICBm
YXN0RnJlZShtX2FycmF5KTsKKyAgICAgICAgaWYgKG1fd29yZHMpCisgICAgICAgICAgICBmYXN0
RnJlZShtX3dvcmRzKTsKICAgICB9CiAgICAgCi0gICAgRmFzdEJpdFZlY3RvciYgb3BlcmF0b3I9
KGNvbnN0IEZhc3RCaXRWZWN0b3ImIG90aGVyKQorICAgIEZhc3RCaXRWZWN0b3JXb3JkVmlldyB2
aWV3KCkgY29uc3QgeyByZXR1cm4gRmFzdEJpdFZlY3RvcldvcmRWaWV3KG1fd29yZHMsIG1fbnVt
Qml0cyk7IH0KKyAgICAKKyAgICBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvcGVyYXRvcj0oY29u
c3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCiAgICAgewogICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gb3RoZXIuYXJyYXlMZW5ndGgoKTsKKyAgICAgICAgaWYgKGxlbmd0aCA9PSBhcnJh
eUxlbmd0aCgpKSB7CisgICAgICAgICAgICBtZW1jcHkobV93b3Jkcywgb3RoZXIubV93b3Jkcywg
bGVuZ3RoICogNCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdWlu
dDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKGxlbmd0
aCwgNCkpOwotICAgICAgICBtZW1jcHkobmV3QXJyYXksIG90aGVyLm1fYXJyYXksIGxlbmd0aCAq
IDQpOwotICAgICAgICBpZiAobV9hcnJheSkKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fYXJyYXkp
OwotICAgICAgICBtX2FycmF5ID0gbmV3QXJyYXk7CisgICAgICAgIG1lbWNweShuZXdBcnJheSwg
b3RoZXIubV93b3JkcywgbGVuZ3RoICogNCk7CisgICAgICAgIGlmIChtX3dvcmRzKQorICAgICAg
ICAgICAgZmFzdEZyZWUobV93b3Jkcyk7CisgICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsKICAg
ICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwogICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgfQogICAgIAotICAgIHNpemVfdCBudW1CaXRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1C
aXRzOyB9CisgICAgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3BlcmF0b3I9KEZhc3RCaXRWZWN0
b3JXb3JkT3duZXImJiBvdGhlcikKKyAgICB7CisgICAgICAgIHN0ZDo6c3dhcChtX3dvcmRzLCBv
dGhlci5tX3dvcmRzKTsKKyAgICAgICAgc3RkOjpzd2FwKG1fbnVtQml0cywgb3RoZXIubV9udW1C
aXRzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRBbGwoKQorICAgIHsKKyAgICAgICAgbWVt
c2V0KG1fd29yZHMsIDI1NSwgYXJyYXlMZW5ndGgoKSAqIDQpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGNsZWFyQWxsKCkKKyAgICB7CisgICAgICAgIG1lbXNldChtX3dvcmRzLCAwLCBhcnJheUxl
bmd0aCgpICogNCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0KGNvbnN0IEZhc3RCaXRWZWN0
b3JXb3JkT3duZXImIG90aGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04obV9udW1CaXRzID09IG90aGVyLm1fbnVtQml0cyk7CisgICAgICAgIG1lbWNw
eShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBhcnJheUxlbmd0aCgpICogNCk7CisgICAgfQorICAg
IAorICAgIHNpemVfdCBudW1CaXRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX251
bUJpdHM7CisgICAgfQorICAgIAorICAgIHNpemVfdCBhcnJheUxlbmd0aCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSk7Cisg
ICAgfQogICAgIAogICAgIHZvaWQgcmVzaXplKHNpemVfdCBudW1CaXRzKQogICAgIHsKQEAgLTg3
LDEyNCArMTU0LDMzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbnVtQml0cyA9IG51bUJpdHM7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgc2V0QWxsKCkKKyAgICB1aW50MzJfdCB3b3JkKHNpemVfdCBp
bmRleCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1lbXNldChtX2FycmF5LCAyNTUsIGFycmF5TGVu
Z3RoKCkgKiA0KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5k
ZXggPCBhcnJheUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIG1fd29yZHNbaW5kZXhdOwogICAg
IH0KICAgICAKLSAgICB2b2lkIGNsZWFyQWxsKCkKKyAgICB1aW50MzJfdCYgd29yZChzaXplX3Qg
aW5kZXgpCiAgICAgewotICAgICAgICBtZW1zZXQobV9hcnJheSwgMCwgYXJyYXlMZW5ndGgoKSAq
IDQpOworICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IGFy
cmF5TGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gbV93b3Jkc1tpbmRleF07CiAgICAgfQogICAg
IAotICAgIHZvaWQgc2V0KGNvbnN0IEZhc3RCaXRWZWN0b3ImIG90aGVyKQorICAgIGNvbnN0IHVp
bnQzMl90KiB3b3JkcygpIGNvbnN0IHsgcmV0dXJuIG1fd29yZHM7IH0KKyAgICB1aW50MzJfdCog
d29yZHMoKSB7IHJldHVybiBtX3dvcmRzOyB9CisKK3ByaXZhdGU6CisgICAgdWludDMyX3QqIG1f
d29yZHMgeyBudWxscHRyIH07CisgICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIExlZnQsIHR5cGVuYW1lIFJpZ2h0PgorY2xhc3MgRmFzdEJpdFZlY3Rv
ckFuZFdvcmRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEZhc3RCaXRWZWN0b3JBbmRXb3JkcyBW
aWV3VHlwZTsKKyAgICAKKyAgICBGYXN0Qml0VmVjdG9yQW5kV29yZHMoY29uc3QgTGVmdCYgbGVm
dCwgY29uc3QgUmlnaHQmIHJpZ2h0KQorICAgICAgICA6IG1fbGVmdChsZWZ0KQorICAgICAgICAs
IG1fcmlnaHQocmlnaHQpCiAgICAgewotICAgICAgICBBU1NFUlQobV9udW1CaXRzID09IG90aGVy
Lm1fbnVtQml0cyk7Ci0gICAgICAgIG1lbWNweShtX2FycmF5LCBvdGhlci5tX2FycmF5LCBhcnJh
eUxlbmd0aCgpICogNCk7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KG1fbGVmdC5udW1CaXRzKCkgPT0gbV9yaWdodC5udW1CaXRzKCkpOwogICAgIH0KICAgICAKLSAg
ICBib29sIHNldEFuZENoZWNrKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG90aGVyKQorICAgIEZhc3RC
aXRWZWN0b3JBbmRXb3JkcyB2aWV3KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAKKyAg
ICBzaXplX3QgbnVtQml0cygpIGNvbnN0CiAgICAgewotICAgICAgICBib29sIGNoYW5nZWQgPSBm
YWxzZTsKLSAgICAgICAgQVNTRVJUKG1fbnVtQml0cyA9PSBvdGhlci5tX251bUJpdHMpOwotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcnJheUxlbmd0aCgpOyBpLS07KSB7Ci0gICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1fYXJyYXlbaV0gIT0gb3RoZXIubV9hcnJheVtpXTsKLSAgICAgICAgICAg
IG1fYXJyYXlbaV0gPSBvdGhlci5tX2FycmF5W2ldOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBjaGFuZ2VkOworICAgICAgICByZXR1cm4gbV9sZWZ0Lm51bUJpdHMoKTsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBlcXVhbHMoY29uc3QgRmFzdEJpdFZlY3RvciYgb3RoZXIpIGNvbnN0CisgICAg
dWludDMyX3Qgd29yZChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQo
bV9udW1CaXRzID09IG90aGVyLm1fbnVtQml0cyk7Ci0gICAgICAgIC8vIFVzZSBteSBvd24gY29t
cGFyaXNvbiBsb29wIGJlY2F1c2UgbWVtY21wIGRvZXMgbW9yZSB0aGFuIHdoYXQgSSB3YW50Ci0g
ICAgICAgIC8vIGFuZCBiY21wIGlzIG5vdCBhcyBzdGFuZGFyZC4KLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gYXJyYXlMZW5ndGgoKTsgaS0tOykgewotICAgICAgICAgICAgaWYgKG1fYXJyYXlb
aV0gIT0gb3RoZXIubV9hcnJheVtpXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBtX2xlZnQud29y
ZChpbmRleCkgJiBtX3JpZ2h0LndvcmQoaW5kZXgpOwogICAgIH0KICAgICAKLSAgICB2b2lkIG1l
cmdlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG90aGVyKQorcHJpdmF0ZToKKyAgICBMZWZ0IG1fbGVm
dDsKKyAgICBSaWdodCBtX3JpZ2h0OworfTsKKyAgICAKK3RlbXBsYXRlPHR5cGVuYW1lIExlZnQs
IHR5cGVuYW1lIFJpZ2h0PgorY2xhc3MgRmFzdEJpdFZlY3Rvck9yV29yZHMgeworcHVibGljOgor
ICAgIHR5cGVkZWYgRmFzdEJpdFZlY3Rvck9yV29yZHMgVmlld1R5cGU7CisgICAgCisgICAgRmFz
dEJpdFZlY3Rvck9yV29yZHMoY29uc3QgTGVmdCYgbGVmdCwgY29uc3QgUmlnaHQmIHJpZ2h0KQor
ICAgICAgICA6IG1fbGVmdChsZWZ0KQorICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgewot
ICAgICAgICBBU1NFUlQobV9udW1CaXRzID09IG90aGVyLm1fbnVtQml0cyk7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGFycmF5TGVuZ3RoKCk7IGktLTspCi0gICAgICAgICAgICBtX2FycmF5
W2ldIHw9IG90aGVyLm1fYXJyYXlbaV07CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKG1fbGVmdC5udW1CaXRzKCkgPT0gbV9yaWdodC5udW1CaXRzKCkpOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIGZpbHRlcihjb25zdCBGYXN0Qml0VmVjdG9yJiBvdGhlcikKKyAgICBG
YXN0Qml0VmVjdG9yT3JXb3JkcyB2aWV3KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAK
KyAgICBzaXplX3QgbnVtQml0cygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV9udW1C
aXRzID09IG90aGVyLm1fbnVtQml0cyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFycmF5
TGVuZ3RoKCk7IGktLTspCi0gICAgICAgICAgICBtX2FycmF5W2ldICY9IG90aGVyLm1fYXJyYXlb
aV07CisgICAgICAgIHJldHVybiBtX2xlZnQubnVtQml0cygpOwogICAgIH0KICAgICAKLSAgICB2
b2lkIGV4Y2x1ZGUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3RoZXIpCisgICAgdWludDMyX3Qgd29y
ZChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV9udW1CaXRzID09
IG90aGVyLm1fbnVtQml0cyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFycmF5TGVuZ3Ro
KCk7IGktLTspCi0gICAgICAgICAgICBtX2FycmF5W2ldICY9IH5vdGhlci5tX2FycmF5W2ldOwor
ICAgICAgICByZXR1cm4gbV9sZWZ0LndvcmQoaW5kZXgpIHwgbV9yaWdodC53b3JkKGluZGV4KTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQoc2l6ZV90IGkpCitwcml2YXRlOgorICAgIExlZnQg
bV9sZWZ0OworICAgIFJpZ2h0IG1fcmlnaHQ7Cit9OworICAgIAordGVtcGxhdGU8dHlwZW5hbWUg
Vmlldz4KK2NsYXNzIEZhc3RCaXRWZWN0b3JOb3RXb3JkcyB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBGYXN0Qml0VmVjdG9yTm90V29yZHMgVmlld1R5cGU7CisgICAgCisgICAgRmFzdEJpdFZlY3Rv
ck5vdFdvcmRzKGNvbnN0IFZpZXcmIHZpZXcpCisgICAgICAgIDogbV92aWV3KHZpZXcpCiAgICAg
ewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9udW1CaXRz
KTsKLSAgICAgICAgbV9hcnJheVtpID4+IDVdIHw9ICgxIDw8IChpICYgMzEpKTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBjbGVhcihzaXplX3QgaSkKKyAgICBGYXN0Qml0VmVjdG9yTm90V29yZHMg
dmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgCisgICAgc2l6ZV90IG51bUJpdHMo
KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
aSA8IG1fbnVtQml0cyk7Ci0gICAgICAgIG1fYXJyYXlbaSA+PiA1XSAmPSB+KDEgPDwgKGkgJiAz
MSkpOworICAgICAgICByZXR1cm4gbV92aWV3Lm51bUJpdHMoKTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBzZXQoc2l6ZV90IGksIGJvb2wgdmFsdWUpCisgICAgdWludDMyX3Qgd29yZChzaXplX3Qg
aW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1fdmlldy53b3JkKGluZGV4KTsK
KyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFZpZXcgbV92aWV3OworfTsKKyAgICAKK3RlbXBs
YXRlPHR5cGVuYW1lIFdvcmRzPgorY2xhc3MgRmFzdEJpdFZlY3RvckltcGw8V29yZHM+IHsKK3B1
YmxpYzoKKyAgICBGYXN0Qml0VmVjdG9ySW1wbCgpCisgICAgICAgIDogbV93b3JkcygpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBGYXN0Qml0VmVjdG9ySW1wbChjb25zdCBXb3JkcyYgd29yZHMp
CisgICAgICAgIDogbV93b3Jkcyh3b3JkcykKKyAgICB7CisgICAgfQorICAgIAorICAgIEZhc3RC
aXRWZWN0b3JJbXBsKFdvcmRzJiYgd29yZHMpCisgICAgICAgIDogbV93b3JkcyhXVEZNb3ZlKHdv
cmRzKSkKICAgICB7Ci0gICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgIHNldChpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgY2xlYXIoaSk7CisgICAgfQorCisgICAgc2l6ZV90IG51
bUJpdHMoKSBjb25zdCB7IHJldHVybiBtX3dvcmRzLm51bUJpdHMoKTsgfQorICAgIHNpemVfdCBh
cnJheUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1C
aXRzKCkpOyB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXI+CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE90aGVyJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChu
dW1CaXRzKCkgIT0gb3RoZXIubnVtQml0cygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gYXJyYXlMZW5ndGgoKTsgaS0tOykgeworICAgICAgICAg
ICAgaWYgKG1fd29yZHMud29yZChpKSAhPSBvdGhlci5tX3dvcmRzLndvcmQoaSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICAKLSAgICBib29sIGdldChzaXplX3QgaSkgY29uc3QKKyAgICBib29sIGdldChz
aXplX3QgaW5kZXgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihpIDwgbV9udW1CaXRzKTsKLSAgICAgICAgcmV0dXJuICEhKG1fYXJyYXlbaSA+
PiA1XSAmICgxIDw8IChpICYgMzEpKSk7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGluZGV4IDwgbV9udW1CaXRzKTsKKyAgICAgICAgcmV0dXJuICEhKG1fd29yZHMu
d29yZChpbmRleCA+PiA1KSAmICgxIDw8IChpbmRleCAmIDMxKSkpOwogICAgIH0KICAgICAKICAg
ICBzaXplX3QgYml0Q291bnQoKSBjb25zdAogICAgIHsKICAgICAgICAgc2l6ZV90IHJlc3VsdCA9
IDA7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFycmF5TGVuZ3RoKCk7IGktLTspCi0gICAg
ICAgICAgICByZXN1bHQgKz0gV1RGOjpiaXRDb3VudChtX2FycmF5W2ldKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaW5kZXggPSBhcnJheUxlbmd0aCgpOyBpbmRleC0tOykKKyAgICAgICAgICAgIHJl
c3VsdCArPSBXVEY6OmJpdENvdW50KG1fd29yZHMud29yZChpbmRleCkpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgot
ICAgIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZvckVhY2hC
aXQoYm9vbCB2YWx1ZSwgY29uc3QgRnVuYyYgZnVuYykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IG4gPSBhcnJheUxlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsg
KytpKSB7Ci0gICAgICAgICAgICB1aW50MzJfdCB3b3JkID0gbV9hcnJheVtpXTsKKyAgICAgICAg
c2l6ZV90IG4gPSBtX3dvcmRzLmFycmF5TGVuZ3RoKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICB1aW50MzJfdCB3b3JkID0gbV93b3Jkcy53
b3JkKGkpOwogICAgICAgICAgICAgdW5zaWduZWQgaiA9IGkgPDwgNTsKICAgICAgICAgICAgIHdo
aWxlICh3b3JkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdvcmQgJiAxKQotICAgICAgICAgICAg
ICAgICAgICBmdW5jdG9yKGopOworICAgICAgICAgICAgICAgIGlmICgod29yZCAmIDEpID09IHN0
YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGZ1bmMoaik7
CiAgICAgICAgICAgICAgICAgd29yZCA+Pj0gMTsKICAgICAgICAgICAgICAgICBqKys7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBm
dW5jKQorICAgIHsKKyAgICAgICAgZm9yRWFjaEJpdCh0cnVlLCBmdW5jKTsKKyAgICB9CisgICAg
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZm9y
RWFjaENsZWFyQml0KGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBmb3JFYWNoQml0
KGZhbHNlLCBmdW5jKTsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSBzaXplX3QgZmlu
ZEJpdChzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICAvLyBUdXJucyAw
YjAgaW50byAwYjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExIGFuZCAwYjEgaW50byAw
YjAuCisgICAgICAgIHVpbnRwdHJfdCBza2lwVmFsdWUgPSAtKHN0YXRpY19jYXN0PHVpbnQzMl90
Pih2YWx1ZSkgXiAxKTsKKyAgICAgICAgc2l6ZV90IG51bVdvcmRzID0gbV93b3Jkcy5hcnJheUxl
bmd0aCgpOworICAgICAgICAKKyAgICAgICAgc2l6ZV90IHdvcmRJbmRleCA9IHN0YXJ0SW5kZXgg
Pj4gNTsKKyAgICAgICAgc2l6ZV90IHN0YXJ0SW5kZXhJbldvcmQgPSBzdGFydEluZGV4IC0gKHdv
cmRJbmRleCA8PCA1KTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlICh3b3JkSW5kZXggPCBudW1X
b3JkcykgeworICAgICAgICAgICAgdWludDMyX3Qgd29yZCA9IG1fd29yZHMud29yZCh3b3JkSW5k
ZXgpOworICAgICAgICAgICAgaWYgKHdvcmQgIT0gc2tpcFZhbHVlKSB7CisgICAgICAgICAgICAg
ICAgc2l6ZV90IGluZGV4ID0gc3RhcnRJbmRleEluV29yZDsKKyAgICAgICAgICAgICAgICBpZiAo
ZmluZEJpdEluV29yZCh3b3JkLCBpbmRleCwgMzIsIHZhbHVlKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHdvcmRJbmRleCAqIDMyICsgaW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIHdvcmRJbmRleCsrOworICAgICAgICAgICAgc3RhcnRJbmRleElu
V29yZCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBudW1CaXRzKCk7
CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgc2l6ZV90IGZpbmRTZXRCaXQoc2l6ZV90
IGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpbmRCaXQoaW5kZXgsIHRydWUpOworICAg
IH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kQ2xlYXJCaXQoc2l6ZV90IGlu
ZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpbmRCaXQoaW5kZXgsIGZhbHNlKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUJpdHMoKTsgKytpKQorICAgICAgICAgICAg
b3V0LnByaW50KGdldChpKSA/ICIxIiA6ICItIik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE90aGVyV29yZHM+CisgICAgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3Rv
ckFuZFdvcmRzPHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSwgdHlwZW5hbWUgT3RoZXJXb3Jkczo6
Vmlld1R5cGU+PiBiaXRBbmQoY29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEZhc3RCaXRWZWN0b3JJbXBsPEZhc3RC
aXRWZWN0b3JBbmRXb3Jkczx0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUsIHR5cGVuYW1lIE90aGVy
V29yZHM6OlZpZXdUeXBlPj4oRmFzdEJpdFZlY3RvckFuZFdvcmRzPHR5cGVuYW1lIFdvcmRzOjpW
aWV3VHlwZSwgdHlwZW5hbWUgT3RoZXJXb3Jkczo6Vmlld1R5cGU+KG1fd29yZHMudmlldygpLCBv
dGhlci5tX3dvcmRzLnZpZXcoKSkpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdGhlcldvcmRzPgorICAgIEZhc3RCaXRWZWN0b3JJbXBsPEZhc3RCaXRWZWN0b3JPcldvcmRz
PHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSwgdHlwZW5hbWUgT3RoZXJXb3Jkczo6Vmlld1R5cGU+
PiBiaXRBbmQoY29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIEZhc3RCaXRWZWN0b3JJbXBsPEZhc3RCaXRWZWN0b3JP
cldvcmRzPHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSwgdHlwZW5hbWUgT3RoZXJXb3Jkczo6Vmll
d1R5cGU+PihGYXN0Qml0VmVjdG9yT3JXb3Jkczx0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUsIHR5
cGVuYW1lIE90aGVyV29yZHM6OlZpZXdUeXBlPihtX3dvcmRzLnZpZXcoKSwgb3RoZXIubV93b3Jk
cy52aWV3KCkpKTsKKyAgICB9CisgICAgCisgICAgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZl
Y3Rvck5vdFdvcmRzPHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZT4+IGJpdE5vdCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3Rvck5vdFdv
cmRzPHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZT4+KEZhc3RCaXRWZWN0b3JOb3RXb3Jkczx0eXBl
bmFtZSBXb3Jkczo6Vmlld1R5cGU+KG1fd29yZHMudmlldygpKSk7CisgICAgfQorICAgIAorcHJv
dGVjdGVkOgorICAgIFdvcmRzIG1fd29yZHM7Cit9OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworY2xhc3MgRmFzdEJpdFZlY3RvciA6IHB1
YmxpYyBGYXN0Qml0VmVjdG9ySW1wbDxGYXN0Qml0VmVjdG9yV29yZE93bmVyPiB7CitwdWJsaWM6
CisgICAgdm9pZCByZXNpemUoc2l6ZV90IG51bUJpdHMpCisgICAgeworICAgICAgICBtX3dvcmRz
LnJlc2l6ZShudW1CaXRzKTsKKyAgICB9CiAgICAgCi1wcml2YXRlOgotICAgIHN0YXRpYyBzaXpl
X3QgYXJyYXlMZW5ndGgoc2l6ZV90IG51bUJpdHMpIHsgcmV0dXJuIChudW1CaXRzICsgMzEpID4+
IDU7IH0KLSAgICBzaXplX3QgYXJyYXlMZW5ndGgoKSBjb25zdCB7IHJldHVybiBhcnJheUxlbmd0
aChtX251bUJpdHMpOyB9CisgICAgdm9pZCBzZXRBbGwoKQorICAgIHsKKyAgICAgICAgbV93b3Jk
cy5zZXRBbGwoKTsKKyAgICB9CiAgICAgCi0gICAgdWludDMyX3QqIG1fYXJyYXkgeyBudWxscHRy
IH07IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4K
LSAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OworICAgIHZvaWQgY2xlYXJBbGwoKQorICAgIHsK
KyAgICAgICAgbV93b3Jkcy5jbGVhckFsbCgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChj
b25zdCBGYXN0Qml0VmVjdG9yJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fd29yZHMuc2V0KG90
aGVyLm1fd29yZHMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldv
cmRzPgorICAgIHZvaWQgc2V0KGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBv
dGhlcikKKyAgICB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG51
bUJpdHMoKSA9PSBvdGhlci5udW1CaXRzKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBh
cnJheUxlbmd0aCgpOyBpLS07KQorICAgICAgICAgICAgbV93b3Jkcy53b3JkKGkpID0gb3RoZXIu
bV93b3Jkcy53b3JkKGkpOworICAgIH0KKyAgICAKKyAgICBib29sIHNldEFuZENoZWNrKGNvbnN0
IEZhc3RCaXRWZWN0b3ImIG90aGVyKQorICAgIHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFs
c2U7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG51bUJpdHMoKSA9
PSBvdGhlci5udW1CaXRzKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcnJheUxlbmd0
aCgpOyBpLS07KSB7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fd29yZHMud29yZChpKSAhPSBv
dGhlci5tX3dvcmRzLndvcmQoaSk7CisgICAgICAgICAgICBtX3dvcmRzLndvcmQoaSkgPSBvdGhl
ci5tX3dvcmRzLndvcmQoaSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzID09IG90aGVyOworICAgIH0KKyAgICAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgorICAgIHZvaWQgbWVyZ2UoY29uc3Qg
RmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obnVtQml0cygpID09IG90aGVyLm51bUJpdHMo
KSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFycmF5TGVuZ3RoKCk7IGktLTspCisgICAg
ICAgICAgICBtX3dvcmRzLndvcmQoaSkgfD0gb3RoZXIubV93b3Jkcy53b3JkKGkpOworICAgIH0K
KyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgorICAgIHZvaWQgZmlsdGVy
KGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG51bUJpdHMoKSA9PSBvdGhlci5u
dW1CaXRzKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcnJheUxlbmd0aCgpOyBpLS07
KQorICAgICAgICAgICAgbV93b3Jkcy53b3JkKGkpICY9IG90aGVyLm1fd29yZHMud29yZChpKTsK
KyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KKyAgICB2b2lk
IGV4Y2x1ZGUoY29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQorICAg
IHsKKyAgICAgICAgZmlsdGVyKG90aGVyLmJpdE5vdCgpKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBzZXQoc2l6ZV90IGkpCisgICAgeworICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihpIDwgbnVtQml0cygpKTsKKyAgICAgICAgbV93b3Jkcy53b3JkKGkgPj4gNSkgfD0g
KDEgPDwgKGkgJiAzMSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNsZWFyKHNpemVfdCBpKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG51bUJp
dHMoKSk7CisgICAgICAgIG1fd29yZHMud29yZChpID4+IDUpICY9IH4oMSA8PCAoaSAmIDMxKSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0KHNpemVfdCBpLCBib29sIHZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgc2V0KGkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjbGVhcihpKTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1N0ZExpYkV4dHJhcy5oCShyZXZpc2lvbiAyMDU3NjcpCisrKyBTb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDYgKzMxNywyMiBAQCBib29s
IGNoZWNrQW5kU2V0KFQmIGxlZnQsIFUgcmlnaHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIGZpbmRCaXRJbldvcmQoVCB3b3JkLCBzaXplX3QmIGlu
ZGV4LCBzaXplX3QgZW5kSW5kZXgsIGJvb2wgdmFsdWUpCit7CisgICAgd29yZCA+Pj0gaW5kZXg7
CisgICAgCisgICAgd2hpbGUgKGluZGV4IDwgZW5kSW5kZXgpIHsKKyAgICAgICAgaWYgKCh3b3Jk
ICYgMSkgPT0gc3RhdGljX2Nhc3Q8VD4odmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGluZGV4Kys7CisgICAgICAgIHdvcmQgPj49IDE7CisgICAgfQorICAgIAorICAg
IGluZGV4ID0gZW5kSW5kZXg7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBWaXNpdG9yIGFk
YXB0ZWQgZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI1MzM4Nzk1L2lz
LXRoZXJlLWEtbmFtZS1mb3ItdGhpcy10dXBsZS1jcmVhdGlvbi1pZGlvbQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgQSwgY2xhc3MuLi4gQj4KQEAgLTQyMSw2ICs0MzcsNyBAQCB1c2luZyBXVEY6OmJpbmFy
eVNlYXJjaDsKIHVzaW5nIFdURjo6Yml0d2lzZV9jYXN0OwogdXNpbmcgV1RGOjpjYWxsU3RhdGVs
ZXNzTGFtYmRhOwogdXNpbmcgV1RGOjpjaGVja0FuZFNldDsKK3VzaW5nIFdURjo6ZmluZEJpdElu
V29yZDsKIHVzaW5nIFdURjo6aW5zZXJ0SW50b0JvdW5kZWRWZWN0b3I7CiB1c2luZyBXVEY6Omlz
Q29tcGlsYXRpb25UaHJlYWQ7CiB1c2luZyBXVEY6OmlzUG9pbnRlckFsaWduZWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288574</attachid>
            <date>2016-09-12 09:59:10 -0700</date>
            <delta_ts>2016-09-12 10:26:29 -0700</delta_ts>
            <desc>it begins for real</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>14579</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cAkocmV2aXNpb24gMjA1ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDE1ICsxMDUsMjUgQEAgdm9pZCog
TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQogICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBpZiAobV9jdXJyZW50QmxvY2sp
IHsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCk7
CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jay0+aW5kZXgoKSA9PSBtX2FsbG9jYXRpb25D
dXJzb3IpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7Ci0g
ICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50QmxvY2stPm5leHQoKSk7CisgICAg
ICAgIG1fYWxsb2NhdGlvbkN1cnNvcisrOwogICAgIH0KICAgICAKICAgICBzZXRGcmVlTGlzdChG
cmVlTGlzdCgpKTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fbmV4dEJsb2NrVG9Td2VlcCAhPSBt
X2Jsb2NrTGlzdC5lbmQoKSk7Ci0KKyAgICAvLyBGaXJzdCB0cnkgdG8gYWxsb2NhdGUgaW4gYmxv
Y2tzIHRoYXQgYmVsb25nIHRvIG91ciBzaXplIGNsYXNzIGFuZCB0aGF0IGFyZSBuZWl0aGVyCisg
ICAgLy8gY29tcGxldGVseSBlbXB0eSBub3IgY29tcGxldGVseSBmdWxsLgorICAgIGZvciAoOzsp
IHsKKyAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0gbV9jYW5BbGxvY2F0ZS5maW5kQml0KG1f
YWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGlmIChtX2FsbG9jYXRpb25DdXJzb3Ig
Pj0gbV9ibG9ja3Muc2l6ZSgpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9hbGxvY2F0aW9uQ3Vy
c29yID09IG1fYmxvY2tzLnNpemUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLy8gRklYTUUKKyAgICB9CisgICAgCiAgICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogbmV4dDsKICAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqJiBibG9jayA9IG1f
bmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewogICAgICAgICBuZXh0ID0g
ZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwpAQCAtMjI3LDYgKzIzNyw4IEBAIHZvaWQq
IE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICBhZGRCbG9jayhibG9jayk7CisgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIHNldCB1cCBhIGZyZWUgbGlzdCBpbiB0aGlzIGJsb2NrIGRpcmVjdGx5LCByYXRoZXIg
dGhhbiBnb2luZyBiYWNrIHRvCisgICAgLy8gdGhlIGdlbmVyaWMgc2xvdyBwYXRoLgogICAgICAg
ICAKICAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgQVNT
RVJUKHJlc3VsdCk7CkBAIC0yNDksMzAgKzI2MSw2OCBAQCBzaXplX3QgTWFya2VkQWxsb2NhdG9y
OjpibG9ja1NpemVGb3JCeXRlCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6
OnRyeUFsbG9jYXRlQmxvY2soKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxl
clNjb3BlKGZhbHNlKTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9oZWFw
LCB0aGlzLCBtX2NlbGxTaXplLCBtX2F0dHJpYnV0ZXMpOworICAgIAorICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwgbV9jZWxs
U2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgCisgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soaGFuZGxlKTsKKyAg
ICAKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxv
Y2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRC
bG9jayk7Ci0gICAgQVNTRVJUKCFtX2ZyZWVMaXN0KTsKKyAgICBzaXplX3QgaW5kZXg7CisgICAg
aWYgKG1fZnJlZUJsb2NrSW5kaWNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaW5kZXggPSBtX2Js
b2Nrcy5zaXplKCk7CisKKyAgICAgICAgc2l6ZV90IG9sZENhcGFjaXR5ID0gbV9ibG9ja3MuY2Fw
YWNpdHkoKTsKKyAgICAgICAgbV9ibG9ja3MuYXBwZW5kKGhhbmRsZSk7CisgICAgICAgIGlmICht
X2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9sZENhcGFjaXR5KSB7CisgICAgICAgICAgICBmb3JFYWNo
Qml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFj
aXR5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNT
RVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0
VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Js
b2Nrcy5jYXBhY2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7Cisg
ICAgICAgIEFTU0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgbV9ibG9ja3NbaW5kZXhd
ID0gaGFuZGxlOworICAgIH0KKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICBb
Jl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgQVNTRVJUKCF2ZWN0b3Jb
aW5kZXhdKTsKKyAgICAgICAgfSk7CisKKyAgICBoYW5kbGUtPmRpZEFkZFRvQWxsb2NhdG9yKHRo
aXMsIGluZGV4KTsKICAgICAKLSAgICBtX2Jsb2NrTGlzdC5hcHBlbmQoYmxvY2spOwotICAgIHNl
dE5leHRCbG9ja1RvU3dlZXAoYmxvY2spOwotICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2Nr
KGJsb2NrKTsKKyAgICBzZXRJc0xpdmUoaW5kZXgsIHRydWUpOworICAgIHNldElzRW1wdHkoaW5k
ZXgsIHRydWUpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVtb3ZlQmxvY2soTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spCiB7Ci0gICAgaWYgKG1fY3VycmVudEJsb2NrID09IGJsb2Nr
KSB7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrID0gZmlsdGVyTmV4dEJsb2NrKG1fY3VycmVudEJs
b2NrLT5uZXh0KCkpOwotICAgICAgICBzZXRGcmVlTGlzdChGcmVlTGlzdCgpKTsKLSAgICB9Ci0g
ICAgaWYgKG1fbmV4dEJsb2NrVG9Td2VlcCA9PSBibG9jaykKLSAgICAgICAgc2V0TmV4dEJsb2Nr
VG9Td2VlcChtX25leHRCbG9ja1RvU3dlZXAtPm5leHQoKSk7CisgICAgQVNTRVJUKGJsb2NrLT5h
bGxvY2F0b3IoKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQobV9ibG9ja3NbYmxvY2stPmluZGV4KCld
ID09IGJsb2NrKTsKIAotICAgIGJsb2NrLT53aWxsUmVtb3ZlQmxvY2soKTsKLSAgICBtX2Jsb2Nr
TGlzdC5yZW1vdmUoYmxvY2spOworICAgIG1fYmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9IG51bGxw
dHI7CisgICAgbV9mcmVlQmxvY2tJbmRpY2VzLmFwcGVuZChibG9jay0+aW5kZXgoKSk7CisgICAg
CisgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0
b3IpIHsKKyAgICAgICAgICAgIHZlY3RvcltibG9jay0+aW5kZXgoKV0gPSBmYWxzZTsKKyAgICAg
ICAgfSk7CisgICAgCisgICAgYmxvY2stPmRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKIH0KIAog
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAyMDU4MDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsMzEgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIE1hcmtlZFNwYWNlOwog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisjZGVmaW5lIEZPUl9FQUNIX01BUktFRF9B
TExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBv
ZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKKyAgICBtYWNybyhl
bXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBv
YmplY3RzLiAqLyBcCisgICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQg
b2YgYWxsYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAgICBtYWNy
byhjYW5BbGxvY2F0ZSwgQ2FuQWxsb2NhdGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0
IGNhbiBiZSBhbGxvY2F0ZWQgaW4gcmlnaHQgbm93LiAqLyBcCisgICAgbWFjcm8oZWRlbiwgRWRl
bikgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0
aGUgbGFzdCBHQy4gKi9cCisgICAgbWFjcm8oc25hcHNob3QsIFNuYXBzaG90KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dl
ZXBlci4gKi9cCisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2lu
Zy4gV2UgdXNlIHRoZW0gYWZ0ZXIgbWFya2luZyB0byBjb21wdXRlIG1fZW1wdHkgYW5kICovXAor
ICAgIC8qIG1fY2FuQWxsb2NhdGU6ICovXAorICAgIC8qICovXAorICAgIC8qIG1fZW1wdHkuc2V0
KG1fbGl2ZS5iaXRBbmQobV9tYXJraW5nTm90RW1wdHkuYml0Tm90KCkpKTsgKi9cCisgICAgLyog
bV9jYW5BbGxvY2F0ZS5zZXQobV9saXZlLmJpdEFuZChtX21hcmtpbmdSZXRpcmVkLmJpdE5vdCgp
KS5iaXRBbmQobV9tYXJraW5nTm90RW1wdHkpKTsgKi9cCisgICAgLyogKi9cCisgICAgLyogTm90
ZSB0aGF0IHdlIGFsc28gY2xlYXIgbV9hbGxvY2F0ZWQgYXQgYXJvdW5kIHRoZSBzYW1lIHRpbWUu
IEluIGVkZW4gY29sbGVjdGlvbnMgd2Ugd291bGQgKi9cCisgICAgLyogZG86ICovXAorICAgIC8q
ICovXAorICAgIC8qIG1fYWxsb2NhdGVkLmV4Y2x1ZGUobV9lZGVuKTsgKi9cCisgICAgLyogKi9c
CisgICAgLyogQW5kIGluIGZ1bGwgd2Ugd291bGQgZG86ICovXAorICAgIC8qICovXAorICAgIC8q
IG1fYWxsb2NhdGVkLmNsZWFyQWxsKCk7ICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwg
TWFya2luZ05vdEVtcHR5KSBcCisgICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRp
cmVkKQorCiBjbGFzcyBNYXJrZWRBbGxvY2F0b3IgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAKQEAgLTcyLDYgKzk3LDIzIEBAIHB1YmxpYzoKICAgICBib29sIGlz
UGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJsb2Nr
U2l6ZUZvckJ5dGVzKHNpemVfdCk7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklU
X0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wg
aXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBs
b3dlckJpdE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0
TmFtZShibG9jay0+aW5kZXgoKSk7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5h
bWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0g
PSB2YWx1ZTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShi
bG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9C
SVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIE1BUktFRF9BTExPQ0FU
T1JfQklUX0FDQ0VTU09SUworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lk
IGZvckVhY2hCaXRWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktF
RF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwK
KyAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBGT1JfRUFDSF9NQVJL
RURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyk7CisjdW5kZWYg
TUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9CiAgICAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwpAQCAtODIsNiArMTI0LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgdm9pZCogdHJ5QWxs
b2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwoKTsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0
cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAgdm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxl
Kik7CisgICAgdm9pZCByZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoKTsKICAgICB2b2lkIHJl
dGlyZShNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgCkBAIC05MSwxMSArMTM1LDIyIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXROZXh0QmxvY2tUb1N3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUq
KTsKICAgICAKICAgICBGcmVlTGlzdCBtX2ZyZWVMaXN0OworICAgIAorICAgIFZlY3RvcjxNYXJr
ZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9ja3M7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVC
bG9ja0luZGljZXM7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFU
SU9OKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICBGYXN0Qml0VmVjdG9yIG1f
ICMjIGxvd2VyQml0TmFtZTsKKyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJL
RURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTikKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJ
VF9ERUNMQVJBVElPTgorICAgIAorICAgIHNpemVfdCBtX2FsbG9jYXRpb25DdXJzb3IgeyAwIH07
IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBhbGxv
Y2F0aW9uLgorICAgIHNpemVfdCBtX2VtcHR5QWxsb2NhdGlvbkN1cnNvciB7IDAgfTsgLy8gUG9p
bnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGVtcHR5IGFsbG9j
YXRpb24gKGFsbG9jYXRpbmcgaW4gZW1wdHkgYmxvY2tzKS4KKyAgICBzaXplX3QgbV9zbmFwc2hv
dEN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5k
aWRhdGUgZm9yIGluY3JlbWVudGFsIHN3ZWVwaW5nLgorICAgIAogICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIG1fY3VycmVudEJsb2NrOwogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fbGFzdEFj
dGl2ZUJsb2NrOwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fbmV4dEJsb2NrVG9Td2VlcDsK
LSAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSwgQmFzaWNSYXdTZW50
aW5lbE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fYmxvY2tMaXN0OwotICAgIFNlbnRpbmVs
TGlua2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJr
ZWRCbG9jazo6SGFuZGxlPj4gbV9yZXRpcmVkQmxvY2tzOworCiAgICAgTG9jayBtX2xvY2s7CiAg
ICAgdW5zaWduZWQgbV9jZWxsU2l6ZTsKICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIG1fYXR0cmli
dXRlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJ
KHJldmlzaW9uIDIwNTgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IHN0YXRpYyBjb25zdCBib29sIGNvbXB1dGVCYWxhbmNlID0gZmFsc2U7CiBzdGF0aWMgc2l6ZV90
IGJhbGFuY2U7CiAKLU1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUo
SGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwg
Y29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcykKK01hcmtlZEJsb2NrOjpIYW5k
bGUqIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoSGVhcCYgaGVhcCwgc2l6ZV90IGNlbGxTaXplLCBj
b25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogewogICAgIGlmIChjb21wdXRl
QmFsYW5jZSkgewogICAgICAgICBiYWxhbmNlKys7CkBAIC00OCwxNiArNDgsMTQgQEAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBpZiAoc2NyaWJibGVGcmVlQ2VsbHMoKSkKICAgICAgICAgc2NyaWJibGUoYmxvY2tT
cGFjZSwgYmxvY2tTaXplKTsKLSAgICByZXR1cm4gbmV3IEhhbmRsZShoZWFwLCBhbGxvY2F0b3Is
IGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBibG9ja1NwYWNlKTsKKyAgICByZXR1cm4gbmV3IEhhbmRs
ZShoZWFwLCBjZWxsU2l6ZSwgYXR0cmlidXRlcywgYmxvY2tTcGFjZSk7CiB9CiAKLU1hcmtlZEJs
b2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCB2b2lkKiBibG9ja1NwYWNlKQorTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhl
YXAsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgdm9pZCogYmxvY2tTcGFjZSkKICAgICA6IG1fYXRvbXNQZXJDZWxsKChjZWxsU2l6ZSArIGF0
b21TaXplIC0gMSkgLyBhdG9tU2l6ZSkKICAgICAsIG1fZW5kQXRvbShhdG9tc1BlckJsb2NrIC0g
bV9hdG9tc1BlckNlbGwgKyAxKQogICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAg
LCBtX3N0YXRlKE5ldykgLy8gQWxsIGNlbGxzIHN0YXJ0IG91dCB1bm1hcmtlZC4KLSAgICAsIG1f
YWxsb2NhdG9yKGFsbG9jYXRvcikKLSAgICAsIG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+
dm0oKSwgQ2VsbENvbnRhaW5lcigpKQorICAgICwgbV93ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENv
bnRhaW5lcigpKQogewogICAgIG1fYmxvY2sgPSBuZXcgKE5vdE51bGwsIGJsb2NrU3BhY2UpIE1h
cmtlZEJsb2NrKCpoZWFwLnZtKCksICp0aGlzKTsKICAgICAKQEAgLTY1LDcgKzYzLDYgQEAgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIAogICAgIAogICAgIGhlYXAuZGlk
QWxsb2NhdGVCbG9jayhibG9ja1NpemUpOwogICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT04odGhpcyk7Ci0gICAgQVNTRVJUKGFsbG9jYXRvcik7CiAgICAgaWYgKG1fYXR0cmlidXRl
cy5jZWxsS2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CiB9CkBA
IC03OCw2ICs3NSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQogICAgICAgICBp
ZiAoIShiYWxhbmNlICUgMTApKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFs
YW5jZTogIiwgYmFsYW5jZSwgIlxuIik7CiAgICAgfQorICAgIHJlbW92ZUZyb21BbGxvY2F0b3Io
KTsKICAgICBtX2Jsb2NrLT5+TWFya2VkQmxvY2soKTsKICAgICBmYXN0QWxpZ25lZEZyZWUobV9i
bG9jayk7CiAgICAgaGVhcC5kaWRGcmVlQmxvY2soYmxvY2tTaXplKTsKQEAgLTM5NiwxMSArMzk0
LDYgQEAgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc0ZsaXAoKQogICAgIHJldHVybiBt
X2Jsb2NrLT5uZWVkc0ZsaXAoKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxs
UmVtb3ZlQmxvY2soKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotfQotCiB2b2lkIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCgpCiB7CiAgICAgZmxpcElmTmVjZXNz
YXJ5KCk7CkBAIC00MzMsNiArNDI2LDM0IEBAIHZvaWQgTWFya2VkQmxvY2s6Om5vdGVNYXJrZWRT
bG93KCkKICAgICBoYW5kbGUoKS5tX2FsbG9jYXRvci0+cmV0aXJlKCZoYW5kbGUoKSk7CiB9CiAK
K3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAg
aWYgKCFtX2FsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fYWxsb2NhdG9y
LT5yZW1vdmVCbG9jayh0aGlzKTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRB
ZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGluZGV4KQor
eworICAgIEFTU0VSVChtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkpOworICAgIEFTU0VSVCghbV9hbGxvY2F0b3IpOworICAgIAorICAgIG1faW5kZXggPSBpbmRl
eDsKKyAgICBtX2FsbG9jYXRvciA9IGFsbG9jYXRvcjsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpkaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCkKK3sKKyAgICBmbGlwSWZOZWNlc3Nhcnko
KTsKKyAgICAKKyAgICBBU1NFUlQobV9pbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpKTsKKyAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworICAgIAorICAgIG1faW5kZXgg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworICAgIG1fYWxsb2NhdG9yID0g
bnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDU4
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Niw4ICs3Niw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIEhhbmRsZTsKIHB1YmxpYzoKLSAgICBlbnVtIEJsb2NrU3RhdGUgOiB1aW50OF90IHsgTmV3
LCBGcmVlTGlzdGVkLCBBbGxvY2F0ZWQsIE1hcmtlZCB9OwotICAgICAgICAKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGF0b21TaXplID0gMTY7IC8vIGJ5dGVzCiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBibG9ja1NpemUgPSAxNiAqIEtCOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tN
YXNrID0gfihibG9ja1NpemUgLSAxKTsgLy8gYmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0
d28uCkBAIC0xNzgsNyArMTc2LDYgQEAgcHVibGljOgogICAgICAgICBib29sIGlzTWFya2VkKCkg
Y29uc3Q7CiAgICAgICAgIGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3Q7CiAgICAgICAgIGJvb2wg
bmVlZHNTd2VlcGluZygpIGNvbnN0OwotICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwog
CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9y
RWFjaENlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CkBA
IC0xOTUsOCArMTkyLDE1IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc09uQmxvY2tzVG9Td2Vl
cCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPbkJsb2Nrc1RvU3dlZXA7IH0KICAgICAgICAgdm9pZCBz
ZXRJc09uQmxvY2tzVG9Td2VlcChib29sIHZhbHVlKSB7IG1faXNPbkJsb2Nrc1RvU3dlZXAgPSB2
YWx1ZTsgfQogICAgICAgICAKLSAgICAgICAgQmxvY2tTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KLSAgICAgICAgICAgIAorICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNGcmVlTGlzdGVkOyB9CisgICAgICAgIAorICAgICAgICBzaXpl
X3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAgIAorICAgICAgICB2
b2lkIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgZGlkQWRk
VG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGluZGV4KTsKKyAgICAgICAgdm9p
ZCBkaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIEhhbmRsZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBjb25z
dCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiwgdm9pZCopOwogICAgICAgICAgICAgCkBAIC0yMTUsNyAr
MjE5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmM+CiAgICAgICAgIHZvaWQgZm9yRWFjaEZyZWVDZWxsKGNvbnN0IEZyZWVMaXN0JiwgY29u
c3QgRnVuYyYpOwotICAgICAgICAgICAgCisgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBtX3ByZXY7CiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fbmV4dDsKICAg
ICAgICAgICAgIApAQCAtMjI1LDE2ICsyMjksMTYgQEAgcHVibGljOgogICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+IG1fbmV3bHlBbGxvY2F0ZWQ7CiAg
ICAgICAgICAgICAKICAgICAgICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7Ci0g
ICAgICAgIEJsb2NrU3RhdGUgbV9zdGF0ZTsKLSAgICAgICAgYm9vbCBtX2lzT25CbG9ja3NUb1N3
ZWVwIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2lzRnJlZUxpc3RlZCB7IGZhbHNlIH07CiAg
ICAgICAgICAgICAKLSAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICAg
ICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICAgICAgc2l6
ZV90IG1faW5kZXggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAg
ICAgIFdlYWtTZXQgbV93ZWFrU2V0OwogICAgICAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2Nr
KiBtX2Jsb2NrOwogICAgIH07CiAgICAgICAgIAotICAgIHN0YXRpYyBNYXJrZWRCbG9jazo6SGFu
ZGxlKiB0cnlDcmVhdGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwg
Y29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOworICAgIHN0YXRpYyBNYXJrZWRCbG9jazo6SGFu
ZGxlKiB0cnlDcmVhdGUoSGVhcCYsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0
cmlidXRlcyYpOwogICAgICAgICAKICAgICBIYW5kbGUmIGhhbmRsZSgpOwogICAgICAgICAKQEAg
LTI3NCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhc3NlcnRGbGlwcGVkKCk7CiAgICAg
ICAgIAogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNE
ZXN0cnVjdGlvbjsgfQotICAgICAgICAKKyAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288578</attachid>
            <date>2016-09-12 10:26:29 -0700</date>
            <delta_ts>2016-09-12 11:48:57 -0700</delta_ts>
            <desc>a bit more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19324</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cAkocmV2aXNpb24gMjA1ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDQxICsxMDUsNzQgQEAgdm9pZCog
TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQogICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBpZiAobV9jdXJyZW50QmxvY2sp
IHsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCk7
CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jay0+aW5kZXgoKSA9PSBtX2FsbG9jYXRpb25D
dXJzb3IpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7Ci0g
ICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50QmxvY2stPm5leHQoKSk7CisgICAg
ICAgIG1fYWxsb2NhdGlvbkN1cnNvcisrOwogICAgIH0KICAgICAKICAgICBzZXRGcmVlTGlzdChG
cmVlTGlzdCgpKTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fbmV4dEJsb2NrVG9Td2VlcCAhPSBt
X2Jsb2NrTGlzdC5lbmQoKSk7Ci0KLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBuZXh0OwotICAg
IGZvciAoTWFya2VkQmxvY2s6OkhhbmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBi
bG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBmaWx0ZXJOZXh0QmxvY2soYmxv
Y2stPm5leHQoKSk7Ci0KLSAgICAgICAgLy8gSXQgd291bGQgYmUgc3VwZXIgd2VpcmQgaWYgdGhl
IGJsb2NrcyB3ZSBhcmUgc3dlZXBpbmcgaGF2ZSBhbnl0aGluZyBhbGxvY2F0ZWQgZHVyaW5nIHRo
aXMKLSAgICAgICAgLy8gY3ljbGUuCisgICAgLy8gRmlyc3QgdHJ5IHRvIGFsbG9jYXRlIGluIGJs
b2NrcyB0aGF0IGJlbG9uZyB0byBvdXIgc2l6ZSBjbGFzcyBhbmQgdGhhdCBhcmUgbmVpdGhlcgor
ICAgIC8vIGNvbXBsZXRlbHkgZW1wdHkgbm9yIGNvbXBsZXRlbHkgZnVsbC4KKyAgICBmb3IgKDs7
KSB7CisgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IG1fY2FuQWxsb2NhdGUuZmluZEJpdCht
X2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOworICAgICAgICBpZiAobV9hbGxvY2F0aW9uQ3Vyc29y
ID49IG1fYmxvY2tzLnNpemUoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fYWxsb2NhdGlvbkN1
cnNvciA9PSBtX2Jsb2Nrcy5zaXplKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3Nb
bV9hbGxvY2F0aW9uQ3Vyc29yXTsKKyAgICAgICAgQVNTRVJUKGJsb2NrKTsKICAgICAgICAgQVNT
RVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgICAgIEFTU0VSVCghYmxv
Y2stPmlzRnJlZUxpc3RlZCgpKTsKICAgICAgICAgCiAgICAgICAgIEZyZWVMaXN0IGZyZWVMaXN0
ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CiAg
ICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24gYSBjb21wbGV0
ZS1mdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0CisgICAgICAg
IC8vIEl0J3MgcG9zc2libGUgdG8gc3R1bWJsZSBvbiBhIGNvbXBsZXRlbHkgZnVsbCBibG9jay4g
TWFya2luZyB0cmllcyB0byByZXRpcmUgdGhlc2UsIGJ1dAogICAgICAgICAvLyB0aGF0IGFsZ29y
aXRobSBpcyByYWN5IGFuZCBtYXkgZm9yZ2V0IHRvIGRvIGl0IHNvbWV0aW1lcy4KICAgICAgICAg
aWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
YmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKICAgICAgICAgICAgIGJsb2NrLT51bnN3ZWVwV2l0aE5v
TmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNNYXJrZWQoKSk7
CisgICAgICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CiAgICAgICAgICAg
ICByZXRpcmUoYmxvY2spOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLQorICAg
ICAgICAKICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jazsKICAgICAgICAgc2V0RnJlZUxp
c3QoZnJlZUxpc3QpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2Zy
ZWVMaXN0KSB7CisgICAgICAgIC8vIE5vdyBmaW5kIHNvbWUgY29tcGxldGVseS1mcmVlIGJsb2Nr
IGluIHRoaXMgYWxsb2NhdG9yLgorICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9
IGZpbmRFbXB0eUJsb2NrKCk7CisgICAgICAgIGlmIChibG9jaykgeworICAgICAgICAgICAgRnJl
ZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBU
b0ZyZWVMaXN0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZnJl
ZUxpc3QuYWxsb2NhdGlvbldpbGxTdWNjZWVkKCkpOworICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBibG9jazsKKyAgICAgICAgICAgIHNldEZyZWVMaXN0KGZyZWVMaXN0KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBpZiAoIW1fZnJlZUxpc3QpIHsKKyAgICAgICAgLy8gTm93IGZp
bmQgc29tZSBjb21wbGV0ZWx5LWZyZWUgYmxvY2suCisgICAgICAgIAorICAgICAgICBNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jayA9IG1fbWFya2VkU3BhY2UtPmZpbmRFbXB0eUJsb2NrKCk7Cisg
ICAgICAgIGlmIChibG9jaykgeworICAgICAgICAgICAgYmxvY2stPnN3ZWVwKCk7CisgICAgICAg
ICAgICBibG9jay0+cmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAgICAgICAgYWRkQmxvY2so
YmxvY2spOworICAgICAgICAgICAgCisgICAgICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJs
b2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmcmVlTGlzdC5hbGxvY2F0aW9uV2ls
bFN1Y2NlZWQoKSk7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOworICAgICAg
ICAgICAgc2V0RnJlZUxpc3QoZnJlZUxpc3QpOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IGlmICghbV9mcmVlTGlzdCkgewogICAgICAgICBtX2N1cnJlbnRCbG9jayA9IDA7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KQEAgLTIyNyw2ICsyNjAsOCBAQCB2b2lkKiBNYXJrZWRBbGxvY2F0
b3I6OmFsbG9jYXRlU2xvd0Nhc2VJCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAgICAgYWRkQmxvY2soYmxvY2spOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZXQgdXAg
YSBmcmVlIGxpc3QgaW4gdGhpcyBibG9jayBkaXJlY3RseSwgcmF0aGVyIHRoYW4gZ29pbmcgYmFj
ayB0bworICAgIC8vIHRoZSBnZW5lcmljIHNsb3cgcGF0aC4KICAgICAgICAgCiAgICAgcmVzdWx0
ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOwogICAgIEFTU0VSVChyZXN1bHQpOwpA
QCAtMjQ5LDMwICsyODQsNjggQEAgc2l6ZV90IE1hcmtlZEFsbG9jYXRvcjo6YmxvY2tTaXplRm9y
Qnl0ZQogTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJs
b2NrKCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7
Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwgdGhpcywgbV9jZWxs
U2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5k
bGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIG1fY2VsbFNpemUsIG1fYXR0cmli
dXRlcyk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAor
ICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJu
IGhhbmRsZTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFT
U0VSVCghbV9mcmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9j
a0luZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOwor
CisgICAgICAgIHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAg
ICAgIG1fYmxvY2tzLmFwcGVuZChoYW5kbGUpOworICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNp
dHkoKSAhPSBvbGRDYXBhY2l0eSkgeworICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAg
ICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQodmVjdG9yLm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChtX2Jsb2Nrcy5j
YXBhY2l0eSgpID4gb2xkQ2FwYWNpdHkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3JF
YWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9y
KSB7CisgICAgICAgICAgICAgICAgICAgIHZlY3Rvci5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHko
KSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgpOworICAgICAgICBBU1NFUlQo
IW1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIG1fYmxvY2tzW2luZGV4XSA9IGhhbmRsZTsKKyAg
ICB9CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsKLSAgICBzZXROZXh0Qmxv
Y2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRCbG9jayhibG9jayk7
CisgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0
b3IpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmVjdG9yW2luZGV4XSk7CisgICAgICAgIH0pOwor
CisgICAgaGFuZGxlLT5kaWRBZGRUb0FsbG9jYXRvcih0aGlzLCBpbmRleCk7CisgICAgCisgICAg
c2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKKyAgICBzZXRJc0VtcHR5KGluZGV4LCB0cnVlKTsKIH0K
IAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKQogewotICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBibG9jaykgewotICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGZpbHRlck5leHRCbG9jayhtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsK
LSAgICAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0gICAgfQotICAgIGlmIChtX25leHRC
bG9ja1RvU3dlZXAgPT0gYmxvY2spCi0gICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9uZXh0
QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOworICAgIEFTU0VSVChibG9jay0+YWxsb2NhdG9yKCkgPT0g
dGhpcyk7CisgICAgQVNTRVJUKG1fYmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9PSBibG9jayk7CiAK
LSAgICBibG9jay0+d2lsbFJlbW92ZUJsb2NrKCk7Ci0gICAgbV9ibG9ja0xpc3QucmVtb3ZlKGJs
b2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPSBudWxscHRyOworICAgIG1fZnJl
ZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2stPmluZGV4KCkpOworICAgIAorICAgIGZvckVhY2hC
aXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAg
ICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCldID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIAor
ICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQgTWFya2VkQWxs
b2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMjA1ODA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDMxIEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBNYXJrZWRTcGFjZTsKIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAorI2RlZmluZSBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVCht
YWNybykgXAorICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNl
cyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCisgICAgbWFjcm8oZW1wdHksIEVtcHR5KSAv
KiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cy4gKi8gXAor
ICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9mIGFsbGJsb2NrcyB0
aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCisgICAgbWFjcm8oY2FuQWxsb2NhdGUs
IENhbkFsbG9jYXRlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjYW4gYmUgYWxsb2Nh
dGVkIGluIHJpZ2h0IG5vdy4gKi8gXAorICAgIG1hY3JvKGVkZW4sIEVkZW4pIC8qIFRoZSBzZXQg
b2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhlIGxhc3QgR0MuICov
XAorICAgIG1hY3JvKHNuYXBzaG90LCBTbmFwc2hvdCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tz
IHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIuICovXAorICAg
IFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcuIFdlIHVzZSB0aGVt
IGFmdGVyIG1hcmtpbmcgdG8gY29tcHV0ZSBtX2VtcHR5IGFuZCAqL1wKKyAgICAvKiBtX2NhbkFs
bG9jYXRlOiAqL1wKKyAgICAvKiAqL1wKKyAgICAvKiBtX2VtcHR5LnNldChtX2xpdmUuYml0QW5k
KG1fbWFya2luZ05vdEVtcHR5LmJpdE5vdCgpKSk7ICovXAorICAgIC8qIG1fY2FuQWxsb2NhdGUu
c2V0KG1fbGl2ZS5iaXRBbmQobV9tYXJraW5nUmV0aXJlZC5iaXROb3QoKSkuYml0QW5kKG1fbWFy
a2luZ05vdEVtcHR5KSk7ICovXAorICAgIC8qICovXAorICAgIC8qIE5vdGUgdGhhdCB3ZSBhbHNv
IGNsZWFyIG1fYWxsb2NhdGVkIGF0IGFyb3VuZCB0aGUgc2FtZSB0aW1lLiBJbiBlZGVuIGNvbGxl
Y3Rpb25zIHdlIHdvdWxkICovXAorICAgIC8qIGRvOiAqL1wKKyAgICAvKiAqL1wKKyAgICAvKiBt
X2FsbG9jYXRlZC5leGNsdWRlKG1fZWRlbik7ICovXAorICAgIC8qICovXAorICAgIC8qIEFuZCBp
biBmdWxsIHdlIHdvdWxkIGRvOiAqL1wKKyAgICAvKiAqL1wKKyAgICAvKiBtX2FsbG9jYXRlZC5j
bGVhckFsbCgpOyAqL1wKKyAgICBtYWNybyhtYXJraW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0
eSkgXAorICAgIG1hY3JvKG1hcmtpbmdSZXRpcmVkLCBNYXJraW5nUmV0aXJlZCkKKwogY2xhc3Mg
TWFya2VkQWxsb2NhdG9yIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCkBAIC03Miw2ICs5NywyOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJs
ZSBkZWFkbGluZSk7CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBibG9ja1NpemVGb3JCeXRlcyhz
aXplX3QpOworICAgIAorI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMobG93
ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxC
aXROYW1lKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lW2lu
ZGV4XTsgfSBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykgY29uc3QgeyByZXR1cm4gaXMgIyMgY2FwaXRhbEJpdE5hbWUoYmxvY2stPmlu
ZGV4KCkpOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRl
eCwgYm9vbCB2YWx1ZSkgeyBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdID0gdmFsdWU7IH0gXAor
ICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2ssIGJvb2wgdmFsdWUpIHsgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoYmxvY2stPmluZGV4KCks
IHZhbHVlKTsgfQorICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExP
Q0FUT1JfQklUX0FDQ0VTU09SUykKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NP
UlMKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoQml0VmVj
dG9yKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJ
VF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCisgICAgICAgIGZ1bmMo
bV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9C
SVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0spOworI3VuZGVmIE1BUktFRF9BTExPQ0FU
T1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogbmV4dEFs
bG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEFsbG9jYXRvcjsgfQorICAgIAorICAgIC8v
IE1hcmtlZFNwYWNlIGNhbGxzIHRoaXMgZHVyaW5nIGluaXQuCisgICAgdm9pZCBzZXROZXh0QWxs
b2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKSB7IG1fbmV4dEFsbG9jYXRvciA9IGFs
bG9jYXRvcjsgfQogICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsK
QEAgLTgyLDYgKzEyOSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0
Q29sbGVjdGluZygpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBs
KCk7CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5QWxsb2NhdGVCbG9jaygpOworICAgIHZv
aWQgYWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSopOworICAgIHZvaWQgcmVtb3ZlQmxvY2so
TWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkb1Rlc3RDb2xs
ZWN0aW9uc0lmTmVlZGVkKCk7CiAgICAgdm9pZCByZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRsZSop
OwogICAgIApAQCAtOTEsMTYgKzE0MCwyOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TmV4dEJs
b2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgCiAgICAgRnJlZUxpc3QgbV9m
cmVlTGlzdDsKKyAgICAKKyAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tz
OworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mcmVlQmxvY2tJbmRpY2VzOworICAgIAorI2RlZmlu
ZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxC
aXROYW1lKSBcCisgICAgRmFzdEJpdFZlY3RvciBtXyAjIyBsb3dlckJpdE5hbWU7CisgICAgRk9S
X0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJ
T04pCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04KKyAgICAKKyAgICBz
aXplX3QgbV9hbGxvY2F0aW9uQ3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxv
Y2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgYWxsb2NhdGlvbi4KKyAgICBzaXplX3QgbV9lbXB0
eUFsbG9jYXRpb25DdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0
IGlzIGEgY2FuZGlkYXRlIGZvciBlbXB0eSBhbGxvY2F0aW9uIChhbGxvY2F0aW5nIGluIGVtcHR5
IGJsb2NrcykuCisgICAgc2l6ZV90IG1fc25hcHNob3RDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0
byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBpbmNyZW1lbnRhbCBzd2Vl
cGluZy4KKyAgICAKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2N1cnJlbnRCbG9jazsKICAg
ICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBNYXJrZWRCbG9j
azo6SGFuZGxlKiBtX25leHRCbG9ja1RvU3dlZXA7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1h
cmtlZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5k
bGU+PiBtX2Jsb2NrTGlzdDsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6Okhh
bmRsZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fcmV0aXJl
ZEJsb2NrczsKKwogICAgIExvY2sgbV9sb2NrOwogICAgIHVuc2lnbmVkIG1fY2VsbFNpemU7CiAg
ICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAgICAgSGVhcCogbV9oZWFwOwog
ICAgIE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9u
ZXh0QWxsb2NhdG9yOwogfTsKIAogaW5saW5lIHB0cmRpZmZfdCBNYXJrZWRBbGxvY2F0b3I6Om9m
ZnNldE9mRnJlZUxpc3QoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmNwcAkocmV2aXNpb24gMjA1ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBKU0Mgewogc3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBmYWxzZTsKIHN0
YXRpYyBzaXplX3QgYmFsYW5jZTsKIAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6
OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90
IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorTWFya2Vk
QmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3Qg
Y2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAg
aWYgKGNvbXB1dGVCYWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4LDE2ICs0OCwx
NCBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQogICAgICAgICBzY3Jp
YmJsZShibG9ja1NwYWNlLCBibG9ja1NpemUpOwotICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAs
IGFsbG9jYXRvciwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOworICAgIHJldHVy
biBuZXcgSGFuZGxlKGhlYXAsIGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBibG9ja1NwYWNlKTsKIH0K
IAotTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRv
ciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsIHZvaWQqIGJsb2NrU3BhY2UpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5k
bGUoSGVhcCYgaGVhcCwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV9hdG9tc1BlckNlbGwoKGNl
bGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKGF0b21z
UGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDEpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmli
dXRlcykKLSAgICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2Vk
LgotICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRv
ci0+aGVhcCgpLT52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX3dlYWtTZXQoaGVhcC52
bSgpLCBDZWxsQ29udGFpbmVyKCkpCiB7CiAgICAgbV9ibG9jayA9IG5ldyAoTm90TnVsbCwgYmxv
Y2tTcGFjZSkgTWFya2VkQmxvY2soKmhlYXAudm0oKSwgKnRoaXMpOwogICAgIApAQCAtNjUsNyAr
NjMsNiBAQCBNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgCiAgICAgCiAg
ICAgaGVhcC5kaWRBbGxvY2F0ZUJsb2NrKGJsb2NrU2l6ZSk7CiAgICAgSEVBUF9MT0dfQkxPQ0tf
U1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICBBU1NFUlQoYWxsb2NhdG9yKTsKICAgICBpZiAo
bV9hdHRyaWJ1dGVzLmNlbGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0
aW9uKTsKIH0KQEAgLTc4LDYgKzc1LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgp
CiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJr
ZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9CisgICAgcmVtb3ZlRnJv
bUFsbG9jYXRvcigpOwogICAgIG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwogICAgIGZhc3RBbGln
bmVkRnJlZShtX2Jsb2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1NpemUpOwpAQCAt
Mzk2LDExICszOTQsNiBAQCBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRzRmxpcCgpCiAg
ICAgcmV0dXJuIG1fYmxvY2stPm5lZWRzRmxpcCgpOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OndpbGxSZW1vdmVCbG9jaygpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci19Ci0K
IHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0KCkKIHsKICAgICBm
bGlwSWZOZWNlc3NhcnkoKTsKQEAgLTQzMyw2ICs0MjYsMzQgQEAgdm9pZCBNYXJrZWRCbG9jazo6
bm90ZU1hcmtlZFNsb3coKQogICAgIGhhbmRsZSgpLm1fYWxsb2NhdG9yLT5yZXRpcmUoJmhhbmRs
ZSgpKTsKIH0KIAordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZW1vdmVGcm9tQWxsb2NhdG9y
KCkKK3sKKyAgICBpZiAoIW1fYWxsb2NhdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
bV9hbGxvY2F0b3ItPnJlbW92ZUJsb2NrKHRoaXMpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXpl
X3QgaW5kZXgpCit7CisgICAgQVNTRVJUKG1faW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKCFtX2FsbG9jYXRvcik7CisgICAgCisgICAgbV9p
bmRleCA9IGluZGV4OworICAgIG1fYWxsb2NhdG9yID0gYWxsb2NhdG9yOworfQorCit2b2lkIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKQoreworICAgIGZsaXBJ
Zk5lY2Vzc2FyeSgpOworICAgIAorICAgIEFTU0VSVChtX2luZGV4ICE9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CisgICAgCisg
ICAgbV9pbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisgICAgbV9h
bGxvY2F0b3IgPSBudWxscHRyOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNl
IFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJl
dmlzaW9uIDIwNTgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDggKzc2LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgSGFuZGxlOwogcHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0ZSA6IHVp
bnQ4X3QgeyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAgIAog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBibG9ja01hc2sgPSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVzdCBiZSBh
IHBvd2VyIG9mIHR3by4KQEAgLTE3OCw3ICsxNzYsNiBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wg
aXNNYXJrZWQoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdDsKICAg
ICAgICAgYm9vbCBuZWVkc1N3ZWVwaW5nKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgd2lsbFJlbW92
ZUJsb2NrKCk7CiAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlv
blN0YXR1cyBmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1
bmN0b3ImKTsKQEAgLTE5NSw4ICsxOTIsMTUgQEAgcHVibGljOgogICAgICAgICBib29sIGlzT25C
bG9ja3NUb1N3ZWVwKCkgY29uc3QgeyByZXR1cm4gbV9pc09uQmxvY2tzVG9Td2VlcDsgfQogICAg
ICAgICB2b2lkIHNldElzT25CbG9ja3NUb1N3ZWVwKGJvb2wgdmFsdWUpIHsgbV9pc09uQmxvY2tz
VG9Td2VlcCA9IHZhbHVlOyB9CiAgICAgICAgIAotICAgICAgICBCbG9ja1N0YXRlIHN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQotICAgICAgICAgICAgCisgICAgICAgIGJvb2wgaXNG
cmVlTGlzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyZWVMaXN0ZWQ7IH0KKyAgICAgICAgCisg
ICAgICAgIHNpemVfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICAgICAg
CisgICAgICAgIHZvaWQgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAgICAKKyAgICAgICAg
dm9pZCBkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgaW5kZXgpOwor
ICAgICAgICB2b2lkIGRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgCiAgICAgcHJp
dmF0ZToKICAgICAgICAgSGFuZGxlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2Vs
bFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmLCB2b2lkKik7CiAgICAgICAgICAgICAK
QEAgLTIxNSw3ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KICAgICAgICAgdm9pZCBmb3JFYWNoRnJlZUNlbGwoY29uc3QgRnJl
ZUxpc3QmLCBjb25zdCBGdW5jJik7Ci0gICAgICAgICAgICAKKyAgICAgICAgCiAgICAgICAgIE1h
cmtlZEJsb2NrOjpIYW5kbGUqIG1fcHJldjsKICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSog
bV9uZXh0OwogICAgICAgICAgICAgCkBAIC0yMjUsMTYgKzIyOSwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4gbV9uZXdseUFs
bG9jYXRlZDsKICAgICAgICAgICAgIAogICAgICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIG1fYXR0
cmlidXRlczsKLSAgICAgICAgQmxvY2tTdGF0ZSBtX3N0YXRlOwotICAgICAgICBib29sIG1faXNP
bkJsb2Nrc1RvU3dlZXAgeyBmYWxzZSB9OworICAgICAgICBib29sIG1faXNGcmVlTGlzdGVkIHsg
ZmFsc2UgfTsKICAgICAgICAgICAgIAotICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2Nh
dG9yOworICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yIHsgbnVsbHB0ciB9Owor
ICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CiAgICAgICAgICAgICAKICAgICAgICAg
TWFya2VkQmxvY2sqIG1fYmxvY2s7CiAgICAgfTsKICAgICAgICAgCi0gICAgc3RhdGljIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90
IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7CisgICAgc3RhdGljIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBB
bGxvY2F0b3JBdHRyaWJ1dGVzJik7CiAgICAgICAgIAogICAgIEhhbmRsZSYgaGFuZGxlKCk7CiAg
ICAgICAgIApAQCAtMjc0LDcgKzI3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFzc2VydEZsaXBw
ZWQoKTsKICAgICAgICAgCiAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9Ci0gICAgICAgIAorICAgIAogcHJpdmF0ZToKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lv
biAyMDU4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsMTkgQEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNw
YWNlKEhlYXAqIGhlYXApCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0
b3IqIHByZXZpb3VzID0gbnVsbHB0cjsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBb
Jl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAg
ICAgICAgICAgaWYgKHByZXZpb3VzKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2FuIHNldCB0
aGlzIGluIGFueSBvcmRlci4gVGhlIHBvaW50IGlzIGp1c3QgdGhhdCB3ZSB3YW50IHRvIGJlIGFi
bGUgdG8KKyAgICAgICAgICAgICAgICAvLyBjdXJzb3Igb3ZlciBhbGxvY2F0b3JzLgorICAgICAg
ICAgICAgICAgIGFsbG9jYXRvci5zZXROZXh0QWxsb2NhdG9yKHByZXZpb3VzKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHByZXZpb3VzID0gJmFsbG9jYXRvcjsKKyAgICAgICAgfSk7Cisg
ICAgbV9maXJzdEFsbG9jYXRvciA9IHByZXZpb3VzOworICAgIG1fbmV4dEFsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbiA9IHByZXZpb3VzOwogfQogCiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNl
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNp
b24gMjA1ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw5IEBAIHB1YmxpYzoKICAgICBMYXJnZUFsbG9j
YXRpb24qKiBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uQmVnaW47IH0KICAgICBM
YXJnZUFsbG9jYXRpb24qKiBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQoKSBj
b25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZDsgfQog
ICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUoKSBjb25z
dCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemU7IH0KKyAg
ICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIGZpcnN0QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9maXJzdEFsbG9jYXRvcjsgfQorICAgIE1hcmtlZEFsbG9jYXRvciogbmV4dEFsbG9jYXRvckZv
ckVtcHR5QWxsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEFsbG9jYXRvckZvckVtcHR5
QWxsb2NhdGlvbjsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CkBAIC0yMDcsNiArMjEwLDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xh
cmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUgeyAwIH07CiAgICAgU2VudGluZWxM
aW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX2FjdGl2
ZVdlYWtTZXRzOwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxXZWFrU2V0Pj4gbV9uZXdBY3RpdmVXZWFrU2V0czsKKyAgICAKKyAgICBNYXJrZWRB
bGxvY2F0b3IqIG1fZmlyc3RBbGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgTWFya2VkQWxsb2Nh
dG9yKiBtX25leHRBbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24geyBudWxscHRyIH07CiB9Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9y
RWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288595</attachid>
            <date>2016-09-12 11:48:57 -0700</date>
            <delta_ts>2016-09-12 12:34:52 -0700</delta_ts>
            <desc>I think that I know how to allocate</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20887</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cAkocmV2aXNpb24gMjA1ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDUwICsxMDAsNzkgQEAgdm9pZCBN
YXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dlZQogICAgIG1fbmV4dEJsb2NrVG9Td2Vl
cCA9IGZpbHRlck5leHRCbG9jayhibG9jayk7CiB9CiAKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1h
cmtlZEFsbG9jYXRvcjo6ZmluZEVtcHR5QmxvY2soKQoreworICAgIG1fZW1wdHlDdXJzb3IgPSBt
X2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1cnNvciwgdHJ1ZSk7CisgICAgaWYgKG1fZW1wdHlDdXJz
b3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAg
ICBzZXRJc0VtcHR5KG1fZW1wdHlDdXJzb3IsIGZhbHNlKTsKKyAgICByZXR1cm4gbV9ibG9ja3Nb
bV9lbXB0eUN1cnNvcl07Cit9CisKIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVX
aXRob3V0Q29sbGVjdGluZ0ltcGwoKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBpZiAobV9jdXJyZW50QmxvY2spIHsKLSAgICAg
ICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCk7CisgICAgaWYg
KG1fY3VycmVudEJsb2NrKQogICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVM
aXN0KCk7Ci0gICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50QmxvY2stPm5leHQo
KSk7Ci0gICAgfQogICAgIAogICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOworICAgIG1fY3Vy
cmVudEJsb2NrID0gbnVsbHB0cjsKKyAgICAKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIG1fYWxs
b2NhdGlvbkN1cnNvciA9IG1fY2FuQWxsb2NhdGUuZmluZEJpdChtX2FsbG9jYXRpb25DdXJzb3Is
IHRydWUpOworICAgICAgICBpZiAobV9hbGxvY2F0aW9uQ3Vyc29yID49IG1fYmxvY2tzLnNpemUo
KSkKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgUkVMRUFTRV9BU1NFUlQobV9uZXh0QmxvY2tU
b1N3ZWVwICE9IG1fYmxvY2tMaXN0LmVuZCgpKTsKLQotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiYgYmxvY2sgPSBtX25leHRCbG9j
a1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgbmV4dCA9IGZpbHRlck5l
eHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAgICAvLyBJdCB3b3VsZCBiZSBzdXBlciB3
ZWlyZCBpZiB0aGUgYmxvY2tzIHdlIGFyZSBzd2VlcGluZyBoYXZlIGFueXRoaW5nIGFsbG9jYXRl
ZCBkdXJpbmcgdGhpcwotICAgICAgICAvLyBjeWNsZS4KLSAgICAgICAgQVNTRVJUKCFibG9jay0+
aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAgIAotICAgICAgICBGcmVlTGlzdCBmcmVl
TGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3Qp
OworICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKG1fYWxsb2NhdGlvbkN1cnNvciwgZmFsc2UpOwog
ICAgICAgICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxl
dGUtZnVsbCBibG9jay4gTWFya2luZyB0cmllcyB0byByZXRpcmUgdGhlc2UsIGJ1dAotICAgICAg
ICAvLyB0aGF0IGFsZ29yaXRobSBpcyByYWN5IGFuZCBtYXkgZm9yZ2V0IHRvIGRvIGl0IHNvbWV0
aW1lcy4KLSAgICAgICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKLSAgICAgICAgICAgIGJsb2Nr
LT51bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIEFTU0VSVChibG9j
ay0+aXNNYXJrZWQoKSk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOwot
ICAgICAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBp
ZiAodm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVJbihtX2Jsb2Nrc1ttX2FsbG9jYXRpb25DdXJz
b3JdKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmICgh
bV9mcmVlTGlzdCkgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IDA7Ci0gICAgICAgIHJldHVy
biAwOworICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGZpbmRFbXB0eUJsb2Nr
KCkpCisgICAgICAgIHJldHVybiBhbGxvY2F0ZUluKGJsb2NrKTsKKyAgICAKKyAgICBpZiAoTWFy
a2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX21hcmtlZFNwYWNlLT5maW5kRW1wdHlCbG9jaygp
KSB7CisgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgICAgICBibG9jay0+cmVtb3ZlRnJvbUFs
bG9jYXRvcigpOworICAgICAgICBhZGRCbG9jayhibG9jayk7CisgICAgICAgIHJldHVybiBhbGxv
Y2F0ZUluKGJsb2NrKTsKICAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Zv
aWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykKK3sKKyAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZUluKGJsb2NrKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKK3ZvaWQqIE1hcmtl
ZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK3sK
KyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxvY2stPmhhc0FueU5ld2x5QWxsb2Nh
dGVkKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAKKyAgICBG
cmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2Vl
cFRvRnJlZUxpc3QpOworICAgIAorICAgIC8vIEl0J3MgcG9zc2libGUgdG8gc3R1bWJsZSBvbiBh
IGNvbXBsZXRlbHkgZnVsbCBibG9jay4gTWFya2luZyB0cmllcyB0byByZXRpcmUgdGhlc2UsIGJ1
dAorICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8gaXQg
c29tZXRpbWVzLgorICAgIGlmIChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSkgeworICAg
ICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgYmxvY2stPnVuc3dl
ZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVM
aXN0ZWQoKSk7CisgICAgICAgIEFTU0VSVCghaXNFbXB0eShibG9jaykpOworICAgICAgICBBU1NF
UlQoIWlzQ2FuQWxsb2NhdGUoYmxvY2spKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorICAgIAorICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7CisgICAgc2V0RnJlZUxpc3QoZnJl
ZUxpc3QpOworICAgIAogICAgIHZvaWQqIHJlc3VsdDsKICAgICBpZiAobV9mcmVlTGlzdC5yZW1h
aW5pbmcpIHsKICAgICAgICAgdW5zaWduZWQgY2VsbFNpemUgPSBtX2NlbGxTaXplOwpAQCAtMjI3
LDggKzI1Niw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBhZGRCbG9jayhibG9jayk7Ci0g
ICAgICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKKyAg
ICByZXN1bHQgPSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBBU1NFUlQocmVzdWx0KTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ5LDMwICsyNzcsNjggQEAgc2l6ZV90IE1hcmtlZEFsbG9j
YXRvcjo6YmxvY2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2Nh
dG9yOjp0cnlBbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1f
aGVhcCwgdGhpcywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAgICAKKyAgICBNYXJrZWRC
bG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIG1f
Y2VsbFNpemUsIG1fYXR0cmlidXRlcyk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7
CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFk
ZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJy
ZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4Owor
ICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0g
bV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tz
LmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChoYW5kbGUpOworICAgICAgICBp
ZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAhPSBvbGRDYXBhY2l0eSkgeworICAgICAgICAgICAgZm9y
RWFjaEJpdFZlY3RvcigKKyAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
cikgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQodmVjdG9yLm51bUJpdHMoKSA9PSBvbGRD
YXBhY2l0eSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEFTU0VSVChtX2Jsb2Nrcy5jYXBhY2l0eSgpID4gb2xkQ2FwYWNpdHkpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFz
dEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIHZlY3Rvci5yZXNpemUo
bV9ibG9ja3MuY2FwYWNpdHkoKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgeworICAgICAgICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgp
OworICAgICAgICBBU1NFUlQoIW1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIG1fYmxvY2tzW2lu
ZGV4XSA9IGhhbmRsZTsKKyAgICB9CisgICAgCisgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAg
ICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmVj
dG9yW2luZGV4XSk7CisgICAgICAgIH0pOworCisgICAgaGFuZGxlLT5kaWRBZGRUb0FsbG9jYXRv
cih0aGlzLCBpbmRleCk7CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsKLSAg
ICBzZXROZXh0QmxvY2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRC
bG9jayhibG9jayk7CisgICAgc2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKKyAgICBzZXRJc0VtcHR5
KGluZGV4LCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlbW92ZUJsb2NrKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBi
bG9jaykgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZpbHRlck5leHRCbG9jayhtX2N1cnJl
bnRCbG9jay0+bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0gICAg
fQotICAgIGlmIChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxvY2spCi0gICAgICAgIHNldE5leHRC
bG9ja1RvU3dlZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOworICAgIEFTU0VSVChibG9j
ay0+YWxsb2NhdG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fYmxvY2tzW2Jsb2NrLT5pbmRl
eCgpXSA9PSBibG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJlbW92ZUJsb2NrKCk7Ci0gICAgbV9i
bG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPSBu
dWxscHRyOworICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2stPmluZGV4KCkpOwor
ICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYg
dmVjdG9yKSB7CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCldID0gZmFsc2U7Cisg
ICAgICAgIH0pOworICAgIAorICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiB9
CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCkBAIC0zMDcsNyArMzcz
LDEwIEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXNldCgpCiAKICAgICAgICAgICAgIEZyZWVM
aXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9G
cmVlTGlzdCk7CiAgICAgICAgICAgICBibG9jay0+emFwKGZyZWVMaXN0KTsKLSAgICAgICAgICAg
IHJldGlyZShibG9jayk7CisgICAgICAgICAgICBzZXRJc0VtcHR5KGJsb2NrLCBmYWxzZSk7Cisg
ICAgICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKGJsb2NrLCBmYWxzZSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGluZ3M/CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNp
b24gMjA1ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDMxIEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBN
YXJrZWRTcGFjZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAorI2RlZmluZSBGT1Jf
RUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChtYWNybykgXAorICAgIG1hY3JvKGxpdmUsIExpdmUp
IC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9c
CisgICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBo
YXZlIG5vIGxpdmUgb2JqZWN0cy4gKi8gXAorICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVk
KSAvKiBUaGUgc2V0IG9mIGFsbGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4g
Ki9cCisgICAgbWFjcm8oY2FuQWxsb2NhdGUsIENhbkFsbG9jYXRlKSAvKiBUaGUgc2V0IG9mIGFs
bCBibG9ja3MgdGhhdCBjYW4gYmUgYWxsb2NhdGVkIGluIHJpZ2h0IG5vdy4gKi8gXAorICAgIG1h
Y3JvKGVkZW4sIEVkZW4pIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9i
amVjdHMgc2luY2UgdGhlIGxhc3QgR0MuICovXAorICAgIG1hY3JvKHNuYXBzaG90LCBTbmFwc2hv
dCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGlu
Y3JlbWVudGFsIHN3ZWVwZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQg
ZHVyaW5nIG1hcmtpbmcuIFdlIHVzZSB0aGVtIGFmdGVyIG1hcmtpbmcgdG8gY29tcHV0ZSBtX2Vt
cHR5IGFuZCAqL1wKKyAgICAvKiBtX2NhbkFsbG9jYXRlOiAqL1wKKyAgICAvKiAqL1wKKyAgICAv
KiBtX2VtcHR5LnNldChtX2xpdmUuYml0QW5kKG1fbWFya2luZ05vdEVtcHR5LmJpdE5vdCgpKSk7
ICovXAorICAgIC8qIG1fY2FuQWxsb2NhdGUuc2V0KG1fbGl2ZS5iaXRBbmQobV9tYXJraW5nUmV0
aXJlZC5iaXROb3QoKSkuYml0QW5kKG1fbWFya2luZ05vdEVtcHR5KSk7ICovXAorICAgIC8qICov
XAorICAgIC8qIE5vdGUgdGhhdCB3ZSBhbHNvIGNsZWFyIG1fYWxsb2NhdGVkIGF0IGFyb3VuZCB0
aGUgc2FtZSB0aW1lLiBJbiBlZGVuIGNvbGxlY3Rpb25zIHdlIHdvdWxkICovXAorICAgIC8qIGRv
OiAqL1wKKyAgICAvKiAqL1wKKyAgICAvKiBtX2FsbG9jYXRlZC5leGNsdWRlKG1fZWRlbik7ICov
XAorICAgIC8qICovXAorICAgIC8qIEFuZCBpbiBmdWxsIHdlIHdvdWxkIGRvOiAqL1wKKyAgICAv
KiAqL1wKKyAgICAvKiBtX2FsbG9jYXRlZC5jbGVhckFsbCgpOyAqL1wKKyAgICBtYWNybyhtYXJr
aW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgXAorICAgIG1hY3JvKG1hcmtpbmdSZXRpcmVk
LCBNYXJraW5nUmV0aXJlZCkKKwogY2xhc3MgTWFya2VkQWxsb2NhdG9yIHsKICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCkBAIC03Miw2ICs5NywzMCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAgCiAgICAgc3RhdGlj
IHNpemVfdCBibG9ja1NpemVGb3JCeXRlcyhzaXplX3QpOworICAgIAorI2RlZmluZSBNQVJLRURf
QUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAg
IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4XTsgfSBcCisgICAgYm9vbCBpcyAjIyBjYXBp
dGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QgeyByZXR1cm4gaXMg
IyMgY2FwaXRhbEJpdE5hbWUoYmxvY2stPmluZGV4KCkpOyB9IFwKKyAgICB2b2lkIHNldElzICMj
IGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBtXyAjIyBsb3dlckJp
dE5hbWVbaW5kZXhdID0gdmFsdWU7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5h
bWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXMgIyMgY2Fw
aXRhbEJpdE5hbWUoYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQorICAgIEZPUl9FQUNIX01BUktF
RF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUykKKyN1bmRlZiBN
QVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CisgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgewor
I2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0
YWxCaXROYW1lKSBcCisgICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAgICAg
Rk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJB
Q0spOworI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAor
ICAgIE1hcmtlZEFsbG9jYXRvciogbmV4dEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4
dEFsbG9jYXRvcjsgfQorICAgIAorICAgIC8vIE1hcmtlZFNwYWNlIGNhbGxzIHRoaXMgZHVyaW5n
IGluaXQuCisgICAgdm9pZCBzZXROZXh0QWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2Nh
dG9yKSB7IG1fbmV4dEFsbG9jYXRvciA9IGFsbG9jYXRvcjsgfQorICAgIAorICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGZpbmRFbXB0eUJsb2NrKCk7CiAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIE1hcmtlZEJsb2NrOwpAQCAtODIsNiArMTMxLDEwIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRl
V2l0aG91dENvbGxlY3RpbmdJbXBsKCk7CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5QWxs
b2NhdGVCbG9jaygpOworICAgIHZvaWQgYWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSopOwor
ICAgIHZvaWQgcmVtb3ZlQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSopOworICAgIHZvaWQqIHRy
eUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSopOworICAgIHZvaWQqIGFsbG9jYXRlSW4o
TWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkb1Rlc3RDb2xs
ZWN0aW9uc0lmTmVlZGVkKCk7CiAgICAgdm9pZCByZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRsZSop
OwogICAgIApAQCAtOTEsMTYgKzE0NCwzMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TmV4dEJs
b2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgCiAgICAgRnJlZUxpc3QgbV9m
cmVlTGlzdDsKKyAgICAKKyAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tz
OworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mcmVlQmxvY2tJbmRpY2VzOworICAgIAorI2RlZmlu
ZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxC
aXROYW1lKSBcCisgICAgRmFzdEJpdFZlY3RvciBtXyAjIyBsb3dlckJpdE5hbWU7CisgICAgRk9S
X0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJ
T04pCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04KKyAgICAKKyAgICAv
LyBBZnRlciB5b3UgZG8gc29tZXRoaW5nIHRvIGEgYmxvY2sgYmFzZWQgb24gb25lIG9mIHRoZXNl
IGN1cnNvcnMsIHlvdSBjbGVhciB0aGUgYml0IGluIHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcg
Yml0dmVjdG9yIGFuZCBsZWF2ZSB0aGUgY3Vyc29yIHdoZXJlIGl0IHdhcy4KKyAgICBzaXplX3Qg
bV9hbGxvY2F0aW9uQ3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhh
dCBpcyBhIGNhbmRpZGF0ZSBmb3IgYWxsb2NhdGlvbi4KKyAgICBzaXplX3QgbV9lbXB0eUN1cnNv
ciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUg
Zm9yIGVtcHR5IGFsbG9jYXRpb24gKGFsbG9jYXRpbmcgaW4gZW1wdHkgYmxvY2tzKS4KKyAgICBz
aXplX3QgbV9zbmFwc2hvdEN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2Nr
IHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGluY3JlbWVudGFsIHN3ZWVwaW5nLgorICAgIAogICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fY3VycmVudEJsb2NrOwogICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIG1fbGFzdEFjdGl2ZUJsb2NrOwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fbmV4
dEJsb2NrVG9Td2VlcDsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRs
ZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fYmxvY2tMaXN0
OwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4gbV9yZXRpcmVkQmxvY2tzOworCiAgICAg
TG9jayBtX2xvY2s7CiAgICAgdW5zaWduZWQgbV9jZWxsU2l6ZTsKICAgICBBbGxvY2F0b3JBdHRy
aWJ1dGVzIG1fYXR0cmlidXRlczsKICAgICBIZWFwKiBtX2hlYXA7CiAgICAgTWFya2VkU3BhY2Uq
IG1fbWFya2VkU3BhY2U7CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX25leHRBbGxvY2F0b3I7CiB9
OwogCiBpbmxpbmUgcHRyZGlmZl90IE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdCgp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZp
c2lvbiAyMDU4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0
aWMgY29uc3QgYm9vbCBjb21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGljIHNpemVfdCBiYWxh
bmNlOwogCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAm
IGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0
IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCitNYXJrZWRCbG9jazo6SGFuZGxlKiBN
YXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3Qg
QWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcykKIHsKICAgICBpZiAoY29tcHV0ZUJhbGFu
Y2UpIHsKICAgICAgICAgYmFsYW5jZSsrOwpAQCAtNDgsMTYgKzQ4LDE0IEBAIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCiAgICAgICAgIHNjcmliYmxlKGJsb2NrU3BhY2Us
IGJsb2NrU2l6ZSk7Ci0gICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYWxsb2NhdG9yLCBjZWxs
U2l6ZSwgYXR0cmlidXRlcywgYmxvY2tTcGFjZSk7CisgICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVh
cCwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOwogfQogCi1NYXJrZWRCbG9jazo6
SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNp
emVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcywgdm9p
ZCogYmxvY2tTcGFjZSkKK01hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCBz
aXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIHZv
aWQqIGJsb2NrU3BhY2UpCiAgICAgOiBtX2F0b21zUGVyQ2VsbCgoY2VsbFNpemUgKyBhdG9tU2l6
ZSAtIDEpIC8gYXRvbVNpemUpCiAgICAgLCBtX2VuZEF0b20oYXRvbXNQZXJCbG9jayAtIG1fYXRv
bXNQZXJDZWxsICsgMSkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQotICAgICwgbV9z
dGF0ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCi0gICAgLCBtX2FsbG9j
YXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX3dlYWtTZXQoYWxsb2NhdG9yLT5oZWFwKCktPnZtKCks
IENlbGxDb250YWluZXIoKSkKKyAgICAsIG1fd2Vha1NldChoZWFwLnZtKCksIENlbGxDb250YWlu
ZXIoKSkKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1NwYWNlKSBNYXJrZWRC
bG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCkBAIC02NSw3ICs2Myw2IEBAIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCAKICAgICAKICAgICBoZWFwLmRpZEFsbG9j
YXRlQmxvY2soYmxvY2tTaXplKTsKICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9O
KHRoaXMpOwotICAgIEFTU0VSVChhbGxvY2F0b3IpOwogICAgIGlmIChtX2F0dHJpYnV0ZXMuY2Vs
bEtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hdHRy
aWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pOwogfQpAQCAtNzgs
NiArNzUsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlOjp+SGFuZGxlKCkKICAgICAgICAgaWYgKCEo
YmFsYW5jZSAlIDEwKSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6
ICIsIGJhbGFuY2UsICJcbiIpOwogICAgIH0KKyAgICByZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAg
ICAgbV9ibG9jay0+fk1hcmtlZEJsb2NrKCk7CiAgICAgZmFzdEFsaWduZWRGcmVlKG1fYmxvY2sp
OwogICAgIGhlYXAuZGlkRnJlZUJsb2NrKGJsb2NrU2l6ZSk7CkBAIC0zOTYsMTEgKzM5NCw2IEBA
IGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkKICAgICByZXR1cm4gbV9ibG9j
ay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6d2lsbFJlbW92
ZUJsb2NrKCkKLXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLX0KLQogdm9pZCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QoKQogewogICAgIGZsaXBJZk5lY2Vzc2FyeSgp
OwpAQCAtNDMwLDkgKzQyMywzOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhckhhc0FueU1hcmtl
ZCgpCiAKIHZvaWQgTWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KCkKIHsKKyAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgbm90IGNhbGwgcmV0aXJlLiBJdCBzaG91bGQganVzdCBhdG9taWMgQ0FT
IHRoZSBtYXJraW5nUmV0aXJlZCBiaXQuCiAgICAgaGFuZGxlKCkubV9hbGxvY2F0b3ItPnJldGly
ZSgmaGFuZGxlKCkpOwogfQogCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21B
bGxvY2F0b3IoKQoreworICAgIGlmICghbV9hbGxvY2F0b3IpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX2FsbG9jYXRvci0+cmVtb3ZlQmxvY2sodGhpcyk7Cit9CisKK3ZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKKyAgICAK
KyAgICBtX2luZGV4ID0gaW5kZXg7CisgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Cit9CisK
K3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7Cisg
ICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgCisgICAgQVNTRVJUKG1faW5kZXggIT0gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsK
KyAgICAKKyAgICBtX2luZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsK
KyAgICBtX2FsbG9jYXRvciA9IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBu
YW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaAkocmV2aXNpb24gMjA1ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzYsOCArNzYsNiBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIYW5kbGU7CiBwdWJsaWM6Ci0gICAgZW51bSBCbG9ja1N0
YXRlIDogdWludDhfdCB7IE5ldywgRnJlZUxpc3RlZCwgQWxsb2NhdGVkLCBNYXJrZWQgfTsKLSAg
ICAgICAgCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tU2l6ZSA9IDE2OyAvLyBieXRlcwog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0gMTYgKiBLQjsKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGJsb2NrTWFzayA9IH4oYmxvY2tTaXplIC0gMSk7IC8vIGJsb2NrU2l6ZSBt
dXN0IGJlIGEgcG93ZXIgb2YgdHdvLgpAQCAtMTc4LDcgKzE3Niw2IEBAIHB1YmxpYzoKICAgICAg
ICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwogICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgpIGNv
bnN0OwogICAgICAgICBib29sIG5lZWRzU3dlZXBpbmcoKSBjb25zdDsKLSAgICAgICAgdm9pZCB3
aWxsUmVtb3ZlQmxvY2soKTsKIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4g
SXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwo
Y29uc3QgRnVuY3RvciYpOwpAQCAtMTk1LDggKzE5MiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGJv
b2wgaXNPbkJsb2Nrc1RvU3dlZXAoKSBjb25zdCB7IHJldHVybiBtX2lzT25CbG9ja3NUb1N3ZWVw
OyB9CiAgICAgICAgIHZvaWQgc2V0SXNPbkJsb2Nrc1RvU3dlZXAoYm9vbCB2YWx1ZSkgeyBtX2lz
T25CbG9ja3NUb1N3ZWVwID0gdmFsdWU7IH0KICAgICAgICAgCi0gICAgICAgIEJsb2NrU3RhdGUg
c3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0gICAgICAgICAgICAKKyAgICAgICAg
Ym9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnJlZUxpc3RlZDsgfQorICAg
ICAgICAKKyAgICAgICAgc2l6ZV90IGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQor
ICAgICAgICAKKyAgICAgICAgdm9pZCByZW1vdmVGcm9tQWxsb2NhdG9yKCk7CisgICAgICAgIAor
ICAgICAgICB2b2lkIGRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBp
bmRleCk7CisgICAgICAgIHZvaWQgZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICBIYW5kbGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNp
emVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYsIHZvaWQqKTsKICAgICAg
ICAgICAgIApAQCAtMjE1LDcgKzIxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgICAgICB2b2lkIGZvckVhY2hGcmVlQ2VsbChj
b25zdCBGcmVlTGlzdCYsIGNvbnN0IEZ1bmMmKTsKLSAgICAgICAgICAgIAorICAgICAgICAKICAg
ICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9wcmV2OwogICAgICAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBtX25leHQ7CiAgICAgICAgICAgICAKQEAgLTIyNSwxNiArMjI5LDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+PiBt
X25ld2x5QWxsb2NhdGVkOwogICAgICAgICAgICAgCiAgICAgICAgIEFsbG9jYXRvckF0dHJpYnV0
ZXMgbV9hdHRyaWJ1dGVzOwotICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7Ci0gICAgICAgIGJv
b2wgbV9pc09uQmxvY2tzVG9Td2VlcCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9pc0ZyZWVM
aXN0ZWQgeyBmYWxzZSB9OwogICAgICAgICAgICAgCi0gICAgICAgIE1hcmtlZEFsbG9jYXRvciog
bV9hbGxvY2F0b3I7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3IgeyBudWxs
cHRyIH07CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsKICAgICAgICAgICAgIAog
ICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jazsKICAgICB9OwogICAgICAgICAKLSAgICBzdGF0
aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3Iq
LCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0
aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBzaXplX3QgY2VsbFNpemUs
IGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKICAgICAgICAgCiAgICAgSGFuZGxlJiBoYW5k
bGUoKTsKICAgICAgICAgCkBAIC0yNzQsNyArMjc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXNz
ZXJ0RmxpcHBlZCgpOwogICAgICAgICAKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247IH0KLSAgICAgICAgCisgICAgCiBwcml2YXRl
OgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAt
IDE7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJ
KHJldmlzaW9uIDIwNTgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSwxOSBAQCBNYXJrZWRTcGFjZTo6
TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOworICAgIAorICAgIE1hcmtl
ZEFsbG9jYXRvciogcHJldmlvdXMgPSBudWxscHRyOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisg
ICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1
cyB7CisgICAgICAgICAgICBpZiAocHJldmlvdXMpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBj
YW4gc2V0IHRoaXMgaW4gYW55IG9yZGVyLiBUaGUgcG9pbnQgaXMganVzdCB0aGF0IHdlIHdhbnQg
dG8gYmUgYWJsZSB0bworICAgICAgICAgICAgICAgIC8vIGN1cnNvciBvdmVyIGFsbG9jYXRvcnMu
CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNldE5leHRBbGxvY2F0b3IocHJldmlvdXMpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldmlvdXMgPSAmYWxsb2NhdG9yOworICAgICAg
ICB9KTsKKyAgICBtX2ZpcnN0QWxsb2NhdG9yID0gcHJldmlvdXM7CisgICAgbV9uZXh0QWxsb2Nh
dG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gcHJldmlvdXM7CiB9CiAKIE1hcmtlZFNwYWNlOjp+TWFy
a2VkU3BhY2UoKQpAQCAtNTUzLDQgKzU2NiwxMyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxv
Y2F0ZUluQmxvY2soTWFyCiAgICAgfQogfQogCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRT
cGFjZTo6ZmluZEVtcHR5QmxvY2soKQoreworICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVtcHR5
QWxsb2NhdGlvbjsgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRvckZv
ckVtcHR5QWxsb2NhdGlvbi0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGlmIChNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jayA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5maW5k
RW1wdHlCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIGJsb2NrOworICAgIH0KKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDIwNTgwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw2
ICsxNjgsMTEgQEAgcHVibGljOgogICAgIExhcmdlQWxsb2NhdGlvbioqIGxhcmdlQWxsb2NhdGlv
bnNGb3JUaGlzQ29sbGVjdGlvbkJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRp
b25zRm9yVGhpc0NvbGxlY3Rpb25CZWdpbjsgfQogICAgIExhcmdlQWxsb2NhdGlvbioqIGxhcmdl
QWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VB
bGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxv
Y2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxv
Y2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZTsgfQorICAgIAorICAgIE1hcmtlZEFsbG9jYXRv
ciogZmlyc3RBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0QWxsb2NhdG9yOyB9Cisg
ICAgTWFya2VkQWxsb2NhdG9yKiBuZXh0QWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9uZXh0QWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyB9CisgICAgCisg
ICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5QmxvY2soKTsKIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtMjA3LDYgKzIxMiw5IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rp
b25TaXplIHsgMCB9OwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9hY3RpdmVXZWFrU2V0czsKICAgICBTZW50aW5lbExpbmtl
ZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+IG1fbmV3QWN0aXZl
V2Vha1NldHM7CisgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2ZpcnN0QWxsb2NhdG9yIHsg
bnVsbHB0ciB9OworICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9j
YXRpb24geyBudWxscHRyIH07CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYs
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288602</attachid>
            <date>2016-09-12 12:34:52 -0700</date>
            <delta_ts>2016-09-13 09:30:59 -0700</delta_ts>
            <desc>sweeping is starting to make sense!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30294</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cAkocmV2aXNpb24gMjA1ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDUwICsxMDAsNzUgQEAgdm9pZCBN
YXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dlZQogICAgIG1fbmV4dEJsb2NrVG9Td2Vl
cCA9IGZpbHRlck5leHRCbG9jayhibG9jayk7CiB9CiAKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1h
cmtlZEFsbG9jYXRvcjo6ZmluZEVtcHR5QmxvY2soKQoreworICAgIG1fZW1wdHlDdXJzb3IgPSBt
X2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1cnNvciwgdHJ1ZSk7CisgICAgaWYgKG1fZW1wdHlDdXJz
b3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gbV9ibG9ja3NbbV9lbXB0eUN1cnNvcl07Cit9CisKIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6
dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwoKQogewogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBpZiAobV9jdXJyZW50Qmxv
Y2spIHsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2Vl
cCk7CisgICAgaWYgKG1fY3VycmVudEJsb2NrKQogICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlk
Q29uc3VtZUZyZWVMaXN0KCk7Ci0gICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50
QmxvY2stPm5leHQoKSk7Ci0gICAgfQogICAgIAogICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkp
OworICAgIG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsKKyAgICAKKyAgICBmb3IgKDs7KSB7Cisg
ICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IG1fY2FuQWxsb2NhdGUuZmluZEJpdChtX2FsbG9j
YXRpb25DdXJzb3IsIHRydWUpOworICAgICAgICBpZiAobV9hbGxvY2F0aW9uQ3Vyc29yID49IG1f
YmxvY2tzLnNpemUoKSkKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgUkVMRUFTRV9BU1NFUlQo
bV9uZXh0QmxvY2tUb1N3ZWVwICE9IG1fYmxvY2tMaXN0LmVuZCgpKTsKLQotICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiYgYmxvY2sg
PSBtX25leHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgbmV4
dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAgICAvLyBJdCB3b3Vs
ZCBiZSBzdXBlciB3ZWlyZCBpZiB0aGUgYmxvY2tzIHdlIGFyZSBzd2VlcGluZyBoYXZlIGFueXRo
aW5nIGFsbG9jYXRlZCBkdXJpbmcgdGhpcwotICAgICAgICAvLyBjeWNsZS4KLSAgICAgICAgQVNT
RVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAgIAotICAgICAgICBG
cmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2Vl
cFRvRnJlZUxpc3QpOwotICAgICAgICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVt
YmxlIG9uIGEgY29tcGxldGUtZnVsbCBibG9jay4gTWFya2luZyB0cmllcyB0byByZXRpcmUgdGhl
c2UsIGJ1dAotICAgICAgICAvLyB0aGF0IGFsZ29yaXRobSBpcyByYWN5IGFuZCBtYXkgZm9yZ2V0
IHRvIGRvIGl0IHNvbWV0aW1lcy4KLSAgICAgICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxs
RmFpbCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKLSAg
ICAgICAgICAgIGJsb2NrLT51bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAg
ICAgIEFTU0VSVChibG9jay0+aXNNYXJrZWQoKSk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2sp
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IGJsb2NrOwotICAgICAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7Ci0gICAgICAgIGJy
ZWFrOworICAgICAgICBpZiAodm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVJbihtX2Jsb2Nrc1tt
X2FsbG9jYXRpb25DdXJzb3JdKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
ICAgIAotICAgIGlmICghbV9mcmVlTGlzdCkgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IDA7
Ci0gICAgICAgIHJldHVybiAwOworICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9
IGZpbmRFbXB0eUJsb2NrKCkpCisgICAgICAgIHJldHVybiBhbGxvY2F0ZUluKGJsb2NrKTsKKyAg
ICAKKyAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX21hcmtlZFNwYWNlLT5m
aW5kRW1wdHlCbG9jaygpKSB7CisgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgICAgICBibG9j
ay0+cmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAgICBhZGRCbG9jayhibG9jayk7CisgICAg
ICAgIHJldHVybiBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICB9CisgICAgCisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CiAKK3ZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbihNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jaykKK3sKKyAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZUluKGJs
b2NrKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3ZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykKK3sKKyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxvY2stPmhh
c0FueU5ld2x5QWxsb2NhdGVkKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgp
KTsKKyAgICAKKyAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9j
azo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOworICAgIAorICAgIC8vIEl0J3MgcG9zc2libGUg
dG8gc3R1bWJsZSBvbiBhIGNvbXBsZXRlbHkgZnVsbCBibG9jay4gTWFya2luZyB0cmllcyB0byBy
ZXRpcmUgdGhlc2UsIGJ1dAorICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBm
b3JnZXQgdG8gZG8gaXQgc29tZXRpbWVzLgorICAgIGlmIChmcmVlTGlzdC5hbGxvY2F0aW9uV2ls
bEZhaWwoKSkgeworICAgICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAg
ICAgYmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOworICAgICAgICBBU1NFUlQo
IWJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgICAgIEFTU0VSVCghaXNFbXB0eShibG9jaykp
OworICAgICAgICBBU1NFUlQoIWlzQ2FuQWxsb2NhdGUoYmxvY2spKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorICAgIAorICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7CisgICAg
c2V0RnJlZUxpc3QoZnJlZUxpc3QpOworICAgIAogICAgIHZvaWQqIHJlc3VsdDsKICAgICBpZiAo
bV9mcmVlTGlzdC5yZW1haW5pbmcpIHsKICAgICAgICAgdW5zaWduZWQgY2VsbFNpemUgPSBtX2Nl
bGxTaXplOwpAQCAtMjI3LDggKzI1Miw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2Nh
dGVTbG93Q2FzZUkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBhZGRC
bG9jayhibG9jayk7Ci0gICAgICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENv
bGxlY3RpbmcoKTsKKyAgICByZXN1bHQgPSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBBU1NFUlQo
cmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ5LDMwICsyNzMsNjggQEAgc2l6
ZV90IE1hcmtlZEFsbG9jYXRvcjo6YmxvY2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6OkhhbmRs
ZSogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2Nr
Ojp0cnlDcmVhdGUoKm1faGVhcCwgdGhpcywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAg
ICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3Jl
YXRlKCptX2hlYXAsIG1fY2VsbFNpemUsIG1fYXR0cmlidXRlcyk7CisgICAgaWYgKCFoYW5kbGUp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFk
ZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAg
IEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAg
c2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBh
Y2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChoYW5k
bGUpOworICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAhPSBvbGRDYXBhY2l0eSkgewor
ICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgICAgICAgICBbJl0gKEZhc3RC
aXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQodmVjdG9yLm51
bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIEFTU0VSVChtX2Jsb2Nrcy5jYXBhY2l0eSgpID4gb2xkQ2FwYWNpdHkp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAg
ICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAg
IHZlY3Rvci5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHkoKSk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpbmRleCA9IG1fZnJlZUJsb2NrSW5k
aWNlcy50YWtlTGFzdCgpOworICAgICAgICBBU1NFUlQoIW1fYmxvY2tzW2luZGV4XSk7CisgICAg
ICAgIG1fYmxvY2tzW2luZGV4XSA9IGhhbmRsZTsKKyAgICB9CisgICAgCisgICAgZm9yRWFjaEJp
dFZlY3RvcigKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAg
ICAgIEFTU0VSVCghdmVjdG9yW2luZGV4XSk7CisgICAgICAgIH0pOworCisgICAgaGFuZGxlLT5k
aWRBZGRUb0FsbG9jYXRvcih0aGlzLCBpbmRleCk7CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBw
ZW5kKGJsb2NrKTsKLSAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtl
ZFNwYWNlLT5kaWRBZGRCbG9jayhibG9jayk7CisgICAgc2V0SXNMaXZlKGluZGV4LCB0cnVlKTsK
KyAgICBzZXRJc0VtcHR5KGluZGV4LCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6
OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlmIChtX2N1
cnJlbnRCbG9jayA9PSBibG9jaykgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZpbHRlck5l
eHRCbG9jayhtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxpc3QoRnJl
ZUxpc3QoKSk7Ci0gICAgfQotICAgIGlmIChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxvY2spCi0g
ICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOwor
ICAgIEFTU0VSVChibG9jay0+YWxsb2NhdG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fYmxv
Y2tzW2Jsb2NrLT5pbmRleCgpXSA9PSBibG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJlbW92ZUJs
b2NrKCk7Ci0gICAgbV9ibG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9j
ay0+aW5kZXgoKV0gPSBudWxscHRyOworICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxv
Y2stPmluZGV4KCkpOworICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAo
RmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4
KCldID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIAorICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9t
QWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygp
CkBAIC0zMDcsNyArMzY5LDEwIEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXNldCgpCiAKICAg
ICAgICAgICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpI
YW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CiAgICAgICAgICAgICBibG9jay0+emFwKGZyZWVMaXN0
KTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7CisgICAgICAgICAgICBzZXRJc0VtcHR5KGJs
b2NrLCBmYWxzZSk7CisgICAgICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKGJsb2NrLCBmYWxzZSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGluZ3M/CiAgICAgICAgIH0K
ICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuaAkocmV2aXNpb24gMjA1ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDMxIEBAIGNsYXNz
IEhlYXA7CiBjbGFzcyBNYXJrZWRTcGFjZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAorI2RlZmluZSBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChtYWNybykgXAorICAgIG1h
Y3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0
dWFsIGJsb2Nrcy4gKi9cCisgICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFs
bCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cyBhbmQgbm90aGluZyB0byBkZXN0cm95
LiAqLyBcCisgICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxs
YmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAgICBtYWNybyhjYW5B
bGxvY2F0ZSwgQ2FuQWxsb2NhdGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNhbiBi
ZSBhbGxvY2F0ZWQgaW4gcmlnaHQgbm93LiAqLyBcCisgICAgbWFjcm8oZWRlbiwgRWRlbikgLyog
VGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUgbGFz
dCBHQy4gKi9cCisgICAgbWFjcm8oc25hcHNob3QsIFNuYXBzaG90KSAvKiBUaGUgc2V0IG9mIGFs
bCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4g
Ki9cCisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gV2Ug
dXNlIHRoZW0gYWZ0ZXIgbWFya2luZyB0byBjb21wdXRlIG1fZW1wdHkgYW5kICovXAorICAgIC8q
IG1fY2FuQWxsb2NhdGU6ICovXAorICAgIC8qICovXAorICAgIC8qIG1fZW1wdHkuc2V0KG1fbGl2
ZS5iaXRBbmQobV9tYXJraW5nTm90RW1wdHkuYml0Tm90KCkpKTsgKi9cCisgICAgLyogbV9jYW5B
bGxvY2F0ZS5zZXQobV9saXZlLmJpdEFuZChtX21hcmtpbmdSZXRpcmVkLmJpdE5vdCgpKS5iaXRB
bmQobV9tYXJraW5nTm90RW1wdHkpKTsgKi9cCisgICAgLyogKi9cCisgICAgLyogTm90ZSB0aGF0
IHdlIGFsc28gY2xlYXIgbV9hbGxvY2F0ZWQgYXQgYXJvdW5kIHRoZSBzYW1lIHRpbWUuIEluIGVk
ZW4gY29sbGVjdGlvbnMgd2Ugd291bGQgKi9cCisgICAgLyogZG86ICovXAorICAgIC8qICovXAor
ICAgIC8qIG1fYWxsb2NhdGVkLmV4Y2x1ZGUobV9lZGVuKTsgKi9cCisgICAgLyogKi9cCisgICAg
LyogQW5kIGluIGZ1bGwgd2Ugd291bGQgZG86ICovXAorICAgIC8qICovXAorICAgIC8qIG1fYWxs
b2NhdGVkLmNsZWFyQWxsKCk7ICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2lu
Z05vdEVtcHR5KSBcCisgICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKQor
CiBjbGFzcyBNYXJrZWRBbGxvY2F0b3IgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKQEAgLTcyLDYgKzk3LDMwIEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRP
dXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJsb2NrU2l6ZUZv
ckJ5dGVzKHNpemVfdCk7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VT
U09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMg
Y2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dlckJp
dE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShi
bG9jay0+aW5kZXgoKSk7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6
ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1
ZTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+
aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFS
S0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklU
X0FDQ0VTU09SUworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVh
Y2hCaXRWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExP
Q0FUT1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAg
ICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBGT1JfRUFDSF9NQVJLRURfQUxM
T0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyk7CisjdW5kZWYgTUFSS0VE
X0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9CisgICAgCisgICAgTWFya2VkQWxsb2NhdG9y
KiBuZXh0QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0QWxsb2NhdG9yOyB9CisgICAg
CisgICAgLy8gTWFya2VkU3BhY2UgY2FsbHMgdGhpcyBkdXJpbmcgaW5pdC4KKyAgICB2b2lkIHNl
dE5leHRBbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IpIHsgbV9uZXh0QWxsb2Nh
dG9yID0gYWxsb2NhdG9yOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVt
cHR5QmxvY2soKTsKICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7
CkBAIC04Miw2ICsxMzEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhv
dXRDb2xsZWN0aW5nKCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0lt
cGwoKTsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAg
dm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7CisgICAgdm9pZCByZW1vdmVCbG9j
ayhNYXJrZWRCbG9jazo6SGFuZGxlKik7CisgICAgdm9pZCogdHJ5QWxsb2NhdGVJbihNYXJrZWRC
bG9jazo6SGFuZGxlKik7CisgICAgdm9pZCogYWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxl
Kik7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoKTsK
ICAgICB2b2lkIHJldGlyZShNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgCkBAIC05MSwxNiAr
MTQ0LDMwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXROZXh0QmxvY2tUb1N3ZWVwKE1hcmtlZEJs
b2NrOjpIYW5kbGUqKTsKICAgICAKICAgICBGcmVlTGlzdCBtX2ZyZWVMaXN0OworICAgIAorICAg
IFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9ja3M7CisgICAgVmVjdG9yPHVuc2ln
bmVkPiBtX2ZyZWVCbG9ja0luZGljZXM7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1Jf
QklUX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICBGYXN0
Qml0VmVjdG9yIG1fICMjIGxvd2VyQml0TmFtZTsKKyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NB
VE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTikKKyN1bmRlZiBNQVJLRURf
QUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTgorICAgIAorICAgIC8vIEFmdGVyIHlvdSBkbyBzb21l
dGhpbmcgdG8gYSBibG9jayBiYXNlZCBvbiBvbmUgb2YgdGhlc2UgY3Vyc29ycywgeW91IGNsZWFy
IHRoZSBiaXQgaW4gdGhlCisgICAgLy8gY29ycmVzcG9uZGluZyBiaXR2ZWN0b3IgYW5kIGxlYXZl
IHRoZSBjdXJzb3Igd2hlcmUgaXQgd2FzLgorICAgIHNpemVfdCBtX2FsbG9jYXRpb25DdXJzb3Ig
eyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZv
ciBhbGxvY2F0aW9uLgorICAgIHNpemVfdCBtX2VtcHR5Q3Vyc29yIHsgMCB9OyAvLyBQb2ludHMg
dG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgZW1wdHkgYWxsb2NhdGlv
biAoYWxsb2NhdGluZyBpbiBlbXB0eSBibG9ja3MpLgorICAgIHNpemVfdCBtX3NuYXBzaG90Q3Vy
c29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0
ZSBmb3IgaW5jcmVtZW50YWwgc3dlZXBpbmcuCisgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogbV9jdXJyZW50QmxvY2s7CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9sYXN0QWN0aXZl
QmxvY2s7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0QmxvY2tUb1N3ZWVwOwotICAg
IFNlbnRpbmVsTGlua2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4gbV9ibG9ja0xpc3Q7Ci0gICAgU2VudGluZWxMaW5r
ZWRMaXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJs
b2NrOjpIYW5kbGU+PiBtX3JldGlyZWRCbG9ja3M7CisKICAgICBMb2NrIG1fbG9jazsKICAgICB1
bnNpZ25lZCBtX2NlbGxTaXplOwogICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVz
OwogICAgIEhlYXAqIG1faGVhcDsKICAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAg
ICBNYXJrZWRBbGxvY2F0b3IqIG1fbmV4dEFsbG9jYXRvcjsKIH07CiAKIGlubGluZSBwdHJkaWZm
X3QgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0KCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDIwNTgwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBib29sIGNvbXB1
dGVCYWxhbmNlID0gZmFsc2U7CiBzdGF0aWMgc2l6ZV90IGJhbGFuY2U7CiAKLU1hcmtlZEJsb2Nr
OjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRl
cyYgYXR0cmlidXRlcykKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmVh
dGUoSGVhcCYgaGVhcCwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzKQogewogICAgIGlmIChjb21wdXRlQmFsYW5jZSkgewogICAgICAgICBiYWxh
bmNlKys7CkBAIC00OCwxNiArNDgsMTQgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxv
Y2s6OnRyeUNyZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoc2NyaWJibGVGcmVl
Q2VsbHMoKSkKICAgICAgICAgc2NyaWJibGUoYmxvY2tTcGFjZSwgYmxvY2tTaXplKTsKLSAgICBy
ZXR1cm4gbmV3IEhhbmRsZShoZWFwLCBhbGxvY2F0b3IsIGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBi
bG9ja1NwYWNlKTsKKyAgICByZXR1cm4gbmV3IEhhbmRsZShoZWFwLCBjZWxsU2l6ZSwgYXR0cmli
dXRlcywgYmxvY2tTcGFjZSk7CiB9CiAKLU1hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFw
JiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBjb25z
dCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCB2b2lkKiBibG9ja1NwYWNlKQorTWFy
a2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIHNpemVfdCBjZWxsU2l6ZSwgY29u
c3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcywgdm9pZCogYmxvY2tTcGFjZSkKICAg
ICA6IG1fYXRvbXNQZXJDZWxsKChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZSkK
ICAgICAsIG1fZW5kQXRvbShhdG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxKQogICAg
ICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgLCBtX3N0YXRlKE5ldykgLy8gQWxsIGNl
bGxzIHN0YXJ0IG91dCB1bm1hcmtlZC4KLSAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKLSAg
ICAsIG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+dm0oKSwgQ2VsbENvbnRhaW5lcigpKQor
ICAgICwgbV93ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENvbnRhaW5lcigpKQogewogICAgIG1fYmxv
Y2sgPSBuZXcgKE5vdE51bGwsIGJsb2NrU3BhY2UpIE1hcmtlZEJsb2NrKCpoZWFwLnZtKCksICp0
aGlzKTsKICAgICAKQEAgLTY1LDcgKzYzLDYgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxl
KEhlYXAmIGhlYXAsIAogICAgIAogICAgIGhlYXAuZGlkQWxsb2NhdGVCbG9jayhibG9ja1NpemUp
OwogICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgQVNTRVJU
KGFsbG9jYXRvcik7CiAgICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFwQ2VsbDo6
SlNDZWxsKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24g
PT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CiB9CkBAIC03OCw2ICs3NSw3IEBAIE1hcmtlZEJs
b2NrOjpIYW5kbGU6On5IYW5kbGUoKQogICAgICAgICBpZiAoIShiYWxhbmNlICUgMTApKQogICAg
ICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFsYW5jZTogIiwgYmFsYW5jZSwgIlxuIik7
CiAgICAgfQorICAgIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKICAgICBtX2Jsb2NrLT5+TWFya2Vk
QmxvY2soKTsKICAgICBmYXN0QWxpZ25lZEZyZWUobV9ibG9jayk7CiAgICAgaGVhcC5kaWRGcmVl
QmxvY2soYmxvY2tTaXplKTsKQEAgLTEwMSwyMSArOTksMjUgQEAgTWFya2VkQmxvY2s6Ok1hcmtl
ZEJsb2NrKFZNJiB2bSwgSGFuZGxlJgogICAgIG1fYmlhc2VkTWFya0NvdW50ID0gbV9tYXJrQ291
bnRCaWFzOyAvLyBUaGlzIG1lYW5zIHdlIGhhdmVuJ3QgbWFya2VkIGFueXRoaW5nIHlldC4KIH0K
IAotdGVtcGxhdGU8TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSwgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0
aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwg
TWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9k
ZT4KK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBk
ZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJs
ZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9j
YXRlZE1vZGU+CiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVw
KCkKIHsKLSAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0g
ICAgQVNTRVJUKGJsb2NrU3RhdGUgPT0gTmV3IHx8IGJsb2NrU3RhdGUgPT0gTWFya2VkKTsKLSAg
ICBBU1NFUlQoIShkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBz
d2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CisgICAgc3RhdGljX2Fzc2VydCghKGRlc3RydWN0aW9u
TW9kZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkp
LCAiSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHN3ZWVwIGEgYmxvY2sgd2l0aCBubyBkZXN0cnVj
dG9ycyB1bmxlc3MgaXQncyB0byBidWlsZCBhIGZyZWUgbGlzdC4iKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KCEoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVzdHJ1Y3Rpb24gJiYgZW1wdHlNb2RlID09
IElzRW1wdHkpLCAiQSBibG9jayBkb2Vzbid0IHF1YWxpZnkgYXMgZW1wdHkgaWYgdGhlcmUgYXJl
IGRlc3RydWN0b3JzIHRoYXQgc3RpbGwgbmVlZCB0byBiZSBydW4uIik7CiAgICAgCisgICAgU3Vw
ZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCiAgICAgYXNzZXJ0Rmxp
cHBlZCgpOwogICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7CiAgICAgCi0g
ICAgYm9vbCBpc05ld0Jsb2NrID0gYmxvY2tTdGF0ZSA9PSBOZXc7Ci0gICAgYm9vbCBpc0VtcHR5
QmxvY2sgPSAhYmxvY2suaGFzQW55TWFya2VkKCkKLSAgICAgICAgJiYgbmV3bHlBbGxvY2F0ZWRN
b2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQKLSAgICAgICAgJiYgZGVzdHJ1Y3Rpb25N
b2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb247Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBB
bGxvY2F0b3IoKSAmJiAoaXNOZXdCbG9jayB8fCBpc0VtcHR5QmxvY2spKSB7CisgICAgaWYgKGVt
cHR5TW9kZSA9PSBOb3RFbXB0eSkKKyAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzU25hcHNob3Qo
dGhpcywgZmFsc2UpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKCFtX2FsbG9jYXRvci0+aXNT
bmFwc2hvdCh0aGlzKSk7CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3Io
KQorICAgICAgICAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0eQorICAgICAgICAmJiBuZXdseUFsbG9j
YXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCkgewogICAgICAgICBBU1NFUlQo
YmxvY2subV9tYXJrcy5pc0VtcHR5KCkpOwogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRP
Zkxhc3RDZWxsID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsg
bV9lbmRBdG9tIC0gMSkpOwpAQCAtMTI0LDcgKzEyNiw4IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgY2hhciogcGF5bG9hZEJlZ2luID0gYml0d2lz
ZV9jYXN0PGNoYXIqPihibG9jay5hdG9tcygpICsgZmlyc3RBdG9tKCkpOwogICAgICAgICBpZiAo
c2NyaWJibGVNb2RlID09IFNjcmliYmxlKQogICAgICAgICAgICAgc2NyaWJibGUocGF5bG9hZEJl
Z2luLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsKLSAgICAgICAgbV9zdGF0ZSA9ICgoc3dl
ZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICAg
ICAgaWYgKHN3ZWVwTW9kZSA9PSBTcGVlZFRvRnJlZUxpc3QpIHsKKyAgICAgICAgICAgIHNldElz
RnJlZUxpc3RlZCgpOwogICAgICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6YnVtcChw
YXlsb2FkRW5kLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsKICAgICAgICAgaWYgKGZhbHNl
KQogICAgICAgICAgICAgZGF0YUxvZygiUXVpY2tseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVy
KHRoaXMpLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMg
IiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTM3LDE0ICsxNDAsMTQg
QEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgIEZyZWVDZWxs
KiBoZWFkID0gMDsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSBm
aXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAg
ICBpZiAoYmxvY2tTdGF0ZSA9PSBNYXJrZWQKKyAgICAgICAgaWYgKGVtcHR5TW9kZSA9PSBOb3RF
bXB0eQogICAgICAgICAgICAgJiYgKGJsb2NrLm1fbWFya3MuZ2V0KGkpCiAgICAgICAgICAgICAg
ICAgfHwgKG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5
QWxsb2NhdGVkLT5nZXQoaSkpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEhl
YXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYmxvY2suYXRv
bXMoKVtpXSk7CiAKLSAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0
aW9uICYmIGJsb2NrU3RhdGUgIT0gTmV3KQorICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09
IE5lZWRzRGVzdHJ1Y3Rpb24gJiYgZW1wdHlNb2RlID09IE5vdEVtcHR5KQogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCktPmNhbGxEZXN0cnVjdG9yKCp2bSgpKTsKIAogICAg
ICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkgewpAQCAtMTYzLDcgKzE2Niw4
IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgbV9u
ZXdseUFsbG9jYXRlZCA9IG51bGxwdHI7CiAKICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlz
dDo6bGlzdChoZWFkLCBjb3VudCAqIGNlbGxTaXplKCkpOwotICAgIG1fc3RhdGUgPSAoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCA/IEZyZWVMaXN0ZWQgOiBNYXJrZWQpOworICAgIGlmIChz
d2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsK
ICAgICBpZiAoZmFsc2UpCiAgICAgICAgIGRhdGFMb2coIlNsb3dseSBzd2VwdCBibG9jayAiLCBS
YXdQb2ludGVyKCZibG9jayksICIgd2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQg
YXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIik7CiAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTE4MCw2ICsxODQsMTMgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXAoU3dlZQogICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmIG1fYXR0
cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKQogICAgICAgICBy
ZXR1cm4gRnJlZUxpc3QoKTsKIAorICAgIGlmIChVTkxJS0VMWShtX2lzRnJlZUxpc3RlZCkpIHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Cisg
ICAgICAgIHJldHVybiBGcmVlTGlzdCgpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoIW1fYWxs
b2NhdG9yLT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAgCiAgICAgaWYgKG1fYXR0cmlidXRlcy5k
ZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gc3dlZXBIZWxw
ZXJTZWxlY3RTY3JpYmJsZU1vZGU8TmVlZHNEZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsKICAgICBy
ZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8RG9lc05vdE5lZWREZXN0cnVjdGlv
bj4oc3dlZXBNb2RlKTsKQEAgLTE4OSw0NyArMjAwLDQ0IEBAIHRlbXBsYXRlPERlc3RydWN0aW9u
TW9kZSBkZXN0cnVjdGlvbk1vZGUKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVw
SGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7CiAgICAgaWYg
KHNjcmliYmxlRnJlZUNlbGxzKCkpCi0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN0
YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7Ci0g
ICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rpb25N
b2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9kZSk7CisgICAgICAgIHJldHVybiBzd2VlcEhlbHBl
clNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOwor
ICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIERv
bnRTY3JpYmJsZT4oc3dlZXBNb2RlKTsKIH0KIAogdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRl
c3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxl
TW9kZT4KLUZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3Rh
dGVBbmRTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK0ZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUp
CiB7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBOZXc6Ci0gICAgICAgIEFTU0VS
VChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxp
emVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVN
b2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgIGNhc2UgRnJlZUxpc3RlZDoK
LSAgICAgICAgLy8gSGFwcGVucyB3aGVuIGEgYmxvY2sgdHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxs
b2NhdGVkLgotICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0g
ICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAgIGNhc2UgQWxsb2NhdGVkOgotICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsK
LSAgICBjYXNlIE1hcmtlZDoKLSAgICAgICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAg
ICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAg
ICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlv
bk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAgICAg
ICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwg
c2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAg
ICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVj
dGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKQotICAg
ICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwgZGVzdHJ1
Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gRnJlZUxpc3QoKTsKKyAgICBpZiAobV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcykpCisg
ICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPElzRW1wdHks
IGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBz
d2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPE5vdEVtcHR5LCBkZXN0cnVjdGlvbk1v
ZGUsIHNjcmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8RW1wdHlNb2RlIGVt
cHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dlZXBNb2RlIHN3ZWVw
TW9kZSkKK3sKKyAgICBpZiAobV9oYXNOZXdseUFsbG9jYXRlZCkKKyAgICAgICAgcmV0dXJuIHN3
ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3Jp
YmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2Vl
cEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworfQorCit0ZW1w
bGF0ZTxFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2Rl
LCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBOZXdseUFs
bG9hdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQorewor
ICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICByZXR1cm4gc3Bl
Y2lhbGl6ZWRTd2VlcDxlbXB0eU1vZGUsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2Rl
LCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKKyAgICByZXR1cm4gc3BlY2lh
bGl6ZWRTd2VlcDxlbXB0eU1vZGUsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJs
ZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjp1bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKQogewotICAgIGZsaXBJZk5lY2Vzc2Fy
eSgpOwotICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0g
ICAgCi0gICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAgICBtX3N0
YXRlID0gTWFya2VkOworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNGcmVlTGlzdGVkKTsKKyAgICBt
X2lzRnJlZUxpc3RlZCA9IGZhbHNlOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNl
dElzRnJlZUxpc3RlZCgpCit7CisgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgZmFs
c2UpOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7CiB9CiAKIGNsYXNzIFNldE5ld2x5QWxs
b2NhdGVkRnVuY3RvciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewpAQCAtMzcy
LDkgKzM4MCw2IEBAIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQogewogICAgIG1fbWFy
a3MuY2xlYXJBbGwoKTsKICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIC8vIFRoaXMgd2ls
bCBiZWNvbWUgdHJ1ZSBhdCB0aGUgZW5kIG9mIHRoZSBtYXJrIHBoYXNlLiBXZSBzZXQgaXQgbm93
IHRvCi0gICAgLy8gYXZvaWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4KLSAgICBoYW5k
bGUoKS5tX3N0YXRlID0gTWFya2VkOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAg
bV92ZXJzaW9uID0gdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKIH0KQEAgLTM5
NiwxMSArNDAxLDYgQEAgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc0ZsaXAoKQogICAg
IHJldHVybiBtX2Jsb2NrLT5uZWVkc0ZsaXAoKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjp3aWxsUmVtb3ZlQmxvY2soKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotfQotCiB2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCgpCiB7CiAgICAgZmxp
cElmTmVjZXNzYXJ5KCk7CkBAIC00MzAsOSArNDMwLDM4IEBAIHZvaWQgTWFya2VkQmxvY2s6OmNs
ZWFySGFzQW55TWFya2VkKCkKIAogdm9pZCBNYXJrZWRCbG9jazo6bm90ZU1hcmtlZFNsb3coKQog
eworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgY2FsbCByZXRpcmUuIEl0IHNob3VsZCBq
dXN0IGF0b21pYyBDQVMgdGhlIG1hcmtpbmdSZXRpcmVkIGJpdC4KICAgICBoYW5kbGUoKS5tX2Fs
bG9jYXRvci0+cmV0aXJlKCZoYW5kbGUoKSk7CiB9CiAKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAgaWYgKCFtX2FsbG9jYXRvcikKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fYWxsb2NhdG9yLT5yZW1vdmVCbG9jayh0aGlzKTsKK30K
Kwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChtX2luZGV4ID09
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVCghbV9hbGxv
Y2F0b3IpOworICAgIAorICAgIG1faW5kZXggPSBpbmRleDsKKyAgICBtX2FsbG9jYXRvciA9IGFs
bG9jYXRvcjsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVGcm9tQWxs
b2NhdG9yKCkKK3sKKyAgICBmbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAKKyAgICBBU1NFUlQobV9p
bmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQo
bV9hbGxvY2F0b3IpOworICAgIAorICAgIG1faW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpOworICAgIG1fYWxsb2NhdG9yID0gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDU4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw4ICs3Niw2IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEhhbmRsZTsKIHB1YmxpYzoKLSAg
ICBlbnVtIEJsb2NrU3RhdGUgOiB1aW50OF90IHsgTmV3LCBGcmVlTGlzdGVkLCBBbGxvY2F0ZWQs
IE1hcmtlZCB9OwotICAgICAgICAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21TaXplID0g
MTY7IC8vIGJ5dGVzCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja1NpemUgPSAxNiAqIEtC
OwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tNYXNrID0gfihibG9ja1NpemUgLSAxKTsg
Ly8gYmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCkBAIC0xNzgsNyArMTc2LDYgQEAg
cHVibGljOgogICAgICAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNG
cmVlTGlzdGVkKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgbmVlZHNTd2VlcGluZygpIGNvbnN0Owot
ICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwogCiAgICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYp
OwogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZv
ckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CkBAIC0xOTUsOCArMTkyLDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgYm9vbCBpc09uQmxvY2tzVG9Td2VlcCgpIGNvbnN0IHsgcmV0dXJuIG1faXNP
bkJsb2Nrc1RvU3dlZXA7IH0KICAgICAgICAgdm9pZCBzZXRJc09uQmxvY2tzVG9Td2VlcChib29s
IHZhbHVlKSB7IG1faXNPbkJsb2Nrc1RvU3dlZXAgPSB2YWx1ZTsgfQogICAgICAgICAKLSAgICAg
ICAgQmxvY2tTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICAgICAg
ICAgIAorICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGcmVl
TGlzdGVkOyB9CisgICAgICAgIAorICAgICAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX2luZGV4OyB9CisgICAgICAgIAorICAgICAgICB2b2lkIHJlbW92ZUZyb21BbGxvY2F0b3Io
KTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2Nh
dG9yKiwgc2l6ZV90IGluZGV4KTsKKyAgICAgICAgdm9pZCBkaWRSZW1vdmVGcm9tQWxsb2NhdG9y
KCk7CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIEhhbmRsZShIZWFwJiwgTWFya2Vk
QWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiwg
dm9pZCopOwogICAgICAgICAgICAgCkBAIC0yMDYsMTYgKzIxMCwyNiBAQCBwdWJsaWM6CiAgICAg
ICAgIGVudW0gU2NyaWJibGVNb2RlIHsgRG9udFNjcmliYmxlLCBTY3JpYmJsZSB9OwogICAgICAg
ICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgot
ICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVw
TW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0RW1w
dHlNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAgICAgICAgICAKKyAgICAgICAgZW51
bSBFbXB0eU1vZGUgeyBJc0VtcHR5LCBOb3RFbXB0eSB9OworICAgICAgICAKKyAgICAgICAgdGVt
cGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZT4KKyAgICAgICAg
RnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgPSBT
d2VlcE9ubHkpOworICAgICAgICAKICAgICAgICAgZW51bSBOZXdseUFsbG9jYXRlZE1vZGUgeyBI
YXNOZXdseUFsbG9jYXRlZCwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCB9OwotICAgICAgICAg
ICAgCi0gICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25N
b2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgCisgICAgICAg
IHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5
QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1v
ZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVt
cHR5TW9kZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlB
bGxvY2F0ZWRNb2RlPgogICAgICAgICBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVwKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICAgICAgdm9pZCBm
b3JFYWNoRnJlZUNlbGwoY29uc3QgRnJlZUxpc3QmLCBjb25zdCBGdW5jJik7Ci0gICAgICAgICAg
ICAKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIAog
ICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX3ByZXY7CiAgICAgICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIG1fbmV4dDsKICAgICAgICAgICAgIApAQCAtMjI1LDE2ICsyMzksMTYgQEAgcHVi
bGljOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+
IG1fbmV3bHlBbGxvY2F0ZWQ7CiAgICAgICAgICAgICAKICAgICAgICAgQWxsb2NhdG9yQXR0cmli
dXRlcyBtX2F0dHJpYnV0ZXM7Ci0gICAgICAgIEJsb2NrU3RhdGUgbV9zdGF0ZTsKLSAgICAgICAg
Ym9vbCBtX2lzT25CbG9ja3NUb1N3ZWVwIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2lzRnJl
ZUxpc3RlZCB7IGZhbHNlIH07CiAgICAgICAgICAgICAKLSAgICAgICAgTWFya2VkQWxsb2NhdG9y
KiBtX2FsbG9jYXRvcjsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvciB7IG51
bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OwogICAgICAgICAgICAg
CiAgICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrOwogICAgIH07CiAgICAgICAgIAotICAgIHN0
YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRv
ciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOworICAgIHN0
YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYsIHNpemVfdCBjZWxsU2l6
ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwogICAgICAgICAKICAgICBIYW5kbGUmIGhh
bmRsZSgpOwogICAgICAgICAKQEAgLTI3NCw3ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
c3NlcnRGbGlwcGVkKCk7CiAgICAgICAgIAogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNEZXN0cnVjdGlvbjsgfQotICAgICAgICAKKyAgICAKIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXpl
IC0gMTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNw
cAkocmV2aXNpb24gMjA1ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNiArMTk1LDE5IEBAIE1hcmtlZFNwYWNl
OjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CisgICAgCisgICAgTWFy
a2VkQWxsb2NhdG9yKiBwcmV2aW91cyA9IG51bGxwdHI7CisgICAgZm9yRWFjaEFsbG9jYXRvcigK
KyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3Rh
dHVzIHsKKyAgICAgICAgICAgIGlmIChwcmV2aW91cykgeworICAgICAgICAgICAgICAgIC8vIFdl
IGNhbiBzZXQgdGhpcyBpbiBhbnkgb3JkZXIuIFRoZSBwb2ludCBpcyBqdXN0IHRoYXQgd2Ugd2Fu
dCB0byBiZSBhYmxlIHRvCisgICAgICAgICAgICAgICAgLy8gY3Vyc29yIG92ZXIgYWxsb2NhdG9y
cy4KKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc2V0TmV4dEFsbG9jYXRvcihwcmV2aW91cyk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmV2aW91cyA9ICZhbGxvY2F0b3I7CisgICAg
ICAgIH0pOworICAgIG1fZmlyc3RBbGxvY2F0b3IgPSBwcmV2aW91czsKKyAgICBtX25leHRBbGxv
Y2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBwcmV2aW91czsKIH0KIAogTWFya2VkU3BhY2U6On5N
YXJrZWRTcGFjZSgpCkBAIC01NTMsNCArNTY2LDEzIEBAIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFs
bG9jYXRlSW5CbG9jayhNYXIKICAgICB9CiB9CiAKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtl
ZFNwYWNlOjpmaW5kRW1wdHlCbG9jaygpCit7CisgICAgZm9yICg7IG1fYWxsb2NhdG9yRm9yRW1w
dHlBbGxvY2F0aW9uOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxsb2NhdG9y
Rm9yRW1wdHlBbGxvY2F0aW9uLT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgaWYgKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPmZp
bmRFbXB0eUJsb2NrKCkpCisgICAgICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorICAgIHJl
dHVybiBudWxscHRyOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjA1ODA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTY4
LDYgKzE2OCwxMSBAQCBwdWJsaWM6CiAgICAgTGFyZ2VBbGxvY2F0aW9uKiogbGFyZ2VBbGxvY2F0
aW9uc0ZvclRoaXNDb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2Nh
dGlvbnNGb3JUaGlzQ29sbGVjdGlvbkJlZ2luOyB9CiAgICAgTGFyZ2VBbGxvY2F0aW9uKiogbGFy
Z2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9sYXJn
ZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQ7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFs
bG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFs
bG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplOyB9CisgICAgCisgICAgTWFya2VkQWxsb2Nh
dG9yKiBmaXJzdEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RBbGxvY2F0b3I7IH0K
KyAgICBNYXJrZWRBbGxvY2F0b3IqIG5leHRBbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX25leHRBbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IH0KKyAgICAK
KyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9jaygpOwogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC0yMDcsNiArMjEyLDkg
QEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVj
dGlvblNpemUgeyAwIH07CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3
U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX2FjdGl2ZVdlYWtTZXRzOwogICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9uZXdBY3Rp
dmVXZWFrU2V0czsKKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fZmlyc3RBbGxvY2F0b3Ig
eyBudWxscHRyIH07CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvckZvckVtcHR5QWxs
b2NhdGlvbiB7IG51bGxwdHIgfTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlu
bGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3Bl
JiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288690</attachid>
            <date>2016-09-13 09:30:59 -0700</date>
            <delta_ts>2016-09-13 10:57:36 -0700</delta_ts>
            <desc>I think that MarkedBlock looks good</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>48069</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDUwICsxMDAsNzcgQEAgdm9pZCBN
YXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dlZQogICAgIG1fbmV4dEJsb2NrVG9Td2Vl
cCA9IGZpbHRlck5leHRCbG9jayhibG9jayk7CiB9CiAKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1h
cmtlZEFsbG9jYXRvcjo6ZmluZEVtcHR5QmxvY2soKQoreworICAgIG1fZW1wdHlDdXJzb3IgPSBt
X2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1cnNvciwgdHJ1ZSk7CisgICAgaWYgKG1fZW1wdHlDdXJz
b3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gbV9ibG9ja3NbbV9lbXB0eUN1cnNvcl07Cit9CisKIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6
dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwoKQogewogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBpZiAobV9jdXJyZW50Qmxv
Y2spIHsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2Vl
cCk7CisgICAgaWYgKG1fY3VycmVudEJsb2NrKQogICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlk
Q29uc3VtZUZyZWVMaXN0KCk7Ci0gICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50
QmxvY2stPm5leHQoKSk7Ci0gICAgfQogICAgIAogICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkp
OwotCi0gICAgUkVMRUFTRV9BU1NFUlQobV9uZXh0QmxvY2tUb1N3ZWVwICE9IG1fYmxvY2tMaXN0
LmVuZCgpKTsKLQotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgZm9yIChNYXJr
ZWRCbG9jazo6SGFuZGxlKiYgYmxvY2sgPSBtX25leHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9j
ayA9IG5leHQpIHsKLSAgICAgICAgbmV4dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgp
KTsKLQotICAgICAgICAvLyBJdCB3b3VsZCBiZSBzdXBlciB3ZWlyZCBpZiB0aGUgYmxvY2tzIHdl
IGFyZSBzd2VlcGluZyBoYXZlIGFueXRoaW5nIGFsbG9jYXRlZCBkdXJpbmcgdGhpcwotICAgICAg
ICAvLyBjeWNsZS4KLSAgICAgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQo
KSk7Ci0gICAgICAgIAotICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChN
YXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOworICAgIG1fY3VycmVudEJsb2Nr
ID0gbnVsbHB0cjsKKyAgICAKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIG1fYWxsb2NhdGlvbkN1
cnNvciA9IG1fY2FuQWxsb2NhdGUuZmluZEJpdChtX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOwor
ICAgICAgICBpZiAobV9hbGxvY2F0aW9uQ3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVt
YmxlIG9uIGEgY29tcGxldGUtZnVsbCBibG9jay4gTWFya2luZyB0cmllcyB0byByZXRpcmUgdGhl
c2UsIGJ1dAotICAgICAgICAvLyB0aGF0IGFsZ29yaXRobSBpcyByYWN5IGFuZCBtYXkgZm9yZ2V0
IHRvIGRvIGl0IHNvbWV0aW1lcy4KLSAgICAgICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxs
RmFpbCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKLSAg
ICAgICAgICAgIGJsb2NrLT51bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAg
ICAgIEFTU0VSVChibG9jay0+aXNNYXJrZWQoKSk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2sp
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgc2V0SXNDYW5BbGxv
Y2F0ZShtX2FsbG9jYXRpb25DdXJzb3IsIGZhbHNlKTsKIAotICAgICAgICBtX2N1cnJlbnRCbG9j
ayA9IGJsb2NrOwotICAgICAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7Ci0gICAgICAgIGJyZWFr
OworICAgICAgICBpZiAodm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVJbihtX2Jsb2Nrc1ttX2Fs
bG9jYXRpb25DdXJzb3JdKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAotICAgIGlmICghbV9mcmVlTGlzdCkgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IDA7Ci0g
ICAgICAgIHJldHVybiAwOworICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGZp
bmRFbXB0eUJsb2NrKCkpCisgICAgICAgIHJldHVybiBhbGxvY2F0ZUluKGJsb2NrKTsKKyAgICAK
KyAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX21hcmtlZFNwYWNlLT5maW5k
RW1wdHlCbG9jaygpKSB7CisgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgICAgICBibG9jay0+
cmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAgICBhZGRCbG9jayhibG9jayk7CisgICAgICAg
IHJldHVybiBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CiAKK3ZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbihNYXJrZWRCbG9jazo6
SGFuZGxlKiBibG9jaykKK3sKKyAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZUluKGJsb2Nr
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaykKK3sKKyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxvY2stPmhhc0Fu
eU5ld2x5QWxsb2NhdGVkKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsK
KyAgICAKKyAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6
SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOworICAgIAorICAgIC8vIEl0J3MgcG9zc2libGUgdG8g
c3R1bWJsZSBvbiBhIGNvbXBsZXRlbHkgZnVsbCBibG9jay4gTWFya2luZyB0cmllcyB0byByZXRp
cmUgdGhlc2UsIGJ1dAorICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3Jn
ZXQgdG8gZG8gaXQgc29tZXRpbWVzLgorICAgIGlmIChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZh
aWwoKSkgeworICAgICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAg
YmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOworICAgICAgICBBU1NFUlQoIWJs
b2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgICAgIEFTU0VSVCghaXNFbXB0eShibG9jaykpOwor
ICAgICAgICBBU1NFUlQoIWlzQ2FuQWxsb2NhdGUoYmxvY2spKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorICAgIAorICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7CisgICAgc2V0
RnJlZUxpc3QoZnJlZUxpc3QpOworICAgIAogICAgIHZvaWQqIHJlc3VsdDsKICAgICBpZiAobV9m
cmVlTGlzdC5yZW1haW5pbmcpIHsKICAgICAgICAgdW5zaWduZWQgY2VsbFNpemUgPSBtX2NlbGxT
aXplOwpAQCAtMjI3LDggKzI1NCw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVT
bG93Q2FzZUkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBhZGRCbG9j
ayhibG9jayk7Ci0gICAgICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxl
Y3RpbmcoKTsKKyAgICByZXN1bHQgPSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBBU1NFUlQocmVz
dWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ5LDMwICsyNzUsNjggQEAgc2l6ZV90
IE1hcmtlZEFsbG9jYXRvcjo6YmxvY2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6OkhhbmRsZSog
TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2NrOjp0
cnlDcmVhdGUoKm1faGVhcCwgdGhpcywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAgICAK
KyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRl
KCptX2hlYXAsIG1fY2VsbFNpemUsIG1fYXR0cmlidXRlcyk7CisgICAgaWYgKCFoYW5kbGUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJs
b2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJrZWRB
bGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIEFT
U0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAgc2l6
ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBhY2l0
eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChoYW5kbGUp
OworICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAhPSBvbGRDYXBhY2l0eSkgeworICAg
ICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRW
ZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQodmVjdG9yLm51bUJp
dHMoKSA9PSBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIEFTU0VSVChtX2Jsb2Nrcy5jYXBhY2l0eSgpID4gb2xkQ2FwYWNpdHkpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAg
ICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIHZl
Y3Rvci5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHkoKSk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNl
cy50YWtlTGFzdCgpOworICAgICAgICBBU1NFUlQoIW1fYmxvY2tzW2luZGV4XSk7CisgICAgICAg
IG1fYmxvY2tzW2luZGV4XSA9IGhhbmRsZTsKKyAgICB9CiAgICAgCi0gICAgbV9ibG9ja0xpc3Qu
YXBwZW5kKGJsb2NrKTsKLSAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21h
cmtlZFNwYWNlLT5kaWRBZGRCbG9jayhibG9jayk7CisgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAg
ICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgIEFTU0VSVCgh
dmVjdG9yW2luZGV4XSk7CisgICAgICAgIH0pOworCisgICAgaGFuZGxlLT5kaWRBZGRUb0FsbG9j
YXRvcih0aGlzLCBpbmRleCk7CisgICAgCisgICAgc2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKKyAg
ICBzZXRJc0VtcHR5KGluZGV4LCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJl
bW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlmIChtX2N1cnJl
bnRCbG9jayA9PSBibG9jaykgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZpbHRlck5leHRC
bG9jayhtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxpc3QoRnJlZUxp
c3QoKSk7Ci0gICAgfQotICAgIGlmIChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxvY2spCi0gICAg
ICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOworICAg
IEFTU0VSVChibG9jay0+YWxsb2NhdG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fYmxvY2tz
W2Jsb2NrLT5pbmRleCgpXSA9PSBibG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJlbW92ZUJsb2Nr
KCk7Ci0gICAgbV9ibG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9jay0+
aW5kZXgoKV0gPSBudWxscHRyOworICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2st
PmluZGV4KCkpOworICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFz
dEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCld
ID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIAorICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9tQWxs
b2NhdG9yKCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCkBA
IC0zMDcsNyArMzcxLDEwIEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXNldCgpCiAKICAgICAg
ICAgICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlN3ZWVwVG9GcmVlTGlzdCk7CiAgICAgICAgICAgICBibG9jay0+emFwKGZyZWVMaXN0KTsK
LSAgICAgICAgICAgIHJldGlyZShibG9jayk7CisgICAgICAgICAgICBzZXRJc0VtcHR5KGJsb2Nr
LCBmYWxzZSk7CisgICAgICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKGJsb2NrLCBmYWxzZSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGluZ3M/CiAgICAgICAgIH0KICAg
ICB9CiB9CkBAIC0zMjYsNCArMzkzLDE0IEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzZXRGcmVl
TGlzdChjb25zdCAKICAgICBtX2ZyZWVMaXN0ID0gZnJlZUxpc3Q7CiB9CiAKK3ZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKK3sKKyAgICBpZiAoIW1fbGFzdEFjdGl2ZUJs
b2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxv
Y2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2
ZUJsb2NrOworICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDMxIEBAIGNsYXNz
IEhlYXA7CiBjbGFzcyBNYXJrZWRTcGFjZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAorI2RlZmluZSBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChtYWNybykgXAorICAgIG1h
Y3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0
dWFsIGJsb2Nrcy4gKi9cCisgICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFs
bCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cyBhbmQgbm90aGluZyB0byBkZXN0cm95
LiAqLyBcCisgICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxs
YmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAgICBtYWNybyhjYW5B
bGxvY2F0ZSwgQ2FuQWxsb2NhdGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNhbiBi
ZSBhbGxvY2F0ZWQgaW4gcmlnaHQgbm93LiAqLyBcCisgICAgbWFjcm8oZWRlbiwgRWRlbikgLyog
VGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUgbGFz
dCBHQy4gKi9cCisgICAgbWFjcm8oc25hcHNob3QsIFNuYXBzaG90KSAvKiBUaGUgc2V0IG9mIGFs
bCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4g
Ki9cCisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gV2Ug
dXNlIHRoZW0gYWZ0ZXIgbWFya2luZyB0byBjb21wdXRlIG1fZW1wdHkgYW5kICovXAorICAgIC8q
IG1fY2FuQWxsb2NhdGU6ICovXAorICAgIC8qICovXAorICAgIC8qIG1fZW1wdHkuc2V0KG1fbGl2
ZS5iaXRBbmQobV9tYXJraW5nTm90RW1wdHkuYml0Tm90KCkpKTsgKi9cCisgICAgLyogbV9jYW5B
bGxvY2F0ZS5zZXQobV9saXZlLmJpdEFuZChtX21hcmtpbmdSZXRpcmVkLmJpdE5vdCgpKS5iaXRB
bmQobV9tYXJraW5nTm90RW1wdHkpKTsgKi9cCisgICAgLyogKi9cCisgICAgLyogTm90ZSB0aGF0
IHdlIGFsc28gY2xlYXIgbV9hbGxvY2F0ZWQgYXQgYXJvdW5kIHRoZSBzYW1lIHRpbWUuIEluIGVk
ZW4gY29sbGVjdGlvbnMgd2Ugd291bGQgKi9cCisgICAgLyogZG86ICovXAorICAgIC8qICovXAor
ICAgIC8qIG1fYWxsb2NhdGVkLmV4Y2x1ZGUobV9lZGVuKTsgKi9cCisgICAgLyogKi9cCisgICAg
LyogQW5kIGluIGZ1bGwgd2Ugd291bGQgZG86ICovXAorICAgIC8qICovXAorICAgIC8qIG1fYWxs
b2NhdGVkLmNsZWFyQWxsKCk7ICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2lu
Z05vdEVtcHR5KSBcCisgICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKQor
CiBjbGFzcyBNYXJrZWRBbGxvY2F0b3IgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKQEAgLTcyLDYgKzk3LDMyIEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRP
dXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJsb2NrU2l6ZUZv
ckJ5dGVzKHNpemVfdCk7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VT
U09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMg
Y2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dlckJp
dE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShi
bG9jay0+aW5kZXgoKSk7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6
ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1
ZTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+
aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgYm9vbCBhdG9taWNTZXRBbmRDaGVja0lzICMjIGNhcGl0
YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93ZXJC
aXROYW1lLmF0b21pY1NldEFuZENoZWNrKGluZGV4LCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRv
bWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaywgYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lLmF0b21pY1NldEFu
ZENoZWNrKGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0KKyAgICBGT1JfRUFDSF9NQVJLRURfQUxM
T0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMpCisjdW5kZWYgTUFSS0VE
X0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgor
ICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNkZWZp
bmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0
TmFtZSkgXAorICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSk7CisgICAgICAgIEZPUl9F
QUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKTsK
KyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAgICBN
YXJrZWRBbGxvY2F0b3IqIG5leHRBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25leHRBbGxv
Y2F0b3I7IH0KKyAgICAKKyAgICAvLyBNYXJrZWRTcGFjZSBjYWxscyB0aGlzIGR1cmluZyBpbml0
LgorICAgIHZvaWQgc2V0TmV4dEFsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcikg
eyBtX25leHRBbGxvY2F0b3IgPSBhbGxvY2F0b3I7IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBmaW5kRW1wdHlCbG9jaygpOwogICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBNYXJrZWRCbG9jazsKQEAgLTgyLDYgKzEzMywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQqIHRy
eUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhv
dXRDb2xsZWN0aW5nSW1wbCgpOwogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUFsbG9jYXRl
QmxvY2soKTsKKyAgICB2b2lkIGFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2
b2lkIHJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkKiB0cnlBbGxv
Y2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkKiBhbGxvY2F0ZUluKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlv
bnNJZk5lZWRlZCgpOwogICAgIHZvaWQgcmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAg
ICAKQEAgLTkxLDE2ICsxNDYsMzAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE5leHRCbG9ja1Rv
U3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIAogICAgIEZyZWVMaXN0IG1fZnJlZUxp
c3Q7CisgICAgCisgICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2NrczsKKyAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsKKyAgICAKKyNkZWZpbmUgTUFS
S0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFt
ZSkgXAorICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1lOworICAgIEZPUl9FQUNI
X01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKQor
I3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OCisgICAgCisgICAgLy8gQWZ0
ZXIgeW91IGRvIHNvbWV0aGluZyB0byBhIGJsb2NrIGJhc2VkIG9uIG9uZSBvZiB0aGVzZSBjdXJz
b3JzLCB5b3UgY2xlYXIgdGhlIGJpdCBpbiB0aGUKKyAgICAvLyBjb3JyZXNwb25kaW5nIGJpdHZl
Y3RvciBhbmQgbGVhdmUgdGhlIGN1cnNvciB3aGVyZSBpdCB3YXMuCisgICAgc2l6ZV90IG1fYWxs
b2NhdGlvbkN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMg
YSBjYW5kaWRhdGUgZm9yIGFsbG9jYXRpb24uCisgICAgc2l6ZV90IG1fZW1wdHlDdXJzb3IgeyAw
IH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBl
bXB0eSBhbGxvY2F0aW9uIChhbGxvY2F0aW5nIGluIGVtcHR5IGJsb2NrcykuCisgICAgc2l6ZV90
IG1fc25hcHNob3RDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0
IGlzIGEgY2FuZGlkYXRlIGZvciBpbmNyZW1lbnRhbCBzd2VlcGluZy4KKyAgICAKICAgICBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBtX2N1cnJlbnRCbG9jazsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHRCbG9j
a1RvU3dlZXA7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJh
c2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBtX2Jsb2NrTGlzdDsKLSAg
ICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSwgQmFzaWNSYXdTZW50aW5l
bE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fcmV0aXJlZEJsb2NrczsKKwogICAgIExvY2sg
bV9sb2NrOwogICAgIHVuc2lnbmVkIG1fY2VsbFNpemU7CiAgICAgQWxsb2NhdG9yQXR0cmlidXRl
cyBtX2F0dHJpYnV0ZXM7CiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1hcmtlZFNwYWNlKiBtX21h
cmtlZFNwYWNlOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9uZXh0QWxsb2NhdG9yOwogfTsKIAog
aW5saW5lIHB0cmRpZmZfdCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKQpAQCAt
MTQ5LDE2ICsyMTgsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxs
CiAgICAgcmV0dXJuIGhlYWQ7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVz
dW1lQWxsb2NhdGluZygpCi17Ci0gICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9jaykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5yZXN1bWVBbGxv
Y2F0aW5nKCk7Ci0gICAgbV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBt
X2xhc3RBY3RpdmVCbG9jayA9IDA7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewogICAgIG1fYmxvY2tMaXN0LmZvckVhY2goZnVuY3Rvcik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMDU4NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9v
bCBjb21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGljIHNpemVfdCBiYWxhbmNlOwogCi1NYXJr
ZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIE1hcmtl
ZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6
dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0
cmlidXRlcyYgYXR0cmlidXRlcykKIHsKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAg
ICAgYmFsYW5jZSsrOwpAQCAtNDgsMTYgKzQ4LDE0IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1h
cmtlZEJsb2NrOjp0cnlDcmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNjcmli
YmxlRnJlZUNlbGxzKCkpCiAgICAgICAgIHNjcmliYmxlKGJsb2NrU3BhY2UsIGJsb2NrU2l6ZSk7
Ci0gICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYWxsb2NhdG9yLCBjZWxsU2l6ZSwgYXR0cmli
dXRlcywgYmxvY2tTcGFjZSk7CisgICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgY2VsbFNpemUs
IGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOwogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5k
bGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6
ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcywgdm9pZCogYmxvY2tTcGFj
ZSkKK01hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCBzaXplX3QgY2VsbFNp
emUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIHZvaWQqIGJsb2NrU3Bh
Y2UpCiAgICAgOiBtX2F0b21zUGVyQ2VsbCgoY2VsbFNpemUgKyBhdG9tU2l6ZSAtIDEpIC8gYXRv
bVNpemUpCiAgICAgLCBtX2VuZEF0b20oYXRvbXNQZXJCbG9jayAtIG1fYXRvbXNQZXJDZWxsICsg
MSkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQotICAgICwgbV9zdGF0ZShOZXcpIC8v
IEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCi0gICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0
b3IpCi0gICAgLCBtX3dlYWtTZXQoYWxsb2NhdG9yLT5oZWFwKCktPnZtKCksIENlbGxDb250YWlu
ZXIoKSkKKyAgICAsIG1fd2Vha1NldChoZWFwLnZtKCksIENlbGxDb250YWluZXIoKSkKIHsKICAg
ICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1NwYWNlKSBNYXJrZWRCbG9jaygqaGVhcC52
bSgpLCAqdGhpcyk7CiAgICAgCkBAIC02NSw3ICs2Myw2IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OkhhbmRsZShIZWFwJiBoZWFwLCAKICAgICAKICAgICBoZWFwLmRpZEFsbG9jYXRlQmxvY2soYmxv
Y2tTaXplKTsKICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAg
IEFTU0VSVChhbGxvY2F0b3IpOwogICAgIGlmIChtX2F0dHJpYnV0ZXMuY2VsbEtpbmQgIT0gSGVh
cENlbGw6OkpTQ2VsbCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hdHRyaWJ1dGVzLmRlc3Ry
dWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pOwogfQpAQCAtNzgsNiArNzUsNyBAQCBN
YXJrZWRCbG9jazo6SGFuZGxlOjp+SGFuZGxlKCkKICAgICAgICAgaWYgKCEoYmFsYW5jZSAlIDEw
KSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJhbGFuY2Us
ICJcbiIpOwogICAgIH0KKyAgICByZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAgICAgbV9ibG9jay0+
fk1hcmtlZEJsb2NrKCk7CiAgICAgZmFzdEFsaWduZWRGcmVlKG1fYmxvY2spOwogICAgIGhlYXAu
ZGlkRnJlZUJsb2NrKGJsb2NrU2l6ZSk7CkBAIC0xMDEsMjEgKzk5LDI1IEBAIE1hcmtlZEJsb2Nr
OjpNYXJrZWRCbG9jayhWTSYgdm0sIEhhbmRsZSYKICAgICBtX2JpYXNlZE1hcmtDb3VudCA9IG1f
bWFya0NvdW50QmlhczsgLy8gVGhpcyBtZWFucyB3ZSBoYXZlbid0IG1hcmtlZCBhbnl0aGluZyB5
ZXQuCiB9CiAKLXRlbXBsYXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBk
ZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJs
ZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9j
YXRlZE1vZGU+Cit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlN
b2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlv
bk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUg
c2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3
bHlBbGxvY2F0ZWRNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6
ZWRTd2VlcCgpCiB7Ci0gICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOwotICAgIEFTU0VSVChibG9ja1N0YXRlID09IE5ldyB8fCBibG9ja1N0YXRlID09IE1hcmtl
ZCk7Ci0gICAgQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rp
b24gJiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSkpOworICAgIHN0YXRpY19hc3NlcnQoIShkZXN0
cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBzd2VlcE1vZGUgPT0gU3dl
ZXBPbmx5KSwgIkl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBzd2VlcCBhIGJsb2NrIHdpdGggbm8g
ZGVzdHJ1Y3RvcnMgdW5sZXNzIGl0J3MgdG8gYnVpbGQgYSBmcmVlIGxpc3QuIik7CisgICAgc3Rh
dGljX2Fzc2VydCghKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGVtcHR5
TW9kZSA9PSBJc0VtcHR5KSwgIkEgYmxvY2sgZG9lc24ndCBxdWFsaWZ5IGFzIGVtcHR5IGlmIHRo
ZXJlIGFyZSBkZXN0cnVjdG9ycyB0aGF0IHN0aWxsIG5lZWQgdG8gYmUgcnVuLiIpOwogICAgIAor
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKwogICAgIGFz
c2VydEZsaXBwZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOwog
ICAgIAotICAgIGJvb2wgaXNOZXdCbG9jayA9IGJsb2NrU3RhdGUgPT0gTmV3OwotICAgIGJvb2wg
aXNFbXB0eUJsb2NrID0gIWJsb2NrLmhhc0FueU1hcmtlZCgpCi0gICAgICAgICYmIG5ld2x5QWxs
b2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkCi0gICAgICAgICYmIGRlc3Ry
dWN0aW9uTW9kZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uOwotICAgIGlmIChPcHRpb25zOjp1
c2VCdW1wQWxsb2NhdG9yKCkgJiYgKGlzTmV3QmxvY2sgfHwgaXNFbXB0eUJsb2NrKSkgeworICAg
IGlmIChlbXB0eU1vZGUgPT0gTm90RW1wdHkpCisgICAgICAgIG1fYWxsb2NhdG9yLT5zZXRJc1Nu
YXBzaG90KHRoaXMsIGZhbHNlKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVCghbV9hbGxvY2F0
b3ItPmlzU25hcHNob3QodGhpcykpOworICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxs
b2NhdG9yKCkKKyAgICAgICAgJiYgZW1wdHlNb2RlID09IElzRW1wdHkKKyAgICAgICAgJiYgbmV3
bHlBbGxvY2F0ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQpIHsKICAgICAgICAg
QVNTRVJUKGJsb2NrLm1fbWFya3MuaXNFbXB0eSgpKTsKICAgICAgICAgCiAgICAgICAgIGNoYXIq
IHN0YXJ0T2ZMYXN0Q2VsbCA9IHN0YXRpY19jYXN0PGNoYXIqPihjZWxsQWxpZ24oYmxvY2suYXRv
bXMoKSArIG1fZW5kQXRvbSAtIDEpKTsKQEAgLTEyNCw3ICsxMjYsOCBAQCBGcmVlTGlzdCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIGNoYXIqIHBheWxvYWRCZWdpbiA9
IGJpdHdpc2VfY2FzdDxjaGFyKj4oYmxvY2suYXRvbXMoKSArIGZpcnN0QXRvbSgpKTsKICAgICAg
ICAgaWYgKHNjcmliYmxlTW9kZSA9PSBTY3JpYmJsZSkKICAgICAgICAgICAgIHNjcmliYmxlKHBh
eWxvYWRCZWdpbiwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7Ci0gICAgICAgIG1fc3RhdGUg
PSAoKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7
CisgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3BlZWRUb0ZyZWVMaXN0KSB7CisgICAgICAgICAg
ICBzZXRJc0ZyZWVMaXN0ZWQoKTsKICAgICAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6
OmJ1bXAocGF5bG9hZEVuZCwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7CiAgICAgICAgIGlm
IChmYWxzZSkKICAgICAgICAgICAgIGRhdGFMb2coIlF1aWNrbHkgc3dlcHQgYmxvY2sgIiwgUmF3
UG9pbnRlcih0aGlzKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSgpLCAiIGFuZCBhdHRy
aWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTEzNywxNCAr
MTQwLDE0IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICBG
cmVlQ2VsbCogaGVhZCA9IDA7CiAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICBmb3IgKHNpemVf
dCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsK
LSAgICAgICAgaWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkCisgICAgICAgIGlmIChlbXB0eU1vZGUg
PT0gTm90RW1wdHkKICAgICAgICAgICAgICYmIChibG9jay5tX21hcmtzLmdldChpKQogICAgICAg
ICAgICAgICAgIHx8IChuZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYg
bV9uZXdseUFsbG9jYXRlZC0+Z2V0KGkpKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmJs
b2NrLmF0b21zKClbaV0pOwogCi0gICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNE
ZXN0cnVjdGlvbiAmJiBibG9ja1N0YXRlICE9IE5ldykKKyAgICAgICAgaWYgKGRlc3RydWN0aW9u
TW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGVtcHR5TW9kZSA9PSBOb3RFbXB0eSkKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpLT5jYWxsRGVzdHJ1Y3Rvcigqdm0oKSk7
CiAKICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKQEAgLTE2Myw3
ICsxNjYsOCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAg
ICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0g
RnJlZUxpc3Q6Omxpc3QoaGVhZCwgY291bnQgKiBjZWxsU2l6ZSgpKTsKLSAgICBtX3N0YXRlID0g
KHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAg
ICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgc2V0SXNGcmVlTGlz
dGVkKCk7CiAgICAgaWYgKGZhbHNlKQogICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxv
Y2sgIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCks
ICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwog
ICAgIHJldHVybiByZXN1bHQ7CkBAIC0xODAsNiArMTg0LDEzIEBAIEZyZWVMaXN0IE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnN3ZWVwKFN3ZWUKICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwT25seSAm
JiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbikKICAg
ICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAKKyAgICBpZiAoVU5MSUtFTFkobV9pc0ZyZWVMaXN0
ZWQpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxp
c3QpOworICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJU
KCFtX2FsbG9jYXRvci0+aXNBbGxvY2F0ZWQodGhpcykpOworICAgIAogICAgIGlmIChtX2F0dHJp
YnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIHN3
ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlPE5lZWRzRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7
CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlPERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CkBAIC0xODksNDcgKzIwMCw0NCBAQCB0ZW1wbGF0ZTxEZXN0
cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlCiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxl
Ojpzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewog
ICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQotICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJT
ZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1v
ZGUpOwotICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3Ry
dWN0aW9uTW9kZSwgRG9udFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgICAgICByZXR1cm4gc3dl
ZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBN
b2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25N
b2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9kZSk7CiB9CiAKIHRlbXBsYXRlPERlc3RydWN0aW9u
TW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBz
Y3JpYmJsZU1vZGU+Ci1GcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNl
bGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCitGcmVlTGlzdCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgc3dl
ZXBNb2RlKQogewotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgTmV3OgotICAgICAg
ICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBz
cGVjaWFsaXplZFN3ZWVwPE5ldywgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNj
cmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKTsKLSAgICBjYXNlIEZyZWVM
aXN0ZWQ6Ci0gICAgICAgIC8vIEhhcHBlbnMgd2hlbiBhIGJsb2NrIHRyYW5zaXRpb25zIHRvIGZ1
bGx5IGFsbG9jYXRlZC4KLSAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxp
c3QpOwotICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNlIEFsbG9jYXRlZDoKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEZyZWVM
aXN0KCk7Ci0gICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7
Ci0gICAgICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAg
ICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVz
dHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPigpCi0gICAgICAg
ICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlv
bk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAg
ICAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwg
ZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+
KCkKLSAgICAgICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHks
IGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
PigpOwotICAgICAgICB9Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIEZyZWVMaXN0KCk7CisgICAgaWYgKG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRo
aXMpKQorICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxJ
c0VtcHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKKyAgICBy
ZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxOb3RFbXB0eSwgZGVzdHJ1
Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGU+KHN3ZWVwTW9kZSk7Cit9CisKK3RlbXBsYXRlPEVtcHR5
TW9kZSBlbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+CitGcmVlTGlzdCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9k
ZSBzd2VlcE1vZGUpCit7CisgICAgaWYgKG1faGFzTmV3bHlBbGxvY2F0ZWQpCisgICAgICAgIHJl
dHVybiBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKKyAgICByZXR1
cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUs
IHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKK30K
KwordGVtcGxhdGU8RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0
aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwg
TmV3bHlBbGxvYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9k
ZSkKK3sKKyAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgcmV0
dXJuIHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0
aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJu
IHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwg
c2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CiB9CiAKIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCkKIHsKLSAgICBmbGlwSWZO
ZWNlc3NhcnkoKTsKLSAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRo
aXMpOwotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0g
ICAgbV9zdGF0ZSA9IE1hcmtlZDsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lzRnJlZUxpc3RlZCk7
CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzZXRJc0ZyZWVMaXN0ZWQoKQoreworICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRo
aXMsIGZhbHNlKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOwogfQogCiBjbGFzcyBTZXRO
ZXdseUFsbG9jYXRlZEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsK
QEAgLTI1MywyNSArMjYxLDE2IEBAIHByaXZhdGU6CiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN0b3BBbGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKIHsKICAgICBmbGlwSWZO
ZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwor
ICAgIAorICAgIEFTU0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAg
IGlmIChtX3N0YXRlID09IE1hcmtlZCkgewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4g
dGhlIE1hcmtlZCBzdGF0ZSB0aGVuIHdlIGtub3cgdGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAg
Ly8gY29uZGl0aW9ucyBob2xkczoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90
IHVzZWQgZm9yIGFsbG9jYXRpb24gZHVyaW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xl
LgotICAgICAgICAvLyAgIEl0IG1heSBoYXZlIGRlYWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25v
dyB0aGVtIHRvIGJlIGRlYWQgYnkgdGhlCi0gICAgICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1h
cmsgYml0cyBhcmUgdW5zZXQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQg
YWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCksIGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAg
ICAgICAgLy8gICBoZWFwIGl0ZXJhdGlvbiwgYW5kIHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAg
IC8vIEhlbmNlIGlmIHRoZSBibG9jayBpcyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJr
ZWQuCisgICAgaWYgKCFpc0ZyZWVMaXN0ZWQoKSkgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRo
YXQgd2UgZWl0aGVyIGRpZG4ndCB1c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24g
c2luY2UgbGFzdCBHQywKKyAgICAgICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0
b3BBbGxvY2F0aW5nKCkgYmVmb3JlLgogICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlv
bldpbGxGYWlsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVCht
X3N0YXRlID09IEZyZWVMaXN0ZWQpOwotICAgIAogICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVy
ZW50IHN0YXRlIGZvciBIZWFwIGludHJvc3BlY3Rpb24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxs
b2NhdGVkIGZyb20gb3VyIGZyZWUgbGlzdCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdl
IG5lZWQgYW5vdGhlcgogICAgIC8vIHdheSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApA
QCAtMjkwLDcgKzI4OSw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRp
bmcKICAgICAgICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAgICAgIH0pOwog
ICAgIAotICAgIG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsK
IH0KIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCkBA
IC0zMDUsMTMgKzMwNCwxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VU
b0ZpCiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsK
ICAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lU
SU9OKHRoaXMpOwogCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKKyAgICBBU1NFUlQo
IWFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0
ZWQoKSk7CiAKICAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgLy8gV2UgZGlk
bid0IGhhdmUgdG8gY3JlYXRlIGEgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwLiBUaGF0IG1lYW5z
IHdlIHdlcmUgYWxyZWFkeSBNYXJrZWQKLSAgICAgICAgLy8gd2hlbiB3ZSBsYXN0IHN0b3BwZWQg
YWxsb2NhdGlvbiwgc28gcmV0dXJuIGFuIGVtcHR5IGZyZWUgbGlzdCBhbmQgc3RheSBpbiB0aGUg
TWFya2VkIHN0YXRlLgorICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1
c3RlZCB0aGUgYmxvY2sgd2hlbiB3ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAgICAgIHJldHVy
biBGcmVlTGlzdCgpOwogICAgIH0KIApAQCAtMzY2LDE3ICszNjQsMTcgQEAgdm9pZCBNYXJrZWRC
bG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9i
amVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
Ci0gICAgaWYgKG5lZWRzRmxpcCgpKQorICAgIGlmIChuZWVkc0ZsaXAoKSkgewogICAgICAgICBj
bGVhck1hcmtzKCk7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMg
dG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFsbG9j
YXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1
ZSk7CisgICAgfQogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKICAgICBt
X21hcmtzLmNsZWFyQWxsKCk7CiAgICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICAvLyBUaGlz
IHdpbGwgYmVjb21lIHRydWUgYXQgdGhlIGVuZCBvZiB0aGUgbWFyayBwaGFzZS4gV2Ugc2V0IGl0
IG5vdyB0bwotICAgIC8vIGF2b2lkIGFuIGV4dHJhIHBhc3MgdG8gZG8gc28gbGF0ZXIuCi0gICAg
aGFuZGxlKCkubV9zdGF0ZSA9IE1hcmtlZDsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwog
ICAgIG1fdmVyc2lvbiA9IHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CiB9CkBA
IC0zOTgsMTEgKzM5Niw2IEBAIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkK
ICAgICByZXR1cm4gbV9ibG9jay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6d2lsbFJlbW92ZUJsb2NrKCkKLXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLX0K
LQogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QoKQogewogICAg
IGZsaXBJZk5lY2Vzc2FyeSgpOwpAQCAtNDMyLDMzICs0MjUsMzggQEAgdm9pZCBNYXJrZWRCbG9j
azo6Y2xlYXJIYXNBbnlNYXJrZWQoKQogCiB2b2lkIE1hcmtlZEJsb2NrOjpub3RlTWFya2VkU2xv
dygpCiB7Ci0gICAgaGFuZGxlKCkubV9hbGxvY2F0b3ItPnJldGlyZSgmaGFuZGxlKCkpOworICAg
IGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ1JldGlyZWQo
JmhhbmRsZSgpLCB0cnVlKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBX
VEYgewordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZW1vdmVGcm9tQWxsb2NhdG9yKCkKK3sK
KyAgICBpZiAoIW1fYWxsb2NhdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9hbGxv
Y2F0b3ItPnJlbW92ZUJsb2NrKHRoaXMpOworfQogCi11c2luZyBuYW1lc3BhY2UgSlNDOwordm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChtX2luZGV4ID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVCghbV9hbGxvY2F0b3Ip
OworICAgIAorICAgIG1faW5kZXggPSBpbmRleDsKKyAgICBtX2FsbG9jYXRvciA9IGFsbG9jYXRv
cjsKK30KIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE1hcmtlZEJsb2Nr
OjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUpCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJl
bW92ZUZyb21BbGxvY2F0b3IoKQogewotICAgIHN3aXRjaCAoYmxvY2tTdGF0ZSkgewotICAgIGNh
c2UgTWFya2VkQmxvY2s6Ok5ldzoKLSAgICAgICAgb3V0LnByaW50KCJOZXciKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6OkZyZWVMaXN0ZWQ6Ci0gICAgICAgIG91dC5w
cmludCgiRnJlZUxpc3RlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9j
azo6QWxsb2NhdGVkOgotICAgICAgICBvdXQucHJpbnQoIkFsbG9jYXRlZCIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TWFya2VkOgotICAgICAgICBvdXQucHJpbnQo
Ik1hcmtlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgCisgICAgQVNTRVJUKG1f
aW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJU
KG1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKTsKKyAgICBtX2FsbG9jYXRvciA9IG51bGxwdHI7CiB9CiAKK30gLy8gbmFt
ZXNwYWNlIEpTQworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwyMCAr
NDQsNiBAQCBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwog
dHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKIAotLy8gU2V0IHRvIGxvZyBzdGF0ZSB0cmFu
c2l0aW9ucyBvZiBibG9ja3MuCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJ
T05TIDAKLQotI2lmIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05TCi0jZGVmaW5lIEhF
QVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oaGFuZGxlKSBkbyB7ICAgICAgICAgICAgXAot
ICAgICAgICBkYXRhTG9nRiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgICAgICIlczolZCAlczogYmxvY2sgJXMgPSAlcCwgJWRcbiIsICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVO
Q1RJT05fXywgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgI2hhbmRsZSwgJihoYW5k
bGUpLT5ibG9jaygpLCAoaGFuZGxlKS0+bV9zdGF0ZSk7ICAgIFwKLSAgICB9IHdoaWxlIChmYWxz
ZSkKLSNlbHNlCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oaGFuZGxl
KSAoKHZvaWQpMCkKLSNlbmRpZgotCiAvLyBBIG1hcmtlZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25l
ZCBjb250YWluZXIgZm9yIGhlYXAtYWxsb2NhdGVkIG9iamVjdHMuCiAvLyBPYmplY3RzIGFyZSBh
bGxvY2F0ZWQgd2l0aGluIGNlbGxzIG9mIHRoZSBtYXJrZWQgYmxvY2suIEZvciBhIGdpdmVuCiAv
LyBtYXJrZWQgYmxvY2ssIGFsbCBjZWxscyBoYXZlIHRoZSBzYW1lIHNpemUuIE9iamVjdHMgc21h
bGxlciB0aGFuIHRoZQpAQCAtNzYsOCArNjIsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBIYW5kbGU7CiBwdWJsaWM6Ci0gICAgZW51bSBCbG9ja1N0YXRlIDogdWludDhf
dCB7IE5ldywgRnJlZUxpc3RlZCwgQWxsb2NhdGVkLCBNYXJrZWQgfTsKLSAgICAgICAgCiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBhdG9tU2l6ZSA9IDE2OyAvLyBieXRlcwogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgYmxvY2tTaXplID0gMTYgKiBLQjsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IGJsb2NrTWFzayA9IH4oYmxvY2tTaXplIC0gMSk7IC8vIGJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93
ZXIgb2YgdHdvLgpAQCAtMTMwLDYgKzExNCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFZNKiB2bSgp
IGNvbnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAgICAgICAgICAgICAKKyAgICAg
ICAgLy8gU3dlZXBpbmcgZW5zdXJlcyB0aGF0IGRlc3RydWN0b3JzIGdldCBjYWxsZWQgYW5kIHJl
bW92ZXMgdGhlIGJsb2NrIGZyb20gdGhlIHNuYXBzaG90LgorICAgICAgICAvLyBTd2VlcGluZyB0
byBmcmVlIGxpc3QgYWxzbyByZW1vdmVzIHRoZSBibG9jayBmcm9tIHRoZSBlbXB0eSBzZXQsIGlm
IGl0IHdhcyBpbiB0aGF0IHNldC4KKyAgICAgICAgLy8gTm90ZSB0aGF0IHlvdSBuZWVkIHRvIG1h
a2Ugc3VyZSB0aGF0IHRoZSBlbXB0eSBiaXQgcmVmbGVjdHMgcmVhbGl0eS4gSWYgaXQncyBub3Qg
c2V0CisgICAgICAgIC8vIGFuZCB0aGUgYmxvY2sgaXMgZnJlc2hseSBjcmVhdGVkLCB0aGVuIHdl
J2xsIG1ha2UgdGhlIG1pc3Rha2Ugb2YgcnVubmluZyBkZXN0cnVjdG9ycyBpbgorICAgICAgICAv
LyB0aGUgYmxvY2suIElmIGl0J3Mgbm90IHNldCBhbmQgdGhlIGJsb2NrIGhhcyBub3RoaW5nIG1h
cmtlZCwgdGhlbiB3ZSdsbCBtYWtlIHRoZQorICAgICAgICAvLyBtaXN0YWtlIG9mIG1ha2luZyBh
IHBvcCBmcmVlbGlzdCByYXRoZXIgdGhhbiBhIGJ1bXAgZnJlZWxpc3QuCiAgICAgICAgIGVudW0g
U3dlZXBNb2RlIHsgU3dlZXBPbmx5LCBTd2VlcFRvRnJlZUxpc3QgfTsKICAgICAgICAgRnJlZUxp
c3Qgc3dlZXAoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgCkBAIC0xNzQsMTEgKzE2
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0
ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fbmV3bHlBbGxvY2F0ZWQ7IH0KICAgICAgICAgICAgIAot
ICAgICAgICBib29sIGlzQWxsb2NhdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNNYXJrZWQo
KSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdDsKICAgICAgICAgYm9v
bCBuZWVkc1N3ZWVwaW5nKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgd2lsbFJlbW92ZUJsb2NrKCk7
CiAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBm
b3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsK
QEAgLTE5NSw4ICsxODEsMTUgQEAgcHVibGljOgogICAgICAgICBib29sIGlzT25CbG9ja3NUb1N3
ZWVwKCkgY29uc3QgeyByZXR1cm4gbV9pc09uQmxvY2tzVG9Td2VlcDsgfQogICAgICAgICB2b2lk
IHNldElzT25CbG9ja3NUb1N3ZWVwKGJvb2wgdmFsdWUpIHsgbV9pc09uQmxvY2tzVG9Td2VlcCA9
IHZhbHVlOyB9CiAgICAgICAgIAotICAgICAgICBCbG9ja1N0YXRlIHN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZTsgfQotICAgICAgICAgICAgCisgICAgICAgIGJvb2wgaXNGcmVlTGlzdGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyZWVMaXN0ZWQ7IH0KKyAgICAgICAgCisgICAgICAgIHNp
emVfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICAgICAgCisgICAgICAg
IHZvaWQgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAgICAKKyAgICAgICAgdm9pZCBkaWRB
ZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgaW5kZXgpOworICAgICAgICB2
b2lkIGRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgSGFuZGxlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNv
bnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmLCB2b2lkKik7CiAgICAgICAgICAgICAKQEAgLTIwNiwx
NiArMTk5LDI2IEBAIHB1YmxpYzoKICAgICAgICAgZW51bSBTY3JpYmJsZU1vZGUgeyBEb250U2Ny
aWJibGUsIFNjcmliYmxlIH07CiAgICAgICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1
Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGU+Ci0gICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2Vs
ZWN0U3RhdGVBbmRTd2VlcE1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgRnJl
ZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsK
ICAgICAgICAgICAgIAorICAgICAgICBlbnVtIEVtcHR5TW9kZSB7IElzRW1wdHksIE5vdEVtcHR5
IH07CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9k
ZSwgU2NyaWJibGVNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEhhc05l
d2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAogICAgICAgICBl
bnVtIE5ld2x5QWxsb2NhdGVkTW9kZSB7IEhhc05ld2x5QWxsb2NhdGVkLCBEb2VzTm90SGF2ZU5l
d2x5QWxsb2NhdGVkIH07Ci0gICAgICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0
ZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0
ZWRNb2RlPgorICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlv
bk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICBGcmVlTGlz
dCBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAg
ICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9u
TW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CiAgICAgICAgIEZyZWVMaXN0
IHNwZWNpYWxpemVkU3dlZXAoKTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgogICAgICAgICB2b2lkIGZvckVhY2hGcmVlQ2VsbChjb25zdCBGcmVlTGlzdCYs
IGNvbnN0IEZ1bmMmKTsKLSAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJ
c0ZyZWVMaXN0ZWQoKTsKKyAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1f
cHJldjsKICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0OwogICAgICAgICAgICAg
CkBAIC0yMjUsMTYgKzIyOCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxX
VEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4gbV9uZXdseUFsbG9jYXRlZDsKICAgICAgICAgICAg
IAogICAgICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKLSAgICAgICAgQmxv
Y2tTdGF0ZSBtX3N0YXRlOwotICAgICAgICBib29sIG1faXNPbkJsb2Nrc1RvU3dlZXAgeyBmYWxz
ZSB9OworICAgICAgICBib29sIG1faXNGcmVlTGlzdGVkIHsgZmFsc2UgfTsKICAgICAgICAgICAg
IAotICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAgICAgICBNYXJrZWRB
bGxvY2F0b3IqIG1fYWxsb2NhdG9yIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3QgbV9pbmRl
eCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1Nl
dCBtX3dlYWtTZXQ7CiAgICAgICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2s7
CiAgICAgfTsKICAgICAgICAgCi0gICAgc3RhdGljIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNy
ZWF0ZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxv
Y2F0b3JBdHRyaWJ1dGVzJik7CisgICAgc3RhdGljIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNy
ZWF0ZShIZWFwJiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7
CiAgICAgICAgIAogICAgIEhhbmRsZSYgaGFuZGxlKCk7CiAgICAgICAgIApAQCAtMjc1LDcgKzI3
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAgCiAgICAg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9u
OyB9Ci0gICAgICAgIAorICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0
b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOwogCkBAIC00OTQsNiArNDk3LDggQEAgaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTgogCiBpbmxpbmUgdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpmbGlwRm9yRWRlbkNvbGxlY3Rpb24oKQogeworICAgIC8vIEZJWE1F
OiBUaGlzIG5lZWRzIHRvIGRpZSEKKyAgICAKICAgICBhc3NlcnRGbGlwcGVkKCk7CiAgICAgICAg
IAogICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CkBAIC01NzIsMjEg
KzU3NywxMiBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5CiBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENlbGwqIGNlbGwp
CiB7CiAgICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNh
c2UgQWxsb2NhdGVkOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNhc2UgTWFya2VkOgot
ICAgICAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOworICAgIEFTU0VS
VCghaXNGcmVlTGlzdGVkKCkpOwogCi0gICAgY2FzZSBOZXc6Ci0gICAgY2FzZSBGcmVlTGlzdGVk
OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKGFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChjZWxsKTsKIH0KIAogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2
b2lkKiBwKQpAQCAtNjU2LDI4ICs2NTIsMTEgQEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJr
ZWRCbG9jazo6SGFuZAogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc1N3
ZWVwaW5nKCkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBkaWUuCiAgICAg
Y29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgp
OwogICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZDsKIH0KIAotaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNBbGxvY2F0ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFy
a2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4g
bV9zdGF0ZSA9PSBBbGxvY2F0ZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTWFya2VkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5k
bGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFy
a2VkOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0ZWQo
KSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5m
bGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBGcmVlTGlzdGVkOwotfQot
CiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aGFzQW55TWFya2VkKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9iaWFzZWRNYXJrQ291bnQgIT0gbV9tYXJrQ291bnRCaWFzOwpAQCAtNzExLDggKzY5
MCw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6TWFya2UKICAgICB0eXBl
ZGVmIE1hcmtlZEJsb2NrSGFzaCBIYXNoOwogfTsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUpOwotCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogI2VuZGlmIC8vIE1hcmtlZEJsb2NrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTk1LDYgKzE5NSwxOSBAQCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7
CiAgICAgICAgIH0pOworICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogcHJldmlvdXMgPSBudWxs
cHRyOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9y
JiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBpZiAocHJldmlv
dXMpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBjYW4gc2V0IHRoaXMgaW4gYW55IG9yZGVyLiBU
aGUgcG9pbnQgaXMganVzdCB0aGF0IHdlIHdhbnQgdG8gYmUgYWJsZSB0bworICAgICAgICAgICAg
ICAgIC8vIGN1cnNvciBvdmVyIGFsbG9jYXRvcnMuCisgICAgICAgICAgICAgICAgYWxsb2NhdG9y
LnNldE5leHRBbGxvY2F0b3IocHJldmlvdXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cHJldmlvdXMgPSAmYWxsb2NhdG9yOworICAgICAgICB9KTsKKyAgICBtX2ZpcnN0QWxsb2NhdG9y
ID0gcHJldmlvdXM7CisgICAgbV9uZXh0QWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gcHJl
dmlvdXM7CiB9CiAKIE1hcmtlZFNwYWNlOjp+TWFya2VkU3BhY2UoKQpAQCAtNTUzLDQgKzU2Niwx
MyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFyCiAgICAgfQogfQog
CitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2soKQorewor
ICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbjsgbV9hbGxvY2F0b3JGb3JF
bXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+bmV4dEFsbG9j
YXRvcigpKSB7CisgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYWxs
b2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5maW5kRW1wdHlCbG9jaygpKQorICAgICAgICAgICAg
cmV0dXJuIGJsb2NrOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJ
KHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw2ICsxNjksMTEgQEAgcHVibGljOgogICAgIExh
cmdlQWxsb2NhdGlvbioqIGxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kOyB9CiAg
ICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZTsgfQogICAg
IAorICAgIE1hcmtlZEFsbG9jYXRvciogZmlyc3RBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBt
X2ZpcnN0QWxsb2NhdG9yOyB9CisgICAgTWFya2VkQWxsb2NhdG9yKiBuZXh0QWxsb2NhdG9yRm9y
RW1wdHlBbGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0QWxsb2NhdG9yRm9yRW1wdHlB
bGxvY2F0aW9uOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5Qmxv
Y2soKTsKKyAgICAKICAgICAvLyBXaGVuIHRoaXMgaXMgdHJ1ZSBpdCBtZWFucyB0aGF0IHdlIGhh
dmUgZmxpcHBlZCBidXQgdGhlIG1hcmsgYml0cyBoYXZlbid0IGNvbnZlcmdlZCB5ZXQuCiAgICAg
Ym9vbCBpc01hcmtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzTWFya2luZzsgfQogICAgIApAQCAt
MjE1LDYgKzIyMCw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25z
Rm9yVGhpc0NvbGxlY3Rpb25TaXplIHsgMCB9OwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFr
U2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9hY3RpdmVXZWFrU2V0czsKICAg
ICBTZW50aW5lbExpbmtlZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1Nl
dD4+IG1fbmV3QWN0aXZlV2Vha1NldHM7CisgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2Zp
cnN0QWxsb2NhdG9yIHsgbnVsbHB0ciB9OworICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0
b3JGb3JFbXB0eUFsbG9jYXRpb24geyBudWxscHRyIH07CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJ
dGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCkluZGV4OiBTb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAkJMEY0NTcwNDMxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQyMUJF
NUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi87IH07CiAJCTBGNDU3MDQ1MUJFODM0NDEw
MDYyQTYyOSAvKiBCdWJibGVTb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICov
OyB9OwogCQkwRjcyNUNBQzFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzI1Q0FCMUM1MDQ2MTYwMEFE
OTQzQSAvKiBSYW5nZVNldC5oICovOyB9OworCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyog
RmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi87
IH07CiAJCTBGODI0QTY4MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY0MUI3NDQzQTAw
MDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLzsgfTsKIAkJMEY4MjRBNjkxQjc0NDNBMDAwMkUz
NDVEIC8qIFBhcmtpbmdMb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi87IH07
CiAJCTBGODcxMDVBMTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTA1OTE2NjQzRjE5MDA5MEIw
QUQgLyogUmF3UG9pbnRlci5oICovOyB9OwpAQCAtMzY2LDYgKzM2Nyw3IEBACiAJCTBGNDU3MDQy
MUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERvbWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0
NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnViYmxlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5n
TG90LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmtpbmdMb3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0
NUQgLyogUGFya2luZ0xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJr
aW5nTG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODcxMDU5MTY2NDNGMTkw
MDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJhd1BvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4MCw2ICs4ODIs
NyBAQAogCQkJCUE4QTQ3Mjk4MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9hLmggKi8sCiAJCQkJMUFF
QTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1UcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5RjE1
MUE4MjVBMDA0MTIzRkYgLyogRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJMEY3QzVGQjUxRDg4NUNG
MjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovLAogCQkJCTBGRDgxQUM0MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8sCiAJCQkJQThBNDcyQTExNTFBODI1QTAwNDEy
M0ZGIC8qIEZhc3RNYWxsb2MuY3BwICovLAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAv
KiBGYXN0TWFsbG9jLmggKi8sCkBAIC0xNTk0LDYgKzE1OTcsNyBAQAogCQkJCUNENTQ5N0FDMTU4
NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDcz
RUMxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjcxNTFBODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2Nh
dG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZG
IC8qIE9TUmFuZG9tU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDAyMTUxQTgy
NUIwMDQxMjNGRiAvKiBQYWdlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBzZXQoV1RGX1NPVVJDRVMK
ICAgICBEYXRhTG9nLmNwcAogICAgIERhdGVNYXRoLmNwcAogICAgIERlY2ltYWxOdW1iZXIuY3Bw
CisgICAgRmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZpbGVQcmlu
dFN0cmVhbS5jcHAKICAgICBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJGYXN0Qml0VmVjdG9yLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitGYXN0Qml0VmVjdG9y
V29yZE93bmVyJiBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpvcGVyYXRvcj0oY29uc3QgRmFzdEJp
dFZlY3RvcldvcmRPd25lciYgb3RoZXIpCit7CisgICAgc2l6ZV90IGxlbmd0aCA9IG90aGVyLmFy
cmF5TGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA9PSBhcnJheUxlbmd0aCgpKSB7CisgICAgICAg
IG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBsZW5ndGggKiBzaXplb2YodWludDMyX3Qp
KTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICB1aW50MzJfdCogbmV3QXJyYXkg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobGVuZ3RoLCBzaXplb2YodWludDMy
X3QpKSk7CisgICAgbWVtY3B5KG5ld0FycmF5LCBvdGhlci5tX3dvcmRzLCBsZW5ndGggKiBzaXpl
b2YodWludDMyX3QpKTsKKyAgICBpZiAobV93b3JkcykKKyAgICAgICAgZmFzdEZyZWUobV93b3Jk
cyk7CisgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVt
Qml0czsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgRmFzdEJpdFZlY3RvcldvcmRPd25l
cjo6cmVzaXplKHNpemVfdCBudW1CaXRzKQoreworICAgIHNpemVfdCBvbGRMZW5ndGggPSBhcnJh
eUxlbmd0aCgpOworICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5n
dGgobnVtQml0cyk7CisgICAgCisgICAgaWYgKG5ld0xlbmd0aCAhPSBvbGRMZW5ndGgpIHsKKyAg
ICAgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdl
IGV4cGVjdCB0aGUgY29tbW9uCisgICAgICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1ldGhvZCB0
byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rvci4KKyAgICAgICAgCisg
ICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENh
bGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKKyAgICAgICAgbWVtY3B5KG5ld0Fy
cmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgICAg
IGlmIChtX3dvcmRzKQorICAgICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7CisgICAgICAgIG1f
d29yZHMgPSBuZXdBcnJheTsKKyAgICB9CisgICAgCisgICAgbV9udW1CaXRzID0gbnVtQml0czsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRW
ZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJKHJl
dmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxzdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgpAQCAtODksMjEgKzkwLDcgQEAgcHVibGljOgogICAgIAogICAgIEZhc3RCaXRWZWN0
b3JXb3JkVmlldyB2aWV3KCkgY29uc3QgeyByZXR1cm4gRmFzdEJpdFZlY3RvcldvcmRWaWV3KG1f
d29yZHMsIG1fbnVtQml0cyk7IH0KICAgICAKLSAgICBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBv
cGVyYXRvcj0oY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCi0gICAgewotICAg
ICAgICBzaXplX3QgbGVuZ3RoID0gb3RoZXIuYXJyYXlMZW5ndGgoKTsKLSAgICAgICAgaWYgKGxl
bmd0aCA9PSBhcnJheUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBtZW1jcHkobV93b3Jkcywgb3Ro
ZXIubV93b3JkcywgbGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgICAgICByZXR1
cm4gKnRoaXM7Ci0gICAgICAgIH0KLSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKGxlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwot
ICAgICAgICBtZW1jcHkobmV3QXJyYXksIG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVvZih1
aW50MzJfdCkpOwotICAgICAgICBpZiAobV93b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1f
d29yZHMpOwotICAgICAgICBtX3dvcmRzID0gbmV3QXJyYXk7Ci0gICAgICAgIG1fbnVtQml0cyA9
IG90aGVyLm1fbnVtQml0czsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3BlcmF0b3I9KGNvbnN0IEZh
c3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKTsKICAgICAKICAgICBGYXN0Qml0VmVjdG9yV29y
ZE93bmVyJiBvcGVyYXRvcj0oRmFzdEJpdFZlY3RvcldvcmRPd25lciYmIG90aGVyKQogICAgIHsK
QEAgLTEzOCwyMiArMTI1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmFzdEJpdFZlY3Rv
ckFycmF5TGVuZ3RoKG51bUJpdHMoKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgcmVzaXplKHNp
emVfdCBudW1CaXRzKQotICAgIHsKLSAgICAgICAgaWYgKG51bUJpdHMgPT0gbV9udW1CaXRzKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgLy8gVXNlIGZhc3RDYWxsb2Mg
aW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCi0gICAg
ICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNp
emUgb2YgdGhlIGJpdHZlY3Rvci4KLSAgICAgICAgCi0gICAgICAgIHNpemVfdCBuZXdMZW5ndGgg
PSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cyk7Ci0gICAgICAgIHVpbnQzMl90KiBu
ZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNp
emVvZih1aW50MzJfdCkpKTsKLSAgICAgICAgbWVtY3B5KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJh
eUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAg
ICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsK
LSAgICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKLSAgICB9CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVzaXplKHNpemVfdCBudW1CaXRzKTsKICAgICAKICAgICB1aW50MzJfdCB3b3Jk
KHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CkBAIC00NzEsNiArNDQzLDcgQEAgcHVibGljOgog
ICAgICAgICBtX3dvcmRzLmNsZWFyQWxsKCk7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBjb250ZW50cyBvZiB0aGlzIGJpdHZlY3RvciBjaGFuZ2VkLgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAgYm9vbCBzZXRBbmRDaGVjayhjb25zdCBGYXN0Qml0
VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpCiAgICAgewpAQCAtNTUwLDYgKzUyMywyOCBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwogICAgIH0KKyAgICAK
KyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnRzIGNoYW5nZWQuCisgICAgQUxXQVlT
X0lOTElORSBib29sIGF0b21pY1NldEFuZENoZWNrKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHVpbnQzMl90KiBwb2ludGVyID0gJm1fd29yZHMud29yZChpbmRleCA+
PiA1KTsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKGluZGV4ICYgMzEpOworICAgICAg
ICBmb3IgKDs7KSB7CisgICAgICAgICAgICB1aW50MzJfdCBvbGRWYWx1ZSA9ICpwb2ludGVyOwor
ICAgICAgICAgICAgdWludDMyX3QgbmV3VmFsdWU7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsK
KyAgICAgICAgICAgICAgICBpZiAob2xkVmFsdWUgJiBtYXNrKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSB8IG1h
c2s7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghKG9sZFZhbHVl
ICYgbWFzaykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlICYgfm1hc2s7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAod2Vha0NvbXBhcmVBbmRTd2FwKHBvaW50ZXIsIG9sZFZhbHVlLCBuZXdWYWx1ZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288699</attachid>
            <date>2016-09-13 10:57:36 -0700</date>
            <delta_ts>2016-09-13 11:12:10 -0700</delta_ts>
            <desc>close to done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60192</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTI2LDExICs1MjYsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgfQogICAgIAog
ICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAi
bV9vYmplY3RTcGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZmxpcCgp
OworICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29i
amVjdFNwYWNlLmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFy
a2luZygpOwogICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyh0cnVl
KTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCkBAIC03Nzks
NyArNzc3LDcgQEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAgICBBU1NFUlQobV9zaGFyZWRN
YXJrU3RhY2suaXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLnJlbW92
ZUFsbCgpOwogICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKGZhbHNlKTsKKyAg
ICBtX29iamVjdFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVjdENv
dW50KCkKQEAgLTkzOSw3ICs5MzcsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkK
ICAgICAgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNwYWNlLnNo
cmluaygpOwogICAgIH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBzaG90LmlzRW1wdHkoKSk7Cisg
ICAgbV9vYmplY3RTcGFjZS5hc3NlcnRTbmFwc2hvdEVtcHR5KCk7CiAKICAgICBzd2VlcEFsbExv
Z2ljYWxseUVtcHR5V2Vha0Jsb2NrcygpOwogfQpAQCAtMTA0OCw3ICsxMDQ2LDcgQEAgTkVWRVJf
SU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3JlbWVudGFs
U3dlZXBlcigpOwogICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3Mo
KTsKIAotICAgIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7
CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24o
Z2NTdGFydFRpbWUpOwogICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTE2Miw0NCAr
MTE2MCwxMCBAQCB2b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKICAgICBtX2FycmF5QnVm
ZmVycy5zd2VlcCgpOwogfQogCi1zdHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgOiBw
dWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBNYXJrZWRCbG9ja1NuYXBzaG90
RnVuY3RvcihWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBibG9ja3MpIAotICAgICAgICA6
IG1faW5kZXgoMCkgCi0gICAgICAgICwgbV9ibG9ja3MoYmxvY2tzKQotICAgIHsKLSAgICB9Ci0K
LSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0g
ICAgewotICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAg
IG1fYmxvY2tzW21faW5kZXgrK10gPSBibG9jazsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVGhp
cyBpcyBhIG11dGFibGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKLSAgICBt
dXRhYmxlIHNpemVfdCBtX2luZGV4OwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4m
IG1fYmxvY2tzOwotfTsKLQogdm9pZCBIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlKCkKIHsKICAg
ICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhpcywgIkhlYXA6OnNuYXBzaG90TWFya2VkU3Bh
Y2UiKTsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcmVuYW1lZC4gSXQn
cyBub3QgYWN0dWFsbHkgc25hcHNob3R0aW5nIGFsbCBvZiBNYXJrZWRTcGFjZS4KLSAgICAvLyBU
aGlzIGlzIHVzZWQgYnkgSW5jcmVtZW50YWxTd2VlcGVyLCBzbyBpdCBvbmx5IG5lZWRzIHRvIHNu
YXBzaG90IGJsb2Nrcy4gSG93ZXZlciwgaWYgd2UgZXZlcgotICAgIC8vIHdhbnRlZCB0byBhZGQg
b3RoZXIgc25hcHNob3R0aW5nIGxvZ2luLCB3ZSdkIHByb2JhYmx5IHB1dCBpdCBoZXJlLgotICAg
IAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAg
ICAgICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgOiBtX29iamVjdFNwYWNlLmJs
b2Nrc1dpdGhOZXdPYmplY3RzKCkpIHsKLSAgICAgICAgICAgIGlmIChoYW5kbGUtPmlzT25CbG9j
a3NUb1N3ZWVwKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX2Js
b2NrU25hcHNob3QuYXBwZW5kKGhhbmRsZSk7Ci0gICAgICAgICAgICBoYW5kbGUtPnNldElzT25C
bG9ja3NUb1N3ZWVwKHRydWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9i
bG9ja1NuYXBzaG90LnJlc2l6ZVRvRml0KG1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuc2l6
ZSgpKTsKLSAgICAgICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgZnVuY3RvcihtX2Jsb2Nr
U25hcHNob3QpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hCbG9jayhmdW5jdG9yKTsK
LSAgICB9CisgICAgbV9vYmplY3RTcGFjZS5zbmFwc2hvdCgpOwogfQogCiB2b2lkIEhlYXA6OmRl
bGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKQEAgLTEyMjIsOSArMTE4Niw5IEBAIHZvaWQgSGVh
cDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW4KICAgICBtX2NvZGVCbG9ja3MtPndyaXRl
QmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhpcyk7CiB9CiAKLXZvaWQgSGVh
cDo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQog
ewotICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3JzKCk7CisgICAgbV9vYmplY3RTcGFj
ZS5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogfQogCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRp
b25MaW1pdHMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjA1
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzMsNyArMzMzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZVNvdXJjZVByb3Zp
ZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB2
b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKLSAgICB2b2lk
IHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAg
ICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAgIHZvaWQgZmluYWxpemVVbmNvbmRp
dGlvbmFsRmluYWxpemVycygpOwogICAgIHZvaWQgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVzKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5j
cHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw1MCArMTAwLDc3IEBAIHZvaWQg
TWFya2VkQWxsb2NhdG9yOjpzZXROZXh0QmxvY2tUb1N3ZWUKICAgICBtX25leHRCbG9ja1RvU3dl
ZXAgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2spOwogfQogCitNYXJrZWRCbG9jazo6SGFuZGxlKiBN
YXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJsb2NrKCkKK3sKKyAgICBtX2VtcHR5Q3Vyc29yID0g
bV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJzb3IsIHRydWUpOworICAgIGlmIChtX2VtcHR5Q3Vy
c29yID49IG1fYmxvY2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIG1fYmxvY2tzW21fZW1wdHlDdXJzb3JdOworfQorCiB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6
OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0gICAgaWYgKG1fY3VycmVudEJs
b2NrKSB7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9PSBtX25leHRCbG9ja1RvU3dl
ZXApOworICAgIGlmIChtX2N1cnJlbnRCbG9jaykKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmRp
ZENvbnN1bWVGcmVlTGlzdCgpOwotICAgICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fY3VycmVu
dEJsb2NrLT5uZXh0KCkpOwotICAgIH0KICAgICAKICAgICBzZXRGcmVlTGlzdChGcmVlTGlzdCgp
KTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKG1fbmV4dEJsb2NrVG9Td2VlcCAhPSBtX2Jsb2NrTGlz
dC5lbmQoKSk7Ci0KLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBuZXh0OwotICAgIGZvciAoTWFy
a2VkQmxvY2s6OkhhbmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxv
Y2sgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5leHQo
KSk7Ci0KLSAgICAgICAgLy8gSXQgd291bGQgYmUgc3VwZXIgd2VpcmQgaWYgdGhlIGJsb2NrcyB3
ZSBhcmUgc3dlZXBpbmcgaGF2ZSBhbnl0aGluZyBhbGxvY2F0ZWQgZHVyaW5nIHRoaXMKLSAgICAg
ICAgLy8gY3ljbGUuCi0gICAgICAgIEFTU0VSVCghYmxvY2stPmhhc0FueU5ld2x5QWxsb2NhdGVk
KCkpOwotICAgICAgICAKLSAgICAgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAo
TWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsKKyAgICBtX2N1cnJlbnRCbG9j
ayA9IG51bGxwdHI7CisgICAgCisgICAgZm9yICg7OykgeworICAgICAgICBtX2FsbG9jYXRpb25D
dXJzb3IgPSBtX2NhbkFsbG9jYXRlLmZpbmRCaXQobV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKTsK
KyAgICAgICAgaWYgKG1fYWxsb2NhdGlvbkN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIC8vIEl0J3MgcG9zc2libGUgdG8gc3R1
bWJsZSBvbiBhIGNvbXBsZXRlLWZ1bGwgYmxvY2suIE1hcmtpbmcgdHJpZXMgdG8gcmV0aXJlIHRo
ZXNlLCBidXQKLSAgICAgICAgLy8gdGhhdCBhbGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdl
dCB0byBkbyBpdCBzb21ldGltZXMuCi0gICAgICAgIGlmIChmcmVlTGlzdC5hbGxvY2F0aW9uV2ls
bEZhaWwoKSkgewotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7Ci0g
ICAgICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAg
ICAgICBBU1NFUlQoYmxvY2stPmlzTWFya2VkKCkpOwotICAgICAgICAgICAgcmV0aXJlKGJsb2Nr
KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIHNldElzQ2FuQWxs
b2NhdGUobV9hbGxvY2F0aW9uQ3Vyc29yLCBmYWxzZSk7CiAKLSAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBibG9jazsKLSAgICAgICAgc2V0RnJlZUxpc3QoZnJlZUxpc3QpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4obV9ibG9ja3NbbV9h
bGxvY2F0aW9uQ3Vyc29yXSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICAKLSAgICBpZiAoIW1fZnJlZUxpc3QpIHsKLSAgICAgICAgbV9jdXJyZW50QmxvY2sgPSAwOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBm
aW5kRW1wdHlCbG9jaygpKQorICAgICAgICByZXR1cm4gYWxsb2NhdGVJbihibG9jayk7CisgICAg
CisgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9tYXJrZWRTcGFjZS0+Zmlu
ZEVtcHR5QmxvY2soKSkgeworICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAgICAgICAgYmxvY2st
PnJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgYWRkQmxvY2soYmxvY2spOworICAgICAg
ICByZXR1cm4gYWxsb2NhdGVJbihibG9jayk7CiAgICAgfQorICAgIAorICAgIHJldHVybiBudWxs
cHRyOworfQorCit2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlSW4oTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2spCit7CisgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVJbihibG9j
ayk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQog
Cit2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2spCit7CisgICAgQVNTRVJUKGJsb2NrKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5oYXNB
bnlOZXdseUFsbG9jYXRlZCgpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7
CisgICAgCisgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6
OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAKKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRv
IHN0dW1ibGUgb24gYSBjb21wbGV0ZWx5IGZ1bGwgYmxvY2suIE1hcmtpbmcgdHJpZXMgdG8gcmV0
aXJlIHRoZXNlLCBidXQKKyAgICAvLyB0aGF0IGFsZ29yaXRobSBpcyByYWN5IGFuZCBtYXkgZm9y
Z2V0IHRvIGRvIGl0IHNvbWV0aW1lcy4KKyAgICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxG
YWlsKCkpIHsKKyAgICAgICAgQVNTRVJUKGJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgICAg
IGJsb2NrLT51bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICAgICAgQVNTRVJUKCFi
bG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBBU1NFUlQoIWlzRW1wdHkoYmxvY2spKTsK
KyAgICAgICAgQVNTRVJUKCFpc0NhbkFsbG9jYXRlKGJsb2NrKSk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICAKKyAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOworICAgIHNl
dEZyZWVMaXN0KGZyZWVMaXN0KTsKKyAgICAKICAgICB2b2lkKiByZXN1bHQ7CiAgICAgaWYgKG1f
ZnJlZUxpc3QucmVtYWluaW5nKSB7CiAgICAgICAgIHVuc2lnbmVkIGNlbGxTaXplID0gbV9jZWxs
U2l6ZTsKQEAgLTIyNyw4ICsyNTQsNyBAQCB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRl
U2xvd0Nhc2VJCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgYWRkQmxv
Y2soYmxvY2spOwotICAgICAgICAKLSAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xs
ZWN0aW5nKCk7CisgICAgcmVzdWx0ID0gYWxsb2NhdGVJbihibG9jayk7CiAgICAgQVNTRVJUKHJl
c3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI0OSwzMCArMjc1LDY4IEBAIHNpemVf
dCBNYXJrZWRBbGxvY2F0b3I6OmJsb2NrU2l6ZUZvckJ5dGUKIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVCbG9jaygpCiB7CiAgICAgU3VwZXJTYW1wbGVy
U2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIHJldHVybiBNYXJrZWRCbG9jazo6
dHJ5Q3JlYXRlKCptX2hlYXAsIHRoaXMsIG1fY2VsbFNpemUsIG1fYXR0cmlidXRlcyk7CisgICAg
CisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0
ZSgqbV9oZWFwLCBtX2NlbGxTaXplLCBtX2F0dHJpYnV0ZXMpOworICAgIGlmICghaGFuZGxlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRC
bG9jayhoYW5kbGUpOworICAgIAorICAgIHJldHVybiBoYW5kbGU7CiB9CiAKIHZvaWQgTWFya2Vk
QWxsb2NhdG9yOjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIHsKLSAgICBB
U1NFUlQoIW1fY3VycmVudEJsb2NrKTsKLSAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOworICAgIHNp
emVfdCBpbmRleDsKKyAgICBpZiAobV9mcmVlQmxvY2tJbmRpY2VzLmlzRW1wdHkoKSkgeworICAg
ICAgICBpbmRleCA9IG1fYmxvY2tzLnNpemUoKTsKKworICAgICAgICBzaXplX3Qgb2xkQ2FwYWNp
dHkgPSBtX2Jsb2Nrcy5jYXBhY2l0eSgpOworICAgICAgICBtX2Jsb2Nrcy5hcHBlbmQoaGFuZGxl
KTsKKyAgICAgICAgaWYgKG1fYmxvY2tzLmNhcGFjaXR5KCkgIT0gb2xkQ2FwYWNpdHkpIHsKKyAg
ICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0
VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZlY3Rvci5udW1C
aXRzKCkgPT0gb2xkQ2FwYWNpdHkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
CisgICAgICAgICAgICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9sZENhcGFjaXR5KTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgICAg
ICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgICAgICAgICB2
ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5KCkpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW5kZXggPSBtX2ZyZWVCbG9ja0luZGlj
ZXMudGFrZUxhc3QoKTsKKyAgICAgICAgQVNTRVJUKCFtX2Jsb2Nrc1tpbmRleF0pOworICAgICAg
ICBtX2Jsb2Nrc1tpbmRleF0gPSBoYW5kbGU7CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRW
ZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAg
ICBBU1NFUlQoIXZlY3RvcltpbmRleF0pOworICAgICAgICB9KTsKKworICAgIGhhbmRsZS0+ZGlk
QWRkVG9BbGxvY2F0b3IodGhpcywgaW5kZXgpOwogICAgIAotICAgIG1fYmxvY2tMaXN0LmFwcGVu
ZChibG9jayk7Ci0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChibG9jayk7Ci0gICAgbV9tYXJrZWRT
cGFjZS0+ZGlkQWRkQmxvY2soYmxvY2spOworICAgIHNldElzTGl2ZShpbmRleCwgdHJ1ZSk7Cisg
ICAgc2V0SXNFbXB0eShpbmRleCwgdHJ1ZSk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpy
ZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIHsKLSAgICBpZiAobV9jdXJy
ZW50QmxvY2sgPT0gYmxvY2spIHsKLSAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmaWx0ZXJOZXh0
QmxvY2sobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAgICAgIHNldEZyZWVMaXN0KEZyZWVM
aXN0KCkpOwotICAgIH0KLSAgICBpZiAobV9uZXh0QmxvY2tUb1N3ZWVwID09IGJsb2NrKQotICAg
ICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fbmV4dEJsb2NrVG9Td2VlcC0+bmV4dCgpKTsKKyAg
ICBBU1NFUlQoYmxvY2stPmFsbG9jYXRvcigpID09IHRoaXMpOworICAgIEFTU0VSVChtX2Jsb2Nr
c1tibG9jay0+aW5kZXgoKV0gPT0gYmxvY2spOwogCi0gICAgYmxvY2stPndpbGxSZW1vdmVCbG9j
aygpOwotICAgIG1fYmxvY2tMaXN0LnJlbW92ZShibG9jayk7CisgICAgbV9ibG9ja3NbYmxvY2st
PmluZGV4KCldID0gbnVsbHB0cjsKKyAgICBtX2ZyZWVCbG9ja0luZGljZXMuYXBwZW5kKGJsb2Nr
LT5pbmRleCgpKTsKKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICBbJl0gKEZh
c3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgdmVjdG9yW2Jsb2NrLT5pbmRleCgp
XSA9IGZhbHNlOworICAgICAgICB9KTsKKyAgICAKKyAgICBibG9jay0+ZGlkUmVtb3ZlRnJvbUFs
bG9jYXRvcigpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcoKQpA
QCAtMjkyLDIzICszNTYsMjAgQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5n
KCkKICAgICBtX2ZyZWVMaXN0ID0gRnJlZUxpc3QoKTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0
b3I6OnJlc2V0KCkKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigp
CiB7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotICAgIG1fY3VycmVudEJsb2NrID0gMDsK
KyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxwdHI7CisgICAgbV9jdXJyZW50QmxvY2sgPSBu
dWxscHRyOwogICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwogCi0gICAgc2V0TmV4dEJsb2Nr
VG9Td2VlcChtX2Jsb2NrTGlzdC5iZWdpbigpKTsKKyAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSAw
OworICAgIG1fZW1wdHlDdXJzb3IgPSAwOworICAgIG1fc25hcHNob3RDdXJzb3IgPSAwOworICAg
IAorICAgIG1fZWRlbi5jbGVhckFsbCgpOwogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVz
ZUltbW9ydGFsT2JqZWN0cygpKSkgewotICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBuZXh0
OwotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqJiBibG9jayA9IG1fbmV4dEJsb2Nr
VG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICAgICAgbmV4dCA9IGZpbHRl
ck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAgICAgICAgRnJlZUxpc3QgZnJlZUxp
c3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsK
LSAgICAgICAgICAgIGJsb2NrLT56YXAoZnJlZUxpc3QpOwotICAgICAgICAgICAgcmV0aXJlKGJs
b2NrKTsKLSAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogVGhpbmdzPwogICAgIH0KIH0KIApA
QCAtMzI2LDQgKzM4Nyw1NiBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0RnJlZUxpc3QoY29u
c3QgCiAgICAgbV9mcmVlTGlzdCA9IGZyZWVMaXN0OwogfQogCit2b2lkIE1hcmtlZEFsbG9jYXRv
cjo6cmVzdW1lQWxsb2NhdGluZygpCit7CisgICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9jaykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5yZXN1
bWVBbGxvY2F0aW5nKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVCbG9jazsK
KyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpiZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpCit7CisgICAgLy8gTWFyayBiaXRz
IGFyZSBzdGlja3kgYW5kIHNvIGlzIG91ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25seSBj
bGVhciB0aGVzZSBkdXJpbmcgZnVsbAorICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ugc3Vy
dml2ZWQgdGhlIGxhc3QgY29sbGVjdGlvbiB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9uZSBz
byBsb25nCisgICAgLy8gYXMgdGhlIG5leHQgb25lIGlzIGVkZW4uCisgICAgbV9tYXJraW5nTm90
RW1wdHkuY2xlYXJBbGwoKTsKKyAgICBtX21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7Cit9CisK
K3ZvaWQgTWFya2VkQWxsb2NhdG9yOjplbmRNYXJraW5nKCkKK3sKKyAgICBtX2FsbG9jYXRlZC5j
bGVhcigpOworICAgIAorICAgIC8vIEl0J3Mgc3VycHJpc2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8g
Y29tcHJlaGVuZCwgYnV0IHRoZSBlbmQtb2YtbWFya2luZyBmbGlwIGRvZXMgbm90IG5lZWQgdG8K
KyAgICAvLyBrbm93IHdoYXQga2luZCBvZiBjb2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3dsZWRn
ZSBpcyBhbHJlYWR5IGVuY29kZWQgaW4gdGhlIG1fbWFya2luZ1hZWgorICAgIC8vIHZlY3RvcnMu
CisgICAgCisgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgeworICAgICAgICAvLyBJZiBibG9j
a3MgbmVlZCBkZXN0cnVjdGlvbiB0aGVuIG5vdGhpbmcgaXMgZW1wdHkhIFRoaXMgaXMgYSBjb3Jy
ZWN0IGFzc2VydGlvbiBidXQgbWF5CisgICAgICAgIC8vIGJlY29tZSB3cm9uZyBvbmNlIHdlIGdv
IGZ1bGwgY29uY3VycmVudDogd2hlbiB3ZSBjcmVhdGUgYSBuZXcgYmxvY2ssIGl0IHdpbGwgZmxp
Y2tlcgorICAgICAgICAvLyBpbnRvIHRoZSBlbXB0eSBzZXQgZm9yIGEgdGlueSBtb21lbnQuIE9u
IHRoZSBvdGhlciBoYW5kLCB0aGlzIGNvZGUgaXMgbGlrZWx5IHRvIGJlIHJ1bgorICAgICAgICAv
LyBpbiBzdG9wVGhlV29ybGQuCisgICAgICAgIEFTU0VSVChtX2VtcHR5LmlzRW1wdHkoKSk7Cisg
ICAgICAgIG1fY2FuQWxsb2NhdGUgPSBtX2xpdmUgJiB+bV9tYXJraW5nUmV0aXJlZDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2VtcHR5ID0gbV9saXZlICYgfm1fbWFya2lu
Z05vdEVtcHR5OworICAgIG1fY2FuQWxsb2NhdGUgPSBtX2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0
eSAmIH5tX21hcmtpbmdSZXRpcmVkOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNo
b3RGb3JFZGVuQ29sbGVjdGlvbigpCit7CisgICAgbV9zbmFwc2hvdCB8PSBtX2VkZW47Cit9CisK
K3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAg
ICBtX3NuYXBzaG90IHw9IG1fbGl2ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lv
biAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMzEgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIE1h
cmtlZFNwYWNlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisjZGVmaW5lIEZPUl9F
QUNIX01BUktFRF9BTExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2ZSkg
LyogVGhlIHNldCBvZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wK
KyAgICBtYWNybyhlbXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhh
dmUgbm8gbGl2ZSBvYmplY3RzIGFuZCBub3RoaW5nIHRvIGRlc3Ryb3kuICovIFwKKyAgICBtYWNy
byhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGxibG9ja3MgdGhhdCBhcmUg
ZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9jYXRlLCBDYW5BbGxv
Y2F0ZSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY2FuIGJlIGFsbG9jYXRlZCBpbiBy
aWdodCBub3cuICovIFwKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKKyAgICBt
YWNybyhzbmFwc2hvdCwgU25hcHNob3QpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNv
dWxkIGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wKKyAgICBcCisgICAg
LyogVGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiBXZSB1c2UgdGhlbSBhZnRlciBt
YXJraW5nIHRvIGNvbXB1dGUgbV9lbXB0eSBhbmQgKi9cCisgICAgLyogbV9jYW5BbGxvY2F0ZTog
Ki9cCisgICAgLyogKi9cCisgICAgLyogbV9lbXB0eS5zZXQobV9saXZlLmJpdEFuZChtX21hcmtp
bmdOb3RFbXB0eS5iaXROb3QoKSkpOyAqL1wKKyAgICAvKiBtX2NhbkFsbG9jYXRlLnNldChtX2xp
dmUuYml0QW5kKG1fbWFya2luZ1JldGlyZWQuYml0Tm90KCkpLmJpdEFuZChtX21hcmtpbmdOb3RF
bXB0eSkpOyAqL1wKKyAgICAvKiAqL1wKKyAgICAvKiBOb3RlIHRoYXQgd2UgYWxzbyBjbGVhciBt
X2FsbG9jYXRlZCBhdCBhcm91bmQgdGhlIHNhbWUgdGltZS4gSW4gZWRlbiBjb2xsZWN0aW9ucyB3
ZSB3b3VsZCAqL1wKKyAgICAvKiBkbzogKi9cCisgICAgLyogKi9cCisgICAgLyogbV9hbGxvY2F0
ZWQuZXhjbHVkZShtX2VkZW4pOyAqL1wKKyAgICAvKiAqL1wKKyAgICAvKiBBbmQgaW4gZnVsbCB3
ZSB3b3VsZCBkbzogKi9cCisgICAgLyogKi9cCisgICAgLyogbV9hbGxvY2F0ZWQuY2xlYXJBbGwo
KTsgKi9cCisgICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIFwKKyAg
ICBtYWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpCisKIGNsYXNzIE1hcmtlZEFs
bG9jYXRvciB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApAQCAt
NDYsOSArNzEsMTMgQEAgcHVibGljOgogCiAgICAgTWFya2VkQWxsb2NhdG9yKEhlYXAqLCBNYXJr
ZWRTcGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwog
ICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKLSAgICB2b2lkIHJlc2V0KCk7CisgICAg
dm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsK
ICAgICB2b2lkIHJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZ0ZvckZ1
bGxDb2xsZWN0aW9uKCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hv
dEZvckVkZW5Db2xsZWN0aW9uKCk7CisgICAgdm9pZCBzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9u
KCk7CiAgICAgc2l6ZV90IGNlbGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsU2l6ZTsgfQog
ICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZXM7IH0KICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQpAQCAt
NzIsNiArMTAxLDMyIEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRs
aW5lKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJsb2NrU2l6ZUZvckJ5dGVzKHNpemVfdCk7
CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUyhsb3dlckJpdE5h
bWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUo
c2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdOyB9
IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+aW5kZXgoKSk7
IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4LCBib29s
IHZhbHVlKSB7IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1ZTsgfSBcCisgICAgdm9p
ZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9v
bCB2YWx1ZSkgeyBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+aW5kZXgoKSwgdmFsdWUp
OyB9CisgICAgYm9vbCBhdG9taWNTZXRBbmRDaGVja0lzICMjIGNhcGl0YWxCaXROYW1lKHNpemVf
dCBpbmRleCwgYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lLmF0b21pY1Nl
dEFuZENoZWNrKGluZGV4LCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJ
cyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1
ZSkgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lLmF0b21pY1NldEFuZENoZWNrKGJsb2NrLT5p
bmRleCgpLCB2YWx1ZSk7IH0KKyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJL
RURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMpCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRf
QUNDRVNTT1JTCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFj
aEJpdFZlY3Rvcihjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNkZWZpbmUgTUFSS0VEX0FMTE9D
QVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAg
ICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSk7CisgICAgICAgIEZPUl9FQUNIX01BUktFRF9BTExP
Q0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKTsKKyN1bmRlZiBNQVJLRURf
QUxMT0NBVE9SX0JJVF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3Iq
IG5leHRBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25leHRBbGxvY2F0b3I7IH0KKyAgICAK
KyAgICAvLyBNYXJrZWRTcGFjZSBjYWxscyB0aGlzIGR1cmluZyBpbml0LgorICAgIHZvaWQgc2V0
TmV4dEFsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcikgeyBtX25leHRBbGxvY2F0
b3IgPSBhbGxvY2F0b3I7IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1w
dHlCbG9jaygpOwogICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsK
QEAgLTgyLDYgKzEzNywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91
dENvbGxlY3RpbmcoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1w
bCgpOwogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICB2
b2lkIGFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkIHJlbW92ZUJsb2Nr
KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUluKE1hcmtlZEJs
b2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkKiBhbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUq
KTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZCgpOwog
ICAgIHZvaWQgcmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKQEAgLTkxLDE2ICsx
NTAsMzAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE5leHRCbG9ja1RvU3dlZXAoTWFya2VkQmxv
Y2s6OkhhbmRsZSopOwogICAgIAogICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7CisgICAgCisgICAg
VmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8dW5zaWdu
ZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsKKyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9C
SVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgIEZhc3RC
aXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1lOworICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FU
T1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKQorI3VuZGVmIE1BUktFRF9B
TExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OCisgICAgCisgICAgLy8gQWZ0ZXIgeW91IGRvIHNvbWV0
aGluZyB0byBhIGJsb2NrIGJhc2VkIG9uIG9uZSBvZiB0aGVzZSBjdXJzb3JzLCB5b3UgY2xlYXIg
dGhlIGJpdCBpbiB0aGUKKyAgICAvLyBjb3JyZXNwb25kaW5nIGJpdHZlY3RvciBhbmQgbGVhdmUg
dGhlIGN1cnNvciB3aGVyZSBpdCB3YXMuCisgICAgc2l6ZV90IG1fYWxsb2NhdGlvbkN1cnNvciB7
IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9y
IGFsbG9jYXRpb24uCisgICAgc2l6ZV90IG1fZW1wdHlDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0
byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBlbXB0eSBhbGxvY2F0aW9u
IChhbGxvY2F0aW5nIGluIGVtcHR5IGJsb2NrcykuCisgICAgc2l6ZV90IG1fc25hcHNob3RDdXJz
b3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRl
IGZvciBpbmNyZW1lbnRhbCBzd2VlcGluZy4KKyAgICAKICAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiBtX2N1cnJlbnRCbG9jazsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2xhc3RBY3RpdmVC
bG9jazsKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHRCbG9ja1RvU3dlZXA7Ci0gICAg
U2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxO
b2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBtX2Jsb2NrTGlzdDsKLSAgICBTZW50aW5lbExpbmtl
ZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxv
Y2s6OkhhbmRsZT4+IG1fcmV0aXJlZEJsb2NrczsKKwogICAgIExvY2sgbV9sb2NrOwogICAgIHVu
c2lnbmVkIG1fY2VsbFNpemU7CiAgICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7
CiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOworICAg
IE1hcmtlZEFsbG9jYXRvciogbV9uZXh0QWxsb2NhdG9yOwogfTsKIAogaW5saW5lIHB0cmRpZmZf
dCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKQpAQCAtMTQ5LDE2ICsyMjIsNiBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsCiAgICAgcmV0dXJuIGhl
YWQ7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZygp
Ci17Ci0gICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5yZXN1bWVBbGxvY2F0aW5nKCk7Ci0gICAg
bV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBtX2xhc3RBY3RpdmVCbG9j
ayA9IDA7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAg
IG1fYmxvY2tMaXN0LmZvckVhY2goZnVuY3Rvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9vbCBjb21wdXRlQmFsYW5j
ZSA9IGZhbHNlOwogc3RhdGljIHNpemVfdCBiYWxhbmNlOwogCi1NYXJrZWRCbG9jazo6SGFuZGxl
KiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxs
b2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMpCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAm
IGhlYXAsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmli
dXRlcykKIHsKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFsYW5jZSsrOwpA
QCAtNDgsMTYgKzQ4LDE0IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlD
cmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkp
CiAgICAgICAgIHNjcmliYmxlKGJsb2NrU3BhY2UsIGJsb2NrU2l6ZSk7Ci0gICAgcmV0dXJuIG5l
dyBIYW5kbGUoaGVhcCwgYWxsb2NhdG9yLCBjZWxsU2l6ZSwgYXR0cmlidXRlcywgYmxvY2tTcGFj
ZSk7CisgICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJs
b2NrU3BhY2UpOwogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwg
TWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2Nh
dG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcywgdm9pZCogYmxvY2tTcGFjZSkKK01hcmtlZEJsb2Nr
OjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9j
YXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIHZvaWQqIGJsb2NrU3BhY2UpCiAgICAgOiBtX2F0
b21zUGVyQ2VsbCgoY2VsbFNpemUgKyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemUpCiAgICAgLCBt
X2VuZEF0b20oYXRvbXNQZXJCbG9jayAtIG1fYXRvbXNQZXJDZWxsICsgMSkKICAgICAsIG1fYXR0
cmlidXRlcyhhdHRyaWJ1dGVzKQotICAgICwgbV9zdGF0ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFy
dCBvdXQgdW5tYXJrZWQuCi0gICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX3dl
YWtTZXQoYWxsb2NhdG9yLT5oZWFwKCktPnZtKCksIENlbGxDb250YWluZXIoKSkKKyAgICAsIG1f
d2Vha1NldChoZWFwLnZtKCksIENlbGxDb250YWluZXIoKSkKIHsKICAgICBtX2Jsb2NrID0gbmV3
IChOb3ROdWxsLCBibG9ja1NwYWNlKSBNYXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAg
ICAgCkBAIC02NSw3ICs2Myw2IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBo
ZWFwLCAKICAgICAKICAgICBoZWFwLmRpZEFsbG9jYXRlQmxvY2soYmxvY2tTaXplKTsKICAgICBI
RUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIEFTU0VSVChhbGxvY2F0
b3IpOwogICAgIGlmIChtX2F0dHJpYnV0ZXMuY2VsbEtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24pOwogfQpAQCAtNzgsNiArNzUsNyBAQCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjp+SGFuZGxlKCkKICAgICAgICAgaWYgKCEoYmFsYW5jZSAlIDEwKSkKICAgICAgICAgICAg
IGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJhbGFuY2UsICJcbiIpOwogICAgIH0K
KyAgICByZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAgICAgbV9ibG9jay0+fk1hcmtlZEJsb2NrKCk7
CiAgICAgZmFzdEFsaWduZWRGcmVlKG1fYmxvY2spOwogICAgIGhlYXAuZGlkRnJlZUJsb2NrKGJs
b2NrU2l6ZSk7CkBAIC0xMDEsMjEgKzk5LDI1IEBAIE1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhW
TSYgdm0sIEhhbmRsZSYKICAgICBtX2JpYXNlZE1hcmtDb3VudCA9IG1fbWFya0NvdW50Qmlhczsg
Ly8gVGhpcyBtZWFucyB3ZSBoYXZlbid0IG1hcmtlZCBhbnl0aGluZyB5ZXQuCiB9CiAKLXRlbXBs
YXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUs
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+Cit0ZW1w
bGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rp
b25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2Rl
PgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcCgpCiB7Ci0g
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIEFTU0VS
VChibG9ja1N0YXRlID09IE5ldyB8fCBibG9ja1N0YXRlID09IE1hcmtlZCk7Ci0gICAgQVNTRVJU
KCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2Rl
ID09IFN3ZWVwT25seSkpOworICAgIHN0YXRpY19hc3NlcnQoIShkZXN0cnVjdGlvbk1vZGUgPT0g
RG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSwgIkl0IGRv
ZXNuJ3QgbWFrZSBzZW5zZSB0byBzd2VlcCBhIGJsb2NrIHdpdGggbm8gZGVzdHJ1Y3RvcnMgdW5s
ZXNzIGl0J3MgdG8gYnVpbGQgYSBmcmVlIGxpc3QuIik7CisgICAgc3RhdGljX2Fzc2VydCghKGRl
c3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGVtcHR5TW9kZSA9PSBJc0VtcHR5
KSwgIkEgYmxvY2sgZG9lc24ndCBxdWFsaWZ5IGFzIGVtcHR5IGlmIHRoZXJlIGFyZSBkZXN0cnVj
dG9ycyB0aGF0IHN0aWxsIG5lZWQgdG8gYmUgcnVuLiIpOwogICAgIAorICAgIFN1cGVyU2FtcGxl
clNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKwogICAgIGFzc2VydEZsaXBwZWQoKTsK
ICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOwogICAgIAotICAgIGJvb2wg
aXNOZXdCbG9jayA9IGJsb2NrU3RhdGUgPT0gTmV3OwotICAgIGJvb2wgaXNFbXB0eUJsb2NrID0g
IWJsb2NrLmhhc0FueU1hcmtlZCgpCi0gICAgICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBE
b2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkCi0gICAgICAgICYmIGRlc3RydWN0aW9uTW9kZSA9PSBE
b2VzTm90TmVlZERlc3RydWN0aW9uOwotICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2NhdG9y
KCkgJiYgKGlzTmV3QmxvY2sgfHwgaXNFbXB0eUJsb2NrKSkgeworICAgIGlmIChlbXB0eU1vZGUg
PT0gTm90RW1wdHkpCisgICAgICAgIG1fYWxsb2NhdG9yLT5zZXRJc1NuYXBzaG90KHRoaXMsIGZh
bHNlKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVCghbV9hbGxvY2F0b3ItPmlzU25hcHNob3Qo
dGhpcykpOworICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2NhdG9yKCkKKyAgICAg
ICAgJiYgZW1wdHlNb2RlID09IElzRW1wdHkKKyAgICAgICAgJiYgbmV3bHlBbGxvY2F0ZWRNb2Rl
ID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQpIHsKICAgICAgICAgQVNTRVJUKGJsb2NrLm1f
bWFya3MuaXNFbXB0eSgpKTsKICAgICAgICAgCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZMYXN0Q2Vs
bCA9IHN0YXRpY19jYXN0PGNoYXIqPihjZWxsQWxpZ24oYmxvY2suYXRvbXMoKSArIG1fZW5kQXRv
bSAtIDEpKTsKQEAgLTEyNCw3ICsxMjYsOCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpzcGVjaWFsaXplCiAgICAgICAgIGNoYXIqIHBheWxvYWRCZWdpbiA9IGJpdHdpc2VfY2FzdDxj
aGFyKj4oYmxvY2suYXRvbXMoKSArIGZpcnN0QXRvbSgpKTsKICAgICAgICAgaWYgKHNjcmliYmxl
TW9kZSA9PSBTY3JpYmJsZSkKICAgICAgICAgICAgIHNjcmliYmxlKHBheWxvYWRCZWdpbiwgcGF5
bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7Ci0gICAgICAgIG1fc3RhdGUgPSAoKHN3ZWVwTW9kZSA9
PSBTd2VlcFRvRnJlZUxpc3QpID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7CisgICAgICAgIGlmIChz
d2VlcE1vZGUgPT0gU3BlZWRUb0ZyZWVMaXN0KSB7CisgICAgICAgICAgICBzZXRJc0ZyZWVMaXN0
ZWQoKTsKICAgICAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6OmJ1bXAocGF5bG9hZEVu
ZCwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7CiAgICAgICAgIGlmIChmYWxzZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIlF1aWNrbHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcih0aGlzKSwg
IiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSgpLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0
cmlidXRlcywgIjogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTEzNywxNCArMTQwLDE0IEBAIEZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICBGcmVlQ2VsbCogaGVhZCA9
IDA7CiAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9t
KCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgaWYgKGJs
b2NrU3RhdGUgPT0gTWFya2VkCisgICAgICAgIGlmIChlbXB0eU1vZGUgPT0gTm90RW1wdHkKICAg
ICAgICAgICAgICYmIChibG9jay5tX21hcmtzLmdldChpKQogICAgICAgICAgICAgICAgIHx8IChu
ZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYgbV9uZXdseUFsbG9jYXRl
ZC0+Z2V0KGkpKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBIZWFwQ2VsbCog
Y2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmJsb2NrLmF0b21zKClbaV0p
OwogCi0gICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNEZXN0cnVjdGlvbiAmJiBi
bG9ja1N0YXRlICE9IE5ldykKKyAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rl
c3RydWN0aW9uICYmIGVtcHR5TW9kZSA9PSBOb3RFbXB0eSkKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PEpTQ2VsbCo+KGNlbGwpLT5jYWxsRGVzdHJ1Y3Rvcigqdm0oKSk7CiAKICAgICAgICAgaWYg
KHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKQEAgLTE2Myw3ICsxNjYsOCBAQCBGcmVl
TGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIG1fbmV3bHlBbGxv
Y2F0ZWQgPSBudWxscHRyOwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6Omxpc3Qo
aGVhZCwgY291bnQgKiBjZWxsU2l6ZSgpKTsKLSAgICBtX3N0YXRlID0gKHN3ZWVwTW9kZSA9PSBT
d2VlcFRvRnJlZUxpc3QgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICBpZiAoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CiAgICAgaWYg
KGZhbHNlKQogICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRl
cigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0
ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwogICAgIHJldHVybiByZXN1
bHQ7CkBAIC0xODAsNiArMTg0LDEzIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3
ZWVwKFN3ZWUKICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwT25seSAmJiBtX2F0dHJpYnV0ZXMu
ZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIEZy
ZWVMaXN0KCk7CiAKKyAgICBpZiAoVU5MSUtFTFkobV9pc0ZyZWVMaXN0ZWQpKSB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOworICAgICAgICBy
ZXR1cm4gRnJlZUxpc3QoKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKCFtX2FsbG9jYXRvci0+
aXNBbGxvY2F0ZWQodGhpcykpOworICAgIAogICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rp
b24gPT0gTmVlZHNEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0
U2NyaWJibGVNb2RlPE5lZWRzRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CiAgICAgcmV0dXJuIHN3
ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlPERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24+KHN3ZWVw
TW9kZSk7CkBAIC0xODksNDcgKzIwMCw0NCBAQCB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUgZGVz
dHJ1Y3Rpb25Nb2RlCiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNl
bGVjdFNjcmliYmxlTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAgIGlmIChzY3JpYmJs
ZUZyZWVDZWxscygpKQotICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3
ZWVwTW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOwotICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgRG9u
dFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RF
bXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1
cm4gc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJi
bGU+KHN3ZWVwTW9kZSk7CiB9CiAKIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlv
bk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+Ci1G
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dl
ZXBNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxl
Ojpzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAg
IHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgTmV3OgotICAgICAgICBBU1NFUlQoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVw
PE5ldywgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9l
c05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKTsKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAg
IC8vIEhhcHBlbnMgd2hlbiBhIGJsb2NrIHRyYW5zaXRpb25zIHRvIGZ1bGx5IGFsbG9jYXRlZC4K
LSAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICBy
ZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNlIEFsbG9jYXRlZDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7Ci0gICAgY2Fz
ZSBNYXJrZWQ6Ci0gICAgICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8gc3Bl
Y2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBz
Y3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAgICAgICAgOiBzcGVj
aWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxl
TW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8g
c3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2Rl
LCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAg
ICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgICAgICB9
Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZy
ZWVMaXN0KCk7CisgICAgaWYgKG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMpKQorICAgICAgICBy
ZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxJc0VtcHR5LCBkZXN0cnVj
dGlvbk1vZGUsIHNjcmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxw
ZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxOb3RFbXB0eSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3Jp
YmJsZU1vZGU+KHN3ZWVwTW9kZSk7Cit9CisKK3RlbXBsYXRlPEVtcHR5TW9kZSBlbXB0eU1vZGUs
IERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNj
cmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
d2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCit7
CisgICAgaWYgKG1faGFzTmV3bHlBbGxvY2F0ZWQpCisgICAgICAgIHJldHVybiBzd2VlcEhlbHBl
clNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2Rl
LCBIYXNOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJT
ZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwg
RG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8RW1w
dHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTmV3bHlBbGxvYXRlZE1v
ZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAo
c3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVk
U3dlZXA8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dl
ZXA8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBu
ZXdseUFsbG9jYXRlZE1vZGU+KCk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6dW5z
d2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAg
ICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAotICAg
IFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0gICAgbV9zdGF0ZSA9IE1h
cmtlZDsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lzRnJlZUxpc3RlZCk7CisgICAgbV9pc0ZyZWVM
aXN0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzZXRJc0ZyZWVM
aXN0ZWQoKQoreworICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIGZhbHNlKTsKKyAg
ICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOwogfQogCiBjbGFzcyBTZXROZXdseUFsbG9jYXRlZEZ1
bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKQEAgLTI1MywyNSArMjYx
LDE2IEBAIHByaXZhdGU6CiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5n
KGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKIHsKICAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAg
ICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOworICAgIAorICAgIEFTU0VS
VCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAgIGlmIChtX3N0YXRlID09
IE1hcmtlZCkgewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4gdGhlIE1hcmtlZCBzdGF0
ZSB0aGVuIHdlIGtub3cgdGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAgLy8gY29uZGl0aW9ucyBo
b2xkczoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90IHVzZWQgZm9yIGFsbG9j
YXRpb24gZHVyaW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xlLgotICAgICAgICAvLyAg
IEl0IG1heSBoYXZlIGRlYWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25vdyB0aGVtIHRvIGJlIGRl
YWQgYnkgdGhlCi0gICAgICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1hcmsgYml0cyBhcmUgdW5z
ZXQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0
b3BBbGxvY2F0aW5nKCksIGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAgICAgICAgLy8gICBoZWFw
IGl0ZXJhdGlvbiwgYW5kIHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAgIC8vIEhlbmNlIGlmIHRo
ZSBibG9jayBpcyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJrZWQuCisgICAgaWYgKCFp
c0ZyZWVMaXN0ZWQoKSkgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgZWl0aGVyIGRp
ZG4ndCB1c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24gc2luY2UgbGFzdCBHQywK
KyAgICAgICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCkg
YmVmb3JlLgogICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVM
aXN0ZWQpOwotICAgIAogICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVyZW50IHN0YXRlIGZvciBI
ZWFwIGludHJvc3BlY3Rpb24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxsb2NhdGVkIGZyb20gb3Vy
IGZyZWUgbGlzdCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQgYW5vdGhlcgog
ICAgIC8vIHdheSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApAQCAtMjkwLDcgKzI4OSw3
IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAgICAgICAg
IGNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAgICAgIH0pOwogICAgIAotICAgIG1fc3Rh
dGUgPSBNYXJrZWQ7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCkBAIC0zMDUsMTMgKzMwNCwx
MiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpCiBGcmVlTGlzdCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKICAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwogCi0g
ICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKKyAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5p
c0FsbG9jYXRlZCh0aGlzKSk7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAKICAgICBp
ZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgLy8gV2UgZGlkbid0IGhhdmUgdG8gY3Jl
YXRlIGEgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwLiBUaGF0IG1lYW5zIHdlIHdlcmUgYWxyZWFk
eSBNYXJrZWQKLSAgICAgICAgLy8gd2hlbiB3ZSBsYXN0IHN0b3BwZWQgYWxsb2NhdGlvbiwgc28g
cmV0dXJuIGFuIGVtcHR5IGZyZWUgbGlzdCBhbmQgc3RheSBpbiB0aGUgTWFya2VkIHN0YXRlLgor
ICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgYmxvY2sg
d2hlbiB3ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwog
ICAgIH0KIApAQCAtMzY2LDE3ICszNjQsMTcgQEAgdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVj
ZXNzYXJ5RHVyaW5nTQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNN
YXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgaWYgKG5lZWRz
RmxpcCgpKQorICAgIGlmIChuZWVkc0ZsaXAoKSkgewogICAgICAgICBjbGVhck1hcmtzKCk7Cisg
ICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2Jq
ZWN0IGluIHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNT
ZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgfQogfQog
CiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKICAgICBtX21hcmtzLmNsZWFyQWxs
KCk7CiAgICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICAvLyBUaGlzIHdpbGwgYmVjb21lIHRy
dWUgYXQgdGhlIGVuZCBvZiB0aGUgbWFyayBwaGFzZS4gV2Ugc2V0IGl0IG5vdyB0bwotICAgIC8v
IGF2b2lkIGFuIGV4dHJhIHBhc3MgdG8gZG8gc28gbGF0ZXIuCi0gICAgaGFuZGxlKCkubV9zdGF0
ZSA9IE1hcmtlZDsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIG1fdmVyc2lvbiA9
IHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CiB9CkBAIC0zOTgsMTEgKzM5Niw2
IEBAIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkKICAgICByZXR1cm4gbV9i
bG9jay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6d2lsbFJl
bW92ZUJsb2NrKCkKLXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLX0KLQogdm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QoKQogewogICAgIGZsaXBJZk5lY2Vzc2Fy
eSgpOwpAQCAtNDMyLDMzICs0MjUsMzggQEAgdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJIYXNBbnlN
YXJrZWQoKQogCiB2b2lkIE1hcmtlZEJsb2NrOjpub3RlTWFya2VkU2xvdygpCiB7Ci0gICAgaGFu
ZGxlKCkubV9hbGxvY2F0b3ItPnJldGlyZSgmaGFuZGxlKCkpOworICAgIGhhbmRsZSgpLmFsbG9j
YXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ1JldGlyZWQoJmhhbmRsZSgpLCB0cnVl
KTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewordm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpyZW1vdmVGcm9tQWxsb2NhdG9yKCkKK3sKKyAgICBpZiAoIW1fYWxs
b2NhdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9hbGxvY2F0b3ItPnJlbW92ZUJs
b2NrKHRoaXMpOworfQogCi11c2luZyBuYW1lc3BhY2UgSlNDOwordm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6
ZV90IGluZGV4KQoreworICAgIEFTU0VSVChtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVCghbV9hbGxvY2F0b3IpOworICAgIAorICAgIG1f
aW5kZXggPSBpbmRleDsKKyAgICBtX2FsbG9jYXRvciA9IGFsbG9jYXRvcjsKK30KIAotdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJs
b2NrU3RhdGUpCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZyb21BbGxvY2F0
b3IoKQogewotICAgIHN3aXRjaCAoYmxvY2tTdGF0ZSkgewotICAgIGNhc2UgTWFya2VkQmxvY2s6
Ok5ldzoKLSAgICAgICAgb3V0LnByaW50KCJOZXciKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgTWFya2VkQmxvY2s6OkZyZWVMaXN0ZWQ6Ci0gICAgICAgIG91dC5wcmludCgiRnJlZUxpc3Rl
ZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6QWxsb2NhdGVkOgot
ICAgICAgICBvdXQucHJpbnQoIkFsbG9jYXRlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBNYXJrZWRCbG9jazo6TWFya2VkOgotICAgICAgICBvdXQucHJpbnQoIk1hcmtlZCIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgCisgICAgQVNTRVJUKG1faW5kZXggIT0gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsK
KyAgICAKKyAgICBtX2luZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsK
KyAgICBtX2FsbG9jYXRvciA9IG51bGxwdHI7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEpTQworCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwyMCArNDQsNiBAQCBjbGFzcyBN
YXJrZWRBbGxvY2F0b3I7CiB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogdHlwZWRlZiB1aW50MzJf
dCBIZWFwVmVyc2lvbjsKIAotLy8gU2V0IHRvIGxvZyBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBibG9j
a3MuCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05TIDAKLQotI2lmIEhF
QVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05TCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NU
QVRFX1RSQU5TSVRJT04oaGFuZGxlKSBkbyB7ICAgICAgICAgICAgXAotICAgICAgICBkYXRhTG9n
RiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgICAgICIlczolZCAlczogYmxvY2sgJXMgPSAlcCwgJWRcbiIsICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXywgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICAgICAgI2hhbmRsZSwgJihoYW5kbGUpLT5ibG9jaygpLCAo
aGFuZGxlKS0+bV9zdGF0ZSk7ICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLSNlbHNlCi0jZGVm
aW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oaGFuZGxlKSAoKHZvaWQpMCkKLSNl
bmRpZgotCiAvLyBBIG1hcmtlZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25lZCBjb250YWluZXIgZm9y
IGhlYXAtYWxsb2NhdGVkIG9iamVjdHMuCiAvLyBPYmplY3RzIGFyZSBhbGxvY2F0ZWQgd2l0aGlu
IGNlbGxzIG9mIHRoZSBtYXJrZWQgYmxvY2suIEZvciBhIGdpdmVuCiAvLyBtYXJrZWQgYmxvY2ss
IGFsbCBjZWxscyBoYXZlIHRoZSBzYW1lIHNpemUuIE9iamVjdHMgc21hbGxlciB0aGFuIHRoZQpA
QCAtNzYsOCArNjIsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIYW5k
bGU7CiBwdWJsaWM6Ci0gICAgZW51bSBCbG9ja1N0YXRlIDogdWludDhfdCB7IE5ldywgRnJlZUxp
c3RlZCwgQWxsb2NhdGVkLCBNYXJrZWQgfTsKLSAgICAgICAgCiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBhdG9tU2l6ZSA9IDE2OyAvLyBieXRlcwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxv
Y2tTaXplID0gMTYgKiBLQjsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrTWFzayA9IH4o
YmxvY2tTaXplIC0gMSk7IC8vIGJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgpAQCAt
MTMwLDYgKzExNCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFZNKiB2bSgpIGNvbnN0OwogICAgICAg
ICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAgICAgICAgICAgICAKKyAgICAgICAgLy8gU3dlZXBpbmcg
ZW5zdXJlcyB0aGF0IGRlc3RydWN0b3JzIGdldCBjYWxsZWQgYW5kIHJlbW92ZXMgdGhlIGJsb2Nr
IGZyb20gdGhlIHNuYXBzaG90LgorICAgICAgICAvLyBTd2VlcGluZyB0byBmcmVlIGxpc3QgYWxz
byByZW1vdmVzIHRoZSBibG9jayBmcm9tIHRoZSBlbXB0eSBzZXQsIGlmIGl0IHdhcyBpbiB0aGF0
IHNldC4KKyAgICAgICAgLy8gTm90ZSB0aGF0IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRo
ZSBlbXB0eSBiaXQgcmVmbGVjdHMgcmVhbGl0eS4gSWYgaXQncyBub3Qgc2V0CisgICAgICAgIC8v
IGFuZCB0aGUgYmxvY2sgaXMgZnJlc2hseSBjcmVhdGVkLCB0aGVuIHdlJ2xsIG1ha2UgdGhlIG1p
c3Rha2Ugb2YgcnVubmluZyBkZXN0cnVjdG9ycyBpbgorICAgICAgICAvLyB0aGUgYmxvY2suIElm
IGl0J3Mgbm90IHNldCBhbmQgdGhlIGJsb2NrIGhhcyBub3RoaW5nIG1hcmtlZCwgdGhlbiB3ZSds
bCBtYWtlIHRoZQorICAgICAgICAvLyBtaXN0YWtlIG9mIG1ha2luZyBhIHBvcCBmcmVlbGlzdCBy
YXRoZXIgdGhhbiBhIGJ1bXAgZnJlZWxpc3QuCiAgICAgICAgIGVudW0gU3dlZXBNb2RlIHsgU3dl
ZXBPbmx5LCBTd2VlcFRvRnJlZUxpc3QgfTsKICAgICAgICAgRnJlZUxpc3Qgc3dlZXAoU3dlZXBN
b2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgCkBAIC0xNzQsMTEgKzE2NCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgCiAgICAgICAgIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSBjb25zdCB7IHJl
dHVybiAhIW1fbmV3bHlBbGxvY2F0ZWQ7IH0KICAgICAgICAgICAgIAotICAgICAgICBib29sIGlz
QWxsb2NhdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKLSAgICAg
ICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdDsKICAgICAgICAgYm9vbCBuZWVkc1N3ZWVwaW5n
KCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgd2lsbFJlbW92ZUJsb2NrKCk7CiAKICAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoQ2VsbChjb25z
dCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRp
b25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKQEAgLTE5NSw4ICsxODEs
MTUgQEAgcHVibGljOgogICAgICAgICBib29sIGlzT25CbG9ja3NUb1N3ZWVwKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc09uQmxvY2tzVG9Td2VlcDsgfQogICAgICAgICB2b2lkIHNldElzT25CbG9ja3NU
b1N3ZWVwKGJvb2wgdmFsdWUpIHsgbV9pc09uQmxvY2tzVG9Td2VlcCA9IHZhbHVlOyB9CiAgICAg
ICAgIAotICAgICAgICBCbG9ja1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsg
fQotICAgICAgICAgICAgCisgICAgICAgIGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ZyZWVMaXN0ZWQ7IH0KKyAgICAgICAgCisgICAgICAgIHNpemVfdCBpbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVtb3ZlRnJv
bUFsbG9jYXRvcigpOworICAgICAgICAKKyAgICAgICAgdm9pZCBkaWRBZGRUb0FsbG9jYXRvcihN
YXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgaW5kZXgpOworICAgICAgICB2b2lkIGRpZFJlbW92ZUZy
b21BbGxvY2F0b3IoKTsKKyAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGFuZGxlKEhl
YXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0
dHJpYnV0ZXMmLCB2b2lkKik7CiAgICAgICAgICAgICAKQEAgLTIwNiwxNiArMTk5LDI2IEBAIHB1
YmxpYzoKICAgICAgICAgZW51bSBTY3JpYmJsZU1vZGUgeyBEb250U2NyaWJibGUsIFNjcmliYmxl
IH07CiAgICAgICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlLCBTY3Jp
YmJsZU1vZGU+Ci0gICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2Vl
cE1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxw
ZXJTZWxlY3RFbXB0eU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgICAgIAor
ICAgICAgICBlbnVtIEVtcHR5TW9kZSB7IElzRW1wdHksIE5vdEVtcHR5IH07CisgICAgICAgIAor
ICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2Rl
PgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3
ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAogICAgICAgICBlbnVtIE5ld2x5QWxsb2Nh
dGVkTW9kZSB7IEhhc05ld2x5QWxsb2NhdGVkLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkIH07
Ci0gICAgICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBE
ZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAg
ICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxl
TW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNl
bGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICAKKyAgICAgICAg
dGVtcGxhdGU8RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVN
b2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHNwZWNpYWxpemVkU3dl
ZXAoKTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAg
ICAgICB2b2lkIGZvckVhY2hGcmVlQ2VsbChjb25zdCBGcmVlTGlzdCYsIGNvbnN0IEZ1bmMmKTsK
LSAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0ZyZWVMaXN0ZWQoKTsK
KyAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fcHJldjsKICAgICAgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0OwogICAgICAgICAgICAgCkBAIC0yMjUsMTYgKzIy
OCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6OkJpdG1hcDxhdG9t
c1BlckJsb2NrPj4gbV9uZXdseUFsbG9jYXRlZDsKICAgICAgICAgICAgIAogICAgICAgICBBbGxv
Y2F0b3JBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKLSAgICAgICAgQmxvY2tTdGF0ZSBtX3N0YXRl
OwotICAgICAgICBib29sIG1faXNPbkJsb2Nrc1RvU3dlZXAgeyBmYWxzZSB9OworICAgICAgICBi
b29sIG1faXNGcmVlTGlzdGVkIHsgZmFsc2UgfTsKICAgICAgICAgICAgIAotICAgICAgICBNYXJr
ZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxs
b2NhdG9yIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CiAg
ICAgICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2s7CiAgICAgfTsKICAgICAg
ICAgCi0gICAgc3RhdGljIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgTWFy
a2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVz
Jik7CisgICAgc3RhdGljIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgc2l6
ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7CiAgICAgICAgIAogICAg
IEhhbmRsZSYgaGFuZGxlKCk7CiAgICAgICAgIApAQCAtMjc1LDcgKzI3OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAgCiAgICAgYm9vbCBuZWVkc0Rlc3Ry
dWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9Ci0gICAgICAgIAor
ICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNr
ID0gYXRvbVNpemUgLSAxOwogCkBAIC00OTQsNiArNDk3LDggQEAgaW5saW5lIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZmxpcElmTgogCiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpmbGlwRm9yRWRlbkNvbGxlY3Rpb24oKQogeworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRv
IGRpZSEKKyAgICAKICAgICBhc3NlcnRGbGlwcGVkKCk7CiAgICAgICAgIAogICAgIEhFQVBfTE9H
X0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CkBAIC01NzIsMjEgKzU3NywxMiBAQCBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5CiBpbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7CiAgICAgYXNzZXJ0
RmxpcHBlZCgpOwotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgQWxsb2NhdGVkOgot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNhc2UgTWFya2VkOgotICAgICAgICByZXR1cm4g
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOworICAgIEFTU0VSVCghaXNGcmVlTGlzdGVk
KCkpOwogCi0gICAgY2FzZSBOZXc6Ci0gICAgY2FzZSBGcmVlTGlzdGVkOgotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKGFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgCisgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKIH0K
IAogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQpAQCAtNjU2
LDI4ICs2NTIsMTEgQEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZAog
CiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc1N3ZWVwaW5nKCkgY29uc3QK
IHsKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBkaWUuCiAgICAgY29uc3RfY2FzdDxNYXJr
ZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwogICAgIHJldHVybiBt
X3N0YXRlID09IE1hcmtlZDsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6
aXNBbGxvY2F0ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRs
ZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBBbGxv
Y2F0ZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkKCkg
Y29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+Zmxp
cElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwotfQotCi1pbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0ZWQoKSBjb25zdAotewotICAg
IGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3Nhcnko
KTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBGcmVlTGlzdGVkOwotfQotCiBpbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6aGFzQW55TWFya2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iaWFzZWRN
YXJrQ291bnQgIT0gbV9tYXJrQ291bnRCaWFzOwpAQCAtNzExLDggKzY5MCw2IEBAIHRlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6TWFya2UKICAgICB0eXBlZGVmIE1hcmtlZEJsb2Nr
SGFzaCBIYXNoOwogfTsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpT
Qzo6TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUpOwotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2Vu
ZGlmIC8vIE1hcmtlZEJsb2NrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSwxOSBA
QCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOwor
ICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogcHJldmlvdXMgPSBudWxscHRyOworICAgIGZvckVh
Y2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+
IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBpZiAocHJldmlvdXMpIHsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBjYW4gc2V0IHRoaXMgaW4gYW55IG9yZGVyLiBUaGUgcG9pbnQgaXMganVz
dCB0aGF0IHdlIHdhbnQgdG8gYmUgYWJsZSB0bworICAgICAgICAgICAgICAgIC8vIGN1cnNvciBv
dmVyIGFsbG9jYXRvcnMuCisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNldE5leHRBbGxvY2F0
b3IocHJldmlvdXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldmlvdXMgPSAmYWxs
b2NhdG9yOworICAgICAgICB9KTsKKyAgICBtX2ZpcnN0QWxsb2NhdG9yID0gcHJldmlvdXM7Cisg
ICAgbV9uZXh0QWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gcHJldmlvdXM7CiB9CiAKIE1h
cmtlZFNwYWNlOjp+TWFya2VkU3BhY2UoKQpAQCAtMjk0LDE2ICszMDcsMTYgQEAgdm9pZCBNYXJr
ZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWFya2VkU3Bh
Y2U6OnJlc2V0QWxsb2NhdG9ycygpCit2b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbigpCiB7CiAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgWyZdIChNYXJrZWRBbGxv
Y2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKLSAgICAgICAgICAgIGFsbG9j
YXRvci5yZXNldCgpOworICAgICAgICAgICAgYWxsb2NhdG9yLnByZXBhcmVGb3JBbGxvY2F0aW9u
KCk7CiAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAg
ICAgfSk7CiAKLSAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLmNsZWFyKCk7CiAgICAgbV9hY3Rp
dmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0FjdGl2ZVdlYWtTZXRzKTsKKyAgICAKICAgICBpZiAo
bV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pCiAgICAgICAg
IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IG1fbGFyZ2VBbGxvY2F0
aW9uc051cnNlcnlPZmZzZXQ7CiAgICAgZWxzZQpAQCAtNDI3LDM5ICs0NDAsMjYgQEAgdm9pZCBN
YXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxs
b2NhdGlvbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xl
YXJOZXdseUFsbG9jYXRlZCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGZvckVhY2hC
bG9jaygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAg
ICAgICAgQVNTRVJUKCFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgfSk7
Ci0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0
aW9ucykKLSAgICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwot
I2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKLX0KLQotI2lmbmRlZiBOREVCVUcgCi1zdHJ1Y3Qg
VmVyaWZ5TWFya2VkIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsgCi0gICAgdm9pZCBvcGVy
YXRvcigpKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3dp
dGNoIChibG9jay0+bV9zdGF0ZSkgewotICAgICAgICBjYXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9CisgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jaykgeworICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmNs
ZWFyTmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAg
IGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQor
ICAgICAgICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwogICAg
IH0KLX07IAotI2VuZGlmIAorfQogCi12b2lkIE1hcmtlZFNwYWNlOjpmbGlwKCkKK3ZvaWQgTWFy
a2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Q
cm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNpemUoKTsgKytpKQotICAgICAgICAgICAg
bV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+ZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAg
fSBlbHNlIHsKKyAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENv
bGxlY3Rpb24pIHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAo
TWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAg
ICAgICAgICAgYWxsb2NhdG9yLmZsaXBGb3JGdWxsQ29sbGVjdGlvbigpOworICAgICAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgfSk7CisK
ICAgICAgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24gPSBtX3ZlcnNpb24gKyAxOwogICAgICAg
ICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24gPT0gaW5pdGlhbFZlcnNpb24pKSB7CiAgICAgICAg
ICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgZmxp
cHBpbmcgYWxsIGJsb2Nrcy4gVGhpcyBoYXBwZW5zCkBAIC00NzQsMTAgKzQ3NCwyNyBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpmbGlwKCkKICAgICAgICAgICAgIGFsbG9jYXRpb24tPmZsaXAoKTsKICAg
ICB9CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgVmVyaWZ5TWFya2VkIHZlcmlmeUZ1bmN0b3I7Ci0g
ICAgZm9yRWFjaEJsb2NrKHZlcmlmeUZ1bmN0b3IpOwotI2VuZGlmCisgICAgaWYgKCFBU1NFUlRf
RElTQUJMRUQpIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJr
ZWRCbG9jazo6aGFuZGxlKiBibG9jaykgeworICAgICAgICAgICAgICAgIGlmIChibG9jay0+bmVl
ZHNGbGlwKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIWJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9Cisg
ICAgCisgICAgbV9pc01hcmtpbmcgPSB0cnVlOworfQorCit2b2lkIE1hcmtlZFNwYWNlOjplbmRN
YXJraW5nKCkKK3sKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFs
bG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxs
b2NhdG9yLmVuZE1hcmtpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOworICAgICAgICB9KTsKKyAgICAKKyAgICBtX2lzTWFya2luZyA9IGZhbHNlOwog
fQogCiB2b2lkIE1hcmtlZFNwYWNlOjp3aWxsU3RhcnRJdGVyYXRpbmcoKQpAQCAtNTUzLDQgKzU3
MCwzMCBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFyCiAgICAgfQog
fQogCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2soKQor
eworICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbjsgbV9hbGxvY2F0b3JG
b3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+bmV4dEFs
bG9jYXRvcigpKSB7CisgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1f
YWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5maW5kRW1wdHlCbG9jaygpKQorICAgICAgICAg
ICAgcmV0dXJuIGJsb2NrOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBN
YXJrZWRTcGFjZTo6c25hcHNob3QoKQoreworICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJv
Z3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAor
ICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9u
U3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RGb3JFZGVuQ29sbGVj
dGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OworICAgICAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRv
cigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJh
dGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90Rm9yRnVsbENv
bGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250
aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDIw
NTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgU3Vic3BhY2UmIHN1YnNw
YWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9ub3JtYWxTcGFjZTsg
fQogICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvckF1eGlsaWFyeURhdGEoKSB7IHJldHVybiBtX2F1
eGlsaWFyeVNwYWNlOyB9CiAgICAgCi0gICAgdm9pZCByZXNldEFsbG9jYXRvcnMoKTsKKyAgICB2
b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAKICAgICB2b2lkIHZpc2l0V2Vha1NldHMoSGVh
cFJvb3RWaXNpdG9yJik7CiAgICAgdm9pZCByZWFwV2Vha1NldHMoKTsKQEAgLTE0NCw3ICsxNDQs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFya2VkQmxvY2s6Okhh
bmRsZSopOwogICAgIHZvaWQgZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUq
KTsKIAotICAgIHZvaWQgZmxpcCgpOworICAgIHZvaWQgYmVnaW5NYXJraW5nKCk7CisgICAgdm9p
ZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdCgpOwogICAgIHZvaWQgY2xlYXJOZXds
eUFsbG9jYXRlZCgpOwogICAgIHZvaWQgc3dlZXAoKTsKICAgICB2b2lkIHN3ZWVwTGFyZ2VBbGxv
Y2F0aW9ucygpOwpAQCAtMTY5LDEzICsxNzEsMTQgQEAgcHVibGljOgogICAgIExhcmdlQWxsb2Nh
dGlvbioqIGxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kOyB9CiAgICAgdW5zaWdu
ZWQgbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZTsgfQogICAgIAorICAgIE1h
cmtlZEFsbG9jYXRvciogZmlyc3RBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0QWxs
b2NhdG9yOyB9CisgICAgTWFya2VkQWxsb2NhdG9yKiBuZXh0QWxsb2NhdG9yRm9yRW1wdHlBbGxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0QWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9u
OyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5QmxvY2soKTsKKyAg
ICAKICAgICAvLyBXaGVuIHRoaXMgaXMgdHJ1ZSBpdCBtZWFucyB0aGF0IHdlIGhhdmUgZmxpcHBl
ZCBidXQgdGhlIG1hcmsgYml0cyBoYXZlbid0IGNvbnZlcmdlZCB5ZXQuCiAgICAgYm9vbCBpc01h
cmtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzTWFya2luZzsgfQogICAgIAotICAgIC8vIEZJWE1F
OiBBZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxLCBN
YXJrZWRTcGFjZSB3aWxsIGNvbnRyb2wgdGhpcwotICAgIC8vIGZsYWcgZGlyZWN0bHkuCi0gICAg
dm9pZCBzZXRJc01hcmtpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzTWFya2luZyA9IHZhbHVlOyB9Ci0K
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBm
cmllbmQgY2xhc3MgSklUOwpAQCAtMjA1LDcgKzIwOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9OwogICAgIE1hcmtl
ZEJsb2NrU2V0IG1fYmxvY2tzOwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9i
bG9ja3NXaXRoTmV3T2JqZWN0czsKICAgICBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4gbV9sYXJn
ZUFsbG9jYXRpb25zOwogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZz
ZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0Nv
bGxlY3Rpb24geyAwIH07CkBAIC0yMTUsNiArMjE3LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUgeyAwIH07CiAgICAgU2Vu
dGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBt
X2FjdGl2ZVdlYWtTZXRzOwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jh
d1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9uZXdBY3RpdmVXZWFrU2V0czsKKyAgICAKKyAgICBN
YXJrZWRBbGxvY2F0b3IqIG1fZmlyc3RBbGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgTWFya2Vk
QWxsb2NhdG9yKiBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiB7IG51bGxwdHIgfTsKIH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpm
b3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjA1ODU5KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCQkwRjQ1NzA0MzFCRTVCNThGMDA2MkE2
MjkgLyogRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NTcwNDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLzsgfTsK
IAkJMEY0NTcwNDUxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQ0MUJFODM0NDEwMDYyQTYy
OSAvKiBCdWJibGVTb3J0LmggKi87IH07CiAJCTBGNzI1Q0FDMUM1MDQ2MTYwMEFEOTQzQSAvKiBS
YW5nZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggKi87IH07CisJCTBGN0M1RkI2
MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBG
YXN0Qml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEY4MjRBNjgxQjc0NDNBMDAwMkUzNDVEIC8qIFBh
cmtpbmdMb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY4MjRBNjQxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwICovOyB9OwogCQkw
RjgyNEE2OTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8q
IFBhcmtpbmdMb3QuaCAqLzsgfTsKIAkJMEY4NzEwNUExNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1Bv
aW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
ODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi87IH07CkBAIC0zNjYsNiAr
MzY3LDcgQEAKIAkJMEY0NTcwNDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWJibGVTb3J0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZVNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJp
dFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGYXN0Qml0
VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjQxQjc0NDNB
MDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGFya2luZ0xvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
ODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBhcmtpbmdMb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY4NzEwNTkxNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmF3UG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODgwLDYgKzg4Miw3IEBACiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZGIC8q
IGR0b2EuaCAqLywKIAkJCQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5o
ICovLAogCQkJCUE4QTQ3MjlGMTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywK
KwkJCQkwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8sCiAJ
CQkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLywKIAkJCQlB
OEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcy
QTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKQEAgLTE1OTQsNiArMTU5Nyw3
IEBACiAJCQkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNDE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVy
T2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIg
LyogRmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNzE1MUE4MjVC
MDA0MTIzRkYgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0MDIxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3
IEBAIHNldChXVEZfU09VUkNFUwogICAgIERhdGFMb2cuY3BwCiAgICAgRGF0ZU1hdGguY3BwCiAg
ICAgRGVjaW1hbE51bWJlci5jcHAKKyAgICBGYXN0Qml0VmVjdG9yLmNwcAogICAgIEZhc3RNYWxs
b2MuY3BwCiAgICAgRmlsZVByaW50U3RyZWFtLmNwcAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5j
cHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZhc3RCaXRWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdU
RiB7CisKK0Zhc3RCaXRWZWN0b3JXb3JkT3duZXImIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6Om9w
ZXJhdG9yPShjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcikKK3sKKyAgICBzaXpl
X3QgbGVuZ3RoID0gb3RoZXIuYXJyYXlMZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoID09IGFycmF5
TGVuZ3RoKCkpIHsKKyAgICAgICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1fd29yZHMsIGxlbmd0
aCAqIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAg
IHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhs
ZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG90aGVyLm1f
d29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRzKQorICAg
ICAgICBmYXN0RnJlZShtX3dvcmRzKTsKKyAgICBtX3dvcmRzID0gbmV3QXJyYXk7CisgICAgbV9u
dW1CaXRzID0gb3RoZXIubV9udW1CaXRzOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBG
YXN0Qml0VmVjdG9yV29yZE93bmVyOjpyZXNpemUoc2l6ZV90IG51bUJpdHMpCit7CisgICAgc2l6
ZV90IG9sZExlbmd0aCA9IGFycmF5TGVuZ3RoKCk7CisgICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZh
c3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsKKyAgICAKKyAgICBpZiAobmV3TGVuZ3Ro
ICE9IG9sZExlbmd0aCkgeworICAgICAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZh
c3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KKyAgICAgICAgLy8gdXNlIGNh
c2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0aGUgYml0
dmVjdG9yLgorICAgICAgICAKKyAgICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nh
c3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwor
ICAgICAgICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2Yo
dWludDMyX3QpKTsKKyAgICAgICAgaWYgKG1fd29yZHMpCisgICAgICAgICAgICBmYXN0RnJlZSht
X3dvcmRzKTsKKyAgICAgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAgIH0KKyAgICAKKyAgICBt
X251bUJpdHMgPSBudW1CaXRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0Zhc3RCaXRWZWN0b3IuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL1dURi93dGYvRmFz
dEJpdFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC04OSwyMSArOTAsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgRmFzdEJpdFZlY3RvcldvcmRWaWV3IHZpZXcoKSBjb25zdCB7IHJldHVybiBGYXN0
Qml0VmVjdG9yV29yZFZpZXcobV93b3JkcywgbV9udW1CaXRzKTsgfQogICAgIAotICAgIEZhc3RC
aXRWZWN0b3JXb3JkT3duZXImIG9wZXJhdG9yPShjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVy
JiBvdGhlcikKLSAgICB7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBvdGhlci5hcnJheUxlbmd0
aCgpOwotICAgICAgICBpZiAobGVuZ3RoID09IGFycmF5TGVuZ3RoKCkpIHsKLSAgICAgICAgICAg
IG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBsZW5ndGggKiBzaXplb2YodWludDMyX3Qp
KTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotICAgICAgICB1aW50MzJf
dCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobGVuZ3RoLCBz
aXplb2YodWludDMyX3QpKSk7Ci0gICAgICAgIG1lbWNweShuZXdBcnJheSwgb3RoZXIubV93b3Jk
cywgbGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAg
ICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsK
LSAgICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBGYXN0Qml0VmVjdG9yV29yZE93bmVy
JiBvcGVyYXRvcj0oY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpOwogICAgIAog
ICAgIEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG9wZXJhdG9yPShGYXN0Qml0VmVjdG9yV29yZE93
bmVyJiYgb3RoZXIpCiAgICAgewpAQCAtMTM4LDIyICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cygpKTsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCByZXNpemUoc2l6ZV90IG51bUJpdHMpCi0gICAgewotICAgICAgICBpZiAobnVt
Qml0cyA9PSBtX251bUJpdHMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAg
ICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhw
ZWN0IHRoZSBjb21tb24KLSAgICAgICAgLy8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJl
IGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0aGUgYml0dmVjdG9yLgotICAgICAgICAKLSAgICAg
ICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsK
LSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0
Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwotICAgICAgICBtZW1jcHkobmV3
QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAg
ICAgaWYgKG1fd29yZHMpCi0gICAgICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAg
bV93b3JkcyA9IG5ld0FycmF5OwotICAgICAgICBtX251bUJpdHMgPSBudW1CaXRzOwotICAgIH0K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNpemUoc2l6ZV90IG51bUJpdHMpOwogICAg
IAogICAgIHVpbnQzMl90IHdvcmQoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHsKQEAgLTMyMCw2
ICsyOTIsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAK
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgaW5k
ZXggPSBhcnJheUxlbmd0aCgpOyBpbmRleC0tOykgeworICAgICAgICAgICAgaWYgKG1fd29yZHMu
d29yZChpbmRleCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
dGhlcldvcmRzPgogICAgIEZhc3RCaXRWZWN0b3JJbXBsPEZhc3RCaXRWZWN0b3JBbmRXb3Jkczx0
eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUsIHR5cGVuYW1lIE90aGVyV29yZHM6OlZpZXdUeXBlPj4g
b3BlcmF0b3ImKGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikgY29u
c3QKICAgICB7CkBAIC00NzEsNiArNDUyLDcgQEAgcHVibGljOgogICAgICAgICBtX3dvcmRzLmNs
ZWFyQWxsKCk7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBv
ZiB0aGlzIGJpdHZlY3RvciBjaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29y
ZHM+CiAgICAgYm9vbCBzZXRBbmRDaGVjayhjb25zdCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldv
cmRzPiYgb3RoZXIpCiAgICAgewpAQCAtNTUwLDYgKzUzMiwyOCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwogICAgIH0KKyAgICAKKyAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGNvbnRlbnRzIGNoYW5nZWQuCisgICAgQUxXQVlTX0lOTElORSBib29sIGF0b21p
Y1NldEFuZENoZWNrKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHVp
bnQzMl90KiBwb2ludGVyID0gJm1fd29yZHMud29yZChpbmRleCA+PiA1KTsKKyAgICAgICAgdWlu
dDMyX3QgbWFzayA9IDEgPDwgKGluZGV4ICYgMzEpOworICAgICAgICBmb3IgKDs7KSB7CisgICAg
ICAgICAgICB1aW50MzJfdCBvbGRWYWx1ZSA9ICpwb2ludGVyOworICAgICAgICAgICAgdWludDMy
X3QgbmV3VmFsdWU7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBp
ZiAob2xkVmFsdWUgJiBtYXNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSB8IG1hc2s7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghKG9sZFZhbHVlICYgbWFzaykpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9s
ZFZhbHVlICYgfm1hc2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAod2Vha0NvbXBh
cmVBbmRTd2FwKHBvaW50ZXIsIG9sZFZhbHVlLCBuZXdWYWx1ZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288702</attachid>
            <date>2016-09-13 11:12:10 -0700</date>
            <delta_ts>2016-09-13 12:22:51 -0700</delta_ts>
            <desc>holy cow it might be done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>62222</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTI2LDExICs1MjYsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgfQogICAgIAog
ICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAi
bV9vYmplY3RTcGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZmxpcCgp
OworICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29i
amVjdFNwYWNlLmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFy
a2luZygpOwogICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyh0cnVl
KTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCkBAIC03Nzks
NyArNzc3LDcgQEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAgICBBU1NFUlQobV9zaGFyZWRN
YXJrU3RhY2suaXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLnJlbW92
ZUFsbCgpOwogICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKGZhbHNlKTsKKyAg
ICBtX29iamVjdFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVjdENv
dW50KCkKQEAgLTkzOSw3ICs5MzcsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkK
ICAgICAgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNwYWNlLnNo
cmluaygpOwogICAgIH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBzaG90LmlzRW1wdHkoKSk7Cisg
ICAgbV9vYmplY3RTcGFjZS5hc3NlcnRTbmFwc2hvdEVtcHR5KCk7CiAKICAgICBzd2VlcEFsbExv
Z2ljYWxseUVtcHR5V2Vha0Jsb2NrcygpOwogfQpAQCAtMTA0OCw3ICsxMDQ2LDcgQEAgTkVWRVJf
SU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3JlbWVudGFs
U3dlZXBlcigpOwogICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3Mo
KTsKIAotICAgIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7
CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24o
Z2NTdGFydFRpbWUpOwogICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTE2Miw0NCAr
MTE2MCwxMCBAQCB2b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKICAgICBtX2FycmF5QnVm
ZmVycy5zd2VlcCgpOwogfQogCi1zdHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgOiBw
dWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBNYXJrZWRCbG9ja1NuYXBzaG90
RnVuY3RvcihWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBibG9ja3MpIAotICAgICAgICA6
IG1faW5kZXgoMCkgCi0gICAgICAgICwgbV9ibG9ja3MoYmxvY2tzKQotICAgIHsKLSAgICB9Ci0K
LSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0g
ICAgewotICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAg
IG1fYmxvY2tzW21faW5kZXgrK10gPSBibG9jazsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVGhp
cyBpcyBhIG11dGFibGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKLSAgICBt
dXRhYmxlIHNpemVfdCBtX2luZGV4OwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4m
IG1fYmxvY2tzOwotfTsKLQogdm9pZCBIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlKCkKIHsKICAg
ICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhpcywgIkhlYXA6OnNuYXBzaG90TWFya2VkU3Bh
Y2UiKTsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcmVuYW1lZC4gSXQn
cyBub3QgYWN0dWFsbHkgc25hcHNob3R0aW5nIGFsbCBvZiBNYXJrZWRTcGFjZS4KLSAgICAvLyBU
aGlzIGlzIHVzZWQgYnkgSW5jcmVtZW50YWxTd2VlcGVyLCBzbyBpdCBvbmx5IG5lZWRzIHRvIHNu
YXBzaG90IGJsb2Nrcy4gSG93ZXZlciwgaWYgd2UgZXZlcgotICAgIC8vIHdhbnRlZCB0byBhZGQg
b3RoZXIgc25hcHNob3R0aW5nIGxvZ2luLCB3ZSdkIHByb2JhYmx5IHB1dCBpdCBoZXJlLgotICAg
IAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAg
ICAgICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgOiBtX29iamVjdFNwYWNlLmJs
b2Nrc1dpdGhOZXdPYmplY3RzKCkpIHsKLSAgICAgICAgICAgIGlmIChoYW5kbGUtPmlzT25CbG9j
a3NUb1N3ZWVwKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX2Js
b2NrU25hcHNob3QuYXBwZW5kKGhhbmRsZSk7Ci0gICAgICAgICAgICBoYW5kbGUtPnNldElzT25C
bG9ja3NUb1N3ZWVwKHRydWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9i
bG9ja1NuYXBzaG90LnJlc2l6ZVRvRml0KG1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuc2l6
ZSgpKTsKLSAgICAgICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgZnVuY3RvcihtX2Jsb2Nr
U25hcHNob3QpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hCbG9jayhmdW5jdG9yKTsK
LSAgICB9CisgICAgbV9vYmplY3RTcGFjZS5zbmFwc2hvdCgpOwogfQogCiB2b2lkIEhlYXA6OmRl
bGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKQEAgLTEyMjIsOSArMTE4Niw5IEBAIHZvaWQgSGVh
cDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW4KICAgICBtX2NvZGVCbG9ja3MtPndyaXRl
QmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhpcyk7CiB9CiAKLXZvaWQgSGVh
cDo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQog
ewotICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3JzKCk7CisgICAgbV9vYmplY3RTcGFj
ZS5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogfQogCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRp
b25MaW1pdHMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjA1
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzMsNyArMzMzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZVNvdXJjZVByb3Zp
ZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB2
b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKLSAgICB2b2lk
IHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAg
ICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAgIHZvaWQgZmluYWxpemVVbmNvbmRp
dGlvbmFsRmluYWxpemVycygpOwogICAgIHZvaWQgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVzKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxMyArMTI3LDE0
IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3ZWVwKGRvdWJsZSAKIAogYm9vbCBJbmNy
ZW1lbnRhbFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKCkKIHsKLSAgICB3aGlsZSAoIW1fYmxvY2tz
VG9Td2VlcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sg
PSBtX2Jsb2Nrc1RvU3dlZXAudGFrZUxhc3QoKTsKLSAgICAgICAgYmxvY2stPnNldElzT25CbG9j
a3NUb1N3ZWVwKGZhbHNlKTsKLQotICAgICAgICBpZiAoIWJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
ID0gbnVsbHB0cjsKKyAgICAKKyAgICBmb3IgKDsgbV9jdXJyZW50QWxsb2NhdG9yOyBtX2N1cnJl
bnRBbGxvY2F0b3IgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPm5leHRBbGxvY2F0b3IoKSkgeworICAg
ICAgICBpZiAoYmxvY2sgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPmZpbmRCbG9ja1RvU3dlZXAoKSkK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoYmxvY2spIHsKICAgICAg
ICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKG1fdm0tPmhlYXApOwogICAgICAgICBibG9jay0+
c3dlZXAoKTsKICAgICAgICAgbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZyZWVPclNocmlua0Js
b2NrKGJsb2NrKTsKQEAgLTE0Niw2ICsxNDcsNyBAQCBib29sIEluY3JlbWVudGFsU3dlZXBlcjo6
c3dlZXBOZXh0QmxvY2soCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZygp
CiB7CiAgICAgc2NoZWR1bGVUaW1lcigpOworICAgIG1fY3VycmVudEFsbG9jYXRvciA9IG1fdm0t
PmhlYXAub2JqZWN0U3BhY2UoKS5maXJzdEFsbG9jYXRvcigpOwogfQogCiB2b2lkIEluY3JlbWVu
dGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZpc2lvbiAyMDU4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDEyIEBACiAjZGVmaW5lIEluY3JlbWVudGFsU3dlZXBlcl9o
CiAKICNpbmNsdWRlICJIZWFwVGltZXIuaCIKLSNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7Ci1j
bGFzcyBNYXJrZWRCbG9jazsKK2NsYXNzIE1hcmtlZEFsbG9jYXRvcjsKIAogY2xhc3MgSW5jcmVt
ZW50YWxTd2VlcGVyIDogcHVibGljIEhlYXBUaW1lciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC01Niw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRpbWVy
KCk7CiAgICAgdm9pZCBjYW5jZWxUaW1lcigpOwogICAgIAotICAgIFZlY3RvcjxNYXJrZWRCbG9j
azo6SGFuZGxlKj4mIG1fYmxvY2tzVG9Td2VlcDsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fY3Vy
cmVudEFsbG9jYXRvcjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDAsNTAgKzEwMCw3NyBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEJsb2Nr
VG9Td2VlCiAgICAgbV9uZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrKTsK
IH0KIAorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaW5kRW1wdHlCbG9j
aygpCit7CisgICAgbV9lbXB0eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29y
LCB0cnVlKTsKKyAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5Q3Vyc29yXTsK
K30KKwogdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5n
SW1wbCgpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwogICAgIAotICAgIGlmIChtX2N1cnJlbnRCbG9jaykgewotICAgICAgICBBU1NFUlQobV9jdXJy
ZW50QmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVwKTsKKyAgICBpZiAobV9jdXJyZW50QmxvY2sp
CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAgICAg
c2V0TmV4dEJsb2NrVG9Td2VlcChtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICB9CiAgICAg
CiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChtX25l
eHRCbG9ja1RvU3dlZXAgIT0gbV9ibG9ja0xpc3QuZW5kKCkpOwotCi0gICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqJiBibG9jayA9IG1f
bmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICBuZXh0ID0g
ZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgIC8vIEl0IHdvdWxkIGJl
IHN1cGVyIHdlaXJkIGlmIHRoZSBibG9ja3Mgd2UgYXJlIHN3ZWVwaW5nIGhhdmUgYW55dGhpbmcg
YWxsb2NhdGVkIGR1cmluZyB0aGlzCi0gICAgICAgIC8vIGN5Y2xlLgotICAgICAgICBBU1NFUlQo
IWJsb2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgCi0gICAgICAgIEZyZWVM
aXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9G
cmVlTGlzdCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAo
OzspIHsKKyAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0gbV9jYW5BbGxvY2F0ZS5maW5kQml0
KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGlmIChtX2FsbG9jYXRpb25DdXJz
b3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAg
ICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24gYSBjb21wbGV0ZS1mdWxsIGJsb2Nr
LiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0Ci0gICAgICAgIC8vIHRoYXQgYWxn
b3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8gaXQgc29tZXRpbWVzLgotICAgICAg
ICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpIHsKLSAgICAgICAgICAgIEFTU0VS
VChibG9jay0+aXNGcmVlTGlzdGVkKCkpOwotICAgICAgICAgICAgYmxvY2stPnVuc3dlZXBXaXRo
Tm9OZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc01hcmtlZCgp
KTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQorICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKG1fYWxsb2NhdGlvbkN1cnNvciwgZmFs
c2UpOwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7Ci0gICAgICAgIHNldEZyZWVM
aXN0KGZyZWVMaXN0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICh2b2lkKiByZXN1bHQg
PSB0cnlBbGxvY2F0ZUluKG1fYmxvY2tzW21fYWxsb2NhdGlvbkN1cnNvcl0pKQorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZyZWVMaXN0KSB7Ci0g
ICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZmluZEVtcHR5QmxvY2soKSkKKyAgICAgICAgcmV0
dXJuIGFsbG9jYXRlSW4oYmxvY2spOworICAgIAorICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jayA9IG1fbWFya2VkU3BhY2UtPmZpbmRFbXB0eUJsb2NrKCkpIHsKKyAgICAgICAgYmxv
Y2stPnN3ZWVwKCk7CisgICAgICAgIGJsb2NrLT5yZW1vdmVGcm9tQWxsb2NhdG9yKCk7CisgICAg
ICAgIGFkZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlSW4oYmxvY2spOwog
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCogTWFya2VkQWxsb2Nh
dG9yOjphbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIHZvaWQq
IHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4oYmxvY2spOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAordm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlB
bGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIEFTU0VSVChibG9j
ayk7CisgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgQVNT
RVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIEZyZWVMaXN0IGZyZWVMaXN0
ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7Cisg
ICAgCisgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGVseSBmdWxs
IGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0CisgICAgLy8gdGhhdCBh
bGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCisgICAg
aWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7CisgICAgICAgIEFTU0VSVChibG9j
ay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxs
b2NhdGVkKCk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAg
ICAgQVNTRVJUKCFpc0VtcHR5KGJsb2NrKSk7CisgICAgICAgIEFTU0VSVCghaXNDYW5BbGxvY2F0
ZShibG9jaykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCisgICAgbV9j
dXJyZW50QmxvY2sgPSBibG9jazsKKyAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7CisgICAgCiAg
ICAgdm9pZCogcmVzdWx0OwogICAgIGlmIChtX2ZyZWVMaXN0LnJlbWFpbmluZykgewogICAgICAg
ICB1bnNpZ25lZCBjZWxsU2l6ZSA9IG1fY2VsbFNpemU7CkBAIC0yMjcsOCArMjU0LDcgQEAgdm9p
ZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlSQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIGFkZEJsb2NrKGJsb2NrKTsKLSAgICAgICAgCi0gICAgcmVz
dWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOworICAgIHJlc3VsdCA9IGFsbG9j
YXRlSW4oYmxvY2spOwogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0yNDksMzAgKzI3NSw2OCBAQCBzaXplX3QgTWFya2VkQWxsb2NhdG9yOjpibG9ja1NpemVG
b3JCeXRlCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRl
QmxvY2soKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9oZWFwLCB0aGlzLCBtX2Nl
bGxTaXplLCBtX2F0dHJpYnV0ZXMpOworICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhh
bmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwgbV9jZWxsU2l6ZSwgbV9hdHRy
aWJ1dGVzKTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
CisgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soaGFuZGxlKTsKKyAgICAKKyAgICByZXR1
cm4gaGFuZGxlOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2soTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2spCiB7Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRCbG9jayk7Ci0gICAg
QVNTRVJUKCFtX2ZyZWVMaXN0KTsKKyAgICBzaXplX3QgaW5kZXg7CisgICAgaWYgKG1fZnJlZUJs
b2NrSW5kaWNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaW5kZXggPSBtX2Jsb2Nrcy5zaXplKCk7
CisKKyAgICAgICAgc2l6ZV90IG9sZENhcGFjaXR5ID0gbV9ibG9ja3MuY2FwYWNpdHkoKTsKKyAg
ICAgICAgbV9ibG9ja3MuYXBwZW5kKGhhbmRsZSk7CisgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBh
Y2l0eSgpICE9IG9sZENhcGFjaXR5KSB7CisgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAor
ICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVCh2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tz
LmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZv
ckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0
b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0
eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7CisgICAgICAgIEFTU0VS
VCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgbV9ibG9ja3NbaW5kZXhdID0gaGFuZGxlOwor
ICAgIH0KKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICBbJl0gKEZhc3RCaXRW
ZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgQVNTRVJUKCF2ZWN0b3JbaW5kZXhdKTsKKyAg
ICAgICAgfSk7CisKKyAgICBoYW5kbGUtPmRpZEFkZFRvQWxsb2NhdG9yKHRoaXMsIGluZGV4KTsK
ICAgICAKLSAgICBtX2Jsb2NrTGlzdC5hcHBlbmQoYmxvY2spOwotICAgIHNldE5leHRCbG9ja1Rv
U3dlZXAoYmxvY2spOwotICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGJsb2NrKTsKKyAg
ICBzZXRJc0xpdmUoaW5kZXgsIHRydWUpOworICAgIHNldElzRW1wdHkoaW5kZXgsIHRydWUpOwog
fQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVtb3ZlQmxvY2soTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2spCiB7Ci0gICAgaWYgKG1fY3VycmVudEJsb2NrID09IGJsb2NrKSB7Ci0gICAgICAg
IG1fY3VycmVudEJsb2NrID0gZmlsdGVyTmV4dEJsb2NrKG1fY3VycmVudEJsb2NrLT5uZXh0KCkp
OwotICAgICAgICBzZXRGcmVlTGlzdChGcmVlTGlzdCgpKTsKLSAgICB9Ci0gICAgaWYgKG1fbmV4
dEJsb2NrVG9Td2VlcCA9PSBibG9jaykKLSAgICAgICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX25l
eHRCbG9ja1RvU3dlZXAtPm5leHQoKSk7CisgICAgQVNTRVJUKGJsb2NrLT5hbGxvY2F0b3IoKSA9
PSB0aGlzKTsKKyAgICBBU1NFUlQobV9ibG9ja3NbYmxvY2stPmluZGV4KCldID09IGJsb2NrKTsK
IAotICAgIGJsb2NrLT53aWxsUmVtb3ZlQmxvY2soKTsKLSAgICBtX2Jsb2NrTGlzdC5yZW1vdmUo
YmxvY2spOworICAgIG1fYmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9IG51bGxwdHI7CisgICAgbV9m
cmVlQmxvY2tJbmRpY2VzLmFwcGVuZChibG9jay0+aW5kZXgoKSk7CisgICAgCisgICAgZm9yRWFj
aEJpdFZlY3RvcigKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAg
ICAgICAgIHZlY3RvcltibG9jay0+aW5kZXgoKV0gPSBmYWxzZTsKKyAgICAgICAgfSk7CisgICAg
CisgICAgYmxvY2stPmRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKIH0KIAogdm9pZCBNYXJrZWRB
bGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKQEAgLTI5MiwyMyArMzU2LDIwIEBAIHZvaWQgTWFy
a2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCiAgICAgbV9mcmVlTGlzdCA9IEZyZWVMaXN0
KCk7CiB9CiAKLXZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXNldCgpCit2b2lkIE1hcmtlZEFsbG9j
YXRvcjo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewotICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0g
MDsKLSAgICBtX2N1cnJlbnRCbG9jayA9IDA7CisgICAgbV9sYXN0QWN0aXZlQmxvY2sgPSBudWxs
cHRyOworICAgIG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsKICAgICBzZXRGcmVlTGlzdChGcmVl
TGlzdCgpKTsKIAotICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9ibG9ja0xpc3QuYmVnaW4oKSk7
CisgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0gMDsKKyAgICBtX2VtcHR5Q3Vyc29yID0gMDsKKyAg
ICBtX3NuYXBzaG90Q3Vyc29yID0gMDsKKyAgICAKKyAgICBtX2VkZW4uY2xlYXJBbGwoKTsKIAog
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VJbW1vcnRhbE9iamVjdHMoKSkpIHsKLSAgICAg
ICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbmV4dDsKLSAgICAgICAgZm9yIChNYXJrZWRCbG9jazo6
SGFuZGxlKiYgYmxvY2sgPSBtX25leHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQp
IHsKLSAgICAgICAgICAgIG5leHQgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5leHQoKSk7Ci0K
LSAgICAgICAgICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgICAgICBibG9jay0+emFwKGZyZWVM
aXN0KTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAgICAgIH0KKyAgICAgICAgLy8g
RklYTUU6IFRoaW5ncz8KICAgICB9CiB9CiAKQEAgLTMyNiw0ICszODcsNjQgQEAgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnNldEZyZWVMaXN0KGNvbnN0IAogICAgIG1fZnJlZUxpc3QgPSBmcmVlTGlz
dDsKIH0KIAordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcoKQoreworICAg
IGlmICghbV9sYXN0QWN0aXZlQmxvY2spCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJlZUxp
c3QgPSBtX2xhc3RBY3RpdmVCbG9jay0+cmVzdW1lQWxsb2NhdGluZygpOworICAgIG1fY3VycmVu
dEJsb2NrID0gbV9sYXN0QWN0aXZlQmxvY2s7CisgICAgbV9sYXN0QWN0aXZlQmxvY2sgPSBudWxs
cHRyOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YmVnaW5NYXJraW5nRm9yRnVsbENvbGxl
Y3Rpb24oKQoreworICAgIC8vIE1hcmsgYml0cyBhcmUgc3RpY2t5IGFuZCBzbyBpcyBvdXIgc3Vt
bWFyeSBvZiBtYXJrIGJpdHMuIFdlIG9ubHkgY2xlYXIgdGhlc2UgZHVyaW5nIGZ1bGwKKyAgICAv
LyBjb2xsZWN0aW9ucywgc28gaWYgeW91IHN1cnZpdmVkIHRoZSBsYXN0IGNvbGxlY3Rpb24geW91
IHdpbGwgc3Vydml2ZSB0aGUgbmV4dCBvbmUgc28gbG9uZworICAgIC8vIGFzIHRoZSBuZXh0IG9u
ZSBpcyBlZGVuLgorICAgIG1fbWFya2luZ05vdEVtcHR5LmNsZWFyQWxsKCk7CisgICAgbV9tYXJr
aW5nUmV0aXJlZC5jbGVhckFsbCgpOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZW5kTWFy
a2luZygpCit7CisgICAgbV9hbGxvY2F0ZWQuY2xlYXIoKTsKKyAgICAKKyAgICAvLyBJdCdzIHN1
cnByaXNpbmcgYW5kIGZydXN0cmF0aW5nIHRvIGNvbXByZWhlbmQsIGJ1dCB0aGUgZW5kLW9mLW1h
cmtpbmcgZmxpcCBkb2VzIG5vdCBuZWVkIHRvCisgICAgLy8ga25vdyB3aGF0IGtpbmQgb2YgY29s
bGVjdGlvbiBpdCBpcy4gVGhhdCBrbm93bGVkZ2UgaXMgYWxyZWFkeSBlbmNvZGVkIGluIHRoZSBt
X21hcmtpbmdYWVoKKyAgICAvLyB2ZWN0b3JzLgorICAgIAorICAgIGlmIChuZWVkc0Rlc3RydWN0
aW9uKCkpIHsKKyAgICAgICAgLy8gSWYgYmxvY2tzIG5lZWQgZGVzdHJ1Y3Rpb24gdGhlbiBub3Ro
aW5nIGlzIGVtcHR5ISBUaGlzIGlzIGEgY29ycmVjdCBhc3NlcnRpb24gYnV0IG1heQorICAgICAg
ICAvLyBiZWNvbWUgd3Jvbmcgb25jZSB3ZSBnbyBmdWxsIGNvbmN1cnJlbnQ6IHdoZW4gd2UgY3Jl
YXRlIGEgbmV3IGJsb2NrLCBpdCB3aWxsIGZsaWNrZXIKKyAgICAgICAgLy8gaW50byB0aGUgZW1w
dHkgc2V0IGZvciBhIHRpbnkgbW9tZW50LiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBjb2RlIGlz
IGxpa2VseSB0byBiZSBydW4KKyAgICAgICAgLy8gaW4gc3RvcFRoZVdvcmxkLgorICAgICAgICBB
U1NFUlQobV9lbXB0eS5pc0VtcHR5KCkpOworICAgICAgICBtX2NhbkFsbG9jYXRlID0gbV9saXZl
ICYgfm1fbWFya2luZ1JldGlyZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
bV9lbXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKKyAgICBtX2NhbkFsbG9jYXRl
ID0gbV9saXZlICYgbV9tYXJraW5nTm90RW1wdHkgJiB+bV9tYXJraW5nUmV0aXJlZDsKK30KKwor
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24oKQoreworICAg
IG1fc25hcHNob3QgfD0gbV9lZGVuOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNo
b3RGb3JGdWxsQ29sbGVjdGlvbigpCit7CisgICAgbV9zbmFwc2hvdCB8PSBtX2xpdmU7Cit9CisK
K01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmluZEJsb2NrVG9Td2VlcCgp
Cit7CisgICAgbV9zbmFwc2hvdEN1cnNvciA9IG1fc25hcHNob3QuZmluZEJpdChtX3NuYXBzaG90
Q3Vyc29yLCB0cnVlKTsKKyAgICBpZiAobV9zbmFwc2hvdEN1cnNvciA+PSBtX2Jsb2Nrcy5zaXpl
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2Jsb2Nrc1ttX3NuYXBz
aG90Q3Vyc29yXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAyMDU4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsMzEgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIE1hcmtlZFNwYWNlOwog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisjZGVmaW5lIEZPUl9FQUNIX01BUktFRF9B
TExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBv
ZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKKyAgICBtYWNybyhl
bXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBv
YmplY3RzIGFuZCBub3RoaW5nIHRvIGRlc3Ryb3kuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQs
IEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGxibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZl
IG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9jYXRlLCBDYW5BbGxvY2F0ZSkgLyogVGhl
IHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY2FuIGJlIGFsbG9jYXRlZCBpbiByaWdodCBub3cuICov
IFwKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBo
YXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKKyAgICBtYWNybyhzbmFwc2hv
dCwgU25hcHNob3QpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNvdWxkIGJlIHN3ZXB0
IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wKKyAgICBcCisgICAgLyogVGhlc2UgYXJl
IGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiBXZSB1c2UgdGhlbSBhZnRlciBtYXJraW5nIHRvIGNv
bXB1dGUgbV9lbXB0eSBhbmQgKi9cCisgICAgLyogbV9jYW5BbGxvY2F0ZTogKi9cCisgICAgLyog
Ki9cCisgICAgLyogbV9lbXB0eS5zZXQobV9saXZlLmJpdEFuZChtX21hcmtpbmdOb3RFbXB0eS5i
aXROb3QoKSkpOyAqL1wKKyAgICAvKiBtX2NhbkFsbG9jYXRlLnNldChtX2xpdmUuYml0QW5kKG1f
bWFya2luZ1JldGlyZWQuYml0Tm90KCkpLmJpdEFuZChtX21hcmtpbmdOb3RFbXB0eSkpOyAqL1wK
KyAgICAvKiAqL1wKKyAgICAvKiBOb3RlIHRoYXQgd2UgYWxzbyBjbGVhciBtX2FsbG9jYXRlZCBh
dCBhcm91bmQgdGhlIHNhbWUgdGltZS4gSW4gZWRlbiBjb2xsZWN0aW9ucyB3ZSB3b3VsZCAqL1wK
KyAgICAvKiBkbzogKi9cCisgICAgLyogKi9cCisgICAgLyogbV9hbGxvY2F0ZWQuZXhjbHVkZSht
X2VkZW4pOyAqL1wKKyAgICAvKiAqL1wKKyAgICAvKiBBbmQgaW4gZnVsbCB3ZSB3b3VsZCBkbzog
Ki9cCisgICAgLyogKi9cCisgICAgLyogbV9hbGxvY2F0ZWQuY2xlYXJBbGwoKTsgKi9cCisgICAg
bWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIFwKKyAgICBtYWNybyhtYXJr
aW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpCisKIGNsYXNzIE1hcmtlZEFsbG9jYXRvciB7CiAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApAQCAtNDYsOSArNzEsMTMg
QEAgcHVibGljOgogCiAgICAgTWFya2VkQWxsb2NhdG9yKEhlYXAqLCBNYXJrZWRTcGFjZSosIHNp
emVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwogICAgIHZvaWQgbGFz
dENoYW5jZVRvRmluYWxpemUoKTsKLSAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBwcmVwYXJl
Rm9yQWxsb2NhdGlvbigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKICAgICB2b2lkIHJl
c3VtZUFsbG9jYXRpbmcoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9u
KCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdEZvckVkZW5Db2xs
ZWN0aW9uKCk7CisgICAgdm9pZCBzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKCk7CiAgICAgc2l6
ZV90IGNlbGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsU2l6ZTsgfQogICAgIGNvbnN0IEFs
bG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0
ZXM7IH0KICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJp
YnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQpAQCAtNzIsNiArMTAxLDM0
IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAK
ICAgICBzdGF0aWMgc2l6ZV90IGJsb2NrU2l6ZUZvckJ5dGVzKHNpemVfdCk7CisgICAgCisjZGVm
aW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxC
aXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4
KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29s
IGlzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7
IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+aW5kZXgoKSk7IH0gXAorICAgIHZv
aWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IG1f
ICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1ZTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBj
YXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBz
ZXRJcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgYm9v
bCBhdG9taWNTZXRBbmRDaGVja0lzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9v
bCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lLmF0b21pY1NldEFuZENoZWNrKGlu
ZGV4LCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFs
Qml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyByZXR1cm4g
bV8gIyMgbG93ZXJCaXROYW1lLmF0b21pY1NldEFuZENoZWNrKGJsb2NrLT5pbmRleCgpLCB2YWx1
ZSk7IH0KKyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9S
X0JJVF9BQ0NFU1NPUlMpCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTCisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihj
b25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FM
TEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAgICBmdW5jKG1fICMj
IGxvd2VyQml0TmFtZSk7CisgICAgICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1B
UktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKTsKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJ
VF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG5leHRBbGxvY2F0
b3IoKSBjb25zdCB7IHJldHVybiBtX25leHRBbGxvY2F0b3I7IH0KKyAgICAKKyAgICAvLyBNYXJr
ZWRTcGFjZSBjYWxscyB0aGlzIGR1cmluZyBpbml0LgorICAgIHZvaWQgc2V0TmV4dEFsbG9jYXRv
cihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcikgeyBtX25leHRBbGxvY2F0b3IgPSBhbGxvY2F0
b3I7IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9jaygpOwor
ICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9ja1RvU3dlZXAoKTsKICAgIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CkBAIC04Miw2ICsxMzksMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAg
ICAgdm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwoKTsKICAgICBNYXJrZWRC
bG9jazo6SGFuZGxlKiB0cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAgdm9pZCBhZGRCbG9jayhNYXJr
ZWRCbG9jazo6SGFuZGxlKik7CisgICAgdm9pZCByZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFu
ZGxlKik7CisgICAgdm9pZCogdHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7Cisg
ICAgdm9pZCogYWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoKTsKICAgICB2b2lkIHJldGlyZShN
YXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgCkBAIC05MSwxNiArMTUyLDMwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXROZXh0QmxvY2tUb1N3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAg
ICAKICAgICBGcmVlTGlzdCBtX2ZyZWVMaXN0OworICAgIAorICAgIFZlY3RvcjxNYXJrZWRCbG9j
azo6SGFuZGxlKj4gbV9ibG9ja3M7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVCbG9ja0lu
ZGljZXM7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKGxv
d2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICBGYXN0Qml0VmVjdG9yIG1fICMjIGxv
d2VyQml0TmFtZTsKKyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxM
T0NBVE9SX0JJVF9ERUNMQVJBVElPTikKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNM
QVJBVElPTgorICAgIAorICAgIC8vIEFmdGVyIHlvdSBkbyBzb21ldGhpbmcgdG8gYSBibG9jayBi
YXNlZCBvbiBvbmUgb2YgdGhlc2UgY3Vyc29ycywgeW91IGNsZWFyIHRoZSBiaXQgaW4gdGhlCisg
ICAgLy8gY29ycmVzcG9uZGluZyBiaXR2ZWN0b3IgYW5kIGxlYXZlIHRoZSBjdXJzb3Igd2hlcmUg
aXQgd2FzLgorICAgIHNpemVfdCBtX2FsbG9jYXRpb25DdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0
byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBhbGxvY2F0aW9uLgorICAg
IHNpemVfdCBtX2VtcHR5Q3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sg
dGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgZW1wdHkgYWxsb2NhdGlvbiAoYWxsb2NhdGluZyBpbiBl
bXB0eSBibG9ja3MpLgorICAgIHNpemVfdCBtX3NuYXBzaG90Q3Vyc29yIHsgMCB9OyAvLyBQb2lu
dHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgaW5jcmVtZW50YWwg
c3dlZXBpbmcuCisgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9jdXJyZW50QmxvY2s7
CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogbV9uZXh0QmxvY2tUb1N3ZWVwOwotICAgIFNlbnRpbmVsTGlua2VkTGlz
dDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRCbG9jazo6
SGFuZGxlPj4gbV9ibG9ja0xpc3Q7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJsb2Nr
OjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBtX3Jl
dGlyZWRCbG9ja3M7CisKICAgICBMb2NrIG1fbG9jazsKICAgICB1bnNpZ25lZCBtX2NlbGxTaXpl
OwogICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIEhlYXAqIG1faGVh
cDsKICAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAgICBNYXJrZWRBbGxvY2F0b3Iq
IG1fbmV4dEFsbG9jYXRvcjsKIH07CiAKIGlubGluZSBwdHJkaWZmX3QgTWFya2VkQWxsb2NhdG9y
OjpvZmZzZXRPZkZyZWVMaXN0KCkKQEAgLTE0OSwxNiArMjI0LDYgQEAgQUxXQVlTX0lOTElORSB2
b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbAogICAgIHJldHVybiBoZWFkOwogfQogCi1pbmxpbmUg
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcoKQotewotICAgIGlmICghbV9s
YXN0QWN0aXZlQmxvY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZnJlZUxpc3QgPSBtX2xh
c3RBY3RpdmVCbG9jay0+cmVzdW1lQWxsb2NhdGluZygpOwotICAgIG1fY3VycmVudEJsb2NrID0g
bV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotfQotCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpmb3JF
YWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBtX2Jsb2NrTGlzdC5mb3JF
YWNoKGZ1bmN0b3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBKU0Mgewogc3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBmYWxzZTsKIHN0YXRp
YyBzaXplX3QgYmFsYW5jZTsKIAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRy
eUNyZWF0ZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNl
bGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorTWFya2VkQmxv
Y2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3QgY2Vs
bFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgaWYg
KGNvbXB1dGVCYWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4LDE2ICs0OCwxNCBA
QCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQogICAgICAgICBzY3JpYmJs
ZShibG9ja1NwYWNlLCBibG9ja1NpemUpOwotICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGFs
bG9jYXRvciwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOworICAgIHJldHVybiBu
ZXcgSGFuZGxlKGhlYXAsIGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBibG9ja1NwYWNlKTsKIH0KIAot
TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciog
YWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIHZvaWQqIGJsb2NrU3BhY2UpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUo
SGVhcCYgaGVhcCwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV9hdG9tc1BlckNlbGwoKGNlbGxT
aXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKGF0b21zUGVy
QmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDEpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRl
cykKLSAgICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgot
ICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+
aGVhcCgpLT52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX3dlYWtTZXQoaGVhcC52bSgp
LCBDZWxsQ29udGFpbmVyKCkpCiB7CiAgICAgbV9ibG9jayA9IG5ldyAoTm90TnVsbCwgYmxvY2tT
cGFjZSkgTWFya2VkQmxvY2soKmhlYXAudm0oKSwgKnRoaXMpOwogICAgIApAQCAtNjUsNyArNjMs
NiBAQCBNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgCiAgICAgCiAgICAg
aGVhcC5kaWRBbGxvY2F0ZUJsb2NrKGJsb2NrU2l6ZSk7CiAgICAgSEVBUF9MT0dfQkxPQ0tfU1RB
VEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICBBU1NFUlQoYWxsb2NhdG9yKTsKICAgICBpZiAobV9h
dHRyaWJ1dGVzLmNlbGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9u
KTsKIH0KQEAgLTc4LDYgKzc1LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAg
ICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRC
bG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9CisgICAgcmVtb3ZlRnJvbUFs
bG9jYXRvcigpOwogICAgIG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwogICAgIGZhc3RBbGlnbmVk
RnJlZShtX2Jsb2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1NpemUpOwpAQCAtMTAx
LDIxICs5OSwyMiBAQCBNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmCiAg
ICAgbV9iaWFzZWRNYXJrQ291bnQgPSBtX21hcmtDb3VudEJpYXM7IC8vIFRoaXMgbWVhbnMgd2Ug
aGF2ZW4ndCBtYXJrZWQgYW55dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6
QmxvY2tTdGF0ZSBibG9ja1N0YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dl
ZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXds
eUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxhdGU8TWFya2VkQmxvY2s6
OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBN
b2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KIEZyZWVMaXN0IE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoKQogewotICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBBU1NFUlQoYmxvY2tTdGF0ZSA9PSBO
ZXcgfHwgYmxvY2tTdGF0ZSA9PSBNYXJrZWQpOwotICAgIEFTU0VSVCghKGRlc3RydWN0aW9uTW9k
ZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1
Y3Rpb24gJiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSksICJJdCBkb2Vzbid0IG1ha2Ugc2Vuc2Ug
dG8gc3dlZXAgYSBibG9jayB3aXRoIG5vIGRlc3RydWN0b3JzIHVubGVzcyBpdCdzIHRvIGJ1aWxk
IGEgZnJlZSBsaXN0LiIpOworICAgIHN0YXRpY19hc3NlcnQoIShkZXN0cnVjdGlvbk1vZGUgPT0g
TmVlZHNEZXN0cnVjdGlvbiAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0eSksICJBIGJsb2NrIGRvZXNu
J3QgcXVhbGlmeSBhcyBlbXB0eSBpZiB0aGVyZSBhcmUgZGVzdHJ1Y3RvcnMgdGhhdCBzdGlsbCBu
ZWVkIHRvIGJlIHJ1bi4iKTsKICAgICAKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7CisKICAgICBhc3NlcnRGbGlwcGVkKCk7CiAgICAgTWFya2VkQmxvY2sm
IGJsb2NrID0gdGhpcy0+YmxvY2soKTsKICAgICAKLSAgICBib29sIGlzTmV3QmxvY2sgPSBibG9j
a1N0YXRlID09IE5ldzsKLSAgICBib29sIGlzRW1wdHlCbG9jayA9ICFibG9jay5oYXNBbnlNYXJr
ZWQoKQotICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFs
bG9jYXRlZAotICAgICAgICAmJiBkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVj
dGlvbjsKLSAgICBpZiAoT3B0aW9uczo6dXNlQnVtcEFsbG9jYXRvcigpICYmIChpc05ld0Jsb2Nr
IHx8IGlzRW1wdHlCbG9jaykpIHsKKyAgICBtX2FsbG9jYXRvci0+c2V0SXNTbmFwc2hvdCh0aGlz
LCBmYWxzZSk7CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQorICAg
ICAgICAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0eQorICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1v
ZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCkgewogICAgICAgICBBU1NFUlQoYmxvY2su
bV9tYXJrcy5pc0VtcHR5KCkpOwogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRPZkxhc3RD
ZWxsID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsgbV9lbmRB
dG9tIC0gMSkpOwpAQCAtMTI0LDcgKzEyMyw4IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnNwZWNpYWxpemUKICAgICAgICAgY2hhciogcGF5bG9hZEJlZ2luID0gYml0d2lzZV9jYXN0
PGNoYXIqPihibG9jay5hdG9tcygpICsgZmlyc3RBdG9tKCkpOwogICAgICAgICBpZiAoc2NyaWJi
bGVNb2RlID09IFNjcmliYmxlKQogICAgICAgICAgICAgc2NyaWJibGUocGF5bG9hZEJlZ2luLCBw
YXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsKLSAgICAgICAgbV9zdGF0ZSA9ICgoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCkgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICAgICAgaWYg
KHN3ZWVwTW9kZSA9PSBTcGVlZFRvRnJlZUxpc3QpIHsKKyAgICAgICAgICAgIHNldElzRnJlZUxp
c3RlZCgpOwogICAgICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6YnVtcChwYXlsb2Fk
RW5kLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsKICAgICAgICAgaWYgKGZhbHNlKQogICAg
ICAgICAgICAgZGF0YUxvZygiUXVpY2tseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKHRoaXMp
LCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9h
dHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTM3LDE0ICsxMzcsMTQgQEAgRnJl
ZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgIEZyZWVDZWxsKiBoZWFk
ID0gMDsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0
b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBpZiAo
YmxvY2tTdGF0ZSA9PSBNYXJrZWQKKyAgICAgICAgaWYgKGVtcHR5TW9kZSA9PSBOb3RFbXB0eQog
ICAgICAgICAgICAgJiYgKGJsb2NrLm1fbWFya3MuZ2V0KGkpCiAgICAgICAgICAgICAgICAgfHwg
KG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5QWxsb2Nh
dGVkLT5nZXQoaSkpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEhlYXBDZWxs
KiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYmxvY2suYXRvbXMoKVtp
XSk7CiAKLSAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYm
IGJsb2NrU3RhdGUgIT0gTmV3KQorICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRz
RGVzdHJ1Y3Rpb24gJiYgZW1wdHlNb2RlID09IE5vdEVtcHR5KQogICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8SlNDZWxsKj4oY2VsbCktPmNhbGxEZXN0cnVjdG9yKCp2bSgpKTsKIAogICAgICAgICBp
ZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkgewpAQCAtMTYzLDcgKzE2Myw4IEBAIEZy
ZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgbV9uZXdseUFs
bG9jYXRlZCA9IG51bGxwdHI7CiAKICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6bGlz
dChoZWFkLCBjb3VudCAqIGNlbGxTaXplKCkpOwotICAgIG1fc3RhdGUgPSAoc3dlZXBNb2RlID09
IFN3ZWVwVG9GcmVlTGlzdCA/IEZyZWVMaXN0ZWQgOiBNYXJrZWQpOworICAgIGlmIChzd2VlcE1v
ZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKICAgICBp
ZiAoZmFsc2UpCiAgICAgICAgIGRhdGFMb2coIlNsb3dseSBzd2VwdCBibG9jayAiLCBSYXdQb2lu
dGVyKCZibG9jayksICIgd2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0cmli
dXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIik7CiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTE4MCw2ICsxODEsMTMgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3dlZXAoU3dlZQogICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmIG1fYXR0cmlidXRl
cy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4g
RnJlZUxpc3QoKTsKIAorICAgIGlmIChVTkxJS0VMWShtX2lzRnJlZUxpc3RlZCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7CisgICAgICAg
IHJldHVybiBGcmVlTGlzdCgpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9y
LT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAgCiAgICAgaWYgKG1fYXR0cmlidXRlcy5kZXN0cnVj
dGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxl
Y3RTY3JpYmJsZU1vZGU8TmVlZHNEZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsKICAgICByZXR1cm4g
c3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8RG9lc05vdE5lZWREZXN0cnVjdGlvbj4oc3dl
ZXBNb2RlKTsKQEAgLTE4OSw0NyArMTk3LDQ0IEBAIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBk
ZXN0cnVjdGlvbk1vZGUKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVy
U2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7CiAgICAgaWYgKHNjcmli
YmxlRnJlZUNlbGxzKCkpCi0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5k
U3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7Ci0gICAgcmV0
dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBE
b250U2NyaWJibGU+KHN3ZWVwTW9kZSk7CisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVj
dEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgIHJl
dHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIERvbnRTY3Jp
YmJsZT4oc3dlZXBNb2RlKTsKIH0KIAogdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0
aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4K
LUZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRT
d2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0g
ICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBOZXc6Ci0gICAgICAgIEFTU0VSVChzd2Vl
cE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dl
ZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBE
b2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAg
ICAgLy8gSGFwcGVucyB3aGVuIGEgYmxvY2sgdHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxsb2NhdGVk
LgotICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAg
IHJldHVybiBGcmVlTGlzdCgpOwotICAgIGNhc2UgQWxsb2NhdGVkOgotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBj
YXNlIE1hcmtlZDoKLSAgICAgICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgICAg
IHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBz
cGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUs
IHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAgICAgICA6IHNw
ZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAg
PyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1v
ZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKQotICAgICAgICAg
ICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25N
b2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
RnJlZUxpc3QoKTsKKyAgICBpZiAobV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcykpCisgICAgICAg
IHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPElzRW1wdHksIGRlc3Ry
dWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhl
bHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPE5vdEVtcHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNj
cmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8RW1wdHlNb2RlIGVtcHR5TW9k
ZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6
U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dlZXBNb2RlIHN3ZWVwTW9kZSkK
K3sKKyAgICBpZiAobV9oYXNOZXdseUFsbG9jYXRlZCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVs
cGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1v
ZGUsIEhhc05ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBl
clNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2Rl
LCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworfQorCit0ZW1wbGF0ZTxF
bXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBOZXdseUFsbG9hdGVk
TW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
d2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQoreworICAgIGlm
IChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICByZXR1cm4gc3BlY2lhbGl6
ZWRTd2VlcDxlbXB0eU1vZGUsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3Jp
YmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKKyAgICByZXR1cm4gc3BlY2lhbGl6ZWRT
d2VlcDxlbXB0eU1vZGUsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUs
IG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjp1
bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwot
ICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgCi0g
ICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAgICBtX3N0YXRlID0g
TWFya2VkOworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNGcmVlTGlzdGVkKTsKKyAgICBtX2lzRnJl
ZUxpc3RlZCA9IGZhbHNlOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNldElzRnJl
ZUxpc3RlZCgpCit7CisgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgZmFsc2UpOwor
ICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7CiB9CiAKIGNsYXNzIFNldE5ld2x5QWxsb2NhdGVk
RnVuY3RvciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewpAQCAtMjUzLDI1ICsy
NTgsMTYgQEAgcHJpdmF0ZToKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRp
bmcoY29uc3QgRnJlZUxpc3QmIGZyZWVMaXN0KQogewogICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwot
ICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CisgICAgCisgICAgQVNT
RVJUKCFhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOwogCi0gICAgaWYgKG1fc3RhdGUg
PT0gTWFya2VkKSB7Ci0gICAgICAgIC8vIElmIHRoZSBibG9jayBpcyBpbiB0aGUgTWFya2VkIHN0
YXRlIHRoZW4gd2Uga25vdyB0aGF0IG9uZSBvZiB0aGVzZQotICAgICAgICAvLyBjb25kaXRpb25z
IGhvbGRzOgotICAgICAgICAvLwotICAgICAgICAvLyAtIEl0IHdhcyBub3QgdXNlZCBmb3IgYWxs
b2NhdGlvbiBkdXJpbmcgdGhlIHByZXZpb3VzIGFsbG9jYXRpb24gY3ljbGUuCi0gICAgICAgIC8v
ICAgSXQgbWF5IGhhdmUgZGVhZCBvYmplY3RzLCBhbmQgd2Ugb25seSBrbm93IHRoZW0gdG8gYmUg
ZGVhZCBieSB0aGUKLSAgICAgICAgLy8gICBmYWN0IHRoYXQgdGhlaXIgbWFyayBiaXRzIGFyZSB1
bnNldC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBTb21lb25lIGhhZCBhbHJlYWR5IGRvbmUg
c3RvcEFsbG9jYXRpbmcoKSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBvZgotICAgICAgICAvLyAgIGhl
YXAgaXRlcmF0aW9uLCBhbmQgdGhleSBoYWQgYWxyZWFkeSAKLSAgICAgICAgLy8gSGVuY2UgaWYg
dGhlIGJsb2NrIGlzIE1hcmtlZCB3ZSBuZWVkIHRvIGxlYXZlIGl0IE1hcmtlZC4KKyAgICBpZiAo
IWlzRnJlZUxpc3RlZCgpKSB7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBlaXRoZXIg
ZGlkbid0IHVzZSB0aGlzIGJsb2NrIGF0IGFsbCBmb3IgYWxsb2NhdGlvbiBzaW5jZSBsYXN0IEdD
LAorICAgICAgICAvLyBvciBzb21lb25lIGhhZCBhbHJlYWR5IGRvbmUgc3RvcEFsbG9jYXRpbmco
KSBiZWZvcmUuCiAgICAgICAgIEFTU0VSVChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJl
ZUxpc3RlZCk7Ci0gICAgCiAgICAgLy8gUm9sbCBiYWNrIHRvIGEgY29oZXJlbnQgc3RhdGUgZm9y
IEhlYXAgaW50cm9zcGVjdGlvbi4gQ2VsbHMgbmV3bHkKICAgICAvLyBhbGxvY2F0ZWQgZnJvbSBv
dXIgZnJlZSBsaXN0IGFyZSBub3QgY3VycmVudGx5IG1hcmtlZCwgc28gd2UgbmVlZCBhbm90aGVy
CiAgICAgLy8gd2F5IHRvIHRlbGwgd2hhdCdzIGxpdmUgdnMgZGVhZC4gCkBAIC0yOTAsNyArMjg2
LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgICAgICAg
ICAgY2xlYXJOZXdseUFsbG9jYXRlZChjZWxsKTsKICAgICAgICAgfSk7CiAgICAgCi0gICAgbV9z
dGF0ZSA9IE1hcmtlZDsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOwogfQogCiB2b2lkIE1h
cmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKQEAgLTMwNSwxMyArMzAx
LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmkKIEZyZWVMaXN0
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcoKQogewogICAgIGZsaXBJZk5l
Y2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CiAK
LSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOworICAgIEFTU0VSVCghYWxsb2NhdG9yKCkt
PmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKIAogICAg
IGlmICghbV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAvLyBXZSBkaWRuJ3QgaGF2ZSB0byBj
cmVhdGUgYSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAuIFRoYXQgbWVhbnMgd2Ugd2VyZSBhbHJl
YWR5IE1hcmtlZAotICAgICAgICAvLyB3aGVuIHdlIGxhc3Qgc3RvcHBlZCBhbGxvY2F0aW9uLCBz
byByZXR1cm4gYW4gZW1wdHkgZnJlZSBsaXN0IGFuZCBzdGF5IGluIHRoZSBNYXJrZWQgc3RhdGUu
CisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVkIHRoZSBibG9j
ayB3aGVuIHdlIHN0b3BwZWQgYWxsb2NhdGlvbi4KICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7
CiAgICAgfQogCkBAIC0zNjYsMTcgKzM2MSwxNyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZO
ZWNlc3NhcnlEdXJpbmdNCiB7CiAgICAgQVNTRVJUKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5p
c01hcmtpbmcoKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKLSAgICBpZiAobmVl
ZHNGbGlwKCkpCisgICAgaWYgKG5lZWRzRmxpcCgpKSB7CiAgICAgICAgIGNsZWFyTWFya3MoKTsK
KyAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBv
YmplY3QgaW4gdGhpcyBibG9jay4KKyAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21p
Y1NldEFuZENoZWNrSXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICB9CiB9
CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQogewogICAgIG1fbWFya3MuY2xlYXJB
bGwoKTsKICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUg
dHJ1ZSBhdCB0aGUgZW5kIG9mIHRoZSBtYXJrIHBoYXNlLiBXZSBzZXQgaXQgbm93IHRvCi0gICAg
Ly8gYXZvaWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4KLSAgICBoYW5kbGUoKS5tX3N0
YXRlID0gTWFya2VkOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgbV92ZXJzaW9u
ID0gdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKIH0KQEAgLTM5OCwxMSArMzkz
LDYgQEAgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc0ZsaXAoKQogICAgIHJldHVybiBt
X2Jsb2NrLT5uZWVkc0ZsaXAoKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxs
UmVtb3ZlQmxvY2soKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotfQotCiB2b2lkIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCgpCiB7CiAgICAgZmxpcElmTmVjZXNz
YXJ5KCk7CkBAIC00MzIsMzMgKzQyMiwzOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhckhhc0Fu
eU1hcmtlZCgpCiAKIHZvaWQgTWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KCkKIHsKLSAgICBo
YW5kbGUoKS5tX2FsbG9jYXRvci0+cmV0aXJlKCZoYW5kbGUoKSk7CisgICAgaGFuZGxlKCkuYWxs
b2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nUmV0aXJlZCgmaGFuZGxlKCksIHRy
dWUpOwogfQogCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Cit2b2lkIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21BbGxvY2F0b3IoKQoreworICAgIGlmICghbV9h
bGxvY2F0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2FsbG9jYXRvci0+cmVtb3Zl
QmxvY2sodGhpcyk7Cit9CiAKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Cit2b2lkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBz
aXplX3QgaW5kZXgpCit7CisgICAgQVNTRVJUKG1faW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKCFtX2FsbG9jYXRvcik7CisgICAgCisgICAg
bV9pbmRleCA9IGluZGV4OworICAgIG1fYWxsb2NhdG9yID0gYWxsb2NhdG9yOworfQogCi12b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTWFya2VkQmxvY2s6OkJsb2NrU3RhdGUg
YmxvY2tTdGF0ZSkKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9j
YXRvcigpCiB7Ci0gICAgc3dpdGNoIChibG9ja1N0YXRlKSB7Ci0gICAgY2FzZSBNYXJrZWRCbG9j
azo6TmV3OgotICAgICAgICBvdXQucHJpbnQoIk5ldyIpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBNYXJrZWRCbG9jazo6RnJlZUxpc3RlZDoKLSAgICAgICAgb3V0LnByaW50KCJGcmVlTGlz
dGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpBbGxvY2F0ZWQ6
Ci0gICAgICAgIG91dC5wcmludCgiQWxsb2NhdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6Ci0gICAgICAgIG91dC5wcmludCgiTWFya2VkIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICBmbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAKKyAgICBBU1NFUlQobV9pbmRleCAhPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQobV9hbGxvY2F0b3Ip
OworICAgIAorICAgIG1faW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
OworICAgIG1fYWxsb2NhdG9yID0gbnVsbHB0cjsKIH0KIAorfSAvLyBuYW1lc3BhY2UgSlNDCisK
IH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIwICs0NCw2IEBAIGNsYXNz
IE1hcmtlZEFsbG9jYXRvcjsKIHR5cGVkZWYgdWludHB0cl90IEJpdHM7CiB0eXBlZGVmIHVpbnQz
Ml90IEhlYXBWZXJzaW9uOwogCi0vLyBTZXQgdG8gbG9nIHN0YXRlIHRyYW5zaXRpb25zIG9mIGJs
b2Nrcy4KLSNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTlMgMAotCi0jaWYg
SEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTlMKLSNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tf
U1RBVEVfVFJBTlNJVElPTihoYW5kbGUpIGRvIHsgICAgICAgICAgICBcCi0gICAgICAgIGRhdGFM
b2dGKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICAgICAgIiVzOiVkICVzOiBibG9jayAlcyA9ICVwLCAlZFxuIiwgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgX19GVU5DVElPTl9fLCAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAjaGFuZGxlLCAmKGhhbmRsZSktPmJsb2NrKCks
IChoYW5kbGUpLT5tX3N0YXRlKTsgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQotI2Vsc2UKLSNk
ZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTihoYW5kbGUpICgodm9pZCkwKQot
I2VuZGlmCi0KIC8vIEEgbWFya2VkIGJsb2NrIGlzIGEgcGFnZS1hbGlnbmVkIGNvbnRhaW5lciBm
b3IgaGVhcC1hbGxvY2F0ZWQgb2JqZWN0cy4KIC8vIE9iamVjdHMgYXJlIGFsbG9jYXRlZCB3aXRo
aW4gY2VsbHMgb2YgdGhlIG1hcmtlZCBibG9jay4gRm9yIGEgZ2l2ZW4KIC8vIG1hcmtlZCBibG9j
aywgYWxsIGNlbGxzIGhhdmUgdGhlIHNhbWUgc2l6ZS4gT2JqZWN0cyBzbWFsbGVyIHRoYW4gdGhl
CkBAIC03Niw4ICs2Miw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEhh
bmRsZTsKIHB1YmxpYzoKLSAgICBlbnVtIEJsb2NrU3RhdGUgOiB1aW50OF90IHsgTmV3LCBGcmVl
TGlzdGVkLCBBbGxvY2F0ZWQsIE1hcmtlZCB9OwotICAgICAgICAKICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGF0b21TaXplID0gMTY7IC8vIGJ5dGVzCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBi
bG9ja1NpemUgPSAxNiAqIEtCOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tNYXNrID0g
fihibG9ja1NpemUgLSAxKTsgLy8gYmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCkBA
IC0xMzAsNiArMTE0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgVk0qIHZtKCkgY29uc3Q7CiAgICAg
ICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKICAgICAgICAgICAgIAorICAgICAgICAvLyBTd2VlcGlu
ZyBlbnN1cmVzIHRoYXQgZGVzdHJ1Y3RvcnMgZ2V0IGNhbGxlZCBhbmQgcmVtb3ZlcyB0aGUgYmxv
Y2sgZnJvbSB0aGUgc25hcHNob3QuCisgICAgICAgIC8vIFN3ZWVwaW5nIHRvIGZyZWUgbGlzdCBh
bHNvIHJlbW92ZXMgdGhlIGJsb2NrIGZyb20gdGhlIGVtcHR5IHNldCwgaWYgaXQgd2FzIGluIHRo
YXQgc2V0LgorICAgICAgICAvLyBOb3RlIHRoYXQgeW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQg
dGhlIGVtcHR5IGJpdCByZWZsZWN0cyByZWFsaXR5LiBJZiBpdCdzIG5vdCBzZXQKKyAgICAgICAg
Ly8gYW5kIHRoZSBibG9jayBpcyBmcmVzaGx5IGNyZWF0ZWQsIHRoZW4gd2UnbGwgbWFrZSB0aGUg
bWlzdGFrZSBvZiBydW5uaW5nIGRlc3RydWN0b3JzIGluCisgICAgICAgIC8vIHRoZSBibG9jay4g
SWYgaXQncyBub3Qgc2V0IGFuZCB0aGUgYmxvY2sgaGFzIG5vdGhpbmcgbWFya2VkLCB0aGVuIHdl
J2xsIG1ha2UgdGhlCisgICAgICAgIC8vIG1pc3Rha2Ugb2YgbWFraW5nIGEgcG9wIGZyZWVsaXN0
IHJhdGhlciB0aGFuIGEgYnVtcCBmcmVlbGlzdC4KICAgICAgICAgZW51bSBTd2VlcE1vZGUgeyBT
d2VlcE9ubHksIFN3ZWVwVG9GcmVlTGlzdCB9OwogICAgICAgICBGcmVlTGlzdCBzd2VlcChTd2Vl
cE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAKQEAgLTE3NCwxMSArMTY0LDcgQEAgcHVibGlj
OgogICAgICAgICAKICAgICAgICAgYm9vbCBoYXNBbnlOZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsg
cmV0dXJuICEhbV9uZXdseUFsbG9jYXRlZDsgfQogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wg
aXNBbGxvY2F0ZWQoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwotICAg
ICAgICBib29sIGlzRnJlZUxpc3RlZCgpIGNvbnN0OwogICAgICAgICBib29sIG5lZWRzU3dlZXBp
bmcoKSBjb25zdDsKLSAgICAgICAgdm9pZCB3aWxsUmVtb3ZlQmxvY2soKTsKIAogICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNv
bnN0IEZ1bmN0b3ImKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJh
dGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYpOwpAQCAtMTk1LDggKzE4
MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNPbkJsb2Nrc1RvU3dlZXAoKSBjb25zdCB7
IHJldHVybiBtX2lzT25CbG9ja3NUb1N3ZWVwOyB9CiAgICAgICAgIHZvaWQgc2V0SXNPbkJsb2Nr
c1RvU3dlZXAoYm9vbCB2YWx1ZSkgeyBtX2lzT25CbG9ja3NUb1N3ZWVwID0gdmFsdWU7IH0KICAg
ICAgICAgCi0gICAgICAgIEJsb2NrU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
OyB9Ci0gICAgICAgICAgICAKKyAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzRnJlZUxpc3RlZDsgfQorICAgICAgICAKKyAgICAgICAgc2l6ZV90IGluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCByZW1vdmVG
cm9tQWxsb2NhdG9yKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGRpZEFkZFRvQWxsb2NhdG9y
KE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBpbmRleCk7CisgICAgICAgIHZvaWQgZGlkUmVtb3Zl
RnJvbUFsbG9jYXRvcigpOworICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBIYW5kbGUo
SGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9y
QXR0cmlidXRlcyYsIHZvaWQqKTsKICAgICAgICAgICAgIApAQCAtMjA2LDE2ICsxOTksMjYgQEAg
cHVibGljOgogICAgICAgICBlbnVtIFNjcmliYmxlTW9kZSB7IERvbnRTY3JpYmJsZSwgU2NyaWJi
bGUgfTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUsIFNj
cmliYmxlTW9kZT4KLSAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3
ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICBGcmVlTGlzdCBzd2VlcEhl
bHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAgICAg
CisgICAgICAgIGVudW0gRW1wdHlNb2RlIHsgSXNFbXB0eSwgTm90RW1wdHkgfTsKKyAgICAgICAg
CisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1v
ZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQo
U3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCiAgICAgICAgIGVudW0gTmV3bHlBbGxv
Y2F0ZWRNb2RlIHsgSGFzTmV3bHlBbGxvY2F0ZWQsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQg
fTsKLSAgICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRlLCBTd2VlcE1vZGUs
IERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAg
ICAgIAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJi
bGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVy
U2VsZWN0U3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAorICAgICAg
ICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJs
ZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3BlY2lhbGl6ZWRT
d2VlcCgpOwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAg
ICAgICAgIHZvaWQgZm9yRWFjaEZyZWVDZWxsKGNvbnN0IEZyZWVMaXN0JiwgY29uc3QgRnVuYyYp
OwotICAgICAgICAgICAgCisgICAgICAgIAorICAgICAgICB2b2lkIHNldElzRnJlZUxpc3RlZCgp
OworICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9wcmV2OwogICAgICAg
ICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHQ7CiAgICAgICAgICAgICAKQEAgLTIyNSwxNiAr
MjI4LDE2IEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6Qml0bWFwPGF0
b21zUGVyQmxvY2s+PiBtX25ld2x5QWxsb2NhdGVkOwogICAgICAgICAgICAgCiAgICAgICAgIEFs
bG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwotICAgICAgICBCbG9ja1N0YXRlIG1fc3Rh
dGU7Ci0gICAgICAgIGJvb2wgbV9pc09uQmxvY2tzVG9Td2VlcCB7IGZhbHNlIH07CisgICAgICAg
IGJvb2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxzZSB9OwogICAgICAgICAgICAgCi0gICAgICAgIE1h
cmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9h
bGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsgc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsK
ICAgICAgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jazsKICAgICB9OwogICAg
ICAgICAKLSAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBN
YXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0
ZXMmKTsKKyAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBz
aXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKICAgICAgICAgCiAg
ICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBAIC0yNzUsNyArMjc4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAKICAgICBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247IH0KLSAgICAgICAg
CisgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1h
c2sgPSBhdG9tU2l6ZSAtIDE7CiAKQEAgLTQ5NCw2ICs0OTcsOCBAQCBpbmxpbmUgdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOCiAKIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmZsaXBGb3JFZGVuQ29sbGVjdGlvbigpCiB7CisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMg
dG8gZGllIQorICAgIAogICAgIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAgCiAgICAgSEVBUF9M
T0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKQEAgLTU3MiwyMSArNTc3LDEyIEBAIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHkKIGlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKICAgICBhc3Nl
cnRGbGlwcGVkKCk7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBBbGxvY2F0ZWQ6
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAgIHJldHVy
biBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0
ZWQoKSk7CiAKLSAgICBjYXNlIE5ldzoKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOwog
fQogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCkBAIC02
NTYsMjggKzY1MiwxMSBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5k
CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRzU3dlZXBpbmcoKSBjb25z
dAogeworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGRpZS4KICAgICBjb25zdF9jYXN0PE1h
cmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7CiAgICAgcmV0dXJu
IG1fc3RhdGUgPT0gTWFya2VkOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxl
Ojppc0FsbG9jYXRlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFu
ZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IEFs
bG9jYXRlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQo
KSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5m
bGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRnJlZUxpc3RlZCgpIGNvbnN0Ci17Ci0g
ICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2Fy
eSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IEZyZWVMaXN0ZWQ7Ci19Ci0KIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjpoYXNBbnlNYXJrZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2JpYXNl
ZE1hcmtDb3VudCAhPSBtX21hcmtDb3VudEJpYXM7CkBAIC03MTEsOCArNjkwLDYgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpNYXJrZQogICAgIHR5cGVkZWYgTWFya2VkQmxv
Y2tIYXNoIEhhc2g7CiB9OwogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
SlNDOjpNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiAj
ZW5kaWYgLy8gTWFya2VkQmxvY2tfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNiArMTk1LDE5
IEBAIE1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7
CisgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBwcmV2aW91cyA9IG51bGxwdHI7CisgICAgZm9y
RWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikg
LT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGlmIChwcmV2aW91cykgeworICAgICAg
ICAgICAgICAgIC8vIFdlIGNhbiBzZXQgdGhpcyBpbiBhbnkgb3JkZXIuIFRoZSBwb2ludCBpcyBq
dXN0IHRoYXQgd2Ugd2FudCB0byBiZSBhYmxlIHRvCisgICAgICAgICAgICAgICAgLy8gY3Vyc29y
IG92ZXIgYWxsb2NhdG9ycy4KKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc2V0TmV4dEFsbG9j
YXRvcihwcmV2aW91cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmV2aW91cyA9ICZh
bGxvY2F0b3I7CisgICAgICAgIH0pOworICAgIG1fZmlyc3RBbGxvY2F0b3IgPSBwcmV2aW91czsK
KyAgICBtX25leHRBbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBwcmV2aW91czsKIH0KIAog
TWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSgpCkBAIC0yOTQsMTYgKzMwNywxNiBAQCB2b2lkIE1h
cmtlZFNwYWNlOjp6b21iaWZ5U3dlZXAoKQogICAgICAgICB9KTsKIH0KIAotdm9pZCBNYXJrZWRT
cGFjZTo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxv
Y2F0aW9uKCkKIHsKICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAgICBbJl0gKE1hcmtlZEFs
bG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAgICAgICAgYWxs
b2NhdG9yLnJlc2V0KCk7CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlcGFyZUZvckFsbG9jYXRp
b24oKTsKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAg
ICAgICB9KTsKIAotICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHMuY2xlYXIoKTsKICAgICBtX2Fj
dGl2ZVdlYWtTZXRzLnRha2VGcm9tKG1fbmV3QWN0aXZlV2Vha1NldHMpOworICAgIAogICAgIGlm
IChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikKICAgICAg
ICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9sYXJnZUFsbG9j
YXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCkBAIC00MjcsMzkgKzQ0MCwyNiBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VB
bGxvY2F0aW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5j
bGVhck5ld2x5QWxsb2NhdGVkKCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgZm9yRWFj
aEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoIWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOwotICAgICAgICB9
KTsKLQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9j
YXRpb25zKQotICAgICAgICBBU1NFUlQoIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7
Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfQotCi0jaWZuZGVmIE5ERUJVRyAKLXN0cnVj
dCBWZXJpZnlNYXJrZWQgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgeyAKLSAgICB2b2lkIG9w
ZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBz
d2l0Y2ggKGJsb2NrLT5tX3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtl
ZDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KKyAgICBpZiAoIUFTU0VSVF9E
SVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+
Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAg
ICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMp
CisgICAgICAgICAgICBBU1NFUlQoIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7CiAg
ICAgfQotfTsgCi0jZW5kaWYgCit9CiAKLXZvaWQgTWFya2VkU3BhY2U6OmZsaXAoKQordm9pZCBN
YXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25J
blByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAg
ICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT5mbGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsKLSAg
ICB9IGVsc2UgeworICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxs
Q29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZd
IChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAg
ICAgICAgICAgICBhbGxvY2F0b3IuZmxpcEZvckZ1bGxDb2xsZWN0aW9uKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICB9KTsK
KwogICAgICAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbiA9IG1fdmVyc2lvbiArIDE7CiAgICAg
ICAgIGlmIChVTkxJS0VMWShuZXh0VmVyc2lvbiA9PSBpbml0aWFsVmVyc2lvbikpIHsKICAgICAg
ICAgICAgIC8vIE9oIG5vISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBm
bGlwcGluZyBhbGwgYmxvY2tzLiBUaGlzIGhhcHBlbnMKQEAgLTQ3NCwxMCArNDc0LDI3IEBAIHZv
aWQgTWFya2VkU3BhY2U6OmZsaXAoKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwog
ICAgIH0KIAotI2lmbmRlZiBOREVCVUcKLSAgICBWZXJpZnlNYXJrZWQgdmVyaWZ5RnVuY3RvcjsK
LSAgICBmb3JFYWNoQmxvY2sodmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0gKE1h
cmtlZEJsb2NrOjpoYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5u
ZWVkc0ZsaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
IEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0K
KyAgICAKKyAgICBtX2lzTWFya2luZyA9IHRydWU7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmVu
ZE1hcmtpbmcoKQoreworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBh
bGxvY2F0b3IuZW5kTWFya2luZygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1
czo6Q29udGludWU7CisgICAgICAgIH0pOworICAgIAorICAgIG1faXNNYXJraW5nID0gZmFsc2U7
CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OndpbGxTdGFydEl0ZXJhdGluZygpCkBAIC01NTMsNCAr
NTcwLDMwIEBAIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbG9jayhNYXIKICAgICB9
CiB9CiAKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZFNwYWNlOjpmaW5kRW1wdHlCbG9jaygp
Cit7CisgICAgZm9yICg7IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyBtX2FsbG9jYXRv
ckZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5uZXh0
QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0g
bV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPmZpbmRFbXB0eUJsb2NrKCkpCisgICAgICAg
ICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lk
IE1hcmtlZFNwYWNlOjpzbmFwc2hvdCgpCit7CisgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Q
cm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3Io
CisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRp
b25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFwc2hvdEZvckVkZW5Db2xs
ZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGlu
dWU7CisgICAgICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JFYWNoQWxsb2Nh
dG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRl
cmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RGb3JGdWxs
Q29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOworICAgICAgICAgICAgfSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24g
MjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICBTdWJzcGFjZSYgc3Vi
c3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBtX25vcm1hbFNwYWNl
OyB9CiAgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxpYXJ5RGF0YSgpIHsgcmV0dXJuIG1f
YXV4aWxpYXJ5U3BhY2U7IH0KICAgICAKLSAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAg
IHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIAogICAgIHZvaWQgdmlzaXRXZWFrU2V0cyhI
ZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lkIHJlYXBXZWFrU2V0cygpOwpAQCAtMTQ0LDcgKzE0
NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdChNYXJrZWRCbG9jazo6
SGFuZGxlKik7CiAgICAgdm9pZCBkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6OkhhbmRs
ZSopOwogCi0gICAgdm9pZCBmbGlwKCk7CisgICAgdm9pZCBiZWdpbk1hcmtpbmcoKTsKKyAgICB2
b2lkIGVuZE1hcmtpbmcoKTsKKyAgICB2b2lkIHNuYXBzaG90KCk7CiAgICAgdm9pZCBjbGVhck5l
d2x5QWxsb2NhdGVkKCk7CiAgICAgdm9pZCBzd2VlcCgpOwogICAgIHZvaWQgc3dlZXBMYXJnZUFs
bG9jYXRpb25zKCk7CkBAIC0xNjksMTMgKzE3MSwxNCBAQCBwdWJsaWM6CiAgICAgTGFyZ2VBbGxv
Y2F0aW9uKiogbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQ7IH0KICAgICB1bnNp
Z25lZCBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplKCkgY29uc3QgeyByZXR1
cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplOyB9CiAgICAgCisgICAg
TWFya2VkQWxsb2NhdG9yKiBmaXJzdEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RB
bGxvY2F0b3I7IH0KKyAgICBNYXJrZWRBbGxvY2F0b3IqIG5leHRBbGxvY2F0b3JGb3JFbXB0eUFs
bG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX25leHRBbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRp
b247IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9jaygpOwor
ICAgIAogICAgIC8vIFdoZW4gdGhpcyBpcyB0cnVlIGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSBmbGlw
cGVkIGJ1dCB0aGUgbWFyayBiaXRzIGhhdmVuJ3QgY29udmVyZ2VkIHlldC4KICAgICBib29sIGlz
TWFya2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNNYXJraW5nOyB9CiAgICAgCi0gICAgLy8gRklY
TUU6IEFmdGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1ODEs
IE1hcmtlZFNwYWNlIHdpbGwgY29udHJvbCB0aGlzCi0gICAgLy8gZmxhZyBkaXJlY3RseS4KLSAg
ICB2b2lkIHNldElzTWFya2luZyhib29sIHZhbHVlKSB7IG1faXNNYXJraW5nID0gdmFsdWU7IH0K
LQogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0yMDUsNyArMjA4LDYgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faXNJdGVyYXRpbmc7CiAgICAgYm9vbCBtX2lzTWFya2luZyB7IGZhbHNlIH07CiAgICAgTWFy
a2VkQmxvY2tTZXQgbV9ibG9ja3M7Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBt
X2Jsb2Nrc1dpdGhOZXdPYmplY3RzOwogICAgIFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiBtX2xh
cmdlQWxsb2NhdGlvbnM7CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9m
ZnNldCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlz
Q29sbGVjdGlvbiB7IDAgfTsKQEAgLTIxNSw2ICsyMTcsOSBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSB7IDAgfTsKICAgICBT
ZW50aW5lbExpbmtlZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+
IG1fYWN0aXZlV2Vha1NldHM7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2lj
UmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX25ld0FjdGl2ZVdlYWtTZXRzOworICAgIAorICAg
IE1hcmtlZEFsbG9jYXRvciogbV9maXJzdEFsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICBNYXJr
ZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0ciB9Owog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6
OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAJCTBGNDU3MDQzMUJFNUI1OEYwMDYy
QTYyOSAvKiBEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovOyB9
OwogCQkwRjQ1NzA0NTFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwNDQxQkU4MzQ0MTAwNjJB
NjI5IC8qIEJ1YmJsZVNvcnQuaCAqLzsgfTsKIAkJMEY3MjVDQUMxQzUwNDYxNjAwQUQ5NDNBIC8q
IFJhbmdlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLzsgfTsKKwkJMEY3QzVG
QjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8q
IEZhc3RCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyog
UGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi87IH07CiAJ
CTBGODI0QTY5MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQg
LyogUGFya2luZ0xvdC5oICovOyB9OwogCQkwRjg3MTA1QTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3
UG9pbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY4NzEwNTkxNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLzsgfTsKQEAgLTM2Niw2
ICszNjcsNyBAQAogCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb21pbmF0b3JzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1YmJsZVNvcnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdl
U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmdlU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0
Qml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RC
aXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2NDFCNzQ0
M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQYXJraW5nTG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFya2luZ0xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSYXdQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04ODAsNiArODgyLDcgQEAKIAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYg
LyogZHRvYS5oICovLAogCQkJCTFBRUE4OEUxMUQ2QkJDRjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRz
LmggKi8sCiAJCQkJQThBNDcyOUYxNTFBODI1QTAwNDEyM0ZGIC8qIEV4cG9ydE1hY3Jvcy5oICov
LAorCQkJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLywK
IAkJCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovLAogCQkJ
CUE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLywKIAkJCQlBOEE0
NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovLApAQCAtMTU5NCw2ICsxNTk3
LDcgQEAKIAkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4QTQ3M0VDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y0MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1i
ZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVF
MiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y3MTUxQTgy
NUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEE0NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgx
LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgRGF0YUxvZy5jcHAKICAgICBEYXRlTWF0aC5jcHAK
ICAgICBEZWNpbWFsTnVtYmVyLmNwcAorICAgIEZhc3RCaXRWZWN0b3IuY3BwCiAgICAgRmFzdE1h
bGxvYy5jcHAKICAgICBGaWxlUHJpbnRTdHJlYW0uY3BwCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVy
LmNwcApJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmFzdEJpdFZlY3Rvci5oIgorCituYW1lc3BhY2Ug
V1RGIHsKKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpzZXRFcXVhbHNTbG93KGNvbnN0
IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKQoreworICAgIHVpbnQzMl90KiBuZXdBcnJh
eSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhsZW5ndGgsIHNpemVvZih1aW50
MzJfdCkpKTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNp
emVvZih1aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRzKQorICAgICAgICBmYXN0RnJlZShtX3dv
cmRzKTsKKyAgICBtX3dvcmRzID0gbmV3QXJyYXk7CisgICAgbV9udW1CaXRzID0gb3RoZXIubV9u
dW1CaXRzOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93
bmVyOjpyZXNpemVTbG93KHNpemVfdCBudW1CaXRzKQoreworICAgIHNpemVfdCBvbGRMZW5ndGgg
PSBhcnJheUxlbmd0aCgpOworICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0Qml0VmVjdG9yQXJy
YXlMZW5ndGgobnVtQml0cyk7CisgICAgCisgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBv
ZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCisgICAgLy8gdXNlIGNh
c2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0aGUgYml0
dmVjdG9yLgorICAgIAorICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQz
Ml90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKKyAgICBtZW1j
cHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsK
KyAgICBpZiAobV93b3JkcykKKyAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7CisgICAgbV93b3Jk
cyA9IG5ld0FycmF5OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL1dU
Ri93dGYvRmFzdEJpdFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RC
aXRWZWN0b3IuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL1dURi93dGYvRmFzdEJpdFZl
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC05MSwxNyArOTIsMTMgQEAgcHVibGljOgogICAgIAog
ICAgIEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG9wZXJhdG9yPShjb25zdCBGYXN0Qml0VmVjdG9y
V29yZE93bmVyJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBvdGhlci5h
cnJheUxlbmd0aCgpOwotICAgICAgICBpZiAobGVuZ3RoID09IGFycmF5TGVuZ3RoKCkpIHsKKyAg
ICAgICAgaWYgKGFycmF5TGVuZ3RoKCkgIT0gb3RoZXIuYXJyYXlMZW5ndGgoKSkKKyAgICAgICAg
ICAgIHNldEVxdWFsc1Nsb3cob3RoZXIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIGEgbG9vcC4KICAgICAgICAgICAgIG1lbWNweShtX3dv
cmRzLCBvdGhlci5tX3dvcmRzLCBsZW5ndGggKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0
czsKICAgICAgICAgfQotICAgICAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdCo+KGZhc3RDYWxsb2MobGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7Ci0gICAgICAg
IG1lbWNweShuZXdBcnJheSwgb3RoZXIubV93b3JkcywgbGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90
KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAgICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7
Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsKLSAgICAgICAgbV9udW1CaXRzID0gb3RoZXIu
bV9udW1CaXRzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIApAQCAtMTQwLDE4
ICsxMzcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXNpemUoc2l6ZV90IG51bUJpdHMp
CiAgICAgewotICAgICAgICBpZiAobnVtQml0cyA9PSBtX251bUJpdHMpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIAotICAgICAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZh
c3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KLSAgICAgICAgLy8gdXNlIGNh
c2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0aGUgYml0
dmVjdG9yLgotICAgICAgICAKLSAgICAgICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0
b3JBcnJheUxlbmd0aChudW1CaXRzKTsKLSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90
KSkpOwotICAgICAgICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBz
aXplb2YodWludDMyX3QpKTsKLSAgICAgICAgaWYgKG1fd29yZHMpCi0gICAgICAgICAgICBmYXN0
RnJlZShtX3dvcmRzKTsKLSAgICAgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAgICAgICBpZiAo
YXJyYXlMZW5ndGgoKSAhPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cykpCisgICAg
ICAgICAgICByZXNpemVTbG93KG51bUJpdHMpOwogICAgICAgICBtX251bUJpdHMgPSBudW1CaXRz
OwogICAgIH0KICAgICAKQEAgLTE3MSw2ICsxNTgsOSBAQCBwdWJsaWM6CiAgICAgdWludDMyX3Qq
IHdvcmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQogCiBwcml2YXRlOgorICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHNldEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYg
b3RoZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2l6ZVNsb3coc2l6ZV90IG51
bUJpdHMpOworICAgIAogICAgIHVpbnQzMl90KiBtX3dvcmRzIHsgbnVsbHB0ciB9OwogICAgIHNp
emVfdCBtX251bUJpdHMgeyAwIH07CiB9OwpAQCAtMzIwLDYgKzMxMCwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0CisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IGFycmF5TGVuZ3RoKCk7IGlu
ZGV4LS07KSB7CisgICAgICAgICAgICBpZiAobV93b3Jkcy53b3JkKGluZGV4KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAgRmFzdEJp
dFZlY3RvckltcGw8RmFzdEJpdFZlY3RvckFuZFdvcmRzPHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlw
ZSwgdHlwZW5hbWUgT3RoZXJXb3Jkczo6Vmlld1R5cGU+PiBvcGVyYXRvciYoY29uc3QgRmFzdEJp
dFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTQ3MSw2ICs0
NzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fd29yZHMuY2xlYXJBbGwoKTsKICAgICB9CiAKKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnRzIG9mIHRoaXMgYml0dmVjdG9yIGNoYW5n
ZWQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KICAgICBib29sIHNldEFuZENo
ZWNrKGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKICAgICB7CkBA
IC01NTAsNiArNTUwLDI4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhdChpbmRl
eCk7CiAgICAgfQorICAgIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29udGVudHMgY2hh
bmdlZC4KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2soc2l6ZV90IGlu
ZGV4LCBib29sIHZhbHVlKQorICAgIHsKKyAgICAgICAgdWludDMyX3QqIHBvaW50ZXIgPSAmbV93
b3Jkcy53b3JkKGluZGV4ID4+IDUpOworICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoaW5k
ZXggJiAzMSk7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIHVpbnQzMl90IG9sZFZh
bHVlID0gKnBvaW50ZXI7CisgICAgICAgICAgICB1aW50MzJfdCBuZXdWYWx1ZTsKKyAgICAgICAg
ICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIChvbGRWYWx1ZSAmIG1hc2spCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBuZXdWYWx1
ZSA9IG9sZFZhbHVlIHwgbWFzazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWYgKCEob2xkVmFsdWUgJiBtYXNrKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUgJiB+bWFzazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3ZWFrQ29tcGFyZUFuZFN3YXAocG9pbnRlciwgb2xk
VmFsdWUsIG5ld1ZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288714</attachid>
            <date>2016-09-13 12:22:51 -0700</date>
            <delta_ts>2016-09-13 12:36:30 -0700</delta_ts>
            <desc>more things</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>68052</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTI2LDExICs1MjYsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgfQogICAgIAog
ICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAi
bV9vYmplY3RTcGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZmxpcCgp
OworICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29i
amVjdFNwYWNlLmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFy
a2luZygpOwogICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyh0cnVl
KTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCkBAIC03Nzks
NyArNzc3LDcgQEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAgICBBU1NFUlQobV9zaGFyZWRN
YXJrU3RhY2suaXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLnJlbW92
ZUFsbCgpOwogICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKGZhbHNlKTsKKyAg
ICBtX29iamVjdFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVjdENv
dW50KCkKQEAgLTkzOSw3ICs5MzcsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkK
ICAgICAgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNwYWNlLnNo
cmluaygpOwogICAgIH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBzaG90LmlzRW1wdHkoKSk7Cisg
ICAgbV9vYmplY3RTcGFjZS5hc3NlcnRTbmFwc2hvdEVtcHR5KCk7CiAKICAgICBzd2VlcEFsbExv
Z2ljYWxseUVtcHR5V2Vha0Jsb2NrcygpOwogfQpAQCAtMTA0OCw3ICsxMDQ2LDcgQEAgTkVWRVJf
SU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3JlbWVudGFs
U3dlZXBlcigpOwogICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3Mo
KTsKIAotICAgIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7
CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24o
Z2NTdGFydFRpbWUpOwogICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTE2Miw0NCAr
MTE2MCwxMCBAQCB2b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKICAgICBtX2FycmF5QnVm
ZmVycy5zd2VlcCgpOwogfQogCi1zdHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgOiBw
dWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBNYXJrZWRCbG9ja1NuYXBzaG90
RnVuY3RvcihWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBibG9ja3MpIAotICAgICAgICA6
IG1faW5kZXgoMCkgCi0gICAgICAgICwgbV9ibG9ja3MoYmxvY2tzKQotICAgIHsKLSAgICB9Ci0K
LSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0g
ICAgewotICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAg
IG1fYmxvY2tzW21faW5kZXgrK10gPSBibG9jazsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVGhp
cyBpcyBhIG11dGFibGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKLSAgICBt
dXRhYmxlIHNpemVfdCBtX2luZGV4OwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4m
IG1fYmxvY2tzOwotfTsKLQogdm9pZCBIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlKCkKIHsKICAg
ICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhpcywgIkhlYXA6OnNuYXBzaG90TWFya2VkU3Bh
Y2UiKTsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcmVuYW1lZC4gSXQn
cyBub3QgYWN0dWFsbHkgc25hcHNob3R0aW5nIGFsbCBvZiBNYXJrZWRTcGFjZS4KLSAgICAvLyBU
aGlzIGlzIHVzZWQgYnkgSW5jcmVtZW50YWxTd2VlcGVyLCBzbyBpdCBvbmx5IG5lZWRzIHRvIHNu
YXBzaG90IGJsb2Nrcy4gSG93ZXZlciwgaWYgd2UgZXZlcgotICAgIC8vIHdhbnRlZCB0byBhZGQg
b3RoZXIgc25hcHNob3R0aW5nIGxvZ2luLCB3ZSdkIHByb2JhYmx5IHB1dCBpdCBoZXJlLgotICAg
IAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAg
ICAgICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgOiBtX29iamVjdFNwYWNlLmJs
b2Nrc1dpdGhOZXdPYmplY3RzKCkpIHsKLSAgICAgICAgICAgIGlmIChoYW5kbGUtPmlzT25CbG9j
a3NUb1N3ZWVwKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX2Js
b2NrU25hcHNob3QuYXBwZW5kKGhhbmRsZSk7Ci0gICAgICAgICAgICBoYW5kbGUtPnNldElzT25C
bG9ja3NUb1N3ZWVwKHRydWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9i
bG9ja1NuYXBzaG90LnJlc2l6ZVRvRml0KG1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuc2l6
ZSgpKTsKLSAgICAgICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgZnVuY3RvcihtX2Jsb2Nr
U25hcHNob3QpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hCbG9jayhmdW5jdG9yKTsK
LSAgICB9CisgICAgbV9vYmplY3RTcGFjZS5zbmFwc2hvdCgpOwogfQogCiB2b2lkIEhlYXA6OmRl
bGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKQEAgLTEyMjIsOSArMTE4Niw5IEBAIHZvaWQgSGVh
cDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW4KICAgICBtX2NvZGVCbG9ja3MtPndyaXRl
QmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhpcyk7CiB9CiAKLXZvaWQgSGVh
cDo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQog
ewotICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3JzKCk7CisgICAgbV9vYmplY3RTcGFj
ZS5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogfQogCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRp
b25MaW1pdHMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjA1
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzMsNyArMzMzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZVNvdXJjZVByb3Zp
ZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB2
b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKLSAgICB2b2lk
IHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAg
ICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAgIHZvaWQgZmluYWxpemVVbmNvbmRp
dGlvbmFsRmluYWxpemVycygpOwogICAgIHZvaWQgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVzKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxMyArMTI3LDE0
IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3ZWVwKGRvdWJsZSAKIAogYm9vbCBJbmNy
ZW1lbnRhbFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKCkKIHsKLSAgICB3aGlsZSAoIW1fYmxvY2tz
VG9Td2VlcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sg
PSBtX2Jsb2Nrc1RvU3dlZXAudGFrZUxhc3QoKTsKLSAgICAgICAgYmxvY2stPnNldElzT25CbG9j
a3NUb1N3ZWVwKGZhbHNlKTsKLQotICAgICAgICBpZiAoIWJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
ID0gbnVsbHB0cjsKKyAgICAKKyAgICBmb3IgKDsgbV9jdXJyZW50QWxsb2NhdG9yOyBtX2N1cnJl
bnRBbGxvY2F0b3IgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPm5leHRBbGxvY2F0b3IoKSkgeworICAg
ICAgICBpZiAoYmxvY2sgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPmZpbmRCbG9ja1RvU3dlZXAoKSkK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoYmxvY2spIHsKICAgICAg
ICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKG1fdm0tPmhlYXApOwogICAgICAgICBibG9jay0+
c3dlZXAoKTsKICAgICAgICAgbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZyZWVPclNocmlua0Js
b2NrKGJsb2NrKTsKQEAgLTE0NiwxMSArMTQ3LDEyIEBAIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVy
Ojpzd2VlcE5leHRCbG9jaygKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5n
KCkKIHsKICAgICBzY2hlZHVsZVRpbWVyKCk7CisgICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbV92
bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZpcnN0QWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQgSW5jcmVt
ZW50YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dlZXBpbmcoKQogewotICAgIG1fYmxvY2tzVG9Td2Vl
cC5jbGVhcigpOworICAgIG1fY3VycmVudEFsbG9jYXRvciA9IG51bGxwdHI7CiAgICAgaWYgKG1f
dm0pCiAgICAgICAgIGNhbmNlbFRpbWVyKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24gMjA1ODU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDEzICsyNywxMiBAQAogI2RlZmluZSBJbmNyZW1lbnRhbFN3ZWVwZXJfaAog
CiAjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCi0jaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwotY2xh
c3MgTWFya2VkQmxvY2s7CitjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAKIGNsYXNzIEluY3JlbWVu
dGFsU3dlZXBlciA6IHB1YmxpYyBIZWFwVGltZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtNTYsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVUaW1lcigp
OwogICAgIHZvaWQgY2FuY2VsVGltZXIoKTsKICAgICAKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6
OkhhbmRsZSo+JiBtX2Jsb2Nrc1RvU3dlZXA7CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2N1cnJl
bnRBbGxvY2F0b3I7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDUwICsxMDAsNzcgQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1Rv
U3dlZQogICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IGZpbHRlck5leHRCbG9jayhibG9jayk7CiB9
CiAKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmluZEVtcHR5QmxvY2so
KQoreworICAgIG1fZW1wdHlDdXJzb3IgPSBtX2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1cnNvciwg
dHJ1ZSk7CisgICAgaWYgKG1fZW1wdHlDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV9lbXB0eUN1cnNvcl07Cit9
CisKIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0lt
cGwoKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsK
ICAgICAKLSAgICBpZiAobV9jdXJyZW50QmxvY2spIHsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVu
dEJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCk7CisgICAgaWYgKG1fY3VycmVudEJsb2NrKQog
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7Ci0gICAgICAgIHNl
dE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAgfQogICAgIAog
ICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQobV9uZXh0
QmxvY2tUb1N3ZWVwICE9IG1fYmxvY2tMaXN0LmVuZCgpKTsKLQotICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiYgYmxvY2sgPSBtX25l
eHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgbmV4dCA9IGZp
bHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAgICAvLyBJdCB3b3VsZCBiZSBz
dXBlciB3ZWlyZCBpZiB0aGUgYmxvY2tzIHdlIGFyZSBzd2VlcGluZyBoYXZlIGFueXRoaW5nIGFs
bG9jYXRlZCBkdXJpbmcgdGhpcwotICAgICAgICAvLyBjeWNsZS4KLSAgICAgICAgQVNTRVJUKCFi
bG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAgIAotICAgICAgICBGcmVlTGlz
dCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJl
ZUxpc3QpOworICAgIG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsKKyAgICAKKyAgICBmb3IgKDs7
KSB7CisgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IG1fY2FuQWxsb2NhdGUuZmluZEJpdCht
X2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOworICAgICAgICBpZiAobV9hbGxvY2F0aW9uQ3Vyc29y
ID49IG1fYmxvY2tzLnNpemUoKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAg
ICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGUtZnVsbCBibG9jay4g
TWFya2luZyB0cmllcyB0byByZXRpcmUgdGhlc2UsIGJ1dAotICAgICAgICAvLyB0aGF0IGFsZ29y
aXRobSBpcyByYWN5IGFuZCBtYXkgZm9yZ2V0IHRvIGRvIGl0IHNvbWV0aW1lcy4KLSAgICAgICAg
aWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
YmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKLSAgICAgICAgICAgIGJsb2NrLT51bnN3ZWVwV2l0aE5v
TmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNNYXJrZWQoKSk7
Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KKyAgICAgICAgc2V0SXNDYW5BbGxvY2F0ZShtX2FsbG9jYXRpb25DdXJzb3IsIGZhbHNl
KTsKIAotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOwotICAgICAgICBzZXRGcmVlTGlz
dChmcmVlTGlzdCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBpZiAodm9pZCogcmVzdWx0ID0g
dHJ5QWxsb2NhdGVJbihtX2Jsb2Nrc1ttX2FsbG9jYXRpb25DdXJzb3JdKSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmICghbV9mcmVlTGlzdCkgewotICAg
ICAgICBtX2N1cnJlbnRCbG9jayA9IDA7Ci0gICAgICAgIHJldHVybiAwOworICAgIGlmIChNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGZpbmRFbXB0eUJsb2NrKCkpCisgICAgICAgIHJldHVy
biBhbGxvY2F0ZUluKGJsb2NrKTsKKyAgICAKKyAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2sgPSBtX21hcmtlZFNwYWNlLT5maW5kRW1wdHlCbG9jaygpKSB7CisgICAgICAgIGJsb2Nr
LT5zd2VlcCgpOworICAgICAgICBibG9jay0+cmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAg
ICBhZGRCbG9jayhibG9jayk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZUluKGJsb2NrKTsKICAg
ICB9CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CiAKK3ZvaWQqIE1hcmtlZEFsbG9jYXRv
cjo6YWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK3sKKyAgICB2b2lkKiBy
ZXN1bHQgPSB0cnlBbGxvY2F0ZUluKGJsb2NrKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxs
b2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK3sKKyAgICBBU1NFUlQoYmxvY2sp
OworICAgIEFTU0VSVCghYmxvY2stPmhhc0FueU5ld2x5QWxsb2NhdGVkKCkpOworICAgIEFTU0VS
VCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAKKyAgICBGcmVlTGlzdCBmcmVlTGlzdCA9
IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOworICAg
IAorICAgIC8vIEl0J3MgcG9zc2libGUgdG8gc3R1bWJsZSBvbiBhIGNvbXBsZXRlbHkgZnVsbCBi
bG9jay4gTWFya2luZyB0cmllcyB0byByZXRpcmUgdGhlc2UsIGJ1dAorICAgIC8vIHRoYXQgYWxn
b3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8gaXQgc29tZXRpbWVzLgorICAgIGlm
IChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSkgeworICAgICAgICBBU1NFUlQoYmxvY2st
PmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgYmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9j
YXRlZCgpOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgICAg
IEFTU0VSVCghaXNFbXB0eShibG9jaykpOworICAgICAgICBBU1NFUlQoIWlzQ2FuQWxsb2NhdGUo
YmxvY2spKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAorICAgIG1fY3Vy
cmVudEJsb2NrID0gYmxvY2s7CisgICAgc2V0RnJlZUxpc3QoZnJlZUxpc3QpOworICAgIAogICAg
IHZvaWQqIHJlc3VsdDsKICAgICBpZiAobV9mcmVlTGlzdC5yZW1haW5pbmcpIHsKICAgICAgICAg
dW5zaWduZWQgY2VsbFNpemUgPSBtX2NlbGxTaXplOwpAQCAtMTU1LDYgKzE4Miw3IEBAIHZvaWQq
IE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3UKICAgICAgICAgcmVzdWx0ID0gaGVh
ZDsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICBzZXRJc0VkZW4obV9j
dXJyZW50QmxvY2ssIHRydWUpOwogICAgIG1fbWFya2VkU3BhY2UtPmRpZEFsbG9jYXRlSW5CbG9j
ayhtX2N1cnJlbnRCbG9jayk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIyNyw4ICsyNTUs
NyBAQCB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2VJCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgYWRkQmxvY2soYmxvY2spOwotICAgICAgICAK
LSAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CisgICAgcmVzdWx0
ID0gYWxsb2NhdGVJbihibG9jayk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KQEAgLTI0OSwzMCArMjc2LDY4IEBAIHNpemVfdCBNYXJrZWRBbGxvY2F0b3I6OmJs
b2NrU2l6ZUZvckJ5dGUKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5
QWxsb2NhdGVCbG9jaygpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOwotICAgIHJldHVybiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIHRo
aXMsIG1fY2VsbFNpemUsIG1fYXR0cmlidXRlcyk7CisgICAgCisgICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9oZWFwLCBtX2NlbGxTaXpl
LCBtX2F0dHJpYnV0ZXMpOworICAgIGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAKKyAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRCbG9jayhoYW5kbGUpOworICAgIAor
ICAgIHJldHVybiBoYW5kbGU7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayhN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIHsKLSAgICBBU1NFUlQoIW1fY3VycmVudEJsb2Nr
KTsKLSAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOworICAgIHNpemVfdCBpbmRleDsKKyAgICBpZiAo
bV9mcmVlQmxvY2tJbmRpY2VzLmlzRW1wdHkoKSkgeworICAgICAgICBpbmRleCA9IG1fYmxvY2tz
LnNpemUoKTsKKworICAgICAgICBzaXplX3Qgb2xkQ2FwYWNpdHkgPSBtX2Jsb2Nrcy5jYXBhY2l0
eSgpOworICAgICAgICBtX2Jsb2Nrcy5hcHBlbmQoaGFuZGxlKTsKKyAgICAgICAgaWYgKG1fYmxv
Y2tzLmNhcGFjaXR5KCkgIT0gb2xkQ2FwYWNpdHkpIHsKKyAgICAgICAgICAgIGZvckVhY2hCaXRW
ZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHZlY3Rvci5udW1CaXRzKCkgPT0gb2xkQ2FwYWNpdHkp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQo
bV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9sZENhcGFjaXR5KTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0
b3ImIHZlY3RvcikgeworICAgICAgICAgICAgICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tz
LmNhcGFjaXR5KCkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaW5kZXggPSBtX2ZyZWVCbG9ja0luZGljZXMudGFrZUxhc3QoKTsKKyAgICAg
ICAgQVNTRVJUKCFtX2Jsb2Nrc1tpbmRleF0pOworICAgICAgICBtX2Jsb2Nrc1tpbmRleF0gPSBo
YW5kbGU7CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAo
RmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICBBU1NFUlQoIXZlY3RvcltpbmRl
eF0pOworICAgICAgICB9KTsKKworICAgIGhhbmRsZS0+ZGlkQWRkVG9BbGxvY2F0b3IodGhpcywg
aW5kZXgpOwogICAgIAotICAgIG1fYmxvY2tMaXN0LmFwcGVuZChibG9jayk7Ci0gICAgc2V0TmV4
dEJsb2NrVG9Td2VlcChibG9jayk7Ci0gICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soYmxv
Y2spOworICAgIHNldElzTGl2ZShpbmRleCwgdHJ1ZSk7CisgICAgc2V0SXNFbXB0eShpbmRleCwg
dHJ1ZSk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9jayhNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jaykKIHsKLSAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gYmxvY2spIHsK
LSAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2sobV9jdXJyZW50QmxvY2st
Pm5leHQoKSk7Ci0gICAgICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotICAgIH0KLSAgICBp
ZiAobV9uZXh0QmxvY2tUb1N3ZWVwID09IGJsb2NrKQotICAgICAgICBzZXROZXh0QmxvY2tUb1N3
ZWVwKG1fbmV4dEJsb2NrVG9Td2VlcC0+bmV4dCgpKTsKKyAgICBBU1NFUlQoYmxvY2stPmFsbG9j
YXRvcigpID09IHRoaXMpOworICAgIEFTU0VSVChtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPT0g
YmxvY2spOwogCi0gICAgYmxvY2stPndpbGxSZW1vdmVCbG9jaygpOwotICAgIG1fYmxvY2tMaXN0
LnJlbW92ZShibG9jayk7CisgICAgbV9ibG9ja3NbYmxvY2stPmluZGV4KCldID0gbnVsbHB0cjsK
KyAgICBtX2ZyZWVCbG9ja0luZGljZXMuYXBwZW5kKGJsb2NrLT5pbmRleCgpKTsKKyAgICAKKyAg
ICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rvcikg
eworICAgICAgICAgICAgdmVjdG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOworICAgICAgICB9
KTsKKyAgICAKKyAgICBibG9jay0+ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogfQogCiB2b2lk
IE1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcoKQpAQCAtMjkyLDIzICszNTcsMjAgQEAg
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKICAgICBtX2ZyZWVMaXN0ID0g
RnJlZUxpc3QoKTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3ZvaWQgTWFy
a2VkQWxsb2NhdG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9sYXN0QWN0aXZl
QmxvY2sgPSAwOwotICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICBtX2xhc3RBY3RpdmVCbG9j
ayA9IG51bGxwdHI7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogICAgIHNldEZyZWVM
aXN0KEZyZWVMaXN0KCkpOwogCi0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2Jsb2NrTGlzdC5i
ZWdpbigpKTsKKyAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSAwOworICAgIG1fZW1wdHlDdXJzb3Ig
PSAwOworICAgIG1fc25hcHNob3RDdXJzb3IgPSAwOworICAgIAorICAgIG1fZWRlbi5jbGVhckFs
bCgpOwogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUltbW9ydGFsT2JqZWN0cygpKSkg
ewotICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBuZXh0OwotICAgICAgICBmb3IgKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqJiBibG9jayA9IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2Nr
ID0gbmV4dCkgewotICAgICAgICAgICAgbmV4dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4
dCgpKTsKLQotICAgICAgICAgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFy
a2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgICAgIGJsb2NrLT56
YXAoZnJlZUxpc3QpOwotICAgICAgICAgICAgcmV0aXJlKGJsb2NrKTsKLSAgICAgICAgfQorICAg
ICAgICAvLyBGSVhNRTogVGhpbmdzPwogICAgIH0KIH0KIApAQCAtMzI2LDQgKzM4OCw4MCBAQCB2
b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0RnJlZUxpc3QoY29uc3QgCiAgICAgbV9mcmVlTGlzdCA9
IGZyZWVMaXN0OwogfQogCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZygp
Cit7CisgICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5yZXN1bWVBbGxvY2F0aW5nKCk7CisgICAg
bV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVCbG9jazsKKyAgICBtX2xhc3RBY3RpdmVCbG9j
ayA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpiZWdpbk1hcmtpbmdGb3JG
dWxsQ29sbGVjdGlvbigpCit7CisgICAgLy8gTWFyayBiaXRzIGFyZSBzdGlja3kgYW5kIHNvIGlz
IG91ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25seSBjbGVhciB0aGVzZSBkdXJpbmcgZnVs
bAorICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ugc3Vydml2ZWQgdGhlIGxhc3QgY29sbGVj
dGlvbiB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9uZSBzbyBsb25nCisgICAgLy8gYXMgdGhl
IG5leHQgb25lIGlzIGVkZW4uCisgICAgbV9tYXJraW5nTm90RW1wdHkuY2xlYXJBbGwoKTsKKyAg
ICBtX21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9y
OjplbmRNYXJraW5nKCkKK3sKKyAgICBtX2FsbG9jYXRlZC5jbGVhcigpOworICAgIAorICAgIC8v
IEl0J3Mgc3VycHJpc2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8gY29tcHJlaGVuZCwgYnV0IHRoZSBl
bmQtb2YtbWFya2luZyBmbGlwIGRvZXMgbm90IG5lZWQgdG8KKyAgICAvLyBrbm93IHdoYXQga2lu
ZCBvZiBjb2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3dsZWRnZSBpcyBhbHJlYWR5IGVuY29kZWQg
aW4gdGhlIG1fbWFya2luZ1hZWgorICAgIC8vIHZlY3RvcnMuCisgICAgCisgICAgaWYgKG5lZWRz
RGVzdHJ1Y3Rpb24oKSkgeworICAgICAgICAvLyBJZiBibG9ja3MgbmVlZCBkZXN0cnVjdGlvbiB0
aGVuIG5vdGhpbmcgaXMgZW1wdHkhIFRoaXMgaXMgYSBjb3JyZWN0IGFzc2VydGlvbiBidXQgbWF5
CisgICAgICAgIC8vIGJlY29tZSB3cm9uZyBvbmNlIHdlIGdvIGZ1bGwgY29uY3VycmVudDogd2hl
biB3ZSBjcmVhdGUgYSBuZXcgYmxvY2ssIGl0IHdpbGwgZmxpY2tlcgorICAgICAgICAvLyBpbnRv
IHRoZSBlbXB0eSBzZXQgZm9yIGEgdGlueSBtb21lbnQuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGlz
IGNvZGUgaXMgbGlrZWx5IHRvIGJlIHJ1bgorICAgICAgICAvLyBpbiBzdG9wVGhlV29ybGQuCisg
ICAgICAgIEFTU0VSVChtX2VtcHR5LmlzRW1wdHkoKSk7CisgICAgICAgIG1fY2FuQWxsb2NhdGUg
PSBtX2xpdmUgJiB+bV9tYXJraW5nUmV0aXJlZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBtX2VtcHR5ID0gbV9saXZlICYgfm1fbWFya2luZ05vdEVtcHR5OworICAgIG1fY2Fu
QWxsb2NhdGUgPSBtX2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVk
OworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RGb3JFZGVuQ29sbGVjdGlvbigp
Cit7CisgICAgbV9zbmFwc2hvdCB8PSBtX2VkZW47Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9y
OjpzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICBtX3NuYXBzaG90IHw9IG1fbGl2
ZTsKK30KKworTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaW5kQmxvY2tU
b1N3ZWVwKCkKK3sKKyAgICBtX3NuYXBzaG90Q3Vyc29yID0gbV9zbmFwc2hvdC5maW5kQml0KG1f
c25hcHNob3RDdXJzb3IsIHRydWUpOworICAgIGlmIChtX3NuYXBzaG90Q3Vyc29yID49IG1fYmxv
Y2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYmxvY2tz
W21fc25hcHNob3RDdXJzb3JdOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3dlZXAoKQor
eworICAgIG1fc25hcHNob3QuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5k
ZXgpIHsKKyAgICAgICAgICAgIG1fYmxvY2tzW2luZGV4XS0+c3dlZXAoKTsKKyAgICAgICAgfSk7
Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzaHJpbmsoKQoreworICAgIG1fZW1wdHkuZm9y
RWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1f
bWFya2VkU3BhY2UtPmZyZWVCbG9jayhibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgfSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDc3IEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBNYXJrZWRTcGFjZTsKIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAorI2RlZmluZSBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChtYWNy
bykgXAorICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0
aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCisgICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cyBhbmQgbm90aGlu
ZyB0byBkZXN0cm95LiAqLyBcCisgICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRo
ZSBzZXQgb2YgYWxsYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAg
ICBtYWNybyhjYW5BbGxvY2F0ZSwgQ2FuQWxsb2NhdGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2Nr
cyB0aGF0IGNhbiBiZSBhbGxvY2F0ZWQgaW4gcmlnaHQgbm93LiAqLyBcCisgICAgbWFjcm8oZWRl
biwgRWRlbikgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBz
aW5jZSB0aGUgbGFzdCBHQy4gKi9cCisgICAgbWFjcm8oc25hcHNob3QsIFNuYXBzaG90KSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50
YWwgc3dlZXBlci4gKi9cCisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcg
bWFya2luZy4gKi9cCisgICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkp
IC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBt
YWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLworCisvLyBOb3RlIHRoYXQgdGhpcyBjb2xsZWN0b3Ig
c3VwcG9ydHMgb3ZlcmxhcHBpbmcgYWxsb2NhdG9yIHN0YXRlIHdpdGggbWFya2luZyBzdGF0ZSwg
c2luY2UgaW4gYQorLy8gY29uY3VycmVudCBjb2xsZWN0b3IgeW91IGFsbG93IGFsbG9jYXRpb24g
d2hpbGUgbWFya2luZyBpcyBydW5uaW5nLiBTbyBpdCdzIGJlc3QgdG8gdmlzdWFsaXplIGEKKy8v
IGZ1bGwgbXV0YWJsZS0+ZWRlbiBjb2xsZWN0LT5tdXRhdGUtPmZ1bGwgY29sbGVjdCBjeWNsZSBh
bmQgc2VlIGhvdyB0aGUgYml0cyBhYm92ZSBnZXQgYWZmZWN0ZWQuCisvLyBUaGUgZXhhbXBsZSBi
ZWxvdyB0cmllcyB0byBiZSBleGhhdXN0aXZlIGFib3V0IHdoYXQgaGFwcGVucyB0byB0aGUgYml0
cywgYnV0IG9taXRzIGEgbG90IG9mCisvLyB0aGluZ3MgdGhhdCBoYXBwZW4gdG8gb3RoZXIgc3Rh
dGUuCisvLworLy8gQ3JlYXRlIGFsbG9jYXRvcgorLy8gLSBhbGwgYml0cyBhcmUgZW1wdHkKKy8v
IFN0YXJ0IGFsbG9jYXRpbmcgaW4gc29tZSBibG9jaworLy8gLSBhbGxvY2F0ZSB0aGUgYmxvY2sg
YW5kIHNldCB0aGUgbGl2ZSBiaXQuCisvLyAtIHRoZSBlbXB0eSBiaXQgZm9yIHRoZSBibG9jayBm
bGlja2VycyBvbiBhbmQgdGhlbiBnZXRzIGltbWVkaWF0ZWx5IGNsZWFyZWQgYnkgc3dlZXBpbmcu
CisvLyAtIHNldCB0aGUgZWRlbiBiaXQuCisvLyBGaW5pc2ggYWxsb2NhdGluZyBpbiB0aGF0IGJs
b2NrCisvLyAtIHNldCB0aGUgYWxsb2NhdGVkIGJpdC4KKy8vIERvIHRoYXQgdG8gYSBsb3Qgb2Yg
YmxvY2tzIGFuZCB0aGVuIHN0YXJ0IGFuIGVkZW4gY29sbGVjdGlvbi4KKy8vIC0gYmVnaW5NYXJr
aW5nKCkgaGFzIG5vdGhpbmcgdG8gZG8uCisvLyAtIGJ5IGRlZmF1bHQgd2UgaGF2ZSBjbGVhciBt
YXJraW5nTm90RW1wdHkvbWFya2luZ1JldGlyZWQgYml0cy4KKy8vIC0gbWFya2luZyBidWlsZHMg
dXAgbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIGJpdHMuCisvLyBXZSBkbyBlbmRNYXJr
aW5nKCkKKy8vIC0gY2xlYXIgYWxsIGFsbG9jYXRlZCBiaXRzLgorLy8gLSBmb3IgZGVzdHJ1Y3Rv
ciBibG9ja3M6IGNhbkFsbG9jYXRlID0gbGl2ZSAmIH5tYXJraW5nUmV0aXJlZAorLy8gLSBmb3Ig
bm9uLWRlc3RydWN0b3IgYmxvY2tzOgorLy8gICAgICAgZW1wdHkgPSBsaXZlICYgfm1hcmtpbmdO
b3RFbXB0eQorLy8gICAgICAgY2FuQWxsb2NhdGUgPSBsaXZlICYgbWFya2luZ05vdEVtcHR5ICYg
fm1hcmtpbmdSZXRpcmVkCisvLyBTbmFwc2hvdHRpbmcuCisvLyAtIHNuYXBzaG90IHw9IGVkZW4K
Ky8vIFByZXBhcmUgZm9yIGFsbG9jYXRpb24uCisvLyAtIGNsZWFyIGVkZW4KKy8vIEZpbmlzaCBj
b2xsZWN0aW9uLgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9jayB0aGF0IGhhZCBzb21lIGZyZWUg
YW5kIHNvbWUgbGl2ZSBvYmplY3RzLgorLy8gLSBjbGVhciB0aGUgY2FuQWxsb2NhdGUgYml0Cisv
LyAtIGNsZWFyIHRoZSBzbmFwc2hvdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdAorLy8gRmlu
aXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBBbGxvY2F0ZSBpbiBz
b21lIGJsb2NrIHRoYXQgd2FzIGNvbXBsZXRlbHkgZW1wdHkuCisvLyAtIGNsZWFyIHRoZSBlbXB0
eSBiaXQKKy8vIC0gY2xlYXIgdGhlIHNuYXBzaG90IGJpdAorLy8gLSBzZXQgdGhlIGVkZW4gYml0
LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBBbGxv
Y2F0ZSBpbiBzb21lIGJsb2NrIHRoYXQgd2FzIGNvbXBsZXRlbHkgZW1wdHkgaW4gYW5vdGhlciBh
bGxvY2F0b3IuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSBiaXQKKy8vIC0gY2xlYXIgYWxsIGJpdHMg
aW4gdGhhdCBhbGxvY2F0b3IKKy8vIC0gc2V0IHRoZSBsaXZlIGJpdCBpbiBhbm90aGVyIGFsbG9j
YXRvciBhbmQgdGhlIGVtcHR5IGJpdC4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5LCBzbmFwc2hvdCBi
aXRzLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0
aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBTdGFydCBhIGZ1bGwgY29sbGVjdGlvbi4KKy8vIC0gYmVn
aW5NYXJraW5nKCkgY2xlYXJzIG1hcmtpbmdOb3RFbXB0eSwgbWFya2luZ1JldGlyZWQKKy8vIC0g
dGhlIGhlYXAgdmVyc2lvbiBpcyBpbmNyZW1lbnRlZAorLy8gLSBtYXJraW5nIHJlYnVpbGRzIG1h
cmtpbmdOb3RFbXB0eS9tYXJraW5ncmV0aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygp
CisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gc2V0IGNhbkFsbG9jYXRlL2Vt
cHR5IHRoZSBzYW1lIHdheSBhcyBpbiBlZGVuIGNvbGxlY3Rpb24uCisvLyBTbmFwc2hvdHRpbmcu
CisvLyAtIHNuYXBzaG90IHw9IGxpdmUKKy8vIHByZXBhcmUgZm9yIGFsbG9jYXRpb24uCisvLyAt
IGNsZWFyIGVkZW4uCisvLyBGaW5pc2ggY29sbGVjdGlvbi4KKwogY2xhc3MgTWFya2VkQWxsb2Nh
dG9yIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCkBAIC00Niw5
ICsxMTcsMTUgQEAgcHVibGljOgogCiAgICAgTWFya2VkQWxsb2NhdG9yKEhlYXAqLCBNYXJrZWRT
cGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwogICAg
IHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKLSAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9p
ZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKICAg
ICB2b2lkIHJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZ0ZvckZ1bGxD
b2xsZWN0aW9uKCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdEZv
ckVkZW5Db2xsZWN0aW9uKCk7CisgICAgdm9pZCBzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKCk7
CisgICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc2hyaW5rKCk7CiAgICAgc2l6ZV90IGNlbGxT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsU2l6ZTsgfQogICAgIGNvbnN0IEFsbG9jYXRvckF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KICAg
ICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVz
dHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQpAQCAtNzIsNiArMTQ5LDM0IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBzdGF0
aWMgc2l6ZV90IGJsb2NrU2l6ZUZvckJ5dGVzKHNpemVfdCk7CisgICAgCisjZGVmaW5lIE1BUktF
RF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAg
ICAgXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCB7
IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNh
cGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBp
cyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+aW5kZXgoKSk7IH0gXAorICAgIHZvaWQgc2V0SXMg
IyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IG1fICMjIGxvd2Vy
Qml0TmFtZVtpbmRleF0gPSB2YWx1ZTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0
TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJcyAjIyBj
YXBpdGFsQml0TmFtZShibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgYm9vbCBhdG9taWNT
ZXRBbmRDaGVja0lzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkg
eyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lLmF0b21pY1NldEFuZENoZWNrKGluZGV4LCB2YWx1
ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFsQml0TmFtZShN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93
ZXJCaXROYW1lLmF0b21pY1NldEFuZENoZWNrKGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0KKyAg
ICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NF
U1NPUlMpCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTCisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihjb25zdCBGdW5j
JiBmdW5jKQorICAgIHsKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sobG93
ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0
TmFtZSk7CisgICAgICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExP
Q0FUT1JfQklUX0NBTExCQUNLKTsKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFD
SworICAgIH0KKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG5leHRBbGxvY2F0b3IoKSBjb25z
dCB7IHJldHVybiBtX25leHRBbGxvY2F0b3I7IH0KKyAgICAKKyAgICAvLyBNYXJrZWRTcGFjZSBj
YWxscyB0aGlzIGR1cmluZyBpbml0LgorICAgIHZvaWQgc2V0TmV4dEFsbG9jYXRvcihNYXJrZWRB
bGxvY2F0b3IqIGFsbG9jYXRvcikgeyBtX25leHRBbGxvY2F0b3IgPSBhbGxvY2F0b3I7IH0KKyAg
ICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9jaygpOworICAgIAorICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9ja1RvU3dlZXAoKTsKICAgIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CkBAIC04Miw2ICsxODcsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgdm9pZCog
dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwoKTsKICAgICBNYXJrZWRCbG9jazo6SGFu
ZGxlKiB0cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAgdm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jazo6
SGFuZGxlKik7CisgICAgdm9pZCByZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7Cisg
ICAgdm9pZCogdHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7CisgICAgdm9pZCog
YWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoKTsKICAgICB2b2lkIHJldGlyZShNYXJrZWRCbG9j
azo6SGFuZGxlKik7CiAgICAgCkBAIC05MSwxNiArMjAwLDMwIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXROZXh0QmxvY2tUb1N3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKICAgICBG
cmVlTGlzdCBtX2ZyZWVMaXN0OworICAgIAorICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxl
Kj4gbV9ibG9ja3M7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVCbG9ja0luZGljZXM7Cisg
ICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFt
ZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICBGYXN0Qml0VmVjdG9yIG1fICMjIGxvd2VyQml0TmFt
ZTsKKyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJ
VF9ERUNMQVJBVElPTikKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTgor
ICAgIAorICAgIC8vIEFmdGVyIHlvdSBkbyBzb21ldGhpbmcgdG8gYSBibG9jayBiYXNlZCBvbiBv
bmUgb2YgdGhlc2UgY3Vyc29ycywgeW91IGNsZWFyIHRoZSBiaXQgaW4gdGhlCisgICAgLy8gY29y
cmVzcG9uZGluZyBiaXR2ZWN0b3IgYW5kIGxlYXZlIHRoZSBjdXJzb3Igd2hlcmUgaXQgd2FzLgor
ICAgIHNpemVfdCBtX2FsbG9jYXRpb25DdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4
dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBhbGxvY2F0aW9uLgorICAgIHNpemVfdCBt
X2VtcHR5Q3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBh
IGNhbmRpZGF0ZSBmb3IgZW1wdHkgYWxsb2NhdGlvbiAoYWxsb2NhdGluZyBpbiBlbXB0eSBibG9j
a3MpLgorICAgIHNpemVfdCBtX3NuYXBzaG90Q3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhl
IG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgaW5jcmVtZW50YWwgc3dlZXBpbmcu
CisgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9jdXJyZW50QmxvY2s7CiAgICAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogbV9uZXh0QmxvY2tUb1N3ZWVwOwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxNYXJrZWRC
bG9jazo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4g
bV9ibG9ja0xpc3Q7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUs
IEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBtX3JldGlyZWRCbG9j
a3M7CisKICAgICBMb2NrIG1fbG9jazsKICAgICB1bnNpZ25lZCBtX2NlbGxTaXplOwogICAgIEFs
bG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIEhlYXAqIG1faGVhcDsKICAgICBN
YXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fbmV4dEFs
bG9jYXRvcjsKIH07CiAKIGlubGluZSBwdHJkaWZmX3QgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRP
ZkZyZWVMaXN0KCkKQEAgLTE0OSwyMCArMjcyLDEyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCogTWFy
a2VkQWxsb2NhdG9yOjphbGwKICAgICByZXR1cm4gaGVhZDsKIH0KIAotaW5saW5lIHZvaWQgTWFy
a2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKLXsKLSAgICBpZiAoIW1fbGFzdEFjdGl2
ZUJsb2NrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZl
QmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKLSAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFj
dGl2ZUJsb2NrOwotICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKLX0KLQogdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2Nr
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9ibG9ja0xpc3QuZm9yRWFjaChmdW5j
dG9yKTsKLSAgICBtX3JldGlyZWRCbG9ja3MuZm9yRWFjaChmdW5jdG9yKTsKKyAgICBtX2xpdmUu
Zm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAg
IGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogc3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBmYWxzZTsKIHN0YXRpYyBzaXpl
X3QgYmFsYW5jZTsKIAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0
ZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXpl
LCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorTWFya2VkQmxvY2s6Okhh
bmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3QgY2VsbFNpemUs
IGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgaWYgKGNvbXB1
dGVCYWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4LDE2ICs0OCwxNCBAQCBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQogICAgICAgICBzY3JpYmJsZShibG9j
a1NwYWNlLCBibG9ja1NpemUpOwotICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGFsbG9jYXRv
ciwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOworICAgIHJldHVybiBuZXcgSGFu
ZGxlKGhlYXAsIGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBibG9ja1NwYWNlKTsKIH0KIAotTWFya2Vk
QmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2Nh
dG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMsIHZvaWQqIGJsb2NrU3BhY2UpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYg
aGVhcCwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsg
YXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKGF0b21zUGVyQmxvY2sg
LSBtX2F0b21zUGVyQ2VsbCArIDEpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKLSAg
ICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgotICAgICwg
bV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+aGVhcCgp
LT52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX3dlYWtTZXQoaGVhcC52bSgpLCBDZWxs
Q29udGFpbmVyKCkpCiB7CiAgICAgbV9ibG9jayA9IG5ldyAoTm90TnVsbCwgYmxvY2tTcGFjZSkg
TWFya2VkQmxvY2soKmhlYXAudm0oKSwgKnRoaXMpOwogICAgIApAQCAtNjUsNyArNjMsNiBAQCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgCiAgICAgCiAgICAgaGVhcC5k
aWRBbGxvY2F0ZUJsb2NrKGJsb2NrU2l6ZSk7CiAgICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJB
TlNJVElPTih0aGlzKTsKLSAgICBBU1NFUlQoYWxsb2NhdG9yKTsKICAgICBpZiAobV9hdHRyaWJ1
dGVzLmNlbGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKIH0K
QEAgLTc4LDYgKzc1LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgICAg
IGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBC
YWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9CisgICAgcmVtb3ZlRnJvbUFsbG9jYXRv
cigpOwogICAgIG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwogICAgIGZhc3RBbGlnbmVkRnJlZSht
X2Jsb2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1NpemUpOwpAQCAtMTAxLDIxICs5
OSwyMiBAQCBNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmCiAgICAgbV9i
aWFzZWRNYXJrQ291bnQgPSBtX21hcmtDb3VudEJpYXM7IC8vIFRoaXMgbWVhbnMgd2UgaGF2ZW4n
dCBtYXJrZWQgYW55dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tT
dGF0ZSBibG9ja1N0YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2Rl
LCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpT
Y3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9j
YXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRs
ZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3
ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3
bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KIEZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoKQogewotICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBBU1NFUlQoYmxvY2tTdGF0ZSA9PSBOZXcgfHwg
YmxvY2tTdGF0ZSA9PSBNYXJrZWQpOwotICAgIEFTU0VSVCghKGRlc3RydWN0aW9uTW9kZSA9PSBE
b2VzTm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24g
JiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSksICJJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gc3dl
ZXAgYSBibG9jayB3aXRoIG5vIGRlc3RydWN0b3JzIHVubGVzcyBpdCdzIHRvIGJ1aWxkIGEgZnJl
ZSBsaXN0LiIpOworICAgIHN0YXRpY19hc3NlcnQoIShkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNE
ZXN0cnVjdGlvbiAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0eSksICJBIGJsb2NrIGRvZXNuJ3QgcXVh
bGlmeSBhcyBlbXB0eSBpZiB0aGVyZSBhcmUgZGVzdHJ1Y3RvcnMgdGhhdCBzdGlsbCBuZWVkIHRv
IGJlIHJ1bi4iKTsKICAgICAKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CisKICAgICBhc3NlcnRGbGlwcGVkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2Nr
ID0gdGhpcy0+YmxvY2soKTsKICAgICAKLSAgICBib29sIGlzTmV3QmxvY2sgPSBibG9ja1N0YXRl
ID09IE5ldzsKLSAgICBib29sIGlzRW1wdHlCbG9jayA9ICFibG9jay5oYXNBbnlNYXJrZWQoKQot
ICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRl
ZAotICAgICAgICAmJiBkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbjsK
LSAgICBpZiAoT3B0aW9uczo6dXNlQnVtcEFsbG9jYXRvcigpICYmIChpc05ld0Jsb2NrIHx8IGlz
RW1wdHlCbG9jaykpIHsKKyAgICBtX2FsbG9jYXRvci0+c2V0SXNTbmFwc2hvdCh0aGlzLCBmYWxz
ZSk7CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQorICAgICAgICAm
JiBlbXB0eU1vZGUgPT0gSXNFbXB0eQorICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0g
RG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCkgewogICAgICAgICBBU1NFUlQoYmxvY2subV9tYXJr
cy5pc0VtcHR5KCkpOwogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRPZkxhc3RDZWxsID0g
c3RhdGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsgbV9lbmRBdG9tIC0g
MSkpOwpAQCAtMTI0LDcgKzEyMywxMCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
cGVjaWFsaXplCiAgICAgICAgIGNoYXIqIHBheWxvYWRCZWdpbiA9IGJpdHdpc2VfY2FzdDxjaGFy
Kj4oYmxvY2suYXRvbXMoKSArIGZpcnN0QXRvbSgpKTsKICAgICAgICAgaWYgKHNjcmliYmxlTW9k
ZSA9PSBTY3JpYmJsZSkKICAgICAgICAgICAgIHNjcmliYmxlKHBheWxvYWRCZWdpbiwgcGF5bG9h
ZEVuZCAtIHBheWxvYWRCZWdpbik7Ci0gICAgICAgIG1fc3RhdGUgPSAoKHN3ZWVwTW9kZSA9PSBT
d2VlcFRvRnJlZUxpc3QpID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7CisgICAgICAgIGlmIChzd2Vl
cE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMs
IHRydWUpOwogICAgICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6YnVtcChwYXlsb2Fk
RW5kLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsKICAgICAgICAgaWYgKGZhbHNlKQogICAg
ICAgICAgICAgZGF0YUxvZygiUXVpY2tseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKHRoaXMp
LCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9h
dHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTM3LDE0ICsxMzksMTQgQEAgRnJl
ZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgIEZyZWVDZWxsKiBoZWFk
ID0gMDsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0
b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBpZiAo
YmxvY2tTdGF0ZSA9PSBNYXJrZWQKKyAgICAgICAgaWYgKGVtcHR5TW9kZSA9PSBOb3RFbXB0eQog
ICAgICAgICAgICAgJiYgKGJsb2NrLm1fbWFya3MuZ2V0KGkpCiAgICAgICAgICAgICAgICAgfHwg
KG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5QWxsb2Nh
dGVkLT5nZXQoaSkpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEhlYXBDZWxs
KiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYmxvY2suYXRvbXMoKVtp
XSk7CiAKLSAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYm
IGJsb2NrU3RhdGUgIT0gTmV3KQorICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRz
RGVzdHJ1Y3Rpb24gJiYgZW1wdHlNb2RlID09IE5vdEVtcHR5KQogICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8SlNDZWxsKj4oY2VsbCktPmNhbGxEZXN0cnVjdG9yKCp2bSgpKTsKIAogICAgICAgICBp
ZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkgewpAQCAtMTYzLDcgKzE2NSwxMyBAQCBG
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIG1fbmV3bHlB
bGxvY2F0ZWQgPSBudWxscHRyOwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6Omxp
c3QoaGVhZCwgY291bnQgKiBjZWxsU2l6ZSgpKTsKLSAgICBtX3N0YXRlID0gKHN3ZWVwTW9kZSA9
PSBTd2VlcFRvRnJlZUxpc3QgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICBpZiAoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAg
ZWxzZSB7CisgICAgICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6Ymxv
Y2tQYXlsb2FkIC8gY2VsbFNpemUoKTsKKyAgICAgICAgaWYgKGNvdW50ID09IGNlbGxzUGVyQmxv
Y2spCisgICAgICAgICAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVlKTsKKyAg
ICB9CiAgICAgaWYgKGZhbHNlKQogICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sg
IiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIg
YW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwogICAg
IHJldHVybiByZXN1bHQ7CkBAIC0xODAsNiArMTg4LDEzIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnN3ZWVwKFN3ZWUKICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwT25seSAmJiBt
X2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbikKICAgICAg
ICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAKKyAgICBpZiAoVU5MSUtFTFkobV9pc0ZyZWVMaXN0ZWQp
KSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3Qp
OworICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKCFt
X2FsbG9jYXRvci0+aXNBbGxvY2F0ZWQodGhpcykpOworICAgIAogICAgIGlmIChtX2F0dHJpYnV0
ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIHN3ZWVw
SGVscGVyU2VsZWN0U2NyaWJibGVNb2RlPE5lZWRzRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CiAg
ICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlPERvZXNOb3ROZWVkRGVzdHJ1
Y3Rpb24+KHN3ZWVwTW9kZSk7CkBAIC0xODksNDcgKzIwNCw0NCBAQCB0ZW1wbGF0ZTxEZXN0cnVj
dGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlCiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
d2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAg
IGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQotICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxl
Y3RTdGF0ZUFuZFN3ZWVwTW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUp
OwotICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0
aW9uTW9kZSwgRG9udFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgICAgICByZXR1cm4gc3dlZXBI
ZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2Rl
KTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2Rl
LCBEb250U2NyaWJibGU+KHN3ZWVwTW9kZSk7CiB9CiAKIHRlbXBsYXRlPERlc3RydWN0aW9uTW9k
ZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3Jp
YmJsZU1vZGU+Ci1GcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVj
dFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCitGcmVlTGlzdCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgc3dlZXBN
b2RlKQogewotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgTmV3OgotICAgICAgICBB
U1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVj
aWFsaXplZFN3ZWVwPE5ldywgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmli
YmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKTsKLSAgICBjYXNlIEZyZWVMaXN0
ZWQ6Ci0gICAgICAgIC8vIEhhcHBlbnMgd2hlbiBhIGJsb2NrIHRyYW5zaXRpb25zIHRvIGZ1bGx5
IGFsbG9jYXRlZC4KLSAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3Qp
OwotICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNlIEFsbG9jYXRlZDoKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0
KCk7Ci0gICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAg
ICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1
Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAg
ICAgICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1v
ZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAg
ICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVz
dHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCkK
LSAgICAgICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRl
c3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigp
OwotICAgICAgICB9Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIEZyZWVMaXN0KCk7CisgICAgaWYgKG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMp
KQorICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxJc0Vt
cHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1
cm4gc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxOb3RFbXB0eSwgZGVzdHJ1Y3Rp
b25Nb2RlLCBzY3JpYmJsZU1vZGU+KHN3ZWVwTW9kZSk7Cit9CisKK3RlbXBsYXRlPEVtcHR5TW9k
ZSBlbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSBz
d2VlcE1vZGUpCit7CisgICAgaWYgKG1faGFzTmV3bHlBbGxvY2F0ZWQpCisgICAgICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwg
c2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4g
c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNj
cmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKK30KKwor
dGVtcGxhdGU8RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9u
TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTmV3
bHlBbGxvYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6
OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkK
K3sKKyAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgcmV0dXJu
IHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9u
TW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHNw
ZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2Ny
aWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCkKIHsKLSAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMp
OwotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0gICAg
bV9zdGF0ZSA9IE1hcmtlZDsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lzRnJlZUxpc3RlZCk7Cisg
ICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpzZXRJc0ZyZWVMaXN0ZWQoKQoreworICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMs
IGZhbHNlKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOwogfQogCiBjbGFzcyBTZXROZXds
eUFsbG9jYXRlZEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKQEAg
LTI1MywyNSArMjY1LDE2IEBAIHByaXZhdGU6CiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0
b3BBbGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKIHsKICAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOworICAg
IAorICAgIEFTU0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAgIGlm
IChtX3N0YXRlID09IE1hcmtlZCkgewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4gdGhl
IE1hcmtlZCBzdGF0ZSB0aGVuIHdlIGtub3cgdGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAgLy8g
Y29uZGl0aW9ucyBob2xkczoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90IHVz
ZWQgZm9yIGFsbG9jYXRpb24gZHVyaW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xlLgot
ICAgICAgICAvLyAgIEl0IG1heSBoYXZlIGRlYWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25vdyB0
aGVtIHRvIGJlIGRlYWQgYnkgdGhlCi0gICAgICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1hcmsg
Yml0cyBhcmUgdW5zZXQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQgYWxy
ZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCksIGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAgICAg
ICAgLy8gICBoZWFwIGl0ZXJhdGlvbiwgYW5kIHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAgIC8v
IEhlbmNlIGlmIHRoZSBibG9jayBpcyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJrZWQu
CisgICAgaWYgKCFpc0ZyZWVMaXN0ZWQoKSkgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQg
d2UgZWl0aGVyIGRpZG4ndCB1c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24gc2lu
Y2UgbGFzdCBHQywKKyAgICAgICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BB
bGxvY2F0aW5nKCkgYmVmb3JlLgogICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlvbldp
bGxGYWlsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVChtX3N0
YXRlID09IEZyZWVMaXN0ZWQpOwotICAgIAogICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVyZW50
IHN0YXRlIGZvciBIZWFwIGludHJvc3BlY3Rpb24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxsb2Nh
dGVkIGZyb20gb3VyIGZyZWUgbGlzdCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5l
ZWQgYW5vdGhlcgogICAgIC8vIHdheSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApAQCAt
MjkwLDcgKzI5Myw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcK
ICAgICAgICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAgICAgIH0pOwogICAg
IAotICAgIG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKIH0K
IAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCkBAIC0z
MDUsMTMgKzMwOCwxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0Zp
CiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKICAg
ICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9O
KHRoaXMpOwogCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKKyAgICBBU1NFUlQoIWFs
bG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQo
KSk7CiAKICAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgLy8gV2UgZGlkbid0
IGhhdmUgdG8gY3JlYXRlIGEgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwLiBUaGF0IG1lYW5zIHdl
IHdlcmUgYWxyZWFkeSBNYXJrZWQKLSAgICAgICAgLy8gd2hlbiB3ZSBsYXN0IHN0b3BwZWQgYWxs
b2NhdGlvbiwgc28gcmV0dXJuIGFuIGVtcHR5IGZyZWUgbGlzdCBhbmQgc3RheSBpbiB0aGUgTWFy
a2VkIHN0YXRlLgorICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3Rl
ZCB0aGUgYmxvY2sgd2hlbiB3ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAgICAgIHJldHVybiBG
cmVlTGlzdCgpOwogICAgIH0KIApAQCAtMzY2LDE3ICszNjgsMTcgQEAgdm9pZCBNYXJrZWRCbG9j
azo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVj
dFNwYWNlKCkuaXNNYXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0g
ICAgaWYgKG5lZWRzRmxpcCgpKQorICAgIGlmIChuZWVkc0ZsaXAoKSkgewogICAgICAgICBjbGVh
ck1hcmtzKCk7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8g
bWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRv
cigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7
CisgICAgfQogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKICAgICBtX21h
cmtzLmNsZWFyQWxsKCk7CiAgICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICAvLyBUaGlzIHdp
bGwgYmVjb21lIHRydWUgYXQgdGhlIGVuZCBvZiB0aGUgbWFyayBwaGFzZS4gV2Ugc2V0IGl0IG5v
dyB0bwotICAgIC8vIGF2b2lkIGFuIGV4dHJhIHBhc3MgdG8gZG8gc28gbGF0ZXIuCi0gICAgaGFu
ZGxlKCkubV9zdGF0ZSA9IE1hcmtlZDsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAg
IG1fdmVyc2lvbiA9IHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CiB9CkBAIC0z
OTgsMTEgKzQwMCw2IEBAIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkKICAg
ICByZXR1cm4gbV9ibG9jay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6d2lsbFJlbW92ZUJsb2NrKCkKLXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLX0KLQog
dm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QoKQogewogICAgIGZs
aXBJZk5lY2Vzc2FyeSgpOwpAQCAtNDIxLDggKzQxOCw3IEBAIHNpemVfdCBNYXJrZWRCbG9jazo6
bWFya0NvdW50KCkKIAogYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0VtcHR5KCkKIHsKLSAg
ICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQgJiYgIWJs
b2NrKCkuaGFzQW55TWFya2VkKCkgJiYgbV93ZWFrU2V0LmlzRW1wdHkoKSAmJiAoIW1fbmV3bHlB
bGxvY2F0ZWQgfHwgbV9uZXdseUFsbG9jYXRlZC0+aXNFbXB0eSgpKTsKKyAgICByZXR1cm4gbV9h
bGxvY2F0b3ItPmlzRW1wdHkodGhpcyk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFySGFz
QW55TWFya2VkKCkKQEAgLTQzMiwzMyArNDI4LDM4IEBAIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFy
SGFzQW55TWFya2VkKCkKIAogdm9pZCBNYXJrZWRCbG9jazo6bm90ZU1hcmtlZFNsb3coKQogewot
ICAgIGhhbmRsZSgpLm1fYWxsb2NhdG9yLT5yZXRpcmUoJmhhbmRsZSgpKTsKKyAgICBoYW5kbGUo
KS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hlY2tJc01hcmtpbmdSZXRpcmVkKCZoYW5kbGUo
KSwgdHJ1ZSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKK3Zv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAgaWYg
KCFtX2FsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fYWxsb2NhdG9yLT5y
ZW1vdmVCbG9jayh0aGlzKTsKK30KIAotdXNpbmcgbmFtZXNwYWNlIEpTQzsKK3ZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKKyAgICAK
KyAgICBtX2luZGV4ID0gaW5kZXg7CisgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Cit9CiAK
LXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBNYXJrZWRCbG9jazo6QmxvY2tT
dGF0ZSBibG9ja1N0YXRlKQordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVGcm9t
QWxsb2NhdG9yKCkKIHsKLSAgICBzd2l0Y2ggKGJsb2NrU3RhdGUpIHsKLSAgICBjYXNlIE1hcmtl
ZEJsb2NrOjpOZXc6Ci0gICAgICAgIG91dC5wcmludCgiTmV3Iik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIE1hcmtlZEJsb2NrOjpGcmVlTGlzdGVkOgotICAgICAgICBvdXQucHJpbnQoIkZy
ZWVMaXN0ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6OkFsbG9j
YXRlZDoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvY2F0ZWQiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAgb3V0LnByaW50KCJNYXJrZWQi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIGZsaXBJZk5lY2Vzc2FyeSgpOworICAgIAorICAgIEFTU0VSVChtX2luZGV4ICE9
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVChtX2FsbG9j
YXRvcik7CisgICAgCisgICAgbV9pbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCk7CisgICAgbV9hbGxvY2F0b3IgPSBudWxscHRyOwogfQogCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjAgKzQ0LDYgQEAg
Y2xhc3MgTWFya2VkQWxsb2NhdG9yOwogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5cGVkZWYg
dWludDMyX3QgSGVhcFZlcnNpb247CiAKLS8vIFNldCB0byBsb2cgc3RhdGUgdHJhbnNpdGlvbnMg
b2YgYmxvY2tzLgotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUyAwCi0K
LSNpZiBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwotI2RlZmluZSBIRUFQX0xPR19C
TE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgZG8geyAgICAgICAgICAgIFwKLSAgICAgICAg
ZGF0YUxvZ0YoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgICAgICAiJXM6JWQgJXM6IGJsb2NrICVzID0gJXAsICVkXG4iLCAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18s
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICNoYW5kbGUsICYoaGFuZGxlKS0+Ymxv
Y2soKSwgKGhhbmRsZSktPm1fc3RhdGUpOyAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0jZWxz
ZQotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgKCh2b2lk
KTApCi0jZW5kaWYKLQogLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFsaWduZWQgY29udGFp
bmVyIGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgogLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVk
IHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogLy8gbWFya2Vk
IGJsb2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXplLiBPYmplY3RzIHNtYWxsZXIgdGhh
biB0aGUKQEAgLTc2LDggKzYyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgSGFuZGxlOwogcHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0ZSA6IHVpbnQ4X3QgeyBOZXcs
IEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAgIAogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja01h
c2sgPSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3
by4KQEAgLTEzMCw2ICsxMTQsMTIgQEAgcHVibGljOgogICAgICAgICBWTSogdm0oKSBjb25zdDsK
ICAgICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCisgICAgICAgIC8vIFN3
ZWVwaW5nIGVuc3VyZXMgdGhhdCBkZXN0cnVjdG9ycyBnZXQgY2FsbGVkIGFuZCByZW1vdmVzIHRo
ZSBibG9jayBmcm9tIHRoZSBzbmFwc2hvdC4KKyAgICAgICAgLy8gU3dlZXBpbmcgdG8gZnJlZSBs
aXN0IGFsc28gcmVtb3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgZW1wdHkgc2V0LCBpZiBpdCB3YXMg
aW4gdGhhdCBzZXQuCisgICAgICAgIC8vIE5vdGUgdGhhdCB5b3UgbmVlZCB0byBtYWtlIHN1cmUg
dGhhdCB0aGUgZW1wdHkgYml0IHJlZmxlY3RzIHJlYWxpdHkuIElmIGl0J3Mgbm90IHNldAorICAg
ICAgICAvLyBhbmQgdGhlIGJsb2NrIGlzIGZyZXNobHkgY3JlYXRlZCwgdGhlbiB3ZSdsbCBtYWtl
IHRoZSBtaXN0YWtlIG9mIHJ1bm5pbmcgZGVzdHJ1Y3RvcnMgaW4KKyAgICAgICAgLy8gdGhlIGJs
b2NrLiBJZiBpdCdzIG5vdCBzZXQgYW5kIHRoZSBibG9jayBoYXMgbm90aGluZyBtYXJrZWQsIHRo
ZW4gd2UnbGwgbWFrZSB0aGUKKyAgICAgICAgLy8gbWlzdGFrZSBvZiBtYWtpbmcgYSBwb3AgZnJl
ZWxpc3QgcmF0aGVyIHRoYW4gYSBidW1wIGZyZWVsaXN0LgogICAgICAgICBlbnVtIFN3ZWVwTW9k
ZSB7IFN3ZWVwT25seSwgU3dlZXBUb0ZyZWVMaXN0IH07CiAgICAgICAgIEZyZWVMaXN0IHN3ZWVw
KFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAgICAgIApAQCAtMTUzLDggKzE0Myw2IEBAIHB1
YmxpYzoKICAgICAgICAgLy8gYW5kIHdhcyBzdWNjZXNzZnVsbHkgY2xlYXJlZCBhbmQgZmFsc2Ug
b3RoZXJ3aXNlLgogICAgICAgICBib29sIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgICAgICAg
ICAgIAotICAgICAgICB2b2lkIGZsaXBGb3JFZGVuQ29sbGVjdGlvbigpOwotICAgICAgICAgICAg
CiAgICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOwogICAgICAgICBjb25zdCBBbGxvY2F0b3JBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9kZSBkZXN0
cnVjdGlvbigpIGNvbnN0OwpAQCAtMTc0LDEyICsxNjIsNiBAQCBwdWJsaWM6CiAgICAgICAgIAog
ICAgICAgICBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX25l
d2x5QWxsb2NhdGVkOyB9CiAgICAgICAgICAgICAKLSAgICAgICAgYm9vbCBpc0FsbG9jYXRlZCgp
IGNvbnN0OwotICAgICAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNG
cmVlTGlzdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgbmVlZHNTd2VlcGluZygpIGNvbnN0Owot
ICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwotCiAgICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYp
OwogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZv
ckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3Im
KTsKQEAgLTE5MiwxMSArMTc0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICB2
b2lkIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAgICAgIAotICAgICAgICBib29sIGlzT25CbG9j
a3NUb1N3ZWVwKCkgY29uc3QgeyByZXR1cm4gbV9pc09uQmxvY2tzVG9Td2VlcDsgfQotICAgICAg
ICB2b2lkIHNldElzT25CbG9ja3NUb1N3ZWVwKGJvb2wgdmFsdWUpIHsgbV9pc09uQmxvY2tzVG9T
d2VlcCA9IHZhbHVlOyB9CisgICAgICAgIGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ZyZWVMaXN0ZWQ7IH0KKyAgICAgICAgCisgICAgICAgIHNpemVfdCBpbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVtb3ZlRnJv
bUFsbG9jYXRvcigpOworICAgICAgICAKKyAgICAgICAgdm9pZCBkaWRBZGRUb0FsbG9jYXRvcihN
YXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgaW5kZXgpOworICAgICAgICB2b2lkIGRpZFJlbW92ZUZy
b21BbGxvY2F0b3IoKTsKICAgICAgICAgCi0gICAgICAgIEJsb2NrU3RhdGUgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlOyB9Ci0gICAgICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAg
ICBIYW5kbGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3Qg
QWxsb2NhdG9yQXR0cmlidXRlcyYsIHZvaWQqKTsKICAgICAgICAgICAgIApAQCAtMjA2LDE2ICsx
OTIsMjYgQEAgcHVibGljOgogICAgICAgICBlbnVtIFNjcmliYmxlTW9kZSB7IERvbnRTY3JpYmJs
ZSwgU2NyaWJibGUgfTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlv
bk1vZGUsIFNjcmliYmxlTW9kZT4KLSAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RT
dGF0ZUFuZFN3ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICBGcmVlTGlz
dCBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAg
ICAgICAgICAgCisgICAgICAgIGVudW0gRW1wdHlNb2RlIHsgSXNFbXB0eSwgTm90RW1wdHkgfTsK
KyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBT
Y3JpYmJsZU1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlB
bGxvY2F0ZWQoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCiAgICAgICAgIGVudW0g
TmV3bHlBbGxvY2F0ZWRNb2RlIHsgSGFzTmV3bHlBbGxvY2F0ZWQsIERvZXNOb3RIYXZlTmV3bHlB
bGxvY2F0ZWQgfTsKLSAgICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRlLCBT
d2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1v
ZGU+CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9k
ZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3
ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAg
IAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2Rl
LCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3Bl
Y2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmM+CiAgICAgICAgIHZvaWQgZm9yRWFjaEZyZWVDZWxsKGNvbnN0IEZyZWVMaXN0JiwgY29u
c3QgRnVuYyYpOwotICAgICAgICAgICAgCisgICAgICAgIAorICAgICAgICB2b2lkIHNldElzRnJl
ZUxpc3RlZCgpOworICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9wcmV2
OwogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHQ7CiAgICAgICAgICAgICAKQEAg
LTIyNSwxNiArMjIxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6
Qml0bWFwPGF0b21zUGVyQmxvY2s+PiBtX25ld2x5QWxsb2NhdGVkOwogICAgICAgICAgICAgCiAg
ICAgICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwotICAgICAgICBCbG9ja1N0
YXRlIG1fc3RhdGU7Ci0gICAgICAgIGJvb2wgbV9pc09uQmxvY2tzVG9Td2VlcCB7IGZhbHNlIH07
CisgICAgICAgIGJvb2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxzZSB9OwogICAgICAgICAgICAgCi0g
ICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgICAgIE1hcmtlZEFsbG9j
YXRvciogbV9hbGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsg
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1f
d2Vha1NldDsKICAgICAgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jazsKICAg
ICB9OwogICAgICAgICAKLSAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRl
KEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRv
ckF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRl
KEhlYXAmLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKICAg
ICAgICAgCiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBAIC0yNzUsNyArMjcxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAKICAgICBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247IH0K
LSAgICAgICAgCisgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFs
aWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CiAKQEAgLTQ5MiwxNyArNDg4LDYgQEAgaW5saW5l
IHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTgogICAgIGJsb2NrKCkuZmxpcElmTmVj
ZXNzYXJ5RHVyaW5nTWFya2luZyhoZWFwVmVyc2lvbik7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmZsaXBGb3JFZGVuQ29sbGVjdGlvbigpCi17Ci0gICAgYXNzZXJ0Rmxp
cHBlZCgpOwotICAgICAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRo
aXMpOwotICAgIAotICAgIEFTU0VSVChtX3N0YXRlICE9IE5ldyAmJiBtX3N0YXRlICE9IEZyZWVM
aXN0ZWQpOwotICAgIAotICAgIG1fc3RhdGUgPSBNYXJrZWQ7Ci19Ci0KICNpZiBBU1NFUlRfRElT
QUJMRUQKIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjphc3NlcnRGbGlwcGVkKCkKIHsKQEAgLTU1
MiwxMyArNTM3LDExIEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmUK
IAogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2Nh
dGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIEFTU0VSVChtX3N0YXRlID09IE1hcmtl
ZCk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmlzTWFya2VkKGNlbGwpIHx8IChtX25ld2x5QWxsb2Nh
dGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQogCiBpbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewot
ICAgIEFTU0VSVChtX2hhbmRsZS5tX3N0YXRlID09IE1hcmtlZCk7CiAgICAgcmV0dXJuIGlzTWFy
a2VkKGNlbGwpIHx8IChtX2hhbmRsZS5tX25ld2x5QWxsb2NhdGVkICYmIG1faGFuZGxlLmlzTmV3
bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQogCkBAIC01NzIsMjEgKzU1NSwxMiBAQCBpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5CiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7CiAgICAgYXNzZXJ0RmxpcHBl
ZCgpOwotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgQWxsb2NhdGVkOgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIGNhc2UgTWFya2VkOgotICAgICAgICByZXR1cm4gaXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOwotCi0gICAgY2FzZSBOZXc6Ci0gICAgY2FzZSBGcmVl
TGlzdGVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwogCi0gICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KGFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgCisgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKIH0KIAogaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQpAQCAtNjU0LDMwICs2
MjgsNiBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kCiAgICAgcmV0
dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJs
b2NrOjpIYW5kbGU6Om5lZWRzU3dlZXBpbmcoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFy
a2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4g
bV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzQWxsb2NhdGVkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5k
bGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gQWxs
b2NhdGVkOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZCgp
IGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZs
aXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNGcmVlTGlzdGVkKCkgY29uc3QKLXsKLSAg
ICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5
KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gRnJlZUxpc3RlZDsKLX0KLQogaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6Omhhc0FueU1hcmtlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmlhc2Vk
TWFya0NvdW50ICE9IG1fbWFya0NvdW50QmlhczsKQEAgLTcxMSw4ICs2NjEsNiBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6Ok1hcmtlCiAgICAgdHlwZWRlZiBNYXJrZWRCbG9j
a0hhc2ggSGFzaDsKIH07CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6Ok1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlKTsKLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNl
bmRpZiAvLyBNYXJrZWRCbG9ja19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsMTkg
QEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsK
KyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIHByZXZpb3VzID0gbnVsbHB0cjsKKyAgICBmb3JF
YWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAt
PiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgaWYgKHByZXZpb3VzKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2UgY2FuIHNldCB0aGlzIGluIGFueSBvcmRlci4gVGhlIHBvaW50IGlzIGp1
c3QgdGhhdCB3ZSB3YW50IHRvIGJlIGFibGUgdG8KKyAgICAgICAgICAgICAgICAvLyBjdXJzb3Ig
b3ZlciBhbGxvY2F0b3JzLgorICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zZXROZXh0QWxsb2Nh
dG9yKHByZXZpb3VzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZXZpb3VzID0gJmFs
bG9jYXRvcjsKKyAgICAgICAgfSk7CisgICAgbV9maXJzdEFsbG9jYXRvciA9IHByZXZpb3VzOwor
ICAgIG1fbmV4dEFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IHByZXZpb3VzOwogfQogCiBN
YXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKCkKQEAgLTI1Nyw5ICsyNzAsMTAgQEAgdm9pZCogTWFy
a2VkU3BhY2U6OnRyeUFsbG9jYXRlTGFyZ2UoU3Vicwogdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXAo
KQogewogICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAgICBm
b3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsK
LSAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAg
ICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7
CisgICAgICAgICAgICBhbGxvY2F0b3Iuc3dlZXAoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKIH0KIApAQCAtMjk0LDE2ICszMDgs
MTYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKICAgICAgICAgfSk7CiB9CiAK
LXZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCit2b2lkIE1hcmtlZFNwYWNlOjpw
cmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7CiAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAg
WyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKLSAg
ICAgICAgICAgIGFsbG9jYXRvci5yZXNldCgpOworICAgICAgICAgICAgYWxsb2NhdG9yLnByZXBh
cmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKICAgICAgICAgfSk7CiAKLSAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLmNsZWFy
KCk7CiAgICAgbV9hY3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0FjdGl2ZVdlYWtTZXRzKTsK
KyAgICAKICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxl
Y3Rpb24pCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9
IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7CiAgICAgZWxzZQpAQCAtNDA4LDExICs0
MjIsMTEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZnJlZU9yU2hyaW5rQmxvY2soTWFyawogCiB2b2lk
IE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogewotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZd
IChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgZnJlZU9yU2hyaW5r
QmxvY2soYmxvY2spOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBh
bGxvY2F0b3Iuc2hyaW5rKCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKICAgICAgICAgfSk7Ci0gICAgLy8gRm9yIExhcmdlQWxsb2NhdGlvbnMsIHdlIGRv
IHRoZSBtb3JhbCBlcXVpdmFsZW50IGluIHN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygpLgogfQogCiB2
b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKQEAgLTQyNywzOSArNDQxLDI2
IEBAIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQogICAgIGZvciAodW5z
aWduZWQgaSA9IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyBpIDwg
bV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsgKytpKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlv
bnNbaV0tPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sp
IHsKLSAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKSk7Ci0g
ICAgICAgIH0pOwotCi0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xh
cmdlQWxsb2NhdGlvbnMpCi0gICAgICAgIEFTU0VSVCghYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9j
YXRlZCgpKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi19Ci0KLSNpZm5kZWYgTkRFQlVH
IAotc3RydWN0IFZlcmlmeU1hcmtlZCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7IAotICAg
IHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHN3aXRjaCAoYmxvY2stPm1fc3RhdGUpIHsKLSAgICAgICAgY2FzZSBNYXJrZWRCbG9j
azo6TWFya2VkOgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQorICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsm
XSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
IWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IAorICAgICAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxv
Y2F0aW9ucykKKyAgICAgICAgICAgIEFTU0VSVCghYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9jYXRl
ZCgpKTsKICAgICB9Ci19OyAKLSNlbmRpZiAKK30KIAotdm9pZCBNYXJrZWRTcGFjZTo6ZmxpcCgp
Cit2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogewotICAgIGlmIChtX2hlYXAtPm9w
ZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgewotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHNbaV0tPmZsaXBGb3JFZGVuQ29sbGVjdGlv
bigpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygp
ID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAg
ICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMg
eworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5mbGlwRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAg
ICAgIH0pOworCiAgICAgICAgIEhlYXBWZXJzaW9uIG5leHRWZXJzaW9uID0gbV92ZXJzaW9uICsg
MTsKICAgICAgICAgaWYgKFVOTElLRUxZKG5leHRWZXJzaW9uID09IGluaXRpYWxWZXJzaW9uKSkg
ewogICAgICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0
aGlzIGJ5IGZsaXBwaW5nIGFsbCBibG9ja3MuIFRoaXMgaGFwcGVucwpAQCAtNDc0LDEwICs0NzUs
MjcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZmxpcCgpCiAgICAgICAgICAgICBhbGxvY2F0aW9uLT5m
bGlwKCk7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwotICAgIFZlcmlmeU1hcmtlZCB2ZXJpZnlG
dW5jdG9yOwotICAgIGZvckVhY2hCbG9jayh2ZXJpZnlGdW5jdG9yKTsKLSNlbmRpZgorICAgIGlm
ICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAg
IFsmXSAoTWFya2VkQmxvY2s6OmhhbmRsZSogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBpZiAo
YmxvY2stPm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICAgICAgfSk7
CisgICAgfQorICAgIAorICAgIG1faXNNYXJraW5nID0gdHJ1ZTsKK30KKwordm9pZCBNYXJrZWRT
cGFjZTo6ZW5kTWFya2luZygpCit7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZd
IChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAg
ICAgICAgIGFsbG9jYXRvci5lbmRNYXJraW5nKCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7CisgICAgCisgICAgbV9pc01hcmtpbmcg
PSBmYWxzZTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6d2lsbFN0YXJ0SXRlcmF0aW5nKCkKQEAg
LTU0NSw3ICs1NjMsNiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBZGRCbG9jayhNYXJrZWRCbG9j
CiB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2spCiB7CiAgICAgYmxvY2stPmFzc2VydEZsaXBwZWQoKTsKLSAgICBtX2Jsb2Nrc1dp
dGhOZXdPYmplY3RzLmFwcGVuZChibG9jayk7CiAgICAgCiAgICAgaWYgKGJsb2NrLT53ZWFrU2V0
KCkuaXNPbkxpc3QoKSkgewogICAgICAgICBibG9jay0+d2Vha1NldCgpLnJlbW92ZSgpOwpAQCAt
NTUzLDQgKzU3MCwzMCBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFy
CiAgICAgfQogfQogCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRTcGFjZTo6ZmluZEVtcHR5
QmxvY2soKQoreworICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbjsgbV9h
bGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlv
bi0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jayA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5maW5kRW1wdHlCbG9jaygpKQor
ICAgICAgICAgICAgcmV0dXJuIGJsb2NrOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
Kwordm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3QoKQoreworICAgIGlmIChtX2hlYXAtPm9wZXJh
dGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxs
b2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4g
SXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RGb3JF
ZGVuQ29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOworICAgICAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFj
aEFsbG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3Ip
IC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90
Rm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0KK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJl
dmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgU3Vic3Bh
Y2UmIHN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9ub3Jt
YWxTcGFjZTsgfQogICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvckF1eGlsaWFyeURhdGEoKSB7IHJl
dHVybiBtX2F1eGlsaWFyeVNwYWNlOyB9CiAgICAgCi0gICAgdm9pZCByZXNldEFsbG9jYXRvcnMo
KTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAKICAgICB2b2lkIHZpc2l0V2Vh
a1NldHMoSGVhcFJvb3RWaXNpdG9yJik7CiAgICAgdm9pZCByZWFwV2Vha1NldHMoKTsKQEAgLTE0
NCw3ICsxNDQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFya2Vk
QmxvY2s6OkhhbmRsZSopOwogICAgIHZvaWQgZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKTsKIAotICAgIHZvaWQgZmxpcCgpOworICAgIHZvaWQgYmVnaW5NYXJraW5nKCk7
CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdCgpOwogICAgIHZvaWQg
Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwogICAgIHZvaWQgc3dlZXAoKTsKICAgICB2b2lkIHN3ZWVw
TGFyZ2VBbGxvY2F0aW9ucygpOwpAQCAtMTY5LDEzICsxNzEsMTQgQEAgcHVibGljOgogICAgIExh
cmdlQWxsb2NhdGlvbioqIGxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kOyB9CiAg
ICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZTsgfQogICAg
IAorICAgIE1hcmtlZEFsbG9jYXRvciogZmlyc3RBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBt
X2ZpcnN0QWxsb2NhdG9yOyB9CisgICAgTWFya2VkQWxsb2NhdG9yKiBuZXh0QWxsb2NhdG9yRm9y
RW1wdHlBbGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0QWxsb2NhdG9yRm9yRW1wdHlB
bGxvY2F0aW9uOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5Qmxv
Y2soKTsKKyAgICAKICAgICAvLyBXaGVuIHRoaXMgaXMgdHJ1ZSBpdCBtZWFucyB0aGF0IHdlIGhh
dmUgZmxpcHBlZCBidXQgdGhlIG1hcmsgYml0cyBoYXZlbid0IGNvbnZlcmdlZCB5ZXQuCiAgICAg
Ym9vbCBpc01hcmtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzTWFya2luZzsgfQogICAgIAotICAg
IC8vIEZJWE1FOiBBZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxNTgxLCBNYXJrZWRTcGFjZSB3aWxsIGNvbnRyb2wgdGhpcwotICAgIC8vIGZsYWcgZGlyZWN0
bHkuCi0gICAgdm9pZCBzZXRJc01hcmtpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzTWFya2luZyA9IHZh
bHVlOyB9Ci0KIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMjA1LDcgKzIwOCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9Owog
ICAgIE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFu
ZGxlKj4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsKICAgICBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9u
Kj4gbV9sYXJnZUFsbG9jYXRpb25zOwogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc051
cnNlcnlPZmZzZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0
Rm9yVGhpc0NvbGxlY3Rpb24geyAwIH07CkBAIC0yMTUsNiArMjE3LDkgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUgeyAwIH07
CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdl
YWtTZXQ+PiBtX2FjdGl2ZVdlYWtTZXRzOwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFrU2V0
LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9uZXdBY3RpdmVXZWFrU2V0czsKKyAg
ICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fZmlyc3RBbGxvY2F0b3IgeyBudWxscHRyIH07Cisg
ICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiB7IG51bGxw
dHIgfTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtl
ZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCQkwRjQ1NzA0MzFCRTVC
NThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwNDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMu
aCAqLzsgfTsKIAkJMEY0NTcwNDUxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQ0MUJFODM0
NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi87IH07CiAJCTBGNzI1Q0FDMUM1MDQ2MTYwMEFE
OTQzQSAvKiBSYW5nZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggKi87IH07CisJ
CTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI1MUQ4ODVDRjIwMDQ0
RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEY4MjRBNjgxQjc0NDNBMDAwMkUz
NDVEIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY4MjRBNjQxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwICov
OyB9OwogCQkwRjgyNEE2OTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MjRBNjUxQjc0NDNBMDAw
MkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLzsgfTsKIAkJMEY4NzEwNUExNjY0M0YxOTAwOTBCMEFE
IC8qIFJhd1BvaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi87IH07CkBA
IC0zNjYsNiArMzY3LDcgQEAKIAkJMEY0NTcwNDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRv
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9taW5hdG9ycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnVi
YmxlU29ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWJibGVTb3J0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAv
KiBSYW5nZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZVNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIg
LyogRmFzdEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGYXN0Qml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRB
NjQxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGFya2luZ0xvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcmtpbmdMb3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY4NzEwNTkxNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmF3UG9pbnRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODgwLDYgKzg4Miw3IEBACiAJCQkJQThBNDcyOTgxNTFBODI1QTAw
NDEyM0ZGIC8qIGR0b2EuaCAqLywKIAkJCQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51
bVRyYWl0cy5oICovLAogCQkJCUE4QTQ3MjlGMTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNy
b3MuaCAqLywKKwkJCQkwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5j
cHAgKi8sCiAJCQkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAq
LywKIAkJCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJ
CQkJQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKQEAgLTE1OTQs
NiArMTU5Nyw3IEBACiAJCQkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFs
bG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNDE1MUE4MjVCMDA0MTIzRkYg
LyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjdDNUZCNjFEODg1Q0Yy
MDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNG
NzE1MUE4MjVCMDA0MTIzRkYgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDc0MDIxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDU4NTkp
CisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgx
LDYgKzE4MSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIERhdGFMb2cuY3BwCiAgICAgRGF0ZU1h
dGguY3BwCiAgICAgRGVjaW1hbE51bWJlci5jcHAKKyAgICBGYXN0Qml0VmVjdG9yLmNwcAogICAg
IEZhc3RNYWxsb2MuY3BwCiAgICAgRmlsZVByaW50U3RyZWFtLmNwcAogICAgIEZ1bmN0aW9uRGlz
cGF0Y2hlci5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZhc3RCaXRWZWN0b3IuaCIKKworbmFt
ZXNwYWNlIFdURiB7CisKK3ZvaWQgRmFzdEJpdFZlY3RvcldvcmRPd25lcjo6c2V0RXF1YWxzU2xv
dyhjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcikKK3sKKyAgICB1aW50MzJfdCog
bmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KAorICAgICAgICBmYXN0Q2FsbG9jKG90
aGVyLmFycmF5TGVuZ3RoKCksIHNpemVvZih1aW50MzJfdCkpKTsKKyAgICBtZW1jcHkobmV3QXJy
YXksIG90aGVyLm1fd29yZHMsIG90aGVyLmFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3Qp
KTsKKyAgICBpZiAobV93b3JkcykKKyAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7CisgICAgbV93
b3JkcyA9IG5ld0FycmF5OworICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKK30KKwor
dm9pZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpyZXNpemVTbG93KHNpemVfdCBudW1CaXRzKQor
eworICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0
cyk7CisgICAgCisgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBi
ZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCisgICAgLy8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0
aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0aGUgYml0dmVjdG9yLgorICAgIAor
ICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxv
YyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG1f
d29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICBpZiAobV93b3Jk
cykKKyAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7CisgICAgbV93b3JkcyA9IG5ld0FycmF5Owor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZl
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAkocmV2
aXNpb24gMjA1ODU5KQorKysgU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CkBAIC05MSwxNyArOTIsMTIgQEAgcHVibGljOgogICAgIAogICAgIEZhc3RCaXRWZWN0
b3JXb3JkT3duZXImIG9wZXJhdG9yPShjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhl
cikKICAgICB7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBvdGhlci5hcnJheUxlbmd0aCgpOwot
ICAgICAgICBpZiAobGVuZ3RoID09IGFycmF5TGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIG1lbWNw
eShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBsZW5ndGggKiBzaXplb2YodWludDMyX3QpKTsKLSAg
ICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgaWYgKGFycmF5TGVuZ3RoKCkgIT0gb3Ro
ZXIuYXJyYXlMZW5ndGgoKSkKKyAgICAgICAgICAgIHNldEVxdWFsc1Nsb3cob3RoZXIpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBh
cnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgICAgICAgICBtX251bUJpdHMg
PSBvdGhlci5tX251bUJpdHM7CiAgICAgICAgIH0KLSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKGxlbmd0aCwgc2l6ZW9mKHVpbnQz
Ml90KSkpOwotICAgICAgICBtZW1jcHkobmV3QXJyYXksIG90aGVyLm1fd29yZHMsIGxlbmd0aCAq
IHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBpZiAobV93b3JkcykKLSAgICAgICAgICAgIGZh
c3RGcmVlKG1fd29yZHMpOwotICAgICAgICBtX3dvcmRzID0gbmV3QXJyYXk7Ci0gICAgICAgIG1f
bnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
ICAgICAKQEAgLTE0MCwxOCArMTM2LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVzaXpl
KHNpemVfdCBudW1CaXRzKQogICAgIHsKLSAgICAgICAgaWYgKG51bUJpdHMgPT0gbV9udW1CaXRz
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgLy8gVXNlIGZhc3RDYWxs
b2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCi0g
ICAgICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhl
IHNpemUgb2YgdGhlIGJpdHZlY3Rvci4KLSAgICAgICAgCi0gICAgICAgIHNpemVfdCBuZXdMZW5n
dGggPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cyk7Ci0gICAgICAgIHVpbnQzMl90
KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgs
IHNpemVvZih1aW50MzJfdCkpKTsKLSAgICAgICAgbWVtY3B5KG5ld0FycmF5LCBtX3dvcmRzLCBh
cnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQot
ICAgICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJh
eTsKKyAgICAgICAgaWYgKGFycmF5TGVuZ3RoKCkgIT0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3Ro
KG51bUJpdHMpKQorICAgICAgICAgICAgcmVzaXplU2xvdyhudW1CaXRzKTsKICAgICAgICAgbV9u
dW1CaXRzID0gbnVtQml0czsKICAgICB9CiAgICAgCkBAIC0xNzEsNiArMTU3LDkgQEAgcHVibGlj
OgogICAgIHVpbnQzMl90KiB3b3JkcygpIHsgcmV0dXJuIG1fd29yZHM7IH0KIAogcHJpdmF0ZToK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRFcXVhbHNTbG93KGNvbnN0IEZhc3RCaXRW
ZWN0b3JXb3JkT3duZXImIG90aGVyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNp
emVTbG93KHNpemVfdCBudW1CaXRzKTsKKyAgICAKICAgICB1aW50MzJfdCogbV93b3JkcyB7IG51
bGxwdHIgfTsKICAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OwogfTsKQEAgLTMyMCw2ICszMDks
MTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSBh
cnJheUxlbmd0aCgpOyBpbmRleC0tOykgeworICAgICAgICAgICAgaWYgKG1fd29yZHMud29yZChp
bmRleCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldv
cmRzPgogICAgIEZhc3RCaXRWZWN0b3JJbXBsPEZhc3RCaXRWZWN0b3JBbmRXb3Jkczx0eXBlbmFt
ZSBXb3Jkczo6Vmlld1R5cGUsIHR5cGVuYW1lIE90aGVyV29yZHM6OlZpZXdUeXBlPj4gb3BlcmF0
b3ImKGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikgY29uc3QKICAg
ICB7CkBAIC00NzEsNiArNDY5LDcgQEAgcHVibGljOgogICAgICAgICBtX3dvcmRzLmNsZWFyQWxs
KCk7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBvZiB0aGlz
IGJpdHZlY3RvciBjaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CiAg
ICAgYm9vbCBzZXRBbmRDaGVjayhjb25zdCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYg
b3RoZXIpCiAgICAgewpAQCAtNTUwLDYgKzU0OSwyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gYXQoaW5kZXgpOwogICAgIH0KKyAgICAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIGNvbnRlbnRzIGNoYW5nZWQuCisgICAgQUxXQVlTX0lOTElORSBib29sIGF0b21pY1NldEFu
ZENoZWNrKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHVpbnQzMl90
KiBwb2ludGVyID0gJm1fd29yZHMud29yZChpbmRleCA+PiA1KTsKKyAgICAgICAgdWludDMyX3Qg
bWFzayA9IDEgPDwgKGluZGV4ICYgMzEpOworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAg
ICB1aW50MzJfdCBvbGRWYWx1ZSA9ICpwb2ludGVyOworICAgICAgICAgICAgdWludDMyX3QgbmV3
VmFsdWU7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiAob2xk
VmFsdWUgJiBtYXNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSB8IG1hc2s7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmICghKG9sZFZhbHVlICYgbWFzaykpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVl
ICYgfm1hc2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAod2Vha0NvbXBhcmVBbmRT
d2FwKHBvaW50ZXIsIG9sZFZhbHVlLCBuZXdWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288716</attachid>
            <date>2016-09-13 12:36:30 -0700</date>
            <delta_ts>2016-09-13 17:07:03 -0700</delta_ts>
            <desc>starting to compile</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>80375</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw3IEBACiAJCTBGN0MzOUZCMUM4RjYy
OTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5s
aW5lcy5oICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsK
IAkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFy
a2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmgg
Ki87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMw
MEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5j
cHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNzMxLDYgKzI3
MzIsNyBAQAogCQkwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBP
YmplY3RJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9i
amVjdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkUxQzkw
QzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdPcEluZm8uaDsgcGF0aCA9IGRmZy9ERkdPcEluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRCbG9ja0lubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMyMzAwQTBC
QTQ1IC8qIEJ5VmFsSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeVZh
bEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMzgsNiAr
NTM0MCw3IEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRv
ci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAg
Ki8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggKi8sCisJ
CQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovLAog
CQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICovLAogCQkJ
CTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJCQkJMTRE
MkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCkBAIC03Mzk0LDYgKzcz
OTcsNyBAQAogCQkJCTBGNjZFMTZCMTRERjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxODE2RDAyRUIyMDA1NUE1REIgLyogREZHQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyog
REZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQjgxRDg4OEEw
QzAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
REQ4MTIxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkREODE0MUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVu
dHNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzIyMTg3NzUwNTYwMDgzQjY4
NyAvKiBERkdBcml0aE1vZGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Nyw3ICs3Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSgpOwogICAgIGJv
b2wgbmVlZHNGbGlwKCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0Owog
ICAgIGJvb2wgaXNNYXJrZWQoSGVhcENlbGwqKSBjb25zdDsKICAgICBib29sIGlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChIZWFwQ2VsbCopIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5oCShyZXZpc2lvbiAy
MDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoKSBjb25zdAotewotICAgIGlm
IChpc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4g
bWFya2VkQmxvY2soKS5oYW5kbGUoKS5pc01hcmtlZCgpOwotfQotCiBpbmxpbmUgYm9vbCBDZWxs
Q29udGFpbmVyOjppc01hcmtlZChIZWFwQ2VsbCogY2VsbCkgY29uc3QKIHsKICAgICBpZiAoaXNM
YXJnZUFsbG9jYXRpb24oKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShy
ZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTI2LDExICs1MjYsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2lu
ZygpCiAgICAgfQogICAgIAogICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1Rp
bWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1f
b2JqZWN0U3BhY2UuZmxpcCgpOworICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5n
U2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29i
amVjdFNwYWNlLmJlZ2luTWFya2luZygpOwogICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNl
LnNldElzTWFya2luZyh0cnVlKTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1i
ZXJlZFNldCgpCkBAIC03NzksNyArNzc3LDcgQEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAg
ICBBU1NFUlQobV9zaGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVu
Y2VIYXJ2ZXN0ZXJzLnJlbW92ZUFsbCgpOwogICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNN
YXJraW5nKGZhbHNlKTsKKyAgICBtX29iamVjdFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6
ZV90IEhlYXA6Om9iamVjdENvdW50KCkKQEAgLTkzOSw3ICs5MzcsNyBAQCB2b2lkIEhlYXA6OmNv
bGxlY3RBbGxHYXJiYWdlKCkKICAgICAgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAg
ICBtX29iamVjdFNwYWNlLnNocmluaygpOwogICAgIH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBz
aG90LmlzRW1wdHkoKSk7CisgICAgbV9vYmplY3RTcGFjZS5hc3NlcnRTbmFwc2hvdEVtcHR5KCk7
CiAKICAgICBzd2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrcygpOwogfQpAQCAtMTA0OCw3
ICsxMDQ2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAg
IG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwogICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4
ZWN1dGluZ0NvZGVCbG9ja3MoKTsKIAotICAgIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHByZXBh
cmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwogICAgIGRp
ZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUpOwogICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFk
cygpOwpAQCAtMTE2Miw0NCArMTE2MCwxMCBAQCB2b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJz
KCkKICAgICBtX2FycmF5QnVmZmVycy5zd2VlcCgpOwogfQogCi1zdHJ1Y3QgTWFya2VkQmxvY2tT
bmFwc2hvdEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBN
YXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvcihWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBi
bG9ja3MpIAotICAgICAgICA6IG1faW5kZXgoMCkgCi0gICAgICAgICwgbV9ibG9ja3MoYmxvY2tz
KQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2spIGNvbnN0Ci0gICAgewotICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dl
ZXAodHJ1ZSk7Ci0gICAgICAgIG1fYmxvY2tzW21faW5kZXgrK10gPSBibG9jazsKLSAgICB9Ci0K
LSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG11dGFibGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3Qg
YSBDKysgbGFtYmRhLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTk2NDQKLSAgICBtdXRhYmxlIHNpemVfdCBtX2luZGV4OwotICAgIFZlY3RvcjxNYXJr
ZWRCbG9jazo6SGFuZGxlKj4mIG1fYmxvY2tzOwotfTsKLQogdm9pZCBIZWFwOjpzbmFwc2hvdE1h
cmtlZFNwYWNlKCkKIHsKICAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhpcywgIkhlYXA6
OnNuYXBzaG90TWFya2VkU3BhY2UiKTsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFi
bHkgYmUgcmVuYW1lZC4gSXQncyBub3QgYWN0dWFsbHkgc25hcHNob3R0aW5nIGFsbCBvZiBNYXJr
ZWRTcGFjZS4KLSAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSW5jcmVtZW50YWxTd2VlcGVyLCBzbyBp
dCBvbmx5IG5lZWRzIHRvIHNuYXBzaG90IGJsb2Nrcy4gSG93ZXZlciwgaWYgd2UgZXZlcgotICAg
IC8vIHdhbnRlZCB0byBhZGQgb3RoZXIgc25hcHNob3R0aW5nIGxvZ2luLCB3ZSdkIHByb2JhYmx5
IHB1dCBpdCBoZXJlLgotICAgIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRl
bkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUg
OiBtX29iamVjdFNwYWNlLmJsb2Nrc1dpdGhOZXdPYmplY3RzKCkpIHsKLSAgICAgICAgICAgIGlm
IChoYW5kbGUtPmlzT25CbG9ja3NUb1N3ZWVwKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBtX2Jsb2NrU25hcHNob3QuYXBwZW5kKGhhbmRsZSk7Ci0gICAgICAgICAg
ICBoYW5kbGUtPnNldElzT25CbG9ja3NUb1N3ZWVwKHRydWUpOwotICAgICAgICB9Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgbV9ibG9ja1NuYXBzaG90LnJlc2l6ZVRvRml0KG1fb2JqZWN0U3BhY2Uu
YmxvY2tzKCkuc2V0KCkuc2l6ZSgpKTsKLSAgICAgICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0
b3IgZnVuY3RvcihtX2Jsb2NrU25hcHNob3QpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZvckVh
Y2hCbG9jayhmdW5jdG9yKTsKLSAgICB9CisgICAgbV9vYmplY3RTcGFjZS5zbmFwc2hvdCgpOwog
fQogCiB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKQEAgLTEyMjIsOSAr
MTE4Niw5IEBAIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW4KICAgICBt
X2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhp
cyk7CiB9CiAKLXZvaWQgSGVhcDo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgSGVhcDo6cHJlcGFy
ZUZvckFsbG9jYXRpb24oKQogewotICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3JzKCk7
CisgICAgbV9vYmplY3RTcGFjZS5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogfQogCiB2b2lkIEhl
YXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw2IEBAIHB1YmxpYzoKICAgICAvLyBvdXIg
c2NhbiB0byBydW4gZmFzdGVyLiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc190aW1lQ2hl
Y2tSZXNvbHV0aW9uID0gMTY7CiAKLSAgICBzdGF0aWMgYm9vbCBpc0xpdmUoY29uc3Qgdm9pZCop
OwogICAgIHN0YXRpYyBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgYm9v
bCBpc01hcmtlZENvbmN1cnJlbnRseShjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIGJvb2wgdGVz
dEFuZFNldE1hcmtlZChIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOwpAQCAtMzMzLDcgKzMzMiw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpOwogICAg
IHZvaWQgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAgdm9pZCB3cml0ZUJhcnJpZXJD
dXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7Ci0gICAgdm9pZCByZXNldEFsbG9jYXRvcnMo
KTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBoYXJ2ZXN0V2Vh
a1JlZmVyZW5jZXMoKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMo
KTsKICAgICB2b2lkIGNsZWFyVW5tYXJrZWRFeGVjdXRhYmxlcygpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NCwxNyArNzQsNiBAQCBpbmxpbmUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBKU1ZhbHVlIHYpCiAg
ICAgcmV0dXJuIGhlYXAodi5hc0NlbGwoKSk7CiB9CiAKLWlubGluZSBib29sIEhlYXA6OmlzTGl2
ZShjb25zdCB2b2lkKiByYXdDZWxsKQotewotICAgIEFTU0VSVCghbWF5QmVHQ1RocmVhZCgpKTsK
LSAgICBIZWFwQ2VsbCogY2VsbCA9IGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHJhd0NlbGwpOwot
ICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gY2VsbC0+
bGFyZ2VBbGxvY2F0aW9uKCkuaXNMaXZlKCk7Ci0gICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2Vs
bC0+bWFya2VkQmxvY2soKTsKLSAgICBibG9jay5mbGlwSWZOZWNlc3NhcnkoYmxvY2sudm0oKS0+
aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSk7Ci0gICAgcmV0dXJuIGJsb2NrLmhhbmRsZSgp
LmlzTGl2ZUNlbGwoY2VsbCk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtl
ZChjb25zdCB2b2lkKiByYXdDZWxsKQogewogICAgIEFTU0VSVCghbWF5QmVHQ1RocmVhZCgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2Vl
cGVyLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SW5jcmVtZW50YWxTd2VlcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDEzICsxMjcsMTQg
QEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXAoZG91YmxlIAogCiBib29sIEluY3Jl
bWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soKQogewotICAgIHdoaWxlICghbV9ibG9ja3NU
b1N3ZWVwLmlzRW1wdHkoKSkgewotICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9
IG1fYmxvY2tzVG9Td2VlcC50YWtlTGFzdCgpOwotICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nr
c1RvU3dlZXAoZmFsc2UpOwotCi0gICAgICAgIGlmICghYmxvY2stPm5lZWRzU3dlZXBpbmcoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sg
PSBudWxscHRyOworICAgIAorICAgIGZvciAoOyBtX2N1cnJlbnRBbGxvY2F0b3I7IG1fY3VycmVu
dEFsbG9jYXRvciA9IG1fY3VycmVudEFsbG9jYXRvci0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAg
ICAgIGlmIChibG9jayA9IG1fY3VycmVudEFsbG9jYXRvci0+ZmluZEJsb2NrVG9Td2VlcCgpKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChibG9jaykgewogICAgICAg
ICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MobV92bS0+aGVhcCk7CiAgICAgICAgIGJsb2NrLT5z
d2VlcCgpOwogICAgICAgICBtX3ZtLT5oZWFwLm9iamVjdFNwYWNlKCkuZnJlZU9yU2hyaW5rQmxv
Y2soYmxvY2spOwpAQCAtMTQ2LDExICsxNDcsMTIgQEAgYm9vbCBJbmNyZW1lbnRhbFN3ZWVwZXI6
OnN3ZWVwTmV4dEJsb2NrKAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmco
KQogewogICAgIHNjaGVkdWxlVGltZXIoKTsKKyAgICBtX2N1cnJlbnRBbGxvY2F0b3IgPSBtX3Zt
LT5oZWFwLm9iamVjdFNwYWNlKCkuZmlyc3RBbGxvY2F0b3IoKTsKIH0KIAogdm9pZCBJbmNyZW1l
bnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2VlcGluZygpCiB7Ci0gICAgbV9ibG9ja3NUb1N3ZWVw
LmNsZWFyKCk7CisgICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbnVsbHB0cjsKICAgICBpZiAobV92
bSkKICAgICAgICAgY2FuY2VsVGltZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsMTMgKzI3LDEyIEBACiAjZGVmaW5lIEluY3JlbWVudGFsU3dlZXBlcl9oCiAK
ICNpbmNsdWRlICJIZWFwVGltZXIuaCIKLSNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7Ci1jbGFz
cyBNYXJrZWRCbG9jazsKK2NsYXNzIE1hcmtlZEFsbG9jYXRvcjsKIAogY2xhc3MgSW5jcmVtZW50
YWxTd2VlcGVyIDogcHVibGljIEhlYXBUaW1lciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC01Niw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRpbWVyKCk7
CiAgICAgdm9pZCBjYW5jZWxUaW1lcigpOwogICAgIAotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6
SGFuZGxlKj4mIG1fYmxvY2tzVG9Td2VlcDsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fY3VycmVu
dEFsbG9jYXRvcjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsNTAgKzEwMCw3NyBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEJsb2NrVG9T
d2VlCiAgICAgbV9uZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrKTsKIH0K
IAorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaW5kRW1wdHlCbG9jaygp
Cit7CisgICAgbV9lbXB0eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0
cnVlKTsKKyAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5Q3Vyc29yXTsKK30K
Kwogdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1w
bCgpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
ICAgIAotICAgIGlmIChtX2N1cnJlbnRCbG9jaykgewotICAgICAgICBBU1NFUlQobV9jdXJyZW50
QmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVwKTsKKyAgICBpZiAobV9jdXJyZW50QmxvY2spCiAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAgICAgc2V0
TmV4dEJsb2NrVG9Td2VlcChtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICB9CiAgICAgCiAg
ICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChtX25leHRC
bG9ja1RvU3dlZXAgIT0gbV9ibG9ja0xpc3QuZW5kKCkpOwotCi0gICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqJiBibG9jayA9IG1fbmV4
dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICBuZXh0ID0gZmls
dGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgIC8vIEl0IHdvdWxkIGJlIHN1
cGVyIHdlaXJkIGlmIHRoZSBibG9ja3Mgd2UgYXJlIHN3ZWVwaW5nIGhhdmUgYW55dGhpbmcgYWxs
b2NhdGVkIGR1cmluZyB0aGlzCi0gICAgICAgIC8vIGN5Y2xlLgotICAgICAgICBBU1NFUlQoIWJs
b2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgCi0gICAgICAgIEZyZWVMaXN0
IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVl
TGlzdCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAoOzsp
IHsKKyAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0gbV9jYW5BbGxvY2F0ZS5maW5kQml0KG1f
YWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGlmIChtX2FsbG9jYXRpb25DdXJzb3Ig
Pj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAg
ICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24gYSBjb21wbGV0ZS1mdWxsIGJsb2NrLiBN
YXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0Ci0gICAgICAgIC8vIHRoYXQgYWxnb3Jp
dGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8gaXQgc29tZXRpbWVzLgotICAgICAgICBp
ZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChi
bG9jay0+aXNGcmVlTGlzdGVkKCkpOwotICAgICAgICAgICAgYmxvY2stPnVuc3dlZXBXaXRoTm9O
ZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc01hcmtlZCgpKTsK
LSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQorICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKG1fYWxsb2NhdGlvbkN1cnNvciwgZmFsc2Up
OwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7Ci0gICAgICAgIHNldEZyZWVMaXN0
KGZyZWVMaXN0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICh2b2lkKiByZXN1bHQgPSB0
cnlBbGxvY2F0ZUluKG1fYmxvY2tzW21fYWxsb2NhdGlvbkN1cnNvcl0pKQorICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZyZWVMaXN0KSB7Ci0gICAg
ICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZmluZEVtcHR5QmxvY2soKSkKKyAgICAgICAgcmV0dXJu
IGFsbG9jYXRlSW4oYmxvY2spOworICAgIAorICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jayA9IG1fbWFya2VkU3BhY2UtPmZpbmRFbXB0eUJsb2NrKCkpIHsKKyAgICAgICAgYmxvY2st
PnN3ZWVwKCk7CisgICAgICAgIGJsb2NrLT5yZW1vdmVGcm9tQWxsb2NhdG9yKCk7CisgICAgICAg
IGFkZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlSW4oYmxvY2spOwogICAg
IH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAordm9pZCogTWFya2VkQWxsb2NhdG9y
OjphbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIHZvaWQqIHJl
c3VsdCA9IHRyeUFsbG9jYXRlSW4oYmxvY2spOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxv
Y2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIEFTU0VSVChibG9jayk7
CisgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgQVNTRVJU
KCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0g
YmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAg
CisgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGVseSBmdWxsIGJs
b2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0CisgICAgLy8gdGhhdCBhbGdv
cml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCisgICAgaWYg
KGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7CisgICAgICAgIEFTU0VSVChibG9jay0+
aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxsb2Nh
dGVkKCk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAg
QVNTRVJUKCFpc0VtcHR5KGJsb2NrKSk7CisgICAgICAgIEFTU0VSVCghaXNDYW5BbGxvY2F0ZShi
bG9jaykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCisgICAgbV9jdXJy
ZW50QmxvY2sgPSBibG9jazsKKyAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7CisgICAgCiAgICAg
dm9pZCogcmVzdWx0OwogICAgIGlmIChtX2ZyZWVMaXN0LnJlbWFpbmluZykgewogICAgICAgICB1
bnNpZ25lZCBjZWxsU2l6ZSA9IG1fY2VsbFNpemU7CkBAIC0xNTUsNiArMTgyLDcgQEAgdm9pZCog
TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQogICAgICAgICByZXN1bHQgPSBoZWFk
OwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHNldElzRWRlbihtX2N1
cnJlbnRCbG9jaywgdHJ1ZSk7CiAgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWxsb2NhdGVJbkJsb2Nr
KG1fY3VycmVudEJsb2NrKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjI3LDggKzI1NSw3
IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBhZGRCbG9jayhibG9jayk7Ci0gICAgICAgIAot
ICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKKyAgICByZXN1bHQg
PSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBBU1NFUlQocmVzdWx0KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMjQ5LDMwICsyNzYsNjggQEAgc2l6ZV90IE1hcmtlZEFsbG9jYXRvcjo6Ymxv
Y2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjp0cnlB
bGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwgdGhp
cywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIG1fY2VsbFNpemUs
IG1fYXR0cmlidXRlcyk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7CisgICAgCisg
ICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2sp
OwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAgIGlmICht
X2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9ibG9ja3Mu
c2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5
KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChoYW5kbGUpOworICAgICAgICBpZiAobV9ibG9j
a3MuY2FwYWNpdHkoKSAhPSBvbGRDYXBhY2l0eSkgeworICAgICAgICAgICAgZm9yRWFjaEJpdFZl
Y3RvcigKKyAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQodmVjdG9yLm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCht
X2Jsb2Nrcy5jYXBhY2l0eSgpID4gb2xkQ2FwYWNpdHkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3Rv
ciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIHZlY3Rvci5yZXNpemUobV9ibG9ja3Mu
Y2FwYWNpdHkoKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgpOworICAgICAg
ICBBU1NFUlQoIW1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIG1fYmxvY2tzW2luZGV4XSA9IGhh
bmRsZTsKKyAgICB9CisgICAgCisgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgWyZdIChG
YXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmVjdG9yW2luZGV4
XSk7CisgICAgICAgIH0pOworCisgICAgaGFuZGxlLT5kaWRBZGRUb0FsbG9jYXRvcih0aGlzLCBp
bmRleCk7CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsKLSAgICBzZXROZXh0
QmxvY2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRCbG9jayhibG9j
ayk7CisgICAgc2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKKyAgICBzZXRJc0VtcHR5KGluZGV4LCB0
cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBibG9jaykgewot
ICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZpbHRlck5leHRCbG9jayhtX2N1cnJlbnRCbG9jay0+
bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0gICAgfQotICAgIGlm
IChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxvY2spCi0gICAgICAgIHNldE5leHRCbG9ja1RvU3dl
ZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOworICAgIEFTU0VSVChibG9jay0+YWxsb2Nh
dG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fYmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9PSBi
bG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJlbW92ZUJsb2NrKCk7Ci0gICAgbV9ibG9ja0xpc3Qu
cmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPSBudWxscHRyOwor
ICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2stPmluZGV4KCkpOworICAgIAorICAg
IGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7
CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCldID0gZmFsc2U7CisgICAgICAgIH0p
OworICAgIAorICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQg
TWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCkBAIC0yOTIsMjMgKzM1NywyMCBAQCB2
b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcoKQogICAgIG1fZnJlZUxpc3QgPSBG
cmVlTGlzdCgpOwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzZXQoKQordm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKLSAgICBtX2xhc3RBY3RpdmVC
bG9jayA9IDA7Ci0gICAgbV9jdXJyZW50QmxvY2sgPSAwOworICAgIG1fbGFzdEFjdGl2ZUJsb2Nr
ID0gbnVsbHB0cjsKKyAgICBtX2N1cnJlbnRCbG9jayA9IG51bGxwdHI7CiAgICAgc2V0RnJlZUxp
c3QoRnJlZUxpc3QoKSk7CiAKLSAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fYmxvY2tMaXN0LmJl
Z2luKCkpOworICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IDA7CisgICAgbV9lbXB0eUN1cnNvciA9
IDA7CisgICAgbV9zbmFwc2hvdEN1cnNvciA9IDA7CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxs
KCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7
Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2Vk
QmxvY2s6OkhhbmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sg
PSBuZXh0KSB7Ci0gICAgICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0
KCkpOwotCi0gICAgICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAgICAgYmxvY2stPnph
cChmcmVlTGlzdCk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICB9CisgICAg
ICAgIC8vIEZJWE1FOiBUaGluZ3M/CiAgICAgfQogfQogCkBAIC0zMjYsNCArMzg4LDgwIEBAIHZv
aWQgTWFya2VkQWxsb2NhdG9yOjpzZXRGcmVlTGlzdChjb25zdCAKICAgICBtX2ZyZWVMaXN0ID0g
ZnJlZUxpc3Q7CiB9CiAKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkK
K3sKKyAgICBpZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICBt
X2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOworICAgIG1fbGFzdEFjdGl2ZUJsb2Nr
ID0gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmJlZ2luTWFya2luZ0ZvckZ1
bGxDb2xsZWN0aW9uKCkKK3sKKyAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28gaXMg
b3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBmdWxs
CisgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xsZWN0
aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKKyAgICAvLyBhcyB0aGUg
bmV4dCBvbmUgaXMgZWRlbi4KKyAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVhckFsbCgpOworICAg
IG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6
OmVuZE1hcmtpbmcoKQoreworICAgIG1fYWxsb2NhdGVkLmNsZWFyKCk7CisgICAgCisgICAgLy8g
SXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBjb21wcmVoZW5kLCBidXQgdGhlIGVu
ZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bworICAgIC8vIGtub3cgd2hhdCBraW5k
IG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdlIGlzIGFscmVhZHkgZW5jb2RlZCBp
biB0aGUgbV9tYXJraW5nWFlaCisgICAgLy8gdmVjdG9ycy4KKyAgICAKKyAgICBpZiAobmVlZHNE
ZXN0cnVjdGlvbigpKSB7CisgICAgICAgIC8vIElmIGJsb2NrcyBuZWVkIGRlc3RydWN0aW9uIHRo
ZW4gbm90aGluZyBpcyBlbXB0eSEgVGhpcyBpcyBhIGNvcnJlY3QgYXNzZXJ0aW9uIGJ1dCBtYXkK
KyAgICAgICAgLy8gYmVjb21lIHdyb25nIG9uY2Ugd2UgZ28gZnVsbCBjb25jdXJyZW50OiB3aGVu
IHdlIGNyZWF0ZSBhIG5ldyBibG9jaywgaXQgd2lsbCBmbGlja2VyCisgICAgICAgIC8vIGludG8g
dGhlIGVtcHR5IHNldCBmb3IgYSB0aW55IG1vbWVudC4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMg
Y29kZSBpcyBsaWtlbHkgdG8gYmUgcnVuCisgICAgICAgIC8vIGluIHN0b3BUaGVXb3JsZC4KKyAg
ICAgICAgQVNTRVJUKG1fZW1wdHkuaXNFbXB0eSgpKTsKKyAgICAgICAgbV9jYW5BbGxvY2F0ZSA9
IG1fbGl2ZSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIG1fZW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHk7CisgICAgbV9jYW5B
bGxvY2F0ZSA9IG1fbGl2ZSAmIG1fbWFya2luZ05vdEVtcHR5ICYgfm1fbWFya2luZ1JldGlyZWQ7
Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZvckVkZW5Db2xsZWN0aW9uKCkK
K3sKKyAgICBtX3NuYXBzaG90IHw9IG1fZWRlbjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6
OnNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24oKQoreworICAgIG1fc25hcHNob3QgfD0gbV9saXZl
OworfQorCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1Rv
U3dlZXAoKQoreworICAgIG1fc25hcHNob3RDdXJzb3IgPSBtX3NuYXBzaG90LmZpbmRCaXQobV9z
bmFwc2hvdEN1cnNvciwgdHJ1ZSk7CisgICAgaWYgKG1fc25hcHNob3RDdXJzb3IgPj0gbV9ibG9j
a3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3Nb
bV9zbmFwc2hvdEN1cnNvcl07Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzd2VlcCgpCit7
CisgICAgbV9zbmFwc2hvdC5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRl
eCkgeworICAgICAgICAgICAgbV9ibG9ja3NbaW5kZXhdLT5zd2VlcCgpOworICAgICAgICB9KTsK
K30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNocmluaygpCit7CisgICAgbV9lbXB0eS5mb3JF
YWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgbV9t
YXJrZWRTcGFjZS0+ZnJlZUJsb2NrKGJsb2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkFsbG9jYXRvckF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVlTGlz
dC5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtMzcsNiArMzgsNzcgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIE1hcmtlZFNwYWNlOwog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisjZGVmaW5lIEZPUl9FQUNIX01BUktFRF9B
TExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBv
ZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKKyAgICBtYWNybyhl
bXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBv
YmplY3RzIGFuZCBub3RoaW5nIHRvIGRlc3Ryb3kuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQs
IEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGxibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZl
IG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9jYXRlLCBDYW5BbGxvY2F0ZSkgLyogVGhl
IHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY2FuIGJlIGFsbG9jYXRlZCBpbiByaWdodCBub3cuICov
IFwKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBo
YXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKKyAgICBtYWNybyhzbmFwc2hv
dCwgU25hcHNob3QpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNvdWxkIGJlIHN3ZXB0
IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wKKyAgICBcCisgICAgLyogVGhlc2UgYXJl
IGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAqL1wKKyAgICBtYWNybyhtYXJraW5nTm90RW1wdHks
IE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIG5vdCBl
bXB0eS4gKi8gXAorICAgIG1hY3JvKG1hcmtpbmdSZXRpcmVkLCBNYXJraW5nUmV0aXJlZCkgLyog
VGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIHJldGlyZWQuICovCisKKy8vIE5vdGUgdGhh
dCB0aGlzIGNvbGxlY3RvciBzdXBwb3J0cyBvdmVybGFwcGluZyBhbGxvY2F0b3Igc3RhdGUgd2l0
aCBtYXJraW5nIHN0YXRlLCBzaW5jZSBpbiBhCisvLyBjb25jdXJyZW50IGNvbGxlY3RvciB5b3Ug
YWxsb3cgYWxsb2NhdGlvbiB3aGlsZSBtYXJraW5nIGlzIHJ1bm5pbmcuIFNvIGl0J3MgYmVzdCB0
byB2aXN1YWxpemUgYQorLy8gZnVsbCBtdXRhYmxlLT5lZGVuIGNvbGxlY3QtPm11dGF0ZS0+ZnVs
bCBjb2xsZWN0IGN5Y2xlIGFuZCBzZWUgaG93IHRoZSBiaXRzIGFib3ZlIGdldCBhZmZlY3RlZC4K
Ky8vIFRoZSBleGFtcGxlIGJlbG93IHRyaWVzIHRvIGJlIGV4aGF1c3RpdmUgYWJvdXQgd2hhdCBo
YXBwZW5zIHRvIHRoZSBiaXRzLCBidXQgb21pdHMgYSBsb3Qgb2YKKy8vIHRoaW5ncyB0aGF0IGhh
cHBlbiB0byBvdGhlciBzdGF0ZS4KKy8vCisvLyBDcmVhdGUgYWxsb2NhdG9yCisvLyAtIGFsbCBi
aXRzIGFyZSBlbXB0eQorLy8gU3RhcnQgYWxsb2NhdGluZyBpbiBzb21lIGJsb2NrCisvLyAtIGFs
bG9jYXRlIHRoZSBibG9jayBhbmQgc2V0IHRoZSBsaXZlIGJpdC4KKy8vIC0gdGhlIGVtcHR5IGJp
dCBmb3IgdGhlIGJsb2NrIGZsaWNrZXJzIG9uIGFuZCB0aGVuIGdldHMgaW1tZWRpYXRlbHkgY2xl
YXJlZCBieSBzd2VlcGluZy4KKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxv
Y2F0aW5nIGluIHRoYXQgYmxvY2sKKy8vIC0gc2V0IHRoZSBhbGxvY2F0ZWQgYml0LgorLy8gRG8g
dGhhdCB0byBhIGxvdCBvZiBibG9ja3MgYW5kIHRoZW4gc3RhcnQgYW4gZWRlbiBjb2xsZWN0aW9u
LgorLy8gLSBiZWdpbk1hcmtpbmcoKSBoYXMgbm90aGluZyB0byBkby4KKy8vIC0gYnkgZGVmYXVs
dCB3ZSBoYXZlIGNsZWFyIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJlZCBiaXRzLgorLy8g
LSBtYXJraW5nIGJ1aWxkcyB1cCBtYXJraW5nTm90RW1wdHkvbWFya2luZ1JldGlyZWQgYml0cy4K
Ky8vIFdlIGRvIGVuZE1hcmtpbmcoKQorLy8gLSBjbGVhciBhbGwgYWxsb2NhdGVkIGJpdHMuCisv
LyAtIGZvciBkZXN0cnVjdG9yIGJsb2NrczogY2FuQWxsb2NhdGUgPSBsaXZlICYgfm1hcmtpbmdS
ZXRpcmVkCisvLyAtIGZvciBub24tZGVzdHJ1Y3RvciBibG9ja3M6CisvLyAgICAgICBlbXB0eSA9
IGxpdmUgJiB+bWFya2luZ05vdEVtcHR5CisvLyAgICAgICBjYW5BbGxvY2F0ZSA9IGxpdmUgJiBt
YXJraW5nTm90RW1wdHkgJiB+bWFya2luZ1JldGlyZWQKKy8vIFNuYXBzaG90dGluZy4KKy8vIC0g
c25hcHNob3QgfD0gZWRlbgorLy8gUHJlcGFyZSBmb3IgYWxsb2NhdGlvbi4KKy8vIC0gY2xlYXIg
ZWRlbgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLyBBbGxvY2F0ZSBpbiBzb21lIGJsb2NrIHRo
YXQgaGFkIHNvbWUgZnJlZSBhbmQgc29tZSBsaXZlIG9iamVjdHMuCisvLyAtIGNsZWFyIHRoZSBj
YW5BbGxvY2F0ZSBiaXQKKy8vIC0gY2xlYXIgdGhlIHNuYXBzaG90IGJpdAorLy8gLSBzZXQgdGhl
IGVkZW4gYml0CisvLyBGaW5pc2ggYWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4K
Ky8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3YXMgY29tcGxldGVseSBlbXB0eS4KKy8v
IC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8gLSBjbGVhciB0aGUgc25hcHNob3QgYml0CisvLyAt
IHNldCB0aGUgZWRlbiBiaXQuCisvLyBGaW5pc2ggYWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0
ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3YXMgY29tcGxldGVseSBl
bXB0eSBpbiBhbm90aGVyIGFsbG9jYXRvci4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8g
LSBjbGVhciBhbGwgYml0cyBpbiB0aGF0IGFsbG9jYXRvcgorLy8gLSBzZXQgdGhlIGxpdmUgYml0
IGluIGFub3RoZXIgYWxsb2NhdG9yIGFuZCB0aGUgZW1wdHkgYml0LgorLy8gLSBjbGVhciB0aGUg
ZW1wdHksIHNuYXBzaG90IGJpdHMuCisvLyAtIHNldCB0aGUgZWRlbiBiaXQuCisvLyBGaW5pc2gg
YWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4KKy8vIFN0YXJ0IGEgZnVsbCBjb2xs
ZWN0aW9uLgorLy8gLSBiZWdpbk1hcmtpbmcoKSBjbGVhcnMgbWFya2luZ05vdEVtcHR5LCBtYXJr
aW5nUmV0aXJlZAorLy8gLSB0aGUgaGVhcCB2ZXJzaW9uIGlzIGluY3JlbWVudGVkCisvLyAtIG1h
cmtpbmcgcmVidWlsZHMgbWFya2luZ05vdEVtcHR5L21hcmtpbmdyZXRpcmVkIGJpdHMuCisvLyBX
ZSBkbyBlbmRNYXJraW5nKCkKKy8vIC0gY2xlYXIgYWxsIGFsbG9jYXRlZCBiaXRzLgorLy8gLSBz
ZXQgY2FuQWxsb2NhdGUvZW1wdHkgdGhlIHNhbWUgd2F5IGFzIGluIGVkZW4gY29sbGVjdGlvbi4K
Ky8vIFNuYXBzaG90dGluZy4KKy8vIC0gc25hcHNob3QgfD0gbGl2ZQorLy8gcHJlcGFyZSBmb3Ig
YWxsb2NhdGlvbi4KKy8vIC0gY2xlYXIgZWRlbi4KKy8vIEZpbmlzaCBjb2xsZWN0aW9uLgorCiBj
bGFzcyBNYXJrZWRBbGxvY2F0b3IgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAKQEAgLTQ2LDkgKzExOCwxNSBAQCBwdWJsaWM6CiAKICAgICBNYXJrZWRBbGxvY2F0
b3IoSGVhcCosIE1hcmtlZFNwYWNlKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JB
dHRyaWJ1dGVzJik7CiAgICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwotICAgIHZvaWQg
cmVzZXQoKTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBzdG9w
QWxsb2NhdGluZygpOwogICAgIHZvaWQgcmVzdW1lQWxsb2NhdGluZygpOworICAgIHZvaWQgYmVn
aW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICB2b2lkIGVuZE1hcmtpbmcoKTsKKyAg
ICB2b2lkIHNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICB2b2lkIHNuYXBzaG90Rm9y
RnVsbENvbGxlY3Rpb24oKTsKKyAgICB2b2lkIHN3ZWVwKCk7CisgICAgdm9pZCBzaHJpbmsoKTsK
ICAgICBzaXplX3QgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NlbGxTaXplOyB9CiAgICAg
Y29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlczsgfQogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uOyB9CkBAIC03Miw2
ICsxNTAsMzQgQEAgcHVibGljOgogICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUp
OwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYmxvY2tTaXplRm9yQnl0ZXMoc2l6ZV90KTsKKyAg
ICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwg
Y2FwaXRhbEJpdE5hbWUpICAgICBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXpl
X3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAor
ICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sp
IGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpKTsgfSBc
CisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFs
dWUpIHsgbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNl
dElzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZh
bHVlKSB7IHNldElzICMjIGNhcGl0YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0g
XAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3Qg
aW5kZXgsIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRB
bmRDaGVjayhpbmRleCwgdmFsdWUpOyB9IFwKKyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMg
IyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUp
IHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhibG9jay0+aW5k
ZXgoKSwgdmFsdWUpOyB9CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VE
X0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0FD
Q0VTU09SUworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hC
aXRWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FU
T1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAg
ZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NB
VE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyk7CisjdW5kZWYgTUFSS0VEX0FM
TE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9CisgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBu
ZXh0QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0QWxsb2NhdG9yOyB9CisgICAgCisg
ICAgLy8gTWFya2VkU3BhY2UgY2FsbHMgdGhpcyBkdXJpbmcgaW5pdC4KKyAgICB2b2lkIHNldE5l
eHRBbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IpIHsgbV9uZXh0QWxsb2NhdG9y
ID0gYWxsb2NhdG9yOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5
QmxvY2soKTsKKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kQmxvY2tUb1N3ZWVw
KCk7CiAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwpAQCAtODIs
NiArMTg4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0
aW5nKCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwoKTsKICAg
ICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAgdm9pZCogdHJ5
QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7CisgICAgdm9pZCogYWxsb2NhdGVJbihN
YXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxl
Y3Rpb25zSWZOZWVkZWQoKTsKICAgICB2b2lkIHJldGlyZShNYXJrZWRCbG9jazo6SGFuZGxlKik7
CiAgICAgCkBAIC05MSwxNiArMTk5LDMwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXROZXh0Qmxv
Y2tUb1N3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKICAgICBGcmVlTGlzdCBtX2Zy
ZWVMaXN0OworICAgIAorICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9ja3M7
CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVCbG9ja0luZGljZXM7CisgICAgCisjZGVmaW5l
IE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJp
dE5hbWUpIFwKKyAgICBGYXN0Qml0VmVjdG9yIG1fICMjIGxvd2VyQml0TmFtZTsKKyAgICBGT1Jf
RUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElP
TikKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTgorICAgIAorICAgIC8v
IEFmdGVyIHlvdSBkbyBzb21ldGhpbmcgdG8gYSBibG9jayBiYXNlZCBvbiBvbmUgb2YgdGhlc2Ug
Y3Vyc29ycywgeW91IGNsZWFyIHRoZSBiaXQgaW4gdGhlCisgICAgLy8gY29ycmVzcG9uZGluZyBi
aXR2ZWN0b3IgYW5kIGxlYXZlIHRoZSBjdXJzb3Igd2hlcmUgaXQgd2FzLgorICAgIHNpemVfdCBt
X2FsbG9jYXRpb25DdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0
IGlzIGEgY2FuZGlkYXRlIGZvciBhbGxvY2F0aW9uLgorICAgIHNpemVfdCBtX2VtcHR5Q3Vyc29y
IHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBm
b3IgZW1wdHkgYWxsb2NhdGlvbiAoYWxsb2NhdGluZyBpbiBlbXB0eSBibG9ja3MpLgorICAgIHNp
emVfdCBtX3NuYXBzaG90Q3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sg
dGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgaW5jcmVtZW50YWwgc3dlZXBpbmcuCisgICAgCiAgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogbV9jdXJyZW50QmxvY2s7CiAgICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0
QmxvY2tUb1N3ZWVwOwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxl
LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4gbV9ibG9ja0xpc3Q7
Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2Vu
dGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBtX3JldGlyZWRCbG9ja3M7CisKICAgICBM
b2NrIG1fbG9jazsKICAgICB1bnNpZ25lZCBtX2NlbGxTaXplOwogICAgIEFsbG9jYXRvckF0dHJp
YnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIEhlYXAqIG1faGVhcDsKICAgICBNYXJrZWRTcGFjZSog
bV9tYXJrZWRTcGFjZTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fbmV4dEFsbG9jYXRvcjsKIH07
CiAKIGlubGluZSBwdHJkaWZmX3QgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0KCkK
QEAgLTE0OSwyMCArMjcxLDEyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCogTWFya2VkQWxsb2NhdG9y
OjphbGwKICAgICByZXR1cm4gaGVhZDsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9y
OjpyZXN1bWVBbGxvY2F0aW5nKCkKLXsKLSAgICBpZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3Vt
ZUFsbG9jYXRpbmcoKTsKLSAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOwot
ICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
b3I+IGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9ibG9ja0xpc3QuZm9yRWFjaChmdW5jdG9yKTsKLSAgICBt
X3JldGlyZWRCbG9ja3MuZm9yRWFjaChmdW5jdG9yKTsKKyAgICBtX2xpdmUuZm9yRWFjaFNldEJp
dCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IobV9i
bG9ja3NbaW5kZXhdKTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24g
MjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RhdGljIGNv
bnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBmYWxzZTsKIHN0YXRpYyBzaXplX3QgYmFsYW5jZTsK
IAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFw
LCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxv
Y2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2Vk
QmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9j
YXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgaWYgKGNvbXB1dGVCYWxhbmNlKSB7
CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4LDE2ICs0OCwxNCBAQCBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlm
IChzY3JpYmJsZUZyZWVDZWxscygpKQogICAgICAgICBzY3JpYmJsZShibG9ja1NwYWNlLCBibG9j
a1NpemUpOwotICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGFsbG9jYXRvciwgY2VsbFNpemUs
IGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOworICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGNl
bGxTaXplLCBhdHRyaWJ1dGVzLCBibG9ja1NwYWNlKTsKIH0KIAotTWFya2VkQmxvY2s6OkhhbmRs
ZTo6SGFuZGxlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3Qg
Y2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIHZvaWQqIGJs
b2NrU3BhY2UpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgc2l6ZV90
IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCB2b2lkKiBi
bG9ja1NwYWNlKQogICAgIDogbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsgYXRvbVNpemUgLSAx
KSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKGF0b21zUGVyQmxvY2sgLSBtX2F0b21zUGVy
Q2VsbCArIDEpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKLSAgICAsIG1fc3RhdGUo
TmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgotICAgICwgbV9hbGxvY2F0b3Io
YWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+aGVhcCgpLT52bSgpLCBDZWxs
Q29udGFpbmVyKCkpCisgICAgLCBtX3dlYWtTZXQoaGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkp
CiB7CiAgICAgbV9ibG9jayA9IG5ldyAoTm90TnVsbCwgYmxvY2tTcGFjZSkgTWFya2VkQmxvY2so
KmhlYXAudm0oKSwgKnRoaXMpOwogICAgIApAQCAtNjUsNyArNjMsNiBAQCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgCiAgICAgCiAgICAgaGVhcC5kaWRBbGxvY2F0ZUJs
b2NrKGJsb2NrU2l6ZSk7CiAgICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlz
KTsKLSAgICBBU1NFUlQoYWxsb2NhdG9yKTsKICAgICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxLaW5k
ICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0cmlidXRl
cy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKIH0KQEAgLTc4LDYgKzc1
LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgICAgIGlmICghKGJhbGFu
Y2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBi
YWxhbmNlLCAiXG4iKTsKICAgICB9CisgICAgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgIG1f
YmxvY2stPn5NYXJrZWRCbG9jaygpOwogICAgIGZhc3RBbGlnbmVkRnJlZShtX2Jsb2NrKTsKICAg
ICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1NpemUpOwpAQCAtMTAxLDIxICs5OSwyMiBAQCBNYXJr
ZWRCbG9jazo6TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmCiAgICAgbV9iaWFzZWRNYXJrQ291
bnQgPSBtX21hcmtDb3VudEJpYXM7IC8vIFRoaXMgbWVhbnMgd2UgaGF2ZW4ndCBtYXJrZWQgYW55
dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0
YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlv
bk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUg
c2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3
bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2Rl
IGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVz
dHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJi
bGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRN
b2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNw
ZWNpYWxpemVkU3dlZXAoKQogewotICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNj
b3BlKGZhbHNlKTsKLSAgICBBU1NFUlQoYmxvY2tTdGF0ZSA9PSBOZXcgfHwgYmxvY2tTdGF0ZSA9
PSBNYXJrZWQpOwotICAgIEFTU0VSVCghKGRlc3RydWN0aW9uTW9kZSA9PSBEb2VzTm90TmVlZERl
c3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2Rl
ID09IFN3ZWVwT25seSksICJJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gc3dlZXAgYSBibG9jayB3
aXRoIG5vIGRlc3RydWN0b3JzIHVubGVzcyBpdCdzIHRvIGJ1aWxkIGEgZnJlZSBsaXN0LiIpOwor
ICAgIHN0YXRpY19hc3NlcnQoIShkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNEZXN0cnVjdGlvbiAm
JiBlbXB0eU1vZGUgPT0gSXNFbXB0eSksICJBIGJsb2NrIGRvZXNuJ3QgcXVhbGlmeSBhcyBlbXB0
eSBpZiB0aGVyZSBhcmUgZGVzdHJ1Y3RvcnMgdGhhdCBzdGlsbCBuZWVkIHRvIGJlIHJ1bi4iKTsK
ICAgICAKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisK
ICAgICBhc3NlcnRGbGlwcGVkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+Ymxv
Y2soKTsKICAgICAKLSAgICBib29sIGlzTmV3QmxvY2sgPSBibG9ja1N0YXRlID09IE5ldzsKLSAg
ICBib29sIGlzRW1wdHlCbG9jayA9ICFibG9jay5oYXNBbnlNYXJrZWQoKQotICAgICAgICAmJiBu
ZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZAotICAgICAgICAm
JiBkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbjsKLSAgICBpZiAoT3B0
aW9uczo6dXNlQnVtcEFsbG9jYXRvcigpICYmIChpc05ld0Jsb2NrIHx8IGlzRW1wdHlCbG9jaykp
IHsKKyAgICBtX2FsbG9jYXRvci0+c2V0SXNTbmFwc2hvdCh0aGlzLCBmYWxzZSk7CisgICAgCisg
ICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQorICAgICAgICAmJiBlbXB0eU1vZGUg
PT0gSXNFbXB0eQorICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVO
ZXdseUFsbG9jYXRlZCkgewogICAgICAgICBBU1NFUlQoYmxvY2subV9tYXJrcy5pc0VtcHR5KCkp
OwogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRPZkxhc3RDZWxsID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsgbV9lbmRBdG9tIC0gMSkpOwpAQCAtMTI0
LDcgKzEyMywxMCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAg
ICAgICAgIGNoYXIqIHBheWxvYWRCZWdpbiA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oYmxvY2suYXRv
bXMoKSArIGZpcnN0QXRvbSgpKTsKICAgICAgICAgaWYgKHNjcmliYmxlTW9kZSA9PSBTY3JpYmJs
ZSkKICAgICAgICAgICAgIHNjcmliYmxlKHBheWxvYWRCZWdpbiwgcGF5bG9hZEVuZCAtIHBheWxv
YWRCZWdpbik7Ci0gICAgICAgIG1fc3RhdGUgPSAoKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxp
c3QpID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7CisgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0KQorICAgICAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIHRydWUpOwogICAg
ICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6YnVtcChwYXlsb2FkRW5kLCBwYXlsb2Fk
RW5kIC0gcGF5bG9hZEJlZ2luKTsKICAgICAgICAgaWYgKGZhbHNlKQogICAgICAgICAgICAgZGF0
YUxvZygiUXVpY2tseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKHRoaXMpLCAiIHdpdGggY2Vs
bCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAi
OiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTM3LDE0ICsxMzksMTQgQEAgRnJlZUxpc3QgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgIEZyZWVDZWxsKiBoZWFkID0gMDsKICAgICBz
aXplX3QgY291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1f
ZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBpZiAoYmxvY2tTdGF0ZSA9
PSBNYXJrZWQKKyAgICAgICAgaWYgKGVtcHR5TW9kZSA9PSBOb3RFbXB0eQogICAgICAgICAgICAg
JiYgKGJsb2NrLm1fbWFya3MuZ2V0KGkpCiAgICAgICAgICAgICAgICAgfHwgKG5ld2x5QWxsb2Nh
dGVkTW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5QWxsb2NhdGVkLT5nZXQoaSkp
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVp
bnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYmxvY2suYXRvbXMoKVtpXSk7CiAKLSAgICAg
ICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGJsb2NrU3RhdGUg
IT0gTmV3KQorICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVzdHJ1Y3Rpb24g
JiYgZW1wdHlNb2RlID09IE5vdEVtcHR5KQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oY2VsbCktPmNhbGxEZXN0cnVjdG9yKCp2bSgpKTsKIAogICAgICAgICBpZiAoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCkgewpAQCAtMTYzLDcgKzE2NSwxMyBAQCBGcmVlTGlzdCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBu
dWxscHRyOwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6Omxpc3QoaGVhZCwgY291
bnQgKiBjZWxsU2l6ZSgpKTsKLSAgICBtX3N0YXRlID0gKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJl
ZUxpc3QgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVw
VG9GcmVlTGlzdCkKKyAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgZWxzZSB7CisgICAg
ICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8g
Y2VsbFNpemUoKTsKKyAgICAgICAgaWYgKGNvdW50ID09IGNlbGxzUGVyQmxvY2spCisgICAgICAg
ICAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVlKTsKKyAgICB9CiAgICAgaWYg
KGZhbHNlKQogICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRl
cigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0
ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwogICAgIHJldHVybiByZXN1
bHQ7CkBAIC0xODAsNiArMTg4LDEzIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3
ZWVwKFN3ZWUKICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwT25seSAmJiBtX2F0dHJpYnV0ZXMu
ZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIEZy
ZWVMaXN0KCk7CiAKKyAgICBpZiAoVU5MSUtFTFkobV9pc0ZyZWVMaXN0ZWQpKSB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOworICAgICAgICBy
ZXR1cm4gRnJlZUxpc3QoKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKCFtX2FsbG9jYXRvci0+
aXNBbGxvY2F0ZWQodGhpcykpOworICAgIAogICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rp
b24gPT0gTmVlZHNEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0
U2NyaWJibGVNb2RlPE5lZWRzRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CiAgICAgcmV0dXJuIHN3
ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlPERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24+KHN3ZWVw
TW9kZSk7CkBAIC0xODksNDcgKzIwNCw0NCBAQCB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUgZGVz
dHJ1Y3Rpb25Nb2RlCiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNl
bGVjdFNjcmliYmxlTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAgIGlmIChzY3JpYmJs
ZUZyZWVDZWxscygpKQotICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3
ZWVwTW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOwotICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgRG9u
dFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RF
bXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1
cm4gc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJi
bGU+KHN3ZWVwTW9kZSk7CiB9CiAKIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlv
bk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+Ci1G
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dl
ZXBNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxl
Ojpzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAg
IHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgTmV3OgotICAgICAgICBBU1NFUlQoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVw
PE5ldywgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9l
c05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKTsKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAg
IC8vIEhhcHBlbnMgd2hlbiBhIGJsb2NrIHRyYW5zaXRpb25zIHRvIGZ1bGx5IGFsbG9jYXRlZC4K
LSAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICBy
ZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNlIEFsbG9jYXRlZDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7Ci0gICAgY2Fz
ZSBNYXJrZWQ6Ci0gICAgICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8gc3Bl
Y2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBz
Y3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAgICAgICAgOiBzcGVj
aWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxl
TW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8g
c3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2Rl
LCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAg
ICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgICAgICB9
Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZy
ZWVMaXN0KCk7CisgICAgaWYgKG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMpKQorICAgICAgICBy
ZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxJc0VtcHR5LCBkZXN0cnVj
dGlvbk1vZGUsIHNjcmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxw
ZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxOb3RFbXB0eSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3Jp
YmJsZU1vZGU+KHN3ZWVwTW9kZSk7Cit9CisKK3RlbXBsYXRlPEVtcHR5TW9kZSBlbXB0eU1vZGUs
IERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNj
cmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
d2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCit7
CisgICAgaWYgKG1faGFzTmV3bHlBbGxvY2F0ZWQpCisgICAgICAgIHJldHVybiBzd2VlcEhlbHBl
clNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2Rl
LCBIYXNOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJT
ZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwg
RG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8RW1w
dHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTmV3bHlBbGxvYXRlZE1v
ZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAo
c3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVk
U3dlZXA8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dl
ZXA8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBu
ZXdseUFsbG9jYXRlZE1vZGU+KCk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6dW5z
d2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAg
ICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAotICAg
IFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0gICAgbV9zdGF0ZSA9IE1h
cmtlZDsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lzRnJlZUxpc3RlZCk7CisgICAgbV9pc0ZyZWVM
aXN0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzZXRJc0ZyZWVM
aXN0ZWQoKQoreworICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIGZhbHNlKTsKKyAg
ICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOwogfQogCiBjbGFzcyBTZXROZXdseUFsbG9jYXRlZEZ1
bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKQEAgLTI1MywyNSArMjY1
LDE2IEBAIHByaXZhdGU6CiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5n
KGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKIHsKICAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAg
ICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOworICAgIAorICAgIEFTU0VS
VCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAgIGlmIChtX3N0YXRlID09
IE1hcmtlZCkgewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4gdGhlIE1hcmtlZCBzdGF0
ZSB0aGVuIHdlIGtub3cgdGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAgLy8gY29uZGl0aW9ucyBo
b2xkczoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90IHVzZWQgZm9yIGFsbG9j
YXRpb24gZHVyaW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xlLgotICAgICAgICAvLyAg
IEl0IG1heSBoYXZlIGRlYWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25vdyB0aGVtIHRvIGJlIGRl
YWQgYnkgdGhlCi0gICAgICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1hcmsgYml0cyBhcmUgdW5z
ZXQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0
b3BBbGxvY2F0aW5nKCksIGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAgICAgICAgLy8gICBoZWFw
IGl0ZXJhdGlvbiwgYW5kIHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAgIC8vIEhlbmNlIGlmIHRo
ZSBibG9jayBpcyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJrZWQuCisgICAgaWYgKCFp
c0ZyZWVMaXN0ZWQoKSkgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgZWl0aGVyIGRp
ZG4ndCB1c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24gc2luY2UgbGFzdCBHQywK
KyAgICAgICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCkg
YmVmb3JlLgogICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVM
aXN0ZWQpOwotICAgIAogICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVyZW50IHN0YXRlIGZvciBI
ZWFwIGludHJvc3BlY3Rpb24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxsb2NhdGVkIGZyb20gb3Vy
IGZyZWUgbGlzdCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQgYW5vdGhlcgog
ICAgIC8vIHdheSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApAQCAtMjkwLDcgKzI5Myw3
IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAgICAgICAg
IGNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAgICAgIH0pOwogICAgIAotICAgIG1fc3Rh
dGUgPSBNYXJrZWQ7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCkBAIC0zMDUsMTMgKzMwOCwx
MiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpCiBGcmVlTGlzdCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKICAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwogCi0g
ICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKKyAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5p
c0FsbG9jYXRlZCh0aGlzKSk7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAKICAgICBp
ZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgLy8gV2UgZGlkbid0IGhhdmUgdG8gY3Jl
YXRlIGEgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwLiBUaGF0IG1lYW5zIHdlIHdlcmUgYWxyZWFk
eSBNYXJrZWQKLSAgICAgICAgLy8gd2hlbiB3ZSBsYXN0IHN0b3BwZWQgYWxsb2NhdGlvbiwgc28g
cmV0dXJuIGFuIGVtcHR5IGZyZWUgbGlzdCBhbmQgc3RheSBpbiB0aGUgTWFya2VkIHN0YXRlLgor
ICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgYmxvY2sg
d2hlbiB3ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwog
ICAgIH0KIApAQCAtMzY2LDE3ICszNjgsMTcgQEAgdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVj
ZXNzYXJ5RHVyaW5nTQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNN
YXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgaWYgKG5lZWRz
RmxpcCgpKQorICAgIGlmIChuZWVkc0ZsaXAoKSkgewogICAgICAgICBjbGVhck1hcmtzKCk7Cisg
ICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2Jq
ZWN0IGluIHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNT
ZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgfQogfQog
CiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKICAgICBtX21hcmtzLmNsZWFyQWxs
KCk7CiAgICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICAvLyBUaGlzIHdpbGwgYmVjb21lIHRy
dWUgYXQgdGhlIGVuZCBvZiB0aGUgbWFyayBwaGFzZS4gV2Ugc2V0IGl0IG5vdyB0bwotICAgIC8v
IGF2b2lkIGFuIGV4dHJhIHBhc3MgdG8gZG8gc28gbGF0ZXIuCi0gICAgaGFuZGxlKCkubV9zdGF0
ZSA9IE1hcmtlZDsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIG1fdmVyc2lvbiA9
IHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CiB9CkBAIC0zOTgsMTEgKzQwMCw2
IEBAIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkKICAgICByZXR1cm4gbV9i
bG9jay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6d2lsbFJl
bW92ZUJsb2NrKCkKLXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLX0KLQogdm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QoKQogewogICAgIGZsaXBJZk5lY2Vzc2Fy
eSgpOwpAQCAtNDIxLDggKzQxOCw3IEBAIHNpemVfdCBNYXJrZWRCbG9jazo6bWFya0NvdW50KCkK
IAogYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0VtcHR5KCkKIHsKLSAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQgJiYgIWJsb2NrKCkuaGFzQW55
TWFya2VkKCkgJiYgbV93ZWFrU2V0LmlzRW1wdHkoKSAmJiAoIW1fbmV3bHlBbGxvY2F0ZWQgfHwg
bV9uZXdseUFsbG9jYXRlZC0+aXNFbXB0eSgpKTsKKyAgICByZXR1cm4gbV9hbGxvY2F0b3ItPmlz
RW1wdHkodGhpcyk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFySGFzQW55TWFya2VkKCkK
QEAgLTQzMiwzMyArNDI4LDM4IEBAIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFySGFzQW55TWFya2Vk
KCkKIAogdm9pZCBNYXJrZWRCbG9jazo6bm90ZU1hcmtlZFNsb3coKQogewotICAgIGhhbmRsZSgp
Lm1fYWxsb2NhdG9yLT5yZXRpcmUoJmhhbmRsZSgpKTsKKyAgICBoYW5kbGUoKS5hbGxvY2F0b3Io
KS0+YXRvbWljU2V0QW5kQ2hlY2tJc01hcmtpbmdSZXRpcmVkKCZoYW5kbGUoKSwgdHJ1ZSk7CiB9
CiAKLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKK3ZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAgaWYgKCFtX2FsbG9jYXRv
cikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fYWxsb2NhdG9yLT5yZW1vdmVCbG9jayh0
aGlzKTsKK30KIAotdXNpbmcgbmFtZXNwYWNlIEpTQzsKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBp
bmRleCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpKTsKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4
ID0gaW5kZXg7CisgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Cit9CiAKLXZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0
YXRlKQordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCkK
IHsKLSAgICBzd2l0Y2ggKGJsb2NrU3RhdGUpIHsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpOZXc6
Ci0gICAgICAgIG91dC5wcmludCgiTmV3Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1h
cmtlZEJsb2NrOjpGcmVlTGlzdGVkOgotICAgICAgICBvdXQucHJpbnQoIkZyZWVMaXN0ZWQiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6OkFsbG9jYXRlZDoKLSAgICAg
ICAgb3V0LnByaW50KCJBbGxvY2F0ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFy
a2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAgb3V0LnByaW50KCJNYXJrZWQiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGZs
aXBJZk5lY2Vzc2FyeSgpOworICAgIAorICAgIEFTU0VSVChtX2luZGV4ICE9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CisgICAg
CisgICAgbV9pbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisgICAg
bV9hbGxvY2F0b3IgPSBudWxscHRyOwogfQogCit9IC8vIG5hbWVzcGFjZSBKU0MKKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjAgKzQ0LDYgQEAgY2xhc3MgTWFya2Vk
QWxsb2NhdG9yOwogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5cGVkZWYgdWludDMyX3QgSGVh
cFZlcnNpb247CiAKLS8vIFNldCB0byBsb2cgc3RhdGUgdHJhbnNpdGlvbnMgb2YgYmxvY2tzLgot
I2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUyAwCi0KLSNpZiBIRUFQX0xP
R19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9U
UkFOU0lUSU9OKGhhbmRsZSkgZG8geyAgICAgICAgICAgIFwKLSAgICAgICAgZGF0YUxvZ0YoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg
ICAiJXM6JWQgJXM6IGJsb2NrICVzID0gJXAsICVkXG4iLCAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18sICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgICAgICNoYW5kbGUsICYoaGFuZGxlKS0+YmxvY2soKSwgKGhhbmRs
ZSktPm1fc3RhdGUpOyAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0jZWxzZQotI2RlZmluZSBI
RUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgKCh2b2lkKTApCi0jZW5kaWYK
LQogLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFsaWduZWQgY29udGFpbmVyIGZvciBoZWFw
LWFsbG9jYXRlZCBvYmplY3RzLgogLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVkIHdpdGhpbiBjZWxs
cyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogLy8gbWFya2VkIGJsb2NrLCBhbGwg
Y2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXplLiBPYmplY3RzIHNtYWxsZXIgdGhhbiB0aGUKQEAgLTc2
LDggKzYyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSGFuZGxlOwog
cHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0ZSA6IHVpbnQ4X3QgeyBOZXcsIEZyZWVMaXN0ZWQs
IEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAgIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
YXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6
ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja01hc2sgPSB+KGJsb2Nr
U2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4KQEAgLTEzMCw2
ICsxMTQsMTIgQEAgcHVibGljOgogICAgICAgICBWTSogdm0oKSBjb25zdDsKICAgICAgICAgV2Vh
a1NldCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCisgICAgICAgIC8vIFN3ZWVwaW5nIGVuc3Vy
ZXMgdGhhdCBkZXN0cnVjdG9ycyBnZXQgY2FsbGVkIGFuZCByZW1vdmVzIHRoZSBibG9jayBmcm9t
IHRoZSBzbmFwc2hvdC4KKyAgICAgICAgLy8gU3dlZXBpbmcgdG8gZnJlZSBsaXN0IGFsc28gcmVt
b3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgZW1wdHkgc2V0LCBpZiBpdCB3YXMgaW4gdGhhdCBzZXQu
CisgICAgICAgIC8vIE5vdGUgdGhhdCB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZW1w
dHkgYml0IHJlZmxlY3RzIHJlYWxpdHkuIElmIGl0J3Mgbm90IHNldAorICAgICAgICAvLyBhbmQg
dGhlIGJsb2NrIGlzIGZyZXNobHkgY3JlYXRlZCwgdGhlbiB3ZSdsbCBtYWtlIHRoZSBtaXN0YWtl
IG9mIHJ1bm5pbmcgZGVzdHJ1Y3RvcnMgaW4KKyAgICAgICAgLy8gdGhlIGJsb2NrLiBJZiBpdCdz
IG5vdCBzZXQgYW5kIHRoZSBibG9jayBoYXMgbm90aGluZyBtYXJrZWQsIHRoZW4gd2UnbGwgbWFr
ZSB0aGUKKyAgICAgICAgLy8gbWlzdGFrZSBvZiBtYWtpbmcgYSBwb3AgZnJlZWxpc3QgcmF0aGVy
IHRoYW4gYSBidW1wIGZyZWVsaXN0LgogICAgICAgICBlbnVtIFN3ZWVwTW9kZSB7IFN3ZWVwT25s
eSwgU3dlZXBUb0ZyZWVMaXN0IH07CiAgICAgICAgIEZyZWVMaXN0IHN3ZWVwKFN3ZWVwTW9kZSA9
IFN3ZWVwT25seSk7CiAgICAgICAgIApAQCAtMTUzLDggKzE0Myw2IEBAIHB1YmxpYzoKICAgICAg
ICAgLy8gYW5kIHdhcyBzdWNjZXNzZnVsbHkgY2xlYXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgog
ICAgICAgICBib29sIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgICAgICAgICAgIAotICAgICAg
ICB2b2lkIGZsaXBGb3JFZGVuQ29sbGVjdGlvbigpOwotICAgICAgICAgICAgCiAgICAgICAgIHNp
emVfdCBjZWxsU2l6ZSgpOwogICAgICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzKCkgY29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNv
bnN0OwpAQCAtMTY0LDggKzE1Miw4IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG1hcmtDb3Vu
dCgpOwogICAgICAgICBzaXplX3Qgc2l6ZSgpOwogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wg
aXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7Ci0gICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2
b2lkKik7CisgICAgICAgIGlubGluZSBib29sIGlzTGl2ZShjb25zdCBIZWFwQ2VsbCopOworICAg
ICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKICAgICAgICAgYm9vbCBp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKICAgICAgICAgICAgIAog
ICAgICAgICBib29sIGlzTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwpAQCAtMTc0LDE1ICsx
NjIsOSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBib29sIGhhc0FueU5ld2x5QWxsb2Nh
dGVkKCkgY29uc3QgeyByZXR1cm4gISFtX25ld2x5QWxsb2NhdGVkOyB9CiAgICAgICAgICAgICAK
LSAgICAgICAgYm9vbCBpc0FsbG9jYXRlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzTWFya2Vk
KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJv
b2wgbmVlZHNTd2VlcGluZygpIGNvbnN0OwotICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygp
OwotCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMg
Zm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7
Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9y
RWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1
bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVy
YXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgICAg
IAogICAgICAgICBib29sIG5lZWRzRmxpcCgpOwogICAgICAgICAgICAgCkBAIC0xOTIsMTEgKzE3
NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgdm9pZCBhc3NlcnRGbGlwcGVk
KCk7CiAgICAgICAgICAgICAKLSAgICAgICAgYm9vbCBpc09uQmxvY2tzVG9Td2VlcCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNPbkJsb2Nrc1RvU3dlZXA7IH0KLSAgICAgICAgdm9pZCBzZXRJc09uQmxv
Y2tzVG9Td2VlcChib29sIHZhbHVlKSB7IG1faXNPbkJsb2Nrc1RvU3dlZXAgPSB2YWx1ZTsgfQor
ICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGcmVlTGlzdGVk
OyB9CisgICAgICAgIAorICAgICAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4OyB9CisgICAgICAgIAorICAgICAgICB2b2lkIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAg
ICAgICAgCisgICAgICAgIHZvaWQgZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiwg
c2l6ZV90IGluZGV4KTsKKyAgICAgICAgdm9pZCBkaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAg
ICAgICAgIAotICAgICAgICBCbG9ja1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZTsgfQotICAgICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGFuZGxlKEhlYXAmLCBN
YXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0
ZXMmLCB2b2lkKik7CiAgICAgICAgICAgICAKQEAgLTIwNiwxNiArMTkyLDI2IEBAIHB1YmxpYzoK
ICAgICAgICAgZW51bSBTY3JpYmJsZU1vZGUgeyBEb250U2NyaWJibGUsIFNjcmliYmxlIH07CiAg
ICAgICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1v
ZGU+Ci0gICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGUo
U3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxl
Y3RFbXB0eU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgICAgIAorICAgICAg
ICBlbnVtIEVtcHR5TW9kZSB7IElzRW1wdHksIE5vdEVtcHR5IH07CisgICAgICAgIAorICAgICAg
ICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgorICAg
ICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9k
ZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAogICAgICAgICBlbnVtIE5ld2x5QWxsb2NhdGVkTW9k
ZSB7IEhhc05ld2x5QWxsb2NhdGVkLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkIH07Ci0gICAg
ICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBEZXN0cnVj
dGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICAKKyAg
ICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwg
TmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFN3
ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICAKKyAgICAgICAgdGVtcGxh
dGU8RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBO
ZXdseUFsbG9jYXRlZE1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHNwZWNpYWxpemVkU3dlZXAoKTsK
ICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgICAgICB2
b2lkIGZvckVhY2hGcmVlQ2VsbChjb25zdCBGcmVlTGlzdCYsIGNvbnN0IEZ1bmMmKTsKLSAgICAg
ICAgICAgIAorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAgICAg
ICAgCiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fcHJldjsKICAgICAgICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogbV9uZXh0OwogICAgICAgICAgICAgCkBAIC0yMjUsMTYgKzIyMSwxNiBA
QCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6OkJpdG1hcDxhdG9tc1BlckJs
b2NrPj4gbV9uZXdseUFsbG9jYXRlZDsKICAgICAgICAgICAgIAogICAgICAgICBBbGxvY2F0b3JB
dHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKLSAgICAgICAgQmxvY2tTdGF0ZSBtX3N0YXRlOwotICAg
ICAgICBib29sIG1faXNPbkJsb2Nrc1RvU3dlZXAgeyBmYWxzZSB9OworICAgICAgICBib29sIG1f
aXNGcmVlTGlzdGVkIHsgZmFsc2UgfTsKICAgICAgICAgICAgIAotICAgICAgICBNYXJrZWRBbGxv
Y2F0b3IqIG1fYWxsb2NhdG9yOworICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9y
IHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CiAgICAgICAg
ICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2s7CiAgICAgfTsKICAgICAgICAgCi0g
ICAgc3RhdGljIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgTWFya2VkQWxs
b2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7Cisg
ICAgc3RhdGljIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgc2l6ZV90IGNl
bGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7CiAgICAgICAgIAogICAgIEhhbmRs
ZSYgaGFuZGxlKCk7CiAgICAgICAgIApAQCAtMjc1LDcgKzI3MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAgCiAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9Ci0gICAgICAgIAorICAgIAog
cHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRv
bVNpemUgLSAxOwogCkBAIC00OTIsMTcgKzQ4OCw2IEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmZsaXBJZk4KICAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtp
bmcoaGVhcFZlcnNpb24pOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpm
bGlwRm9yRWRlbkNvbGxlY3Rpb24oKQotewotICAgIGFzc2VydEZsaXBwZWQoKTsKLSAgICAgICAg
Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICAKLSAgICBB
U1NFUlQobV9zdGF0ZSAhPSBOZXcgJiYgbV9zdGF0ZSAhPSBGcmVlTGlzdGVkKTsKLSAgICAKLSAg
ICBtX3N0YXRlID0gTWFya2VkOwotfQotCiAjaWYgQVNTRVJUX0RJU0FCTEVECiBpbmxpbmUgdm9p
ZCBNYXJrZWRCbG9jazo6YXNzZXJ0RmxpcHBlZCgpCiB7CkBAIC01NTIsMTMgKzUzNywxMSBAQCBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5lCiAKIGlubGluZSBib29sIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2Vs
bCogY2VsbCkKIHsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOwogICAgIHJldHVybiBt
X2Jsb2NrLT5pc01hcmtlZChjZWxsKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxs
b2NhdGVkKGNlbGwpKTsKIH0KIAogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBBU1NFUlQobV9oYW5k
bGUubV9zdGF0ZSA9PSBNYXJrZWQpOwogICAgIHJldHVybiBpc01hcmtlZChjZWxsKSB8fCAobV9o
YW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBtX2hhbmRsZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwp
KTsKIH0KIApAQCAtNTY5LDI2ICs1NTIsNiBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNN
YXJrZWRPck5ld2x5CiAgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsK
IH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBD
ZWxsKiBjZWxsKQotewotICAgIGFzc2VydEZsaXBwZWQoKTsKLSAgICBzd2l0Y2ggKG1fc3RhdGUp
IHsKLSAgICBjYXNlIEFsbG9jYXRlZDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNl
IE1hcmtlZDoKLSAgICAgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsK
LQotICAgIGNhc2UgTmV3OgotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCiB7CiAgICAgQVNT
RVJUKE1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKTsKQEAgLTYwMywxMyArNTY2LDYgQEAg
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2bwogICAgIHJldHVybiB0cnVl
OwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKGNvbnN0
IHZvaWQqIHApCi17Ci0gICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20ocCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4o
cCkpOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KIGlubGluZSBJdGVyYXRpb25T
dGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKIHsKQEAgLTYyMiw2MiArNTc4LDYgQEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJr
ZWRCbG9jazo6SGFuZAogICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLWlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
Ci17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1f
YXR0cmlidXRlcy5jZWxsS2luZDsKLSAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkg
PCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgSGVhcENlbGwqIGNl
bGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ld
KTsKLSAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUp
Ci0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAgIH0KLSAgICBy
ZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+Ci1pbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZv
ckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIGZsaXBJZk5lY2Vz
c2FyeSgpOwotICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7
Ci0gICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1f
YXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2Fz
dF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7Ci0gICAgICAgIGlmIChpc0xp
dmUoY2VsbCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZnVuY3Rvcihj
ZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAgIH0KLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNT
d2VlcGluZygpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4o
dGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZDsK
LX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNBbGxvY2F0ZWQoKSBjb25z
dAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZO
ZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBBbGxvY2F0ZWQ7Ci19Ci0KLWlubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkKCkgY29uc3QKLXsKLSAgICBjb25z
dF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0g
ICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6SGFuZGxlOjppc0ZyZWVMaXN0ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2Vk
QmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9z
dGF0ZSA9PSBGcmVlTGlzdGVkOwotfQotCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aGFzQW55
TWFya2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iaWFzZWRNYXJrQ291bnQgIT0gbV9tYXJr
Q291bnRCaWFzOwpAQCAtNzExLDggKzYxMSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPEpTQzo6TWFya2UKICAgICB0eXBlZGVmIE1hcmtlZEJsb2NrSGFzaCBIYXNoOwogfTsKIAot
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6OkJs
b2NrU3RhdGUpOwotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vIE1hcmtlZEJsb2Nr
X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5s
aW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZl
KGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoreworICAgIGFzc2VydEZsaXBwZWQoKTsKKyAgICBBU1NF
UlQoIWlzRnJlZUxpc3RlZCgpKTsKKworICAgIGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQo
dGhpcykpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIHJldHVybiBpc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQoY2VsbCk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKK3sKKyAgICBpZiAoIW1fYmxvY2stPmlzQXRv
bShwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nh
c3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PgoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2
ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBmbGlwSWZOZWNlc3NhcnkoKTsK
KyAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOworICAgIGZv
ciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVy
Q2VsbCkgeworICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhl
YXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOworICAgICAgICBpZiAoIWlzTGl2ZShjZWxs
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtp
bmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkRvbmU7CisgICAgfQorICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRp
bnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KK2lubGluZSBJdGVyYXRpb25T
dGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCit7CisgICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgSGVhcENlbGw6OktpbmQg
a2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RB
dG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKKyAgICAgICAgSGVh
cENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5h
dG9tcygpW2ldKTsKKyAgICAgICAgaWYgKGlzTGl2ZShjZWxsKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1
czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CisgICAg
fQorICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
LmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNiArMTk1LDE5IEBAIE1hcmtlZFNw
YWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CisgICAgCisgICAg
TWFya2VkQWxsb2NhdG9yKiBwcmV2aW91cyA9IG51bGxwdHI7CisgICAgZm9yRWFjaEFsbG9jYXRv
cigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9u
U3RhdHVzIHsKKyAgICAgICAgICAgIGlmIChwcmV2aW91cykgeworICAgICAgICAgICAgICAgIC8v
IFdlIGNhbiBzZXQgdGhpcyBpbiBhbnkgb3JkZXIuIFRoZSBwb2ludCBpcyBqdXN0IHRoYXQgd2Ug
d2FudCB0byBiZSBhYmxlIHRvCisgICAgICAgICAgICAgICAgLy8gY3Vyc29yIG92ZXIgYWxsb2Nh
dG9ycy4KKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc2V0TmV4dEFsbG9jYXRvcihwcmV2aW91
cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmV2aW91cyA9ICZhbGxvY2F0b3I7Cisg
ICAgICAgIH0pOworICAgIG1fZmlyc3RBbGxvY2F0b3IgPSBwcmV2aW91czsKKyAgICBtX25leHRB
bGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBwcmV2aW91czsKIH0KIAogTWFya2VkU3BhY2U6
On5NYXJrZWRTcGFjZSgpCkBAIC0yNTcsOSArMjcwLDEwIEBAIHZvaWQqIE1hcmtlZFNwYWNlOjp0
cnlBbGxvY2F0ZUxhcmdlKFN1YnMKIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwKCkKIHsKICAgICBt
X2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJsb2Nr
KAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAg
ICBibG9jay0+c3dlZXAoKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1h
cmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAg
ICAgYWxsb2NhdG9yLnN3ZWVwKCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTI5NCwxNiArMzA4LDE2IEBAIHZvaWQg
TWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCgpCiAgICAgICAgIH0pOwogfQogCi12b2lkIE1hcmtl
ZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMoKQordm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFs
bG9jYXRpb24oKQogewogICAgIGZvckVhY2hBbGxvY2F0b3IoCiAgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBh
bGxvY2F0b3IucmVzZXQoKTsKKyAgICAgICAgICAgIGFsbG9jYXRvci5wcmVwYXJlRm9yQWxsb2Nh
dGlvbigpOwogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAg
ICAgICAgIH0pOwogCi0gICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5jbGVhcigpOwogICAgIG1f
YWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9uZXdBY3RpdmVXZWFrU2V0cyk7CisgICAgCiAgICAg
aWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKQogICAg
ICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0Rm9yU3dlZXAgPSBtX2xhcmdlQWxs
b2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UKQEAgLTQwOCwxMSArNDIyLDExIEBAIHZv
aWQgTWFya2VkU3BhY2U6OmZyZWVPclNocmlua0Jsb2NrKE1hcmsKIAogdm9pZCBNYXJrZWRTcGFj
ZTo6c2hyaW5rKCkKIHsKLSAgICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIGZyZWVPclNocmlua0Jsb2NrKGJsb2Nr
KTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYg
YWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLnNo
cmluaygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAg
ICAgICAgIH0pOwotICAgIC8vIEZvciBMYXJnZUFsbG9jYXRpb25zLCB3ZSBkbyB0aGUgbW9yYWwg
ZXF1aXZhbGVudCBpbiBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKS4KIH0KIAogdm9pZCBNYXJrZWRT
cGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCkBAIC00MjcsMzkgKzQ0MSwyNiBAQCB2b2lkIE1h
cmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxv
Y2F0aW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5jbGVh
ck5ld2x5QWxsb2NhdGVkKCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgZm9yRWFjaEJs
b2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQoIWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOwotICAgICAgICB9KTsK
LQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRp
b25zKQotICAgICAgICBBU1NFUlQoIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7Ci0j
ZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfQotCi0jaWZuZGVmIE5ERUJVRyAKLXN0cnVjdCBW
ZXJpZnlNYXJrZWQgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgeyAKLSAgICB2b2lkIG9wZXJh
dG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0gICAgewotICAgICAgICBp
ZiAoYmxvY2stPm5lZWRzRmxpcCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzd2l0
Y2ggKGJsb2NrLT5tX3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KKyAgICBpZiAoIUFTU0VSVF9ESVNB
QkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+Y2xl
YXJOZXdseUFsbG9jYXRlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAg
Zm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCisg
ICAgICAgICAgICBBU1NFUlQoIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7CiAgICAg
fQotfTsgCi0jZW5kaWYgCit9CiAKLXZvaWQgTWFya2VkU3BhY2U6OmZsaXAoKQordm9pZCBNYXJr
ZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblBy
b2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBt
X2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT5mbGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsKLSAgICB9
IGVsc2UgeworICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29s
bGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChN
YXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAg
ICAgICAgICBhbGxvY2F0b3IuZmxpcEZvckZ1bGxDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICB9KTsKKwog
ICAgICAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbiA9IG1fdmVyc2lvbiArIDE7CiAgICAgICAg
IGlmIChVTkxJS0VMWShuZXh0VmVyc2lvbiA9PSBpbml0aWFsVmVyc2lvbikpIHsKICAgICAgICAg
ICAgIC8vIE9oIG5vISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBmbGlw
cGluZyBhbGwgYmxvY2tzLiBUaGlzIGhhcHBlbnMKQEAgLTQ3NCwxMCArNDc1LDI3IEBAIHZvaWQg
TWFya2VkU3BhY2U6OmZsaXAoKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAg
IH0KIAotI2lmbmRlZiBOREVCVUcKLSAgICBWZXJpZnlNYXJrZWQgdmVyaWZ5RnVuY3RvcjsKLSAg
ICBmb3JFYWNoQmxvY2sodmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBpZiAoIUFTU0VSVF9E
SVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtl
ZEJsb2NrOjpoYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVk
c0ZsaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFT
U0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAg
ICAKKyAgICBtX2lzTWFya2luZyA9IHRydWU7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmVuZE1h
cmtpbmcoKQoreworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxs
b2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxv
Y2F0b3IuZW5kTWFya2luZygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CisgICAgICAgIH0pOworICAgIAorICAgIG1faXNNYXJraW5nID0gZmFsc2U7CiB9
CiAKIHZvaWQgTWFya2VkU3BhY2U6OndpbGxTdGFydEl0ZXJhdGluZygpCkBAIC01NDUsNyArNTYz
LDYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2soTWFya2VkQmxvYwogdm9pZCBNYXJr
ZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQog
ewogICAgIGJsb2NrLT5hc3NlcnRGbGlwcGVkKCk7Ci0gICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0
cy5hcHBlbmQoYmxvY2spOwogICAgIAogICAgIGlmIChibG9jay0+d2Vha1NldCgpLmlzT25MaXN0
KCkpIHsKICAgICAgICAgYmxvY2stPndlYWtTZXQoKS5yZW1vdmUoKTsKQEAgLTU1Myw0ICs1NzAs
MzAgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsb2NrKE1hcgogICAgIH0KIH0K
IAorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkU3BhY2U6OmZpbmRFbXB0eUJsb2NrKCkKK3sK
KyAgICBmb3IgKDsgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IG1fYWxsb2NhdG9yRm9y
RW1wdHlBbGxvY2F0aW9uID0gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPm5leHRBbGxv
Y2F0b3IoKSkgeworICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Fs
bG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+ZmluZEVtcHR5QmxvY2soKSkKKyAgICAgICAgICAg
IHJldHVybiBibG9jazsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgTWFy
a2VkU3BhY2U6OnNuYXBzaG90KCkKK3sKKyAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dy
ZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAg
ICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0
YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rp
b24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
KyAgICAgICAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3Io
CisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRp
b25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFwc2hvdEZvckZ1bGxDb2xs
ZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGlu
dWU7CisgICAgICAgICAgICB9KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDU4
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIFN1YnNwYWNlJiBzdWJzcGFj
ZUZvck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbm9ybWFsU3BhY2U7IH0K
ICAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCkgeyByZXR1cm4gbV9hdXhp
bGlhcnlTcGFjZTsgfQogICAgIAotICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CisgICAgdm9p
ZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogCiAgICAgdm9pZCB2aXNpdFdlYWtTZXRzKEhlYXBS
b290VmlzaXRvciYpOwogICAgIHZvaWQgcmVhcFdlYWtTZXRzKCk7CkBAIC0xNDQsNyArMTQ0LDkg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5k
bGUqKTsKICAgICB2b2lkIGRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7
CiAKLSAgICB2b2lkIGZsaXAoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZygpOworICAgIHZvaWQg
ZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNob3QoKTsKICAgICB2b2lkIGNsZWFyTmV3bHlB
bGxvY2F0ZWQoKTsKICAgICB2b2lkIHN3ZWVwKCk7CiAgICAgdm9pZCBzd2VlcExhcmdlQWxsb2Nh
dGlvbnMoKTsKQEAgLTE1Nyw4ICsxNTksNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgSGVhcFZlcnNp
b24gdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogCi0gICAgY29uc3QgVmVj
dG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tzV2l0aE5ld09iamVjdHMoKSBjb25zdCB7
IHJldHVybiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOyB9Ci0gICAgCiAgICAgY29uc3QgVmVjdG9y
PExhcmdlQWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9s
YXJnZUFsbG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OyB9
CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247
IH0KQEAgLTE2OSwxMyArMTY5LDE0IEBAIHB1YmxpYzoKICAgICBMYXJnZUFsbG9jYXRpb24qKiBs
YXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX2xh
cmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZDsgfQogICAgIHVuc2lnbmVkIGxhcmdl
QWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUoKSBjb25zdCB7IHJldHVybiBtX2xhcmdl
QWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemU7IH0KICAgICAKKyAgICBNYXJrZWRBbGxv
Y2F0b3IqIGZpcnN0QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdEFsbG9jYXRvcjsg
fQorICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IH0KKyAgICAKKyAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9jaygpOworICAgIAogICAgIC8vIFdoZW4g
dGhpcyBpcyB0cnVlIGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSBmbGlwcGVkIGJ1dCB0aGUgbWFyayBi
aXRzIGhhdmVuJ3QgY29udmVyZ2VkIHlldC4KICAgICBib29sIGlzTWFya2luZygpIGNvbnN0IHsg
cmV0dXJuIG1faXNNYXJraW5nOyB9CiAgICAgCi0gICAgLy8gRklYTUU6IEFmdGVyIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1ODEsIE1hcmtlZFNwYWNlIHdpbGwg
Y29udHJvbCB0aGlzCi0gICAgLy8gZmxhZyBkaXJlY3RseS4KLSAgICB2b2lkIHNldElzTWFya2lu
Zyhib29sIHZhbHVlKSB7IG1faXNNYXJraW5nID0gdmFsdWU7IH0KLQogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CkBAIC0yMDUsNyArMjA2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJdGVyYXRpbmc7CiAg
ICAgYm9vbCBtX2lzTWFya2luZyB7IGZhbHNlIH07CiAgICAgTWFya2VkQmxvY2tTZXQgbV9ibG9j
a3M7Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2Nrc1dpdGhOZXdPYmpl
Y3RzOwogICAgIFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiBtX2xhcmdlQWxsb2NhdGlvbnM7CiAg
ICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCB7IDAgfTsKICAgICB1
bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiB7IDAgfTsK
QEAgLTIxNSw2ICsyMTUsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0
aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSB7IDAgfTsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8
V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+IG1fYWN0aXZlV2Vha1NldHM7
CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdl
YWtTZXQ+PiBtX25ld0FjdGl2ZVdlYWtTZXRzOworICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciog
bV9maXJzdEFsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxs
b2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0ciB9OwogfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChI
ZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDksOSArMTQ5LDYgQEAgdm9pZCBXZWFrQmxvY2s6OnJlYXAoKQogICAgIAogICAgIG1fY29u
dGFpbmVyLmZsaXBJZk5lY2Vzc2FyeSgpOwogCi0gICAgLy8gV2Ugb25seSByZWFwIGFmdGVyIG1h
cmtpbmcuCi0gICAgQVNTRVJUKG1fY29udGFpbmVyLmlzTWFya2VkKCkpOwotCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB3ZWFrSW1wbENvdW50KCk7ICsraSkgewogICAgICAgICBXZWFrSW1w
bCogd2Vha0ltcGwgPSAmd2Vha0ltcGxzKClbaV07CiAgICAgICAgIGlmICh3ZWFrSW1wbC0+c3Rh
dGUoKSA+IFdlYWtJbXBsOjpEZWFkKQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAJCTBG
NDU3MDQzMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyog
RG9taW5hdG9ycy5oICovOyB9OwogCQkwRjQ1NzA0NTFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxl
U29ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLzsgfTsKIAkJMEY3MjVDQUMx
QzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQu
aCAqLzsgfTsKKwkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjUx
RDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjgyNEE2ODFC
NzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2lu
Z0xvdC5jcHAgKi87IH07CiAJCTBGODI0QTY5MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2
NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oICovOyB9OwogCQkwRjg3MTA1QTE2NjQz
RjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY4NzEwNTkxNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIu
aCAqLzsgfTsKQEAgLTM2Niw2ICszNjcsNyBAQAogCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2Mjkg
LyogRG9taW5hdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb21pbmF0
b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDQ0MUJFODM0NDEwMDYy
QTYyOSAvKiBCdWJibGVTb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1
YmJsZVNvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MjVDQUIxQzUwNDYx
NjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJhbmdlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI1MUQ4ODVD
RjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJraW5nTG90LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFya2luZ0xvdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9p
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXdQb2ludGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODAsNiArODgyLDcgQEAKIAkJCQlBOEE0NzI5
ODE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5oICovLAogCQkJCTFBRUE4OEUxMUQ2QkJDRjQwMEU1
QUQ2NCAvKiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJQThBNDcyOUYxNTFBODI1QTAwNDEyM0ZGIC8q
IEV4cG9ydE1hY3Jvcy5oICovLAorCQkJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0
Qml0VmVjdG9yLmNwcCAqLywKIAkJCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJp
dFZlY3Rvci5oICovLAogCQkJCUE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9j
LmNwcCAqLywKIAkJCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICov
LApAQCAtMTU5NCw2ICsxNTk3LDcgQEAKIAkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyog
TWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0VDMTUxQTgyNUIwMDQxMjNG
RiAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y0MTUxQTgy
NUIwMDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGN0M1
RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFn
ZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDIwNTg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xODEsNiArMTgxLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgRGF0YUxvZy5jcHAK
ICAgICBEYXRlTWF0aC5jcHAKICAgICBEZWNpbWFsTnVtYmVyLmNwcAorICAgIEZhc3RCaXRWZWN0
b3IuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKICAgICBGaWxlUHJpbnRTdHJlYW0uY3BwCiAgICAg
RnVuY3Rpb25EaXNwYXRjaGVyLmNwcApJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmFzdEJpdFZlY3Rv
ci5oIgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpz
ZXRFcXVhbHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKQoreworICAg
IHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oCisgICAgICAgIGZh
c3RDYWxsb2Mob3RoZXIuYXJyYXlMZW5ndGgoKSwgc2l6ZW9mKHVpbnQzMl90KSkpOworICAgIG1l
bWNweShuZXdBcnJheSwgb3RoZXIubV93b3Jkcywgb3RoZXIuYXJyYXlMZW5ndGgoKSAqIHNpemVv
Zih1aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRzKQorICAgICAgICBmYXN0RnJlZShtX3dvcmRz
KTsKKyAgICBtX3dvcmRzID0gbmV3QXJyYXk7CisgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1C
aXRzOworfQorCit2b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZVNsb3coc2l6ZV90
IG51bUJpdHMpCit7CisgICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxl
bmd0aChudW1CaXRzKTsKKyAgICAKKyAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZh
c3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KKyAgICAvLyB1c2UgY2FzZSBm
b3IgdGhpcyBtZXRob2QgdG8gYmUgaW5pdGlhbGl6aW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0
b3IuCisgICAgCisgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Qq
PihmYXN0Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOworICAgIG1lbWNweShu
ZXdBcnJheSwgbV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAg
IGlmIChtX3dvcmRzKQorICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKKyAgICBtX3dvcmRzID0g
bmV3QXJyYXk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9GYXN0Qml0VmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZl
Y3Rvci5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTkxLDE3ICs5MiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAg
RmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3BlcmF0b3I9KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3Jk
T3duZXImIG90aGVyKQogICAgIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IG90aGVyLmFycmF5
TGVuZ3RoKCk7Ci0gICAgICAgIGlmIChsZW5ndGggPT0gYXJyYXlMZW5ndGgoKSkgewotICAgICAg
ICAgICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50
MzJfdCkpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICBpZiAoYXJyYXlMZW5n
dGgoKSAhPSBvdGhlci5hcnJheUxlbmd0aCgpKQorICAgICAgICAgICAgc2V0RXF1YWxzU2xvdyhv
dGhlcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KG1fd29yZHMsIG90aGVy
Lm1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICAgICAgICAg
IG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKICAgICAgICAgfQotICAgICAgICB1aW50MzJf
dCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobGVuZ3RoLCBz
aXplb2YodWludDMyX3QpKSk7Ci0gICAgICAgIG1lbWNweShuZXdBcnJheSwgb3RoZXIubV93b3Jk
cywgbGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAg
ICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsK
LSAgICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwogICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgfQogICAgIApAQCAtMTQwLDE4ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCByZXNpemUoc2l6ZV90IG51bUJpdHMpCiAgICAgewotICAgICAgICBpZiAobnVtQml0cyA9
PSBtX251bUJpdHMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICAvLyBV
c2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRo
ZSBjb21tb24KLSAgICAgICAgLy8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRp
YWxpemluZyB0aGUgc2l6ZSBvZiB0aGUgYml0dmVjdG9yLgotICAgICAgICAKLSAgICAgICAgc2l6
ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsKLSAgICAg
ICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9j
KG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwotICAgICAgICBtZW1jcHkobmV3QXJyYXks
IG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgaWYg
KG1fd29yZHMpCi0gICAgICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAgbV93b3Jk
cyA9IG5ld0FycmF5OworICAgICAgICBpZiAoYXJyYXlMZW5ndGgoKSAhPSBmYXN0Qml0VmVjdG9y
QXJyYXlMZW5ndGgobnVtQml0cykpCisgICAgICAgICAgICByZXNpemVTbG93KG51bUJpdHMpOwog
ICAgICAgICBtX251bUJpdHMgPSBudW1CaXRzOwogICAgIH0KICAgICAKQEAgLTE3MSw2ICsxNTcs
OSBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QqIHdvcmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQog
CiBwcml2YXRlOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEVxdWFsc1Nsb3coY29u
c3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlc2l6ZVNsb3coc2l6ZV90IG51bUJpdHMpOworICAgIAogICAgIHVpbnQzMl90KiBt
X3dvcmRzIHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9OwpAQCAt
MzIwLDYgKzMwOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
ICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHNpemVf
dCBpbmRleCA9IGFycmF5TGVuZ3RoKCk7IGluZGV4LS07KSB7CisgICAgICAgICAgICBpZiAobV93
b3Jkcy53b3JkKGluZGV4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE90aGVyV29yZHM+CiAgICAgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3RvckFuZFdv
cmRzPHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSwgdHlwZW5hbWUgT3RoZXJXb3Jkczo6Vmlld1R5
cGU+PiBvcGVyYXRvciYoY29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVy
KSBjb25zdAogICAgIHsKQEAgLTQ3MSw2ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fd29y
ZHMuY2xlYXJBbGwoKTsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRl
bnRzIG9mIHRoaXMgYml0dmVjdG9yIGNoYW5nZWQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Ro
ZXJXb3Jkcz4KICAgICBib29sIHNldEFuZENoZWNrKGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90
aGVyV29yZHM+JiBvdGhlcikKICAgICB7CkBAIC01NTAsNiArNTQ5LDI4IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiBhdChpbmRleCk7CiAgICAgfQorICAgIAorICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgY29udGVudHMgY2hhbmdlZC4KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
YXRvbWljU2V0QW5kQ2hlY2soc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgdWludDMyX3QqIHBvaW50ZXIgPSAmbV93b3Jkcy53b3JkKGluZGV4ID4+IDUpOworICAgICAg
ICB1aW50MzJfdCBtYXNrID0gMSA8PCAoaW5kZXggJiAzMSk7CisgICAgICAgIGZvciAoOzspIHsK
KyAgICAgICAgICAgIHVpbnQzMl90IG9sZFZhbHVlID0gKnBvaW50ZXI7CisgICAgICAgICAgICB1
aW50MzJfdCBuZXdWYWx1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAg
ICAgIGlmIChvbGRWYWx1ZSAmIG1hc2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlIHwgbWFzazsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCEob2xkVmFsdWUgJiBtYXNrKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG5ld1ZhbHVl
ID0gb2xkVmFsdWUgJiB+bWFzazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3ZWFr
Q29tcGFyZUFuZFN3YXAocG9pbnRlciwgb2xkVmFsdWUsIG5ld1ZhbHVlKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288750</attachid>
            <date>2016-09-13 17:07:03 -0700</date>
            <delta_ts>2016-09-13 18:10:08 -0700</delta_ts>
            <desc>more compiling</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>94174</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTBGN0MzOUZCMUM4RjYy
OTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5s
aW5lcy5oICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsK
IAkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFy
a2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmgg
Ki87IH07CisJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI5
MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLzsgfTsKIAkJMEY4MDIz
RUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4
MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI3MzEsNiArMjczMyw4IEBACiAJCTBGN0Mz
OUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyog
REZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5o
OyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3Bh
Y2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIz
MDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMz
OCw5ICs1MzQyLDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFs
bG9jYXRvci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9j
ay5jcHAgKi8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmgg
Ki8sCisJCQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5o
ICovLAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICov
LAogCQkJCTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJ
CQkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMEY3
QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0
MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBG
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlBRERCMUY2MjE4RDc3REI3
MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNzM5NCw2ICs3NDAwLDcgQEAKIAkJ
CQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50
UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAv
KiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4
QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJp
dGhNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkxOCw3IEBACiAJCQkJQTUwM0ZB
MkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0lu
amVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQkExRDg4OTUwNzAw
NDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1
QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0MgLyogSlNJbnB1dHMuanNv
biBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2
QXJyYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJW
TUVudHJ5U2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29u
dGFpbmVyLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NlbGxDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKICAgICBib29sIG5lZWRzRmxpcCgpIGNvbnN0
OwogICAgIAotICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKICAgICBib29sIGlzTWFya2VkKEhl
YXBDZWxsKikgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENl
bGwqKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxD
b250YWluZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTMgKzMyLDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGluZSBib29sIENlbGxD
b250YWluZXI6OmlzTWFya2VkKCkgY29uc3QKLXsKLSAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24o
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaGFuZGxl
KCkuaXNNYXJrZWQoKTsKLX0KLQogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQo
SGVhcENlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMu
Y3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25z
ZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmUuaCIKICNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJK
U1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMu
aCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tl
bi5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgpAQCAtNTI2LDExICs1MjcsOSBAQCB2b2lk
IEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgfQogICAgIAogICAgIHsKLSAgICAgICAgVGltaW5n
U2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5jbGVhck1h
cmtzIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZmxpcCgpOworICAgICAgICBUaW1pbmdTY29w
ZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2lu
ZyIpOworICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZygpOwogICAgIH0KLSAgICAK
LSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyh0cnVlKTsKIH0KIAogdm9pZCBIZWFwOjp2
aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCkBAIC03NzksNyArNzc4LDcgQEAgdm9pZCBIZWFw
OjplbmRNYXJraW5nKCkKICAgICBBU1NFUlQobV9zaGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKTsK
ICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLnJlbW92ZUFsbCgpOwogICAgIAotICAgIG1f
b2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKGZhbHNlKTsKKyAgICBtX29iamVjdFNwYWNlLmVuZE1h
cmtpbmcoKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVjdENvdW50KCkKQEAgLTkzOSw3ICs5Mzgs
NyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkKICAgICAgICAgbV9vYmplY3RTcGFj
ZS5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNwYWNlLnNocmluaygpOwogICAgIH0KLSAgICBB
U1NFUlQobV9ibG9ja1NuYXBzaG90LmlzRW1wdHkoKSk7CisgICAgbV9vYmplY3RTcGFjZS5hc3Nl
cnRTbmFwc2hvdEVtcHR5KCk7CiAKICAgICBzd2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vha0Jsb2Nr
cygpOwogfQpAQCAtMTA0OCw3ICsxMDQ3LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29s
bGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwogICAgIHdyaXRl
QmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKIAotICAgIHJlc2V0QWxsb2Nh
dG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdXBkYXRlQWxsb2NhdGlv
bkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUpOwogICAgIHJl
c3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTE2Miw0NCArMTE2MSwxMCBAQCB2b2lkIEhlYXA6
OnN3ZWVwQXJyYXlCdWZmZXJzKCkKICAgICBtX2FycmF5QnVmZmVycy5zd2VlcCgpOwogfQogCi1z
dHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZv
aWRGdW5jdG9yIHsKLSAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvcihWZWN0b3I8TWFya2Vk
QmxvY2s6OkhhbmRsZSo+JiBibG9ja3MpIAotICAgICAgICA6IG1faW5kZXgoMCkgCi0gICAgICAg
ICwgbV9ibG9ja3MoYmxvY2tzKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCko
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0gICAgewotICAgICAgICBibG9jay0+
c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAgIG1fYmxvY2tzW21faW5kZXgrK10g
PSBibG9jazsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG11dGFibGUgZmllbGQg
YmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKLSAgICBtdXRhYmxlIHNpemVfdCBtX2luZGV4
OwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIG1fYmxvY2tzOwotfTsKLQogdm9p
ZCBIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlKCkKIHsKICAgICBUaW1pbmdTY29wZSB0aW1pbmdT
Y29wZSgqdGhpcywgIkhlYXA6OnNuYXBzaG90TWFya2VkU3BhY2UiKTsKLSAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcmVuYW1lZC4gSXQncyBub3QgYWN0dWFsbHkgc25hcHNo
b3R0aW5nIGFsbCBvZiBNYXJrZWRTcGFjZS4KLSAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSW5jcmVt
ZW50YWxTd2VlcGVyLCBzbyBpdCBvbmx5IG5lZWRzIHRvIHNuYXBzaG90IGJsb2Nrcy4gSG93ZXZl
ciwgaWYgd2UgZXZlcgotICAgIC8vIHdhbnRlZCB0byBhZGQgb3RoZXIgc25hcHNob3R0aW5nIGxv
Z2luLCB3ZSdkIHByb2JhYmx5IHB1dCBpdCBoZXJlLgotICAgIAotICAgIGlmIChtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9yIChNYXJrZWRCbG9j
azo6SGFuZGxlKiBoYW5kbGUgOiBtX29iamVjdFNwYWNlLmJsb2Nrc1dpdGhOZXdPYmplY3RzKCkp
IHsKLSAgICAgICAgICAgIGlmIChoYW5kbGUtPmlzT25CbG9ja3NUb1N3ZWVwKCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX2Jsb2NrU25hcHNob3QuYXBwZW5kKGhh
bmRsZSk7Ci0gICAgICAgICAgICBoYW5kbGUtPnNldElzT25CbG9ja3NUb1N3ZWVwKHRydWUpOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9ibG9ja1NuYXBzaG90LnJlc2l6ZVRv
Rml0KG1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuc2l6ZSgpKTsKLSAgICAgICAgTWFya2Vk
QmxvY2tTbmFwc2hvdEZ1bmN0b3IgZnVuY3RvcihtX2Jsb2NrU25hcHNob3QpOwotICAgICAgICBt
X29iamVjdFNwYWNlLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICB9CisgICAgbV9vYmplY3RT
cGFjZS5zbmFwc2hvdCgpOwogfQogCiB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2Fj
aGVzKCkKQEAgLTEyMjIsOSArMTE4Nyw5IEBAIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyQ3VycmVu
dGx5RXhlY3V0aW4KICAgICBtX2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1
dGluZ0NvZGVCbG9ja3ModGhpcyk7CiB9CiAKLXZvaWQgSGVhcDo6cmVzZXRBbGxvY2F0b3JzKCkK
K3ZvaWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewotICAgIG1fb2JqZWN0U3BhY2Uu
cmVzZXRBbGxvY2F0b3JzKCk7CisgICAgbV9vYmplY3RTcGFjZS5wcmVwYXJlRm9yQWxsb2NhdGlv
bigpOwogfQogCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw2IEBAIHB1
YmxpYzoKICAgICAvLyBvdXIgc2NhbiB0byBydW4gZmFzdGVyLiAKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc190aW1lQ2hlY2tSZXNvbHV0aW9uID0gMTY7CiAKLSAgICBzdGF0aWMgYm9vbCBp
c0xpdmUoY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQq
KTsKICAgICBzdGF0aWMgYm9vbCBpc01hcmtlZENvbmN1cnJlbnRseShjb25zdCB2b2lkKik7CiAg
ICAgc3RhdGljIGJvb2wgdGVzdEFuZFNldE1hcmtlZChIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCop
OwpAQCAtMzMzLDcgKzMzMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92
aWRlckNhY2hlcygpOwogICAgIHZvaWQgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAg
dm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7Ci0gICAgdm9p
ZCByZXNldEFsbG9jYXRvcnMoKTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAg
ICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25k
aXRpb25hbEZpbmFsaXplcnMoKTsKICAgICB2b2lkIGNsZWFyVW5tYXJrZWRFeGVjdXRhYmxlcygp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lv
biAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NCwxNyArNzQsNiBAQCBpbmxpbmUgSGVhcCogSGVhcDo6aGVhcChj
b25zdCBKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGhlYXAodi5hc0NlbGwoKSk7CiB9CiAKLWlubGlu
ZSBib29sIEhlYXA6OmlzTGl2ZShjb25zdCB2b2lkKiByYXdDZWxsKQotewotICAgIEFTU0VSVCgh
bWF5QmVHQ1RocmVhZCgpKTsKLSAgICBIZWFwQ2VsbCogY2VsbCA9IGJpdHdpc2VfY2FzdDxIZWFw
Q2VsbCo+KHJhd0NlbGwpOwotICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQotICAg
ICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNMaXZlKCk7Ci0gICAgTWFya2Vk
QmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAgICBibG9jay5mbGlwSWZOZWNl
c3NhcnkoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSk7Ci0gICAgcmV0
dXJuIGJsb2NrLmhhbmRsZSgpLmlzTGl2ZUNlbGwoY2VsbCk7Ci19Ci0KIEFMV0FZU19JTkxJTkUg
Ym9vbCBIZWFwOjppc01hcmtlZChjb25zdCB2b2lkKiByYXdDZWxsKQogewogICAgIEFTU0VSVCgh
bWF5QmVHQ1RocmVhZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBT
dGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5l
cy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lu
Y3JlbWVudGFsU3dlZXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNiBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHN3ZWVwVGltZU11bHRpcGxp
ZXIgCiAjaWYgVVNFKENGKQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIo
SGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+
dm0oKSwgcnVuTG9vcCkKLSAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25hcHNo
b3QpCiB7CiB9CiAKQEAgLTY2LDcgKzY1LDYgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNh
bmNlbFRpbWVyKCkKICNlbGlmIFBMQVRGT1JNKEVGTCkKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5j
cmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSkK
LSAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25hcHNob3QpCiB7CiB9CiAKQEAg
LTg2LDcgKzg0LDYgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICNl
bGlmIFVTRShHTElCKQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVh
cCogaGVhcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpKQotICAgICwgbV9ibG9ja3NUb1N3
ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKIHsKIH0KIApAQCAtMTIxLDE5ICsxMTgsMjAgQEAg
dm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXAoZG91YmxlIAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9ibG9ja3NUb1N3ZWVwLmNsZWFyKCk7CiAgICAgY2FuY2VsVGltZXIo
KTsKIH0KIAogYm9vbCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKCkKIHsKLSAg
ICB3aGlsZSAoIW1fYmxvY2tzVG9Td2VlcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1RvU3dlZXAudGFrZUxhc3QoKTsKLSAgICAgICAg
YmxvY2stPnNldElzT25CbG9ja3NUb1N3ZWVwKGZhbHNlKTsKLQotICAgICAgICBpZiAoIWJsb2Nr
LT5uZWVkc1N3ZWVwaW5nKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQorICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrID0gbnVsbHB0cjsKKyAgICAKKyAgICBmb3IgKDsgbV9jdXJyZW50
QWxsb2NhdG9yOyBtX2N1cnJlbnRBbGxvY2F0b3IgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPm5leHRB
bGxvY2F0b3IoKSkgeworICAgICAgICBibG9jayA9IG1fY3VycmVudEFsbG9jYXRvci0+ZmluZEJs
b2NrVG9Td2VlcCgpOworICAgICAgICBpZiAoYmxvY2spCisgICAgICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgCisgICAgaWYgKGJsb2NrKSB7CiAgICAgICAgIERlZmVyR0NGb3JBV2hpbGUgZGVm
ZXJHQyhtX3ZtLT5oZWFwKTsKICAgICAgICAgYmxvY2stPnN3ZWVwKCk7CiAgICAgICAgIG1fdm0t
PmhlYXAub2JqZWN0U3BhY2UoKS5mcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CkBAIC0xNDYsMTEg
KzE0NCwxMiBAQCBib29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soCiB2b2lk
IEluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZygpCiB7CiAgICAgc2NoZWR1bGVUaW1l
cigpOworICAgIG1fY3VycmVudEFsbG9jYXRvciA9IG1fdm0tPmhlYXAub2JqZWN0U3BhY2UoKS5m
aXJzdEFsbG9jYXRvcigpOwogfQogCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlz
aFN3ZWVwaW5nKCkKIHsKLSAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsKKyAgICBtX2N1cnJl
bnRBbGxvY2F0b3IgPSBudWxscHRyOwogICAgIGlmIChtX3ZtKQogICAgICAgICBjYW5jZWxUaW1l
cigpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2Vl
cGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50
YWxTd2VlcGVyLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMTIg
QEAKICNkZWZpbmUgSW5jcmVtZW50YWxTd2VlcGVyX2gKIAogI2luY2x1ZGUgIkhlYXBUaW1lci5o
IgotI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKLWNsYXNzIE1hcmtlZEJsb2NrOworY2xhc3Mg
TWFya2VkQWxsb2NhdG9yOwogCiBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXIgOiBwdWJsaWMgSGVh
cFRpbWVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlVGltZXIoKTsKICAgICB2b2lkIGNhbmNlbFRpbWVy
KCk7CiAgICAgCi0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgbV9ibG9ja3NUb1N3
ZWVwOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9jdXJyZW50QWxsb2NhdG9yOwogI2VuZGlmCiB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoZWFwLCBN
YXJrZWRTcGFjZSogbWFya2VkU3BhY2UsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9y
QXR0cmlidXRlcyYgYXR0cmlidXRlcykKICAgICA6IG1fY3VycmVudEJsb2NrKDApCiAgICAgLCBt
X2xhc3RBY3RpdmVCbG9jaygwKQotICAgICwgbV9uZXh0QmxvY2tUb1N3ZWVwKG51bGxwdHIpCiAg
ICAgLCBtX2NlbGxTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjZWxsU2l6ZSkpCiAgICAgLCBt
X2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKICAgICAsIG1faGVhcChoZWFwKQpAQCAtNTAsOSArNDks
OCBAQCBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoCiBib29sIE1hcmtl
ZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiB7CiAgICAgdW5zaWduZWQg
aXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPSAwOwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrID0gbV9ibG9ja0xpc3QuYmVnaW4oKTsKLSAgICB3aGlsZSAoYmxvY2spIHsKLSAgICAgICAg
YmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5leHQoKSk7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fYmxvY2tzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYmxvY2tzW2luZGV4XTsKICAgICAgICAgaWYg
KGJsb2NrKQogICAgICAgICAgICAgYmxvY2stPmZsaXBJZk5lY2Vzc2FyeSgpOyAvLyBGb3JjZXMg
dXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50aWMg
ZWZmZWN0LgogICAgICAgICArK2l0ZXJzU2luY2VMYXN0VGltZUNoZWNrOwpAQCAtNjYsMjggKzY0
LDYgQEAgYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJldGlyZShNYXJrZWRCbG9jazo6
SGFuZGxlKiBibG9jaykKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOyAvLyBUaGlz
IHdpbGwgYmUgY2FsbGVkIGluIHBhcmFsbGVsIGR1cmluZyBHQy4KLSAgICBpZiAoYmxvY2sgPT0g
bV9jdXJyZW50QmxvY2spIHsKLSAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gdGhlIG11dGF0
b3IgaXMgcnVubmluZy4gV2UgZmluaXNoZWQgYSBmdWxsIEdDIGFuZCBtYXJrZWQgdG9vIGZldyB0
aGluZ3MKLSAgICAgICAgLy8gdG8gcmV0aXJlLiBUaGVuIHdlIHN0YXJ0ZWQgYWxsb2NhdGluZyBp
biB0aGlzIGJsb2NrLiBUaGVuIGEgYmFycmllciByYW4sIHdoaWNoIG1hcmtlZCBhbgotICAgICAg
ICAvLyBvYmplY3QgaW4gdGhpcyBibG9jaywgd2hpY2ggcHV0IGl0IG92ZXIgdGhlIHJldGlyZW1l
bnQgdGhyZXNob2xkLiBJdCdzIE9LIHRvIHNpbXBseSBkbwotICAgICAgICAvLyBub3RoaW5nIGlu
IHRoYXQgY2FzZS4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoYmxvY2sgPT0gbV9s
YXN0QWN0aXZlQmxvY2spIHsKLSAgICAgICAgLy8gVGhpcyBjYW4gZWFzaWx5IGhhcHBlbiBkdXJp
bmcgbWFya2luZy4gSXQgd291bGQgYmUgZWFzeSB0byBoYW5kbGUgdGhpcyBjYXNlLCBidXQgaXQn
cwotICAgICAgICAvLyBqdXN0IGFzIGVhc3kgdG8gaWdub3JlIGl0LgotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5pc09uTGlzdCgpKTsKLSAgICBpZiAo
YmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVwKQotICAgICAgICBtX25leHRCbG9ja1RvU3dlZXAg
PSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5leHQoKSk7Ci0gICAgYmxvY2stPnJlbW92ZSgpOwot
ICAgIG1fcmV0aXJlZEJsb2Nrcy5wdXNoKGJsb2NrKTsKLX0KLQogTWFya2VkQmxvY2s6OkhhbmRs
ZSogTWFya2VkQWxsb2NhdG9yOjpmaWx0ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2spCiB7CiAgICAgaWYgKGJsb2NrID09IG1fYmxvY2tMaXN0LmVuZCgpKQpAQCAtMTAwLDUw
ICs3Niw3NyBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEJsb2NrVG9Td2VlCiAgICAg
bV9uZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrKTsKIH0KIAorTWFya2Vk
QmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaW5kRW1wdHlCbG9jaygpCit7CisgICAg
bV9lbXB0eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKKyAg
ICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5Q3Vyc29yXTsKK30KKwogdm9pZCog
TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpCiB7CiAg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAg
IGlmIChtX2N1cnJlbnRCbG9jaykgewotICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0g
bV9uZXh0QmxvY2tUb1N3ZWVwKTsKKyAgICBpZiAobV9jdXJyZW50QmxvY2spCiAgICAgICAgIG1f
Y3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAgICAgc2V0TmV4dEJsb2Nr
VG9Td2VlcChtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICB9CiAgICAgCiAgICAgc2V0RnJl
ZUxpc3QoRnJlZUxpc3QoKSk7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChtX25leHRCbG9ja1RvU3dl
ZXAgIT0gbV9ibG9ja0xpc3QuZW5kKCkpOwotCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbmV4
dDsKLSAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqJiBibG9jayA9IG1fbmV4dEJsb2NrVG9T
d2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJs
b2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgIC8vIEl0IHdvdWxkIGJlIHN1cGVyIHdlaXJk
IGlmIHRoZSBibG9ja3Mgd2UgYXJlIHN3ZWVwaW5nIGhhdmUgYW55dGhpbmcgYWxsb2NhdGVkIGR1
cmluZyB0aGlzCi0gICAgICAgIC8vIGN5Y2xlLgotICAgICAgICBBU1NFUlQoIWJsb2NrLT5oYXNB
bnlOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgCi0gICAgICAgIEZyZWVMaXN0IGZyZWVMaXN0
ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7Cisg
ICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAoOzspIHsKKyAgICAg
ICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0gbV9jYW5BbGxvY2F0ZS5maW5kQml0KG1fYWxsb2NhdGlv
bkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGlmIChtX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9j
a3Muc2l6ZSgpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdz
IHBvc3NpYmxlIHRvIHN0dW1ibGUgb24gYSBjb21wbGV0ZS1mdWxsIGJsb2NrLiBNYXJraW5nIHRy
aWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0Ci0gICAgICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJh
Y3kgYW5kIG1heSBmb3JnZXQgdG8gZG8gaXQgc29tZXRpbWVzLgotICAgICAgICBpZiAoZnJlZUxp
c3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNG
cmVlTGlzdGVkKCkpOwotICAgICAgICAgICAgYmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9j
YXRlZCgpOwotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc01hcmtlZCgpKTsKLSAgICAgICAg
ICAgIHJldGlyZShibG9jayk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAg
ICAgICBzZXRJc0NhbkFsbG9jYXRlKG1fYWxsb2NhdGlvbkN1cnNvciwgZmFsc2UpOwogCi0gICAg
ICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7Ci0gICAgICAgIHNldEZyZWVMaXN0KGZyZWVMaXN0
KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICh2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0
ZUluKG1fYmxvY2tzW21fYWxsb2NhdGlvbkN1cnNvcl0pKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZyZWVMaXN0KSB7Ci0gICAgICAgIG1fY3Vy
cmVudEJsb2NrID0gMDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrID0gZmluZEVtcHR5QmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRl
SW4oYmxvY2spOworICAgIAorICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1f
bWFya2VkU3BhY2UtPmZpbmRFbXB0eUJsb2NrKCkpIHsKKyAgICAgICAgYmxvY2stPnN3ZWVwKCk7
CisgICAgICAgIGJsb2NrLT5yZW1vdmVGcm9tQWxsb2NhdG9yKCk7CisgICAgICAgIGFkZEJsb2Nr
KGJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlSW4oYmxvY2spOwogICAgIH0KKyAgICAK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAordm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0
ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIHZvaWQqIHJlc3VsdCA9IHRy
eUFsbG9jYXRlSW4oYmxvY2spOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIEFTU0VSVChibG9jayk7CisgICAgQVNT
RVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgQVNTRVJUKCFibG9jay0+
aXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3
ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgCisgICAgLy8g
SXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGVseSBmdWxsIGJsb2NrLiBNYXJr
aW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0CisgICAgLy8gdGhhdCBhbGdvcml0aG0gaXMg
cmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCisgICAgaWYgKGZyZWVMaXN0
LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7CisgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlz
dGVkKCkpOworICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCk7Cisg
ICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgQVNTRVJUKCFp
c0VtcHR5KGJsb2NrKSk7CisgICAgICAgIEFTU0VSVCghaXNDYW5BbGxvY2F0ZShibG9jaykpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCisgICAgbV9jdXJyZW50QmxvY2sg
PSBibG9jazsKKyAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7CisgICAgCiAgICAgdm9pZCogcmVz
dWx0OwogICAgIGlmIChtX2ZyZWVMaXN0LnJlbWFpbmluZykgewogICAgICAgICB1bnNpZ25lZCBj
ZWxsU2l6ZSA9IG1fY2VsbFNpemU7CkBAIC0xNTUsNiArMTU4LDcgQEAgdm9pZCogTWFya2VkQWxs
b2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQogICAgICAgICByZXN1bHQgPSBoZWFkOwogICAgIH0K
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHNldElzRWRlbihtX2N1cnJlbnRCbG9j
aywgdHJ1ZSk7CiAgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWxsb2NhdGVJbkJsb2NrKG1fY3VycmVu
dEJsb2NrKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjI3LDggKzIzMSw3IEBAIHZvaWQq
IE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICBhZGRCbG9jayhibG9jayk7Ci0gICAgICAgIAotICAgIHJlc3Vs
dCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKKyAgICByZXN1bHQgPSBhbGxvY2F0
ZUluKGJsb2NrKTsKICAgICBBU1NFUlQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtMjQ5LDMwICsyNTIsNjggQEAgc2l6ZV90IE1hcmtlZEFsbG9jYXRvcjo6YmxvY2tTaXplRm9y
Qnl0ZQogTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJs
b2NrKCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7
Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwgdGhpcywgbV9jZWxs
U2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5k
bGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIG1fY2VsbFNpemUsIG1fYXR0cmli
dXRlcyk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAor
ICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJu
IGhhbmRsZTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFT
U0VSVCghbV9mcmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9j
a0luZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOwor
CisgICAgICAgIHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAg
ICAgIG1fYmxvY2tzLmFwcGVuZChoYW5kbGUpOworICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNp
dHkoKSAhPSBvbGRDYXBhY2l0eSkgeworICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAg
ICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQodmVjdG9yLm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChtX2Jsb2Nrcy5j
YXBhY2l0eSgpID4gb2xkQ2FwYWNpdHkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3JF
YWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9y
KSB7CisgICAgICAgICAgICAgICAgICAgIHZlY3Rvci5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHko
KSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgpOworICAgICAgICBBU1NFUlQo
IW1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIG1fYmxvY2tzW2luZGV4XSA9IGhhbmRsZTsKKyAg
ICB9CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsKLSAgICBzZXROZXh0Qmxv
Y2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRCbG9jayhibG9jayk7
CisgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0
b3IpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmVjdG9yW2luZGV4XSk7CisgICAgICAgIH0pOwor
CisgICAgaGFuZGxlLT5kaWRBZGRUb0FsbG9jYXRvcih0aGlzLCBpbmRleCk7CisgICAgCisgICAg
c2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKKyAgICBzZXRJc0VtcHR5KGluZGV4LCB0cnVlKTsKIH0K
IAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKQogewotICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBibG9jaykgewotICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGZpbHRlck5leHRCbG9jayhtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsK
LSAgICAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0gICAgfQotICAgIGlmIChtX25leHRC
bG9ja1RvU3dlZXAgPT0gYmxvY2spCi0gICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9uZXh0
QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOworICAgIEFTU0VSVChibG9jay0+YWxsb2NhdG9yKCkgPT0g
dGhpcyk7CisgICAgQVNTRVJUKG1fYmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9PSBibG9jayk7CiAK
LSAgICBibG9jay0+d2lsbFJlbW92ZUJsb2NrKCk7Ci0gICAgbV9ibG9ja0xpc3QucmVtb3ZlKGJs
b2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPSBudWxscHRyOworICAgIG1fZnJl
ZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2stPmluZGV4KCkpOworICAgIAorICAgIGZvckVhY2hC
aXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAg
ICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCldID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIAor
ICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQgTWFya2VkQWxs
b2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCkBAIC0yOTIsMjMgKzMzMywyMCBAQCB2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcoKQogICAgIG1fZnJlZUxpc3QgPSBGcmVlTGlzdCgp
OwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzZXQoKQordm9pZCBNYXJrZWRBbGxvY2F0
b3I6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKLSAgICBtX2xhc3RBY3RpdmVCbG9jayA9IDA7
Ci0gICAgbV9jdXJyZW50QmxvY2sgPSAwOworICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0
cjsKKyAgICBtX2N1cnJlbnRCbG9jayA9IG51bGxwdHI7CiAgICAgc2V0RnJlZUxpc3QoRnJlZUxp
c3QoKSk7CiAKLSAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fYmxvY2tMaXN0LmJlZ2luKCkpOwor
ICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IDA7CisgICAgbV9lbXB0eUN1cnNvciA9IDA7CisgICAg
bV9zbmFwc2hvdEN1cnNvciA9IDA7CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxsKCk7CiAKICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7Ci0gICAgICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6Okhh
bmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7
Ci0gICAgICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0g
ICAgICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6
SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAgICAgYmxvY2stPnphcChmcmVlTGlz
dCk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICB9CisgICAgICAgIC8vIEZJ
WE1FOiBUaGluZ3M/CiAgICAgfQogfQogCkBAIC0zMjYsNCArMzY0LDg1IEBAIHZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpzZXRGcmVlTGlzdChjb25zdCAKICAgICBtX2ZyZWVMaXN0ID0gZnJlZUxpc3Q7
CiB9CiAKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKK3sKKyAgICBp
ZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZyZWVMaXN0
ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICBtX2N1cnJlbnRC
bG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOworICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0
cjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0
aW9uKCkKK3sKKyAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28gaXMgb3VyIHN1bW1h
cnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBmdWxsCisgICAgLy8g
Y29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xsZWN0aW9uIHlvdSB3
aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKKyAgICAvLyBhcyB0aGUgbmV4dCBvbmUg
aXMgZWRlbi4KKyAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVhckFsbCgpOworICAgIG1fbWFya2lu
Z1JldGlyZWQuY2xlYXJBbGwoKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtp
bmcoKQoreworICAgIG1fYWxsb2NhdGVkLmNsZWFyKCk7CisgICAgCisgICAgLy8gSXQncyBzdXJw
cmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBjb21wcmVoZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJr
aW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bworICAgIC8vIGtub3cgd2hhdCBraW5kIG9mIGNvbGxl
Y3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdlIGlzIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9t
YXJraW5nWFlaCisgICAgLy8gdmVjdG9ycy4KKyAgICAKKyAgICBpZiAobmVlZHNEZXN0cnVjdGlv
bigpKSB7CisgICAgICAgIC8vIElmIGJsb2NrcyBuZWVkIGRlc3RydWN0aW9uIHRoZW4gbm90aGlu
ZyBpcyBlbXB0eSEgVGhpcyBpcyBhIGNvcnJlY3QgYXNzZXJ0aW9uIGJ1dCBtYXkKKyAgICAgICAg
Ly8gYmVjb21lIHdyb25nIG9uY2Ugd2UgZ28gZnVsbCBjb25jdXJyZW50OiB3aGVuIHdlIGNyZWF0
ZSBhIG5ldyBibG9jaywgaXQgd2lsbCBmbGlja2VyCisgICAgICAgIC8vIGludG8gdGhlIGVtcHR5
IHNldCBmb3IgYSB0aW55IG1vbWVudC4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgY29kZSBpcyBs
aWtlbHkgdG8gYmUgcnVuCisgICAgICAgIC8vIGluIHN0b3BUaGVXb3JsZC4KKyAgICAgICAgQVNT
RVJUKG1fZW1wdHkuaXNFbXB0eSgpKTsKKyAgICAgICAgbV9jYW5BbGxvY2F0ZSA9IG1fbGl2ZSAm
IH5tX21hcmtpbmdSZXRpcmVkOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1f
ZW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHk7CisgICAgbV9jYW5BbGxvY2F0ZSA9
IG1fbGl2ZSAmIG1fbWFya2luZ05vdEVtcHR5ICYgfm1fbWFya2luZ1JldGlyZWQ7Cit9CisKK3Zv
aWQgTWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZvckVkZW5Db2xsZWN0aW9uKCkKK3sKKyAgICBt
X3NuYXBzaG90IHw9IG1fZWRlbjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90
Rm9yRnVsbENvbGxlY3Rpb24oKQoreworICAgIG1fc25hcHNob3QgfD0gbV9saXZlOworfQorCitN
YXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1RvU3dlZXAoKQor
eworICAgIG1fc25hcHNob3RDdXJzb3IgPSBtX3NuYXBzaG90LmZpbmRCaXQobV9zbmFwc2hvdEN1
cnNvciwgdHJ1ZSk7CisgICAgaWYgKG1fc25hcHNob3RDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV9zbmFwc2hv
dEN1cnNvcl07Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzd2VlcCgpCit7CisgICAgbV9z
bmFwc2hvdC5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAg
ICAgICAgICAgbV9ibG9ja3NbaW5kZXhdLT5zd2VlcCgpOworICAgICAgICB9KTsKK30KKwordm9p
ZCBNYXJrZWRBbGxvY2F0b3I6OnNocmluaygpCit7CisgICAgbV9lbXB0eS5mb3JFYWNoU2V0Qml0
KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgbV9tYXJrZWRTcGFj
ZS0+ZnJlZUJsb2NrKGJsb2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKK30KKwordm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OmFzc2VydFNuYXBzaG90RW1wdHkoKQoreworICAgIEFTU0VSVChtX3NuYXBz
aG90LmlzRW1wdHkoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMjA1ODU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJBbGxvY2F0b3JBdHRyaWJ1dGVz
LmgiCiAjaW5jbHVkZSAiRnJlZUxpc3QuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2lu
Y2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2Vk
TGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTM3LDYgKzM5LDEwNiBAQCBjbGFzcyBIZWFwOwogY2xhc3MgTWFya2VkU3BhY2U7CiBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKKyNkZWZpbmUgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRP
Ul9CSVQobWFjcm8pIFwKKyAgICBtYWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJsb2Nr
IGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICovXAorICAgIG1hY3JvKGVtcHR5LCBF
bXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVjdHMg
YW5kIG5vdGhpbmcgdG8gZGVzdHJveS4gKi8gXAorICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2Nh
dGVkKSAvKiBUaGUgc2V0IG9mIGFsbGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0
cy4gKi9cCisgICAgbWFjcm8oY2FuQWxsb2NhdGUsIENhbkFsbG9jYXRlKSAvKiBUaGUgc2V0IG9m
IGFsbCBibG9ja3MgdGhhdCBjYW4gYmUgYWxsb2NhdGVkIGluIHJpZ2h0IG5vdy4gKi8gXAorICAg
IG1hY3JvKGVkZW4sIEVkZW4pIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3
IG9iamVjdHMgc2luY2UgdGhlIGxhc3QgR0MuICovXAorICAgIG1hY3JvKHNuYXBzaG90LCBTbmFw
c2hvdCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhl
IGluY3JlbWVudGFsIHN3ZWVwZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0
ZWQgZHVyaW5nIG1hcmtpbmcuICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2lu
Z05vdEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAq
LyBcCisgICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KKworLy8gTm90ZSB0aGF0IHRoaXMg
Y29sbGVjdG9yIHN1cHBvcnRzIG92ZXJsYXBwaW5nIGFsbG9jYXRvciBzdGF0ZSB3aXRoIG1hcmtp
bmcgc3RhdGUsIHNpbmNlIGluIGEKKy8vIGNvbmN1cnJlbnQgY29sbGVjdG9yIHlvdSBhbGxvdyBh
bGxvY2F0aW9uIHdoaWxlIG1hcmtpbmcgaXMgcnVubmluZy4gU28gaXQncyBiZXN0IHRvIHZpc3Vh
bGl6ZSBhCisvLyBmdWxsIG11dGFibGUtPmVkZW4gY29sbGVjdC0+bXV0YXRlLT5mdWxsIGNvbGxl
Y3QgY3ljbGUgYW5kIHNlZSBob3cgdGhlIGJpdHMgYWJvdmUgZ2V0IGFmZmVjdGVkLgorLy8gVGhl
IGV4YW1wbGUgYmVsb3cgdHJpZXMgdG8gYmUgZXhoYXVzdGl2ZSBhYm91dCB3aGF0IGhhcHBlbnMg
dG8gdGhlIGJpdHMsIGJ1dCBvbWl0cyBhIGxvdCBvZgorLy8gdGhpbmdzIHRoYXQgaGFwcGVuIHRv
IG90aGVyIHN0YXRlLgorLy8KKy8vIENyZWF0ZSBhbGxvY2F0b3IKKy8vIC0gYWxsIGJpdHMgYXJl
IGVtcHR5CisvLyBTdGFydCBhbGxvY2F0aW5nIGluIHNvbWUgYmxvY2sKKy8vIC0gYWxsb2NhdGUg
dGhlIGJsb2NrIGFuZCBzZXQgdGhlIGxpdmUgYml0LgorLy8gLSB0aGUgZW1wdHkgYml0IGZvciB0
aGUgYmxvY2sgZmxpY2tlcnMgb24gYW5kIHRoZW4gZ2V0cyBpbW1lZGlhdGVseSBjbGVhcmVkIGJ5
IHN3ZWVwaW5nLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcg
aW4gdGhhdCBibG9jaworLy8gLSBzZXQgdGhlIGFsbG9jYXRlZCBiaXQuCisvLyBEbyB0aGF0IHRv
IGEgbG90IG9mIGJsb2NrcyBhbmQgdGhlbiBzdGFydCBhbiBlZGVuIGNvbGxlY3Rpb24uCisvLyAt
IGJlZ2luTWFya2luZygpIGhhcyBub3RoaW5nIHRvIGRvLgorLy8gLSBieSBkZWZhdWx0IHdlIGhh
dmUgY2xlYXIgbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIGJpdHMuCisvLyAtIG1hcmtp
bmcgYnVpbGRzIHVwIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJlZCBiaXRzLgorLy8gV2Ug
ZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gZm9y
IGRlc3RydWN0b3IgYmxvY2tzOiBjYW5BbGxvY2F0ZSA9IGxpdmUgJiB+bWFya2luZ1JldGlyZWQK
Ky8vIC0gZm9yIG5vbi1kZXN0cnVjdG9yIGJsb2NrczoKKy8vICAgICAgIGVtcHR5ID0gbGl2ZSAm
IH5tYXJraW5nTm90RW1wdHkKKy8vICAgICAgIGNhbkFsbG9jYXRlID0gbGl2ZSAmIG1hcmtpbmdO
b3RFbXB0eSAmIH5tYXJraW5nUmV0aXJlZAorLy8gU25hcHNob3R0aW5nLgorLy8gLSBzbmFwc2hv
dCB8PSBlZGVuCisvLyBQcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBlZGVuCisv
LyBGaW5pc2ggY29sbGVjdGlvbi4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCBoYWQg
c29tZSBmcmVlIGFuZCBzb21lIGxpdmUgb2JqZWN0cy4KKy8vIC0gY2xlYXIgdGhlIGNhbkFsbG9j
YXRlIGJpdAorLy8gLSBjbGVhciB0aGUgc25hcHNob3QgYml0CisvLyAtIHNldCB0aGUgZWRlbiBi
aXQKKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxs
b2NhdGUgaW4gc29tZSBibG9jayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5LgorLy8gLSBjbGVh
ciB0aGUgZW1wdHkgYml0CisvLyAtIGNsZWFyIHRoZSBzbmFwc2hvdCBiaXQKKy8vIC0gc2V0IHRo
ZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQp
LgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9jayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5IGlu
IGFub3RoZXIgYWxsb2NhdG9yLgorLy8gLSBjbGVhciB0aGUgZW1wdHkgYml0CisvLyAtIGNsZWFy
IGFsbCBiaXRzIGluIHRoYXQgYWxsb2NhdG9yCisvLyAtIHNldCB0aGUgbGl2ZSBiaXQgaW4gYW5v
dGhlciBhbGxvY2F0b3IgYW5kIHRoZSBlbXB0eSBiaXQuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSwg
c25hcHNob3QgYml0cy4KKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0
aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gU3RhcnQgYSBmdWxsIGNvbGxlY3Rpb24u
CisvLyAtIGJlZ2luTWFya2luZygpIGNsZWFycyBtYXJraW5nTm90RW1wdHksIG1hcmtpbmdSZXRp
cmVkCisvLyAtIHRoZSBoZWFwIHZlcnNpb24gaXMgaW5jcmVtZW50ZWQKKy8vIC0gbWFya2luZyBy
ZWJ1aWxkcyBtYXJraW5nTm90RW1wdHkvbWFya2luZ3JldGlyZWQgYml0cy4KKy8vIFdlIGRvIGVu
ZE1hcmtpbmcoKQorLy8gLSBjbGVhciBhbGwgYWxsb2NhdGVkIGJpdHMuCisvLyAtIHNldCBjYW5B
bGxvY2F0ZS9lbXB0eSB0aGUgc2FtZSB3YXkgYXMgaW4gZWRlbiBjb2xsZWN0aW9uLgorLy8gU25h
cHNob3R0aW5nLgorLy8gLSBzbmFwc2hvdCB8PSBsaXZlCisvLyBwcmVwYXJlIGZvciBhbGxvY2F0
aW9uLgorLy8gLSBjbGVhciBlZGVuLgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLworLy8gTm90
aWNlIGhvdyBpbiB0aGlzIHNjaGVtZSwgdGhlIGVtcHR5L2NhbkFsbG9jYXRlIHN0YXRlIHN0YXlz
IHNlcGFyYXRlIGZyb20gdGhlIG1hcmtpbmdOb3RFbXB0eS8KKy8vIG1hcmtpbmdSZXRpcmVkIHN0
YXRlLiBUaGlzIGlzIG9uZSBzdGVwIHRvd2FyZHMgaGF2aW5nIHNlcGFyYXRlZCBhbGxvY2F0aW9u
IGFuZCBtYXJraW5nIHN0YXRlLgorLy8KKy8vIEFmdGVyIHRoaXMsIHdlIGp1c3QgbmVlZCB0byBh
bnN3ZXIgdGhlIHF1ZXN0aW9uOiB3aGF0IGRvZXMgYW4gb2JqZWN0IGFsbG9jYXRlZCBkdXJpbmcg
ZWRlbiBHQworLy8gbG9vayBsaWtlIHRvIHRoZSBHQz8gSSB0aGluayB0aGF0IHRoZSBlYXNpZXN0
IGFuc3dlciBpcyB0byBhbGxvY2F0ZSB0aGUgb2JqZWN0IHdoaXRlIGFuZCB0aGVuCisvLyBpbW1l
ZGlhdGVseSBtYXJrIGl0LiBUaGlzIG1ha2VzIHRoZSBvYmplY3QgYmVoYXZlIGFzIGlmIGl0IHdh
cyBhbGxvY2F0ZWQganVzdCBiZWZvcmUgdGhlIHN0YXJ0CisvLyBvZiBHQyBhbmQgaXQgd2FzIG9u
IHRoZSBzdGFjayBhdCB0aGUgYmVnaW5uaW5nIG9mIEdDLiBXZSB3b3VsZG4ndCBoYXZlIHRvIGRv
IGFueXRoaW5nIGRpZmZlcmVudAorLy8gd2l0aCB0aGUgdmFyaW91cyBibG9jayBiaXRzIHdoZW4g
YWxsb2NhdGluZyBkdXJpbmcgR0M6IHdlIGNvdWxkIHN0aWxsIHNldCBlZGVuIGFuZCBhbGxvY2F0
ZWQKKy8vIHNpbmNlIHRoZXkgd2lsbCBiZSBjbGVhcmVkIGFueXdheS4KKy8vCisvLyBCdXQgdGhp
cyBtZWFucyB0aGF0IHRoZSBvYmplY3Qgd29uJ3QgYmUgZWxpZ2libGUgZm9yIGZyZWVpbmcgdW50
aWwgdGhlIG5leHQgZnVsbCBHQy4gSWRlYWxseQorLy8gd2UnZCBtYWtlIHRoZSBvYmplY3QgaXMg
ZWxpZ2libGUgZm9yIGZyZWVpbmcgYXQgdGhlIG5leHQgZWRlbiBHQy4gVGhlcmUncyBhIGJ1bmNo
IG9mIHRoaW5ncyB3ZQorLy8gY291bGQgZG8gdG8gbWFrZSB0aGlzIGhhcHBlbi4gSGVyZSBhcmUg
c29tZSBpZGVhczoKKy8vCisvLyAtIEludHJvZHVjZSBhIG5ldyBDZWxsU3RhdGUsIGNhbGxlZCBG
bG9hdCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdhcyBhbGxvY2F0ZWQgZHVyaW5nIHRo
ZQorLy8gICBHQy4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgbWFya2luZyBkb2VzIG5vdGhpbmcg
Zm9yIEZsb2F0cy4gVGhpcyB3b3VsZCBtYWtlIG1hcmtpbmcgYSB0aW55CisvLyAgIGJpdCBtb3Jl
IGV4cGVuc2l2ZS4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgdGhlIGJhcnJpZXIgcmVjb2duaXpl
cyBzdG9yZXMgdG8gYSBGbG9hdCB0aGUgc2FtZQorLy8gICB3YXkgdGhhdCBpdCBzZWVzIGEgc3Rv
cmUgdG8gT2xkQmxhY2s6IGl0IHB1dHMgdGhlIG9iamVjdCBvbiB0aGUgbWFyayBzdGFjay4gRmxv
YXRzIHdvdWxkIGJlCisvLyAgIHB1dCBvbiB0aGUgbWFyayBzdGFjayBhcyBGbG9hdEdyZXkgdG8g
aW5kaWNhdGUgdGhhdCB0aGV5IHdpbGwgYmUgc2Nhbm5lZCBieSB0aGUgR0MgYnV0IHRoYXQKKy8v
ICAgdGhleSBhcmVuJ3QgYWN0dWFsbHkgbWFya2VkLgorLy8KKy8vIC0gTWFyayB0aGUgb2JqZWN0
cyBhZnRlciBhbGxvY2F0aW9uLCBidXQgYWxzbyBzZXQgc29tZSBvdGhlciBiaXRzIHRvIGluZGlj
YXRlIHRoYXQgdGhlIHRob3NlCisvLyAgIG9iamVjdHMgc2hvdWxkIGJlIHVubWFya2VkIGF0IHRo
ZSBlbmQgb2YgdGhlIEdDLgorLy8KKy8vIEVpdGhlciBvZiB0aGVzZSBhcHByb2FjaGVzIHdvdWxk
IG1ha2UgY29sbGVjdGlvbnMgbW9yZSBleHBlbnNpdmUsIGJ1dCBpdCBmZWVscyBsaWtlIHRoZSBs
YXR0ZXIKKy8vIGFwcHJvYWNoIHdvdWxkIGJlIGEgcHJvZml0YWJsZSBvcHRpbWl6YXRpb24uIEkn
bSBhbHNvIHJlYWxseSBnZXR0aW5nIHdvcnJpZWQgYWJvdXQgaG93IHRoaXMgR0MKKy8vIGV4cGVy
aWVuY2VzIGJhY2t3YXJkcyB0aW1lIHRyYXZlbCwgd2l0aCBhbGwgdGhlIHJlbWFya2luZyBvZiB0
aGluZ3MgbGlrZSBuZXcgb2JqZWN0cyBhbmQKKy8vIHdoYXRub3QuCisKIGNsYXNzIE1hcmtlZEFs
bG9jYXRvciB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApAQCAt
NDYsOSArMTQ4LDE2IEBAIHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvcihIZWFwKiwgTWFy
a2VkU3BhY2UqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsK
ICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7Ci0gICAgdm9pZCByZXNldCgpOworICAg
IHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKCk7
CiAgICAgdm9pZCByZXN1bWVBbGxvY2F0aW5nKCk7CisgICAgdm9pZCBiZWdpbk1hcmtpbmdGb3JG
dWxsQ29sbGVjdGlvbigpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNo
b3RGb3JFZGVuQ29sbGVjdGlvbigpOworICAgIHZvaWQgc25hcHNob3RGb3JGdWxsQ29sbGVjdGlv
bigpOworICAgIHZvaWQgc3dlZXAoKTsKKyAgICB2b2lkIHNocmluaygpOworICAgIHZvaWQgYXNz
ZXJ0U25hcHNob3RFbXB0eSgpOwogICAgIHNpemVfdCBjZWxsU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2VsbFNpemU7IH0KICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
KCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAgICAgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IE5lZWRzRGVz
dHJ1Y3Rpb247IH0KQEAgLTcyLDYgKzE4MSwzNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BhZ2Vk
T3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBibG9ja1NpemVG
b3JCeXRlcyhzaXplX3QpOworICAgIAorI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NF
U1NPUlMobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKKyAgICBib29sIGlzICMj
IGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV8gIyMgbG93ZXJC
aXROYW1lW2luZGV4XTsgfSBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QgeyByZXR1cm4gaXMgIyMgY2FwaXRhbEJpdE5hbWUo
YmxvY2stPmluZGV4KCkpOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKHNp
emVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdID0gdmFs
dWU7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoYmxvY2st
PmluZGV4KCksIHZhbHVlKTsgfSBcCisgICAgYm9vbCBhdG9taWNTZXRBbmRDaGVja0lzICMjIGNh
cGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93
ZXJCaXROYW1lLmF0b21pY1NldEFuZENoZWNrKGluZGV4LCB2YWx1ZSk7IH0gXAorICAgIGJvb2wg
YXRvbWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaywgYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lLmF0b21pY1Nl
dEFuZENoZWNrKGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0KKyAgICBGT1JfRUFDSF9NQVJLRURf
QUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMpCisjdW5kZWYgTUFS
S0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgorICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNk
ZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFs
Qml0TmFtZSkgXAorICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSk7CisgICAgICAgIEZP
Ul9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNL
KTsKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAg
ICBNYXJrZWRBbGxvY2F0b3IqIG5leHRBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25leHRB
bGxvY2F0b3I7IH0KKyAgICAKKyAgICAvLyBNYXJrZWRTcGFjZSBjYWxscyB0aGlzIGR1cmluZyBp
bml0LgorICAgIHZvaWQgc2V0TmV4dEFsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
cikgeyBtX25leHRBbGxvY2F0b3IgPSBhbGxvY2F0b3I7IH0KKyAgICAKKyAgICBNYXJrZWRCbG9j
azo6SGFuZGxlKiBmaW5kRW1wdHlCbG9jaygpOworICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGZpbmRCbG9ja1RvU3dlZXAoKTsKICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
TWFya2VkQmxvY2s7CkBAIC04Miw4ICsyMTksOSBAQCBwcml2YXRlOgogICAgIHZvaWQqIHRyeUFs
bG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRD
b2xsZWN0aW5nSW1wbCgpOwogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxv
Y2soKTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAg
ICB2b2lkKiBhbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZCgpOwotICAgIHZvaWQgcmV0aXJlKE1h
cmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKICAgICB2b2lkIHNldEZyZWVMaXN0KGNvbnN0IEZy
ZWVMaXN0Jik7CiAgICAgCkBAIC05MSwxNiArMjI5LDMwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXROZXh0QmxvY2tUb1N3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKICAgICBGcmVl
TGlzdCBtX2ZyZWVMaXN0OworICAgIAorICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4g
bV9ibG9ja3M7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVCbG9ja0luZGljZXM7CisgICAg
CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwg
Y2FwaXRhbEJpdE5hbWUpIFwKKyAgICBGYXN0Qml0VmVjdG9yIG1fICMjIGxvd2VyQml0TmFtZTsK
KyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9E
RUNMQVJBVElPTikKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTgorICAg
IAorICAgIC8vIEFmdGVyIHlvdSBkbyBzb21ldGhpbmcgdG8gYSBibG9jayBiYXNlZCBvbiBvbmUg
b2YgdGhlc2UgY3Vyc29ycywgeW91IGNsZWFyIHRoZSBiaXQgaW4gdGhlCisgICAgLy8gY29ycmVz
cG9uZGluZyBiaXR2ZWN0b3IgYW5kIGxlYXZlIHRoZSBjdXJzb3Igd2hlcmUgaXQgd2FzLgorICAg
IHNpemVfdCBtX2FsbG9jYXRpb25DdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBi
bG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBhbGxvY2F0aW9uLgorICAgIHNpemVfdCBtX2Vt
cHR5Q3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNh
bmRpZGF0ZSBmb3IgZW1wdHkgYWxsb2NhdGlvbiAoYWxsb2NhdGluZyBpbiBlbXB0eSBibG9ja3Mp
LgorICAgIHNpemVfdCBtX3NuYXBzaG90Q3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5l
eHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgaW5jcmVtZW50YWwgc3dlZXBpbmcuCisg
ICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9jdXJyZW50QmxvY2s7CiAgICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogbV9uZXh0QmxvY2tUb1N3ZWVwOwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxNYXJrZWRCbG9j
azo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4gbV9i
bG9ja0xpc3Q7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJh
c2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBtX3JldGlyZWRCbG9ja3M7
CisKICAgICBMb2NrIG1fbG9jazsKICAgICB1bnNpZ25lZCBtX2NlbGxTaXplOwogICAgIEFsbG9j
YXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIEhlYXAqIG1faGVhcDsKICAgICBNYXJr
ZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fbmV4dEFsbG9j
YXRvcjsKIH07CiAKIGlubGluZSBwdHJkaWZmX3QgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZy
ZWVMaXN0KCkKQEAgLTE0OSwyMCArMzAxLDEyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCogTWFya2Vk
QWxsb2NhdG9yOjphbGwKICAgICByZXR1cm4gaGVhZDsKIH0KIAotaW5saW5lIHZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKLXsKLSAgICBpZiAoIW1fbGFzdEFjdGl2ZUJs
b2NrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxv
Y2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKLSAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2
ZUJsb2NrOwotICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKLX0KLQogdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2NrKGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9ibG9ja0xpc3QuZm9yRWFjaChmdW5jdG9y
KTsKLSAgICBtX3JldGlyZWRCbG9ja3MuZm9yRWFjaChmdW5jdG9yKTsKKyAgICBtX2xpdmUuZm9y
RWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIGZ1
bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAko
cmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
c3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBmYWxzZTsKIHN0YXRpYyBzaXplX3Qg
YmFsYW5jZTsKIAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShI
ZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBj
b25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorTWFya2VkQmxvY2s6OkhhbmRs
ZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGNv
bnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgaWYgKGNvbXB1dGVC
YWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4LDE2ICs0OCwxNCBAQCBNYXJrZWRC
bG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQogICAgICAgICBzY3JpYmJsZShibG9ja1Nw
YWNlLCBibG9ja1NpemUpOwotICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGFsbG9jYXRvciwg
Y2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOworICAgIHJldHVybiBuZXcgSGFuZGxl
KGhlYXAsIGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBibG9ja1NwYWNlKTsKIH0KIAotTWFya2VkQmxv
Y2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
LCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMs
IHZvaWQqIGJsb2NrU3BhY2UpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVh
cCwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsgYXRv
bVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKGF0b21zUGVyQmxvY2sgLSBt
X2F0b21zUGVyQ2VsbCArIDEpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKLSAgICAs
IG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgotICAgICwgbV9h
bGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+aGVhcCgpLT52
bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX3dlYWtTZXQoaGVhcC52bSgpLCBDZWxsQ29u
dGFpbmVyKCkpCiB7CiAgICAgbV9ibG9jayA9IG5ldyAoTm90TnVsbCwgYmxvY2tTcGFjZSkgTWFy
a2VkQmxvY2soKmhlYXAudm0oKSwgKnRoaXMpOwogICAgIApAQCAtNjUsNyArNjMsNiBAQCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgCiAgICAgCiAgICAgaGVhcC5kaWRB
bGxvY2F0ZUJsb2NrKGJsb2NrU2l6ZSk7CiAgICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJ
VElPTih0aGlzKTsKLSAgICBBU1NFUlQoYWxsb2NhdG9yKTsKICAgICBpZiAobV9hdHRyaWJ1dGVz
LmNlbGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
YXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKIH0KQEAg
LTc4LDYgKzc1LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgICAgIGlm
ICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBCYWxh
bmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9CisgICAgcmVtb3ZlRnJvbUFsbG9jYXRvcigp
OwogICAgIG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwogICAgIGZhc3RBbGlnbmVkRnJlZShtX2Js
b2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1NpemUpOwpAQCAtMTAxLDIxICs5OSwy
MiBAQCBNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmCiAgICAgbV9iaWFz
ZWRNYXJrQ291bnQgPSBtX21hcmtDb3VudEJpYXM7IC8vIFRoaXMgbWVhbnMgd2UgaGF2ZW4ndCBt
YXJrZWQgYW55dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0
ZSBibG9ja1N0YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBE
ZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3Jp
YmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRl
ZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6
RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVw
TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlB
bGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoKQogewotICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVy
U2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBBU1NFUlQoYmxvY2tTdGF0ZSA9PSBOZXcgfHwgYmxv
Y2tTdGF0ZSA9PSBNYXJrZWQpOwotICAgIEFTU0VSVCghKGRlc3RydWN0aW9uTW9kZSA9PSBEb2Vz
Tm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYg
c3dlZXBNb2RlID09IFN3ZWVwT25seSksICJJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gc3dlZXAg
YSBibG9jayB3aXRoIG5vIGRlc3RydWN0b3JzIHVubGVzcyBpdCdzIHRvIGJ1aWxkIGEgZnJlZSBs
aXN0LiIpOworICAgIHN0YXRpY19hc3NlcnQoIShkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNEZXN0
cnVjdGlvbiAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0eSksICJBIGJsb2NrIGRvZXNuJ3QgcXVhbGlm
eSBhcyBlbXB0eSBpZiB0aGVyZSBhcmUgZGVzdHJ1Y3RvcnMgdGhhdCBzdGlsbCBuZWVkIHRvIGJl
IHJ1bi4iKTsKICAgICAKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CisKICAgICBhc3NlcnRGbGlwcGVkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0g
dGhpcy0+YmxvY2soKTsKICAgICAKLSAgICBib29sIGlzTmV3QmxvY2sgPSBibG9ja1N0YXRlID09
IE5ldzsKLSAgICBib29sIGlzRW1wdHlCbG9jayA9ICFibG9jay5oYXNBbnlNYXJrZWQoKQotICAg
ICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZAot
ICAgICAgICAmJiBkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbjsKLSAg
ICBpZiAoT3B0aW9uczo6dXNlQnVtcEFsbG9jYXRvcigpICYmIChpc05ld0Jsb2NrIHx8IGlzRW1w
dHlCbG9jaykpIHsKKyAgICBtX2FsbG9jYXRvci0+c2V0SXNTbmFwc2hvdCh0aGlzLCBmYWxzZSk7
CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQorICAgICAgICAmJiBl
bXB0eU1vZGUgPT0gSXNFbXB0eQorICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9l
c05vdEhhdmVOZXdseUFsbG9jYXRlZCkgewogICAgICAgICBBU1NFUlQoYmxvY2subV9tYXJrcy5p
c0VtcHR5KCkpOwogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRPZkxhc3RDZWxsID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsgbV9lbmRBdG9tIC0gMSkp
OwpAQCAtMTI0LDcgKzEyMywxMCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVj
aWFsaXplCiAgICAgICAgIGNoYXIqIHBheWxvYWRCZWdpbiA9IGJpdHdpc2VfY2FzdDxjaGFyKj4o
YmxvY2suYXRvbXMoKSArIGZpcnN0QXRvbSgpKTsKICAgICAgICAgaWYgKHNjcmliYmxlTW9kZSA9
PSBTY3JpYmJsZSkKICAgICAgICAgICAgIHNjcmliYmxlKHBheWxvYWRCZWdpbiwgcGF5bG9hZEVu
ZCAtIHBheWxvYWRCZWdpbik7Ci0gICAgICAgIG1fc3RhdGUgPSAoKHN3ZWVwTW9kZSA9PSBTd2Vl
cFRvRnJlZUxpc3QpID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7CisgICAgICAgIGlmIChzd2VlcE1v
ZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIHRy
dWUpOwogICAgICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6YnVtcChwYXlsb2FkRW5k
LCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsKICAgICAgICAgaWYgKGZhbHNlKQogICAgICAg
ICAgICAgZGF0YUxvZygiUXVpY2tseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKHRoaXMpLCAi
IHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRy
aWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTM3LDE0ICsxMzksMTQgQEAgRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgIEZyZWVDZWxsKiBoZWFkID0g
MDsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20o
KTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBpZiAoYmxv
Y2tTdGF0ZSA9PSBNYXJrZWQKKyAgICAgICAgaWYgKGVtcHR5TW9kZSA9PSBOb3RFbXB0eQogICAg
ICAgICAgICAgJiYgKGJsb2NrLm1fbWFya3MuZ2V0KGkpCiAgICAgICAgICAgICAgICAgfHwgKG5l
d2x5QWxsb2NhdGVkTW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5QWxsb2NhdGVk
LT5nZXQoaSkpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEhlYXBDZWxsKiBj
ZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYmxvY2suYXRvbXMoKVtpXSk7
CiAKLSAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGJs
b2NrU3RhdGUgIT0gTmV3KQorICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVz
dHJ1Y3Rpb24gJiYgZW1wdHlNb2RlID09IE5vdEVtcHR5KQogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8SlNDZWxsKj4oY2VsbCktPmNhbGxEZXN0cnVjdG9yKCp2bSgpKTsKIAogICAgICAgICBpZiAo
c3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkgewpAQCAtMTYzLDcgKzE2NSwxMyBAQCBGcmVl
TGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIG1fbmV3bHlBbGxv
Y2F0ZWQgPSBudWxscHRyOwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6Omxpc3Qo
aGVhZCwgY291bnQgKiBjZWxsU2l6ZSgpKTsKLSAgICBtX3N0YXRlID0gKHN3ZWVwTW9kZSA9PSBT
d2VlcFRvRnJlZUxpc3QgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICBpZiAoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQ
YXlsb2FkIC8gY2VsbFNpemUoKTsKKyAgICAgICAgaWYgKGNvdW50ID09IGNlbGxzUGVyQmxvY2sp
CisgICAgICAgICAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVlKTsKKyAgICB9
CiAgICAgaWYgKGZhbHNlKQogICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sgIiwg
UmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5k
IGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC0xODAsNiArMTg4LDEzIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnN3ZWVwKFN3ZWUKICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwT25seSAmJiBtX2F0
dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbikKICAgICAgICAg
cmV0dXJuIEZyZWVMaXN0KCk7CiAKKyAgICBpZiAoVU5MSUtFTFkobV9pc0ZyZWVMaXN0ZWQpKSB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwor
ICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKCFtX2Fs
bG9jYXRvci0+aXNBbGxvY2F0ZWQodGhpcykpOworICAgIAogICAgIGlmIChtX2F0dHJpYnV0ZXMu
ZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIHN3ZWVwSGVs
cGVyU2VsZWN0U2NyaWJibGVNb2RlPE5lZWRzRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CiAgICAg
cmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlPERvZXNOb3ROZWVkRGVzdHJ1Y3Rp
b24+KHN3ZWVwTW9kZSk7CkBAIC0xODksNDcgKzIwNCw0NCBAQCB0ZW1wbGF0ZTxEZXN0cnVjdGlv
bk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlCiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2Vl
cEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAgIGlm
IChzY3JpYmJsZUZyZWVDZWxscygpKQotICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RT
dGF0ZUFuZFN3ZWVwTW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOwot
ICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9u
TW9kZSwgRG9udFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgICAgICByZXR1cm4gc3dlZXBIZWxw
ZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsK
KyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBE
b250U2NyaWJibGU+KHN3ZWVwTW9kZSk7CiB9CiAKIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBk
ZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJs
ZU1vZGU+Ci1GcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN0
YXRlQW5kU3dlZXBNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCitGcmVlTGlzdCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgc3dlZXBNb2Rl
KQogewotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgTmV3OgotICAgICAgICBBU1NF
UlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVjaWFs
aXplZFN3ZWVwPE5ldywgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxl
TW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKTsKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6
Ci0gICAgICAgIC8vIEhhcHBlbnMgd2hlbiBhIGJsb2NrIHRyYW5zaXRpb25zIHRvIGZ1bGx5IGFs
bG9jYXRlZC4KLSAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwot
ICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNlIEFsbG9jYXRlZDoKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7
Ci0gICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAg
ICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rp
b25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAgICAg
ICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUs
IHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAg
ICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1
Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCkKLSAg
ICAgICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3Ry
dWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIEZyZWVMaXN0KCk7CisgICAgaWYgKG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMpKQor
ICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxJc0VtcHR5
LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4g
c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxOb3RFbXB0eSwgZGVzdHJ1Y3Rpb25N
b2RlLCBzY3JpYmJsZU1vZGU+KHN3ZWVwTW9kZSk7Cit9CisKK3RlbXBsYXRlPEVtcHR5TW9kZSBl
bXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSBzd2Vl
cE1vZGUpCit7CisgICAgaWYgKG1faGFzTmV3bHlBbGxvY2F0ZWQpCisgICAgICAgIHJldHVybiBz
d2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2Ny
aWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dl
ZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmli
YmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKK30KKwordGVt
cGxhdGU8RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9k
ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTmV3bHlB
bGxvYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sK
KyAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgcmV0dXJuIHNw
ZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHNwZWNp
YWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCkKIHsKLSAgICBmbGlwSWZOZWNlc3Nh
cnkoKTsKLSAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwot
ICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0gICAgbV9z
dGF0ZSA9IE1hcmtlZDsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lzRnJlZUxpc3RlZCk7CisgICAg
bV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
ZXRJc0ZyZWVMaXN0ZWQoKQoreworICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIGZh
bHNlKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOwogfQogCiBjbGFzcyBTZXROZXdseUFs
bG9jYXRlZEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKQEAgLTI1
MywyNSArMjY1LDE2IEBAIHByaXZhdGU6CiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BB
bGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKIHsKICAgICBmbGlwSWZOZWNlc3Nh
cnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOworICAgIAor
ICAgIEFTU0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAgIGlmICht
X3N0YXRlID09IE1hcmtlZCkgewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4gdGhlIE1h
cmtlZCBzdGF0ZSB0aGVuIHdlIGtub3cgdGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAgLy8gY29u
ZGl0aW9ucyBob2xkczoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90IHVzZWQg
Zm9yIGFsbG9jYXRpb24gZHVyaW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xlLgotICAg
ICAgICAvLyAgIEl0IG1heSBoYXZlIGRlYWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25vdyB0aGVt
IHRvIGJlIGRlYWQgYnkgdGhlCi0gICAgICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1hcmsgYml0
cyBhcmUgdW5zZXQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQgYWxyZWFk
eSBkb25lIHN0b3BBbGxvY2F0aW5nKCksIGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAgICAgICAg
Ly8gICBoZWFwIGl0ZXJhdGlvbiwgYW5kIHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAgIC8vIEhl
bmNlIGlmIHRoZSBibG9jayBpcyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJrZWQuCisg
ICAgaWYgKCFpc0ZyZWVMaXN0ZWQoKSkgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2Ug
ZWl0aGVyIGRpZG4ndCB1c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24gc2luY2Ug
bGFzdCBHQywKKyAgICAgICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxv
Y2F0aW5nKCkgYmVmb3JlLgogICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxG
YWlsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVChtX3N0YXRl
ID09IEZyZWVMaXN0ZWQpOwotICAgIAogICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVyZW50IHN0
YXRlIGZvciBIZWFwIGludHJvc3BlY3Rpb24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxsb2NhdGVk
IGZyb20gb3VyIGZyZWUgbGlzdCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQg
YW5vdGhlcgogICAgIC8vIHdheSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApAQCAtMjkw
LDcgKzI5Myw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAg
ICAgICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAgICAgIH0pOwogICAgIAot
ICAgIG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKIH0KIAog
dm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCkBAIC0zMDUs
MTMgKzMwOCwxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpCiBG
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKICAgICBm
bGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRo
aXMpOwogCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKKyAgICBBU1NFUlQoIWFsbG9j
YXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7
CiAKICAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgLy8gV2UgZGlkbid0IGhh
dmUgdG8gY3JlYXRlIGEgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwLiBUaGF0IG1lYW5zIHdlIHdl
cmUgYWxyZWFkeSBNYXJrZWQKLSAgICAgICAgLy8gd2hlbiB3ZSBsYXN0IHN0b3BwZWQgYWxsb2Nh
dGlvbiwgc28gcmV0dXJuIGFuIGVtcHR5IGZyZWUgbGlzdCBhbmQgc3RheSBpbiB0aGUgTWFya2Vk
IHN0YXRlLgorICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0
aGUgYmxvY2sgd2hlbiB3ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAgICAgIHJldHVybiBGcmVl
TGlzdCgpOwogICAgIH0KIApAQCAtMzY2LDE3ICszNjgsMTcgQEAgdm9pZCBNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVjdFNw
YWNlKCkuaXNNYXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAg
aWYgKG5lZWRzRmxpcCgpKQorICAgIGlmIChuZWVkc0ZsaXAoKSkgewogICAgICAgICBjbGVhck1h
cmtzKCk7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFy
ayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigp
LT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7Cisg
ICAgfQogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKICAgICBtX21hcmtz
LmNsZWFyQWxsKCk7CiAgICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICAvLyBUaGlzIHdpbGwg
YmVjb21lIHRydWUgYXQgdGhlIGVuZCBvZiB0aGUgbWFyayBwaGFzZS4gV2Ugc2V0IGl0IG5vdyB0
bwotICAgIC8vIGF2b2lkIGFuIGV4dHJhIHBhc3MgdG8gZG8gc28gbGF0ZXIuCi0gICAgaGFuZGxl
KCkubV9zdGF0ZSA9IE1hcmtlZDsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIG1f
dmVyc2lvbiA9IHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CiB9CkBAIC0zOTgs
MTEgKzQwMCw2IEBAIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkKICAgICBy
ZXR1cm4gbV9ibG9jay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6d2lsbFJlbW92ZUJsb2NrKCkKLXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLX0KLQogdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QoKQogewogICAgIGZsaXBJ
Zk5lY2Vzc2FyeSgpOwpAQCAtNDIxLDggKzQxOCw3IEBAIHNpemVfdCBNYXJrZWRCbG9jazo6bWFy
a0NvdW50KCkKIAogYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0VtcHR5KCkKIHsKLSAgICBm
bGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQgJiYgIWJsb2Nr
KCkuaGFzQW55TWFya2VkKCkgJiYgbV93ZWFrU2V0LmlzRW1wdHkoKSAmJiAoIW1fbmV3bHlBbGxv
Y2F0ZWQgfHwgbV9uZXdseUFsbG9jYXRlZC0+aXNFbXB0eSgpKTsKKyAgICByZXR1cm4gbV9hbGxv
Y2F0b3ItPmlzRW1wdHkodGhpcyk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFySGFzQW55
TWFya2VkKCkKQEAgLTQzMiwzMyArNDI4LDM4IEBAIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFySGFz
QW55TWFya2VkKCkKIAogdm9pZCBNYXJrZWRCbG9jazo6bm90ZU1hcmtlZFNsb3coKQogewotICAg
IGhhbmRsZSgpLm1fYWxsb2NhdG9yLT5yZXRpcmUoJmhhbmRsZSgpKTsKKyAgICBoYW5kbGUoKS5h
bGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hlY2tJc01hcmtpbmdSZXRpcmVkKCZoYW5kbGUoKSwg
dHJ1ZSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKK3ZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAgaWYgKCFt
X2FsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fYWxsb2NhdG9yLT5yZW1v
dmVCbG9jayh0aGlzKTsKK30KIAotdXNpbmcgbmFtZXNwYWNlIEpTQzsKK3ZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKKyAgICAKKyAg
ICBtX2luZGV4ID0gaW5kZXg7CisgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Cit9CiAKLXZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBNYXJrZWRCbG9jazo6QmxvY2tTdGF0
ZSBibG9ja1N0YXRlKQordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVGcm9tQWxs
b2NhdG9yKCkKIHsKLSAgICBzd2l0Y2ggKGJsb2NrU3RhdGUpIHsKLSAgICBjYXNlIE1hcmtlZEJs
b2NrOjpOZXc6Ci0gICAgICAgIG91dC5wcmludCgiTmV3Iik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIE1hcmtlZEJsb2NrOjpGcmVlTGlzdGVkOgotICAgICAgICBvdXQucHJpbnQoIkZyZWVM
aXN0ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6OkFsbG9jYXRl
ZDoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvY2F0ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAgb3V0LnByaW50KCJNYXJrZWQiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIGZsaXBJZk5lY2Vzc2FyeSgpOworICAgIAorICAgIEFTU0VSVChtX2luZGV4ICE9IHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVChtX2FsbG9jYXRv
cik7CisgICAgCisgICAgbV9pbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCk7CisgICAgbV9hbGxvY2F0b3IgPSBudWxscHRyOwogfQogCit9IC8vIG5hbWVzcGFjZSBKU0MK
KwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjAgKzQ0LDYgQEAgY2xh
c3MgTWFya2VkQWxsb2NhdG9yOwogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5cGVkZWYgdWlu
dDMyX3QgSGVhcFZlcnNpb247CiAKLS8vIFNldCB0byBsb2cgc3RhdGUgdHJhbnNpdGlvbnMgb2Yg
YmxvY2tzLgotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUyAwCi0KLSNp
ZiBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwotI2RlZmluZSBIRUFQX0xPR19CTE9D
S19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgZG8geyAgICAgICAgICAgIFwKLSAgICAgICAgZGF0
YUxvZ0YoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgICAgICAiJXM6JWQgJXM6IGJsb2NrICVzID0gJXAsICVkXG4iLCAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18sICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICNoYW5kbGUsICYoaGFuZGxlKS0+YmxvY2so
KSwgKGhhbmRsZSktPm1fc3RhdGUpOyAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0jZWxzZQot
I2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgKCh2b2lkKTAp
Ci0jZW5kaWYKLQogLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFsaWduZWQgY29udGFpbmVy
IGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgogLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVkIHdp
dGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogLy8gbWFya2VkIGJs
b2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXplLiBPYmplY3RzIHNtYWxsZXIgdGhhbiB0
aGUKQEAgLTc2LDggKzYyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
SGFuZGxlOwogcHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0ZSA6IHVpbnQ4X3QgeyBOZXcsIEZy
ZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAgIAogICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja01hc2sg
PSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4K
QEAgLTEzMCw2ICsxMTQsMTQgQEAgcHVibGljOgogICAgICAgICBWTSogdm0oKSBjb25zdDsKICAg
ICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCisgICAgICAgIC8vIFN3ZWVw
aW5nIGVuc3VyZXMgdGhhdCBkZXN0cnVjdG9ycyBnZXQgY2FsbGVkIGFuZCByZW1vdmVzIHRoZSBi
bG9jayBmcm9tIHRoZSBzbmFwc2hvdC4KKyAgICAgICAgLy8gU3dlZXBpbmcgdG8gZnJlZSBsaXN0
IGFsc28gcmVtb3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgZW1wdHkgc2V0LCBpZiBpdCB3YXMgaW4g
dGhhdCBzZXQuCisgICAgICAgIC8vIFN3ZWVwaW5nIG9ubHkgbWF5IGFkZCB0aGlzIGJsb2NrIHRv
IHRoZSBlbXB0eSBzZXQsIGlmIHRoZSBibG9jayBpcyBmb3VuZCB0byBiZSBlbXB0eS4KKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gTm90ZSB0aGF0IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRo
ZSBlbXB0eSBiaXQgcmVmbGVjdHMgcmVhbGl0eS4gSWYgaXQncyBub3Qgc2V0CisgICAgICAgIC8v
IGFuZCB0aGUgYmxvY2sgaXMgZnJlc2hseSBjcmVhdGVkLCB0aGVuIHdlJ2xsIG1ha2UgdGhlIG1p
c3Rha2Ugb2YgcnVubmluZyBkZXN0cnVjdG9ycyBpbgorICAgICAgICAvLyB0aGUgYmxvY2suIElm
IGl0J3Mgbm90IHNldCBhbmQgdGhlIGJsb2NrIGhhcyBub3RoaW5nIG1hcmtlZCwgdGhlbiB3ZSds
bCBtYWtlIHRoZQorICAgICAgICAvLyBtaXN0YWtlIG9mIG1ha2luZyBhIHBvcCBmcmVlbGlzdCBy
YXRoZXIgdGhhbiBhIGJ1bXAgZnJlZWxpc3QuCiAgICAgICAgIGVudW0gU3dlZXBNb2RlIHsgU3dl
ZXBPbmx5LCBTd2VlcFRvRnJlZUxpc3QgfTsKICAgICAgICAgRnJlZUxpc3Qgc3dlZXAoU3dlZXBN
b2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgCkBAIC0xNTMsOCArMTQ1LDYgQEAgcHVibGljOgog
ICAgICAgICAvLyBhbmQgd2FzIHN1Y2Nlc3NmdWxseSBjbGVhcmVkIGFuZCBmYWxzZSBvdGhlcndp
c2UuCiAgICAgICAgIGJvb2wgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwogICAgICAgICAgICAgCi0g
ICAgICAgIHZvaWQgZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgICAgICAgICAKICAgICAg
ICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9u
KCkgY29uc3Q7CkBAIC0xNjQsOCArMTU0LDggQEAgcHVibGljOgogICAgICAgICBzaXplX3QgbWFy
a0NvdW50KCk7CiAgICAgICAgIHNpemVfdCBzaXplKCk7CiAgICAgICAgICAgICAKLSAgICAgICAg
Ym9vbCBpc0xpdmUoY29uc3QgSGVhcENlbGwqKTsKLSAgICAgICAgYm9vbCBpc0xpdmVDZWxsKGNv
bnN0IHZvaWQqKTsKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7
CisgICAgICAgIGlubGluZSBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCopOwogICAgICAgICBi
b29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNOZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CkBAIC0xNzQs
MTUgKzE2NCw5IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGJvb2wgaGFzQW55TmV3bHlB
bGxvY2F0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fbmV3bHlBbGxvY2F0ZWQ7IH0KICAgICAgICAg
ICAgIAotICAgICAgICBib29sIGlzQWxsb2NhdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNN
YXJrZWQoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdDsKLSAgICAg
ICAgYm9vbCBuZWVkc1N3ZWVwaW5nKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgd2lsbFJlbW92ZUJs
b2NrKCk7Ci0KICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0
YXR1cyBmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0
b3ImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1
cyBmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29u
c3QgRnVuY3RvciYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5l
IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAg
ICAgICAgCiAgICAgICAgIGJvb2wgbmVlZHNGbGlwKCk7CiAgICAgICAgICAgICAKQEAgLTE5Miwx
MSArMTc2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICB2b2lkIGFzc2VydEZs
aXBwZWQoKTsKICAgICAgICAgICAgIAotICAgICAgICBib29sIGlzT25CbG9ja3NUb1N3ZWVwKCkg
Y29uc3QgeyByZXR1cm4gbV9pc09uQmxvY2tzVG9Td2VlcDsgfQotICAgICAgICB2b2lkIHNldElz
T25CbG9ja3NUb1N3ZWVwKGJvb2wgdmFsdWUpIHsgbV9pc09uQmxvY2tzVG9Td2VlcCA9IHZhbHVl
OyB9CisgICAgICAgIGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyZWVM
aXN0ZWQ7IH0KKyAgICAgICAgCisgICAgICAgIHNpemVfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5kZXg7IH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVtb3ZlRnJvbUFsbG9jYXRvcigp
OworICAgICAgICAKKyAgICAgICAgdm9pZCBkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0
b3IqLCBzaXplX3QgaW5kZXgpOworICAgICAgICB2b2lkIGRpZFJlbW92ZUZyb21BbGxvY2F0b3Io
KTsKICAgICAgICAgCi0gICAgICAgIEJsb2NrU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlOyB9Ci0gICAgICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBIYW5kbGUoSGVh
cCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0
cmlidXRlcyYsIHZvaWQqKTsKICAgICAgICAgICAgIApAQCAtMjA2LDE2ICsxOTQsMjYgQEAgcHVi
bGljOgogICAgICAgICBlbnVtIFNjcmliYmxlTW9kZSB7IERvbnRTY3JpYmJsZSwgU2NyaWJibGUg
fTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUsIFNjcmli
YmxlTW9kZT4KLSAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVw
TW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBl
clNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAgICAgCisg
ICAgICAgIGVudW0gRW1wdHlNb2RlIHsgSXNFbXB0eSwgTm90RW1wdHkgfTsKKyAgICAgICAgCisg
ICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGU+
CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dl
ZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCiAgICAgICAgIGVudW0gTmV3bHlBbGxvY2F0
ZWRNb2RlIHsgSGFzTmV3bHlBbGxvY2F0ZWQsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQgfTsK
LSAgICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRlLCBTd2VlcE1vZGUsIERl
c3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAg
IAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVN
b2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2Vs
ZWN0U3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAorICAgICAgICB0
ZW1wbGF0ZTxFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1v
ZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2Vl
cCgpOwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAg
ICAgIHZvaWQgZm9yRWFjaEZyZWVDZWxsKGNvbnN0IEZyZWVMaXN0JiwgY29uc3QgRnVuYyYpOwot
ICAgICAgICAgICAgCisgICAgICAgIAorICAgICAgICB2b2lkIHNldElzRnJlZUxpc3RlZCgpOwor
ICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9wcmV2OwogICAgICAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHQ7CiAgICAgICAgICAgICAKQEAgLTIyNSwxNiArMjIz
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6Qml0bWFwPGF0b21z
UGVyQmxvY2s+PiBtX25ld2x5QWxsb2NhdGVkOwogICAgICAgICAgICAgCiAgICAgICAgIEFsbG9j
YXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwotICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7
Ci0gICAgICAgIGJvb2wgbV9pc09uQmxvY2tzVG9Td2VlcCB7IGZhbHNlIH07CisgICAgICAgIGJv
b2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxzZSB9OwogICAgICAgICAgICAgCi0gICAgICAgIE1hcmtl
ZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxv
Y2F0b3IgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsKICAg
ICAgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jazsKICAgICB9OwogICAgICAg
ICAKLSAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBNYXJr
ZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMm
KTsKKyAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBzaXpl
X3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKICAgICAgICAgCiAgICAg
SGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBAIC0yNzUsNyArMjczLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAKICAgICBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247IH0KLSAgICAgICAgCisg
ICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sg
PSBhdG9tU2l6ZSAtIDE7CiAKQEAgLTQ5MiwxNyArNDkwLDYgQEAgaW5saW5lIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZmxpcElmTgogICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5RHVyaW5n
TWFya2luZyhoZWFwVmVyc2lvbik7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmZsaXBGb3JFZGVuQ29sbGVjdGlvbigpCi17Ci0gICAgYXNzZXJ0RmxpcHBlZCgpOwotICAg
ICAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAot
ICAgIEFTU0VSVChtX3N0YXRlICE9IE5ldyAmJiBtX3N0YXRlICE9IEZyZWVMaXN0ZWQpOwotICAg
IAotICAgIG1fc3RhdGUgPSBNYXJrZWQ7Ci19Ci0KICNpZiBBU1NFUlRfRElTQUJMRUQKIGlubGlu
ZSB2b2lkIE1hcmtlZEJsb2NrOjphc3NlcnRGbGlwcGVkKCkKIHsKQEAgLTU1MiwxMyArNTM5LDEx
IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmUKIAogaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhl
YXBDZWxsKiBjZWxsKQogewotICAgIEFTU0VSVChtX3N0YXRlID09IE1hcmtlZCk7CiAgICAgcmV0
dXJuIG1fYmxvY2stPmlzTWFya2VkKGNlbGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3
bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIEFTU0VSVCht
X2hhbmRsZS5tX3N0YXRlID09IE1hcmtlZCk7CiAgICAgcmV0dXJuIGlzTWFya2VkKGNlbGwpIHx8
IChtX2hhbmRsZS5tX25ld2x5QWxsb2NhdGVkICYmIG1faGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQo
Y2VsbCkpOwogfQogCkBAIC01NjksMjYgKzU1NCw2IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2Nr
Ojppc01hcmtlZE9yTmV3bHkKICAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNl
bGwpOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3Qg
SGVhcENlbGwqIGNlbGwpCi17Ci0gICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgIHN3aXRjaCAobV9z
dGF0ZSkgewotICAgIGNhc2UgQWxsb2NhdGVkOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IGNhc2UgTWFya2VkOgotICAgICAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNl
bGwpOwotCi0gICAgY2FzZSBOZXc6Ci0gICAgY2FzZSBGcmVlTGlzdGVkOgotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKIHsKICAg
ICBBU1NFUlQoTWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQocCkpOwpAQCAtNjAzLDEzICs1Njgs
NiBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwo
Y29uc3Qgdm9pZCogcCkKLXsKLSAgICBpZiAoIW1fYmxvY2stPmlzQXRvbShwKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENl
bGwqPihwKSk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEl0ZXJh
dGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogewpAQCAtNjIyLDYyICs1ODAsNiBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IE1hcmtlZEJsb2NrOjpIYW5kCiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgotaW5saW5lIEl0ZXJhdGlvblN0YXR1
cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKLXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIZWFwQ2VsbDo6S2luZCBraW5k
ID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20o
KTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBIZWFwQ2Vs
bCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21z
KClbaV0pOwotICAgICAgICBpZiAoIWlzTGl2ZShjZWxsKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6
RG9uZSkKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgfQot
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnVuY3Rvcj4KLWlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6Zm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElm
TmVjZXNzYXJ5KCk7Ci0gICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxs
S2luZDsKLSAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkg
Kz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJl
dF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYg
KGlzTGl2ZShjZWxsKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmdW5j
dG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpu
ZWVkc1N3ZWVwaW5nKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5k
bGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFy
a2VkOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0FsbG9jYXRlZCgp
IGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZs
aXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IEFsbG9jYXRlZDsKLX0KLQot
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQoKSBjb25zdAotewotICAg
IGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3Nhcnko
KTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmlzRnJlZUxpc3RlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxN
YXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVy
biBtX3N0YXRlID09IEZyZWVMaXN0ZWQ7Ci19Ci0KIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpo
YXNBbnlNYXJrZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2JpYXNlZE1hcmtDb3VudCAhPSBt
X21hcmtDb3VudEJpYXM7CkBAIC03MTEsOCArNjEzLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8SlNDOjpNYXJrZQogICAgIHR5cGVkZWYgTWFya2VkQmxvY2tIYXNoIEhhc2g7CiB9
OwogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9j
azo6QmxvY2tTdGF0ZSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gTWFya2Vk
QmxvY2tfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2tJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmUoY29uc3QgSGVhcENlbGwqIGNlbGwpCit7CisgICAgYXNzZXJ0RmxpcHBlZCgpOworICAg
IEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOworCisgICAgaWYgKGFsbG9jYXRvcigpLT5pc0FsbG9j
YXRlZCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIGlzTWFy
a2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQoreworICAgIGlmICghbV9ibG9jay0+
aXNBdG9tKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzTGl2ZShzdGF0
aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEZ1
bmN0b3I+CitpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVh
Y2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIGZsaXBJZk5lY2Vzc2Fy
eSgpOworICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7Cisg
ICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRv
bXNQZXJDZWxsKSB7CisgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9w
dHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7CisgICAgICAgIGlmICghaXNMaXZl
KGNlbGwpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGZ1bmN0b3IoY2Vs
bCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6RG9uZTsKKyAgICB9CisgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgoraW5saW5lIEl0ZXJh
dGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKK3sKKyAgICBmbGlwSWZOZWNlc3NhcnkoKTsKKyAgICBIZWFwQ2VsbDo6
S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOworICAgIGZvciAoc2l6ZV90IGkgPSBm
aXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgeworICAgICAg
ICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxv
Y2stPmF0b21zKClbaV0pOworICAgICAgICBpZiAoaXNMaXZlKGNlbGwpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsK
KyAgICB9CisgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsMTkgQEAgTWFy
a2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKKyAgICAK
KyAgICBNYXJrZWRBbGxvY2F0b3IqIHByZXZpb3VzID0gbnVsbHB0cjsKKyAgICBmb3JFYWNoQWxs
b2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVy
YXRpb25TdGF0dXMgeworICAgICAgICAgICAgaWYgKHByZXZpb3VzKSB7CisgICAgICAgICAgICAg
ICAgLy8gV2UgY2FuIHNldCB0aGlzIGluIGFueSBvcmRlci4gVGhlIHBvaW50IGlzIGp1c3QgdGhh
dCB3ZSB3YW50IHRvIGJlIGFibGUgdG8KKyAgICAgICAgICAgICAgICAvLyBjdXJzb3Igb3ZlciBh
bGxvY2F0b3JzLgorICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zZXROZXh0QWxsb2NhdG9yKHBy
ZXZpb3VzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZXZpb3VzID0gJmFsbG9jYXRv
cjsKKyAgICAgICAgfSk7CisgICAgbV9maXJzdEFsbG9jYXRvciA9IHByZXZpb3VzOworICAgIG1f
bmV4dEFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IHByZXZpb3VzOwogfQogCiBNYXJrZWRT
cGFjZTo6fk1hcmtlZFNwYWNlKCkKQEAgLTI1Nyw5ICsyNzAsMTAgQEAgdm9pZCogTWFya2VkU3Bh
Y2U6OnRyeUFsbG9jYXRlTGFyZ2UoU3Vicwogdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXAoKQogewog
ICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAgICBmb3JFYWNo
QmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAg
ICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsm
XSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAg
ICAgICAgICBhbGxvY2F0b3Iuc3dlZXAoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKIH0KIApAQCAtMjk0LDE2ICszMDgsMTYgQEAg
dm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQg
TWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCit2b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJl
Rm9yQWxsb2NhdGlvbigpCiB7CiAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgWyZdIChN
YXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKLSAgICAgICAg
ICAgIGFsbG9jYXRvci5yZXNldCgpOworICAgICAgICAgICAgYWxsb2NhdG9yLnByZXBhcmVGb3JB
bGxvY2F0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51
ZTsKICAgICAgICAgfSk7CiAKLSAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLmNsZWFyKCk7CiAg
ICAgbV9hY3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0FjdGl2ZVdlYWtTZXRzKTsKKyAgICAK
ICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24p
CiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IG1fbGFy
Z2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7CiAgICAgZWxzZQpAQCAtNDA4LDExICs0MjIsMTEg
QEAgdm9pZCBNYXJrZWRTcGFjZTo6ZnJlZU9yU2hyaW5rQmxvY2soTWFyawogCiB2b2lkIE1hcmtl
ZFNwYWNlOjpzaHJpbmsoKQogewotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZdIChNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgZnJlZU9yU2hyaW5rQmxvY2so
YmxvY2spOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2Nh
dG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxvY2F0
b3Iuc2hyaW5rKCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51
ZTsKICAgICAgICAgfSk7Ci0gICAgLy8gRm9yIExhcmdlQWxsb2NhdGlvbnMsIHdlIGRvIHRoZSBt
b3JhbCBlcXVpdmFsZW50IGluIHN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygpLgogfQogCiB2b2lkIE1h
cmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKQEAgLTQyNywzOSArNDQxLDI2IEBAIHZv
aWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQogICAgIGZvciAodW5zaWduZWQg
aSA9IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyBpIDwgbV9sYXJn
ZUFsbG9jYXRpb25zLnNpemUoKTsgKytpKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNbaV0t
PmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBmb3JF
YWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAg
ICAgICAgICAgIEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAg
IH0pOwotCi0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxs
b2NhdGlvbnMpCi0gICAgICAgIEFTU0VSVCghYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9jYXRlZCgp
KTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi19Ci0KLSNpZm5kZWYgTkRFQlVHIAotc3Ry
dWN0IFZlcmlmeU1hcmtlZCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7IAotICAgIHZvaWQg
b3BlcmF0b3IoKShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IHN3aXRjaCAoYmxvY2stPm1fc3RhdGUpIHsKLSAgICAgICAgY2FzZSBNYXJrZWRCbG9jazo6TWFy
a2VkOgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQorICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAoTWFy
a2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWJsb2Nr
LT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAg
ICAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9u
cykKKyAgICAgICAgICAgIEFTU0VSVCghYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9jYXRlZCgpKTsK
ICAgICB9Ci19OyAKLSNlbmRpZiAKK30KIAotdm9pZCBNYXJrZWRTcGFjZTo6ZmxpcCgpCit2b2lk
IE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlv
bkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgewotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHNbaV0tPmZsaXBGb3JFZGVuQ29sbGVjdGlvbigpOwot
ICAgIH0gZWxzZSB7CisgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1
bGxDb2xsZWN0aW9uKSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgICAgICBb
Jl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAg
ICAgICAgICAgICAgIGFsbG9jYXRvci5mbGlwRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0p
OworCiAgICAgICAgIEhlYXBWZXJzaW9uIG5leHRWZXJzaW9uID0gbV92ZXJzaW9uICsgMTsKICAg
ICAgICAgaWYgKFVOTElLRUxZKG5leHRWZXJzaW9uID09IGluaXRpYWxWZXJzaW9uKSkgewogICAg
ICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5
IGZsaXBwaW5nIGFsbCBibG9ja3MuIFRoaXMgaGFwcGVucwpAQCAtNDc0LDEwICs0NzUsMjcgQEAg
dm9pZCBNYXJrZWRTcGFjZTo6ZmxpcCgpCiAgICAgICAgICAgICBhbGxvY2F0aW9uLT5mbGlwKCk7
CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwotICAgIFZlcmlmeU1hcmtlZCB2ZXJpZnlGdW5jdG9y
OwotICAgIGZvckVhY2hCbG9jayh2ZXJpZnlGdW5jdG9yKTsKLSNlbmRpZgorICAgIGlmICghQVNT
RVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAo
TWFya2VkQmxvY2s6OmhhbmRsZSogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2st
Pm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICAgICAgfSk7CisgICAg
fQorICAgIAorICAgIG1faXNNYXJraW5nID0gdHJ1ZTsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6
ZW5kTWFya2luZygpCit7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJr
ZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAg
IGFsbG9jYXRvci5lbmRNYXJraW5nKCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7CisgICAgCisgICAgbV9pc01hcmtpbmcgPSBmYWxz
ZTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6d2lsbFN0YXJ0SXRlcmF0aW5nKCkKQEAgLTU0NSw3
ICs1NjMsNiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBZGRCbG9jayhNYXJrZWRCbG9jCiB2b2lk
IE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2spCiB7CiAgICAgYmxvY2stPmFzc2VydEZsaXBwZWQoKTsKLSAgICBtX2Jsb2Nrc1dpdGhOZXdP
YmplY3RzLmFwcGVuZChibG9jayk7CiAgICAgCiAgICAgaWYgKGJsb2NrLT53ZWFrU2V0KCkuaXNP
bkxpc3QoKSkgewogICAgICAgICBibG9jay0+d2Vha1NldCgpLnJlbW92ZSgpOwpAQCAtNTUzLDQg
KzU3MCw0MSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFyCiAgICAg
fQogfQogCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2so
KQoreworICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbjsgbV9hbGxvY2F0
b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+bmV4
dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9
IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5maW5kRW1wdHlCbG9jaygpKQorICAgICAg
ICAgICAgcmV0dXJuIGJsb2NrOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9p
ZCBNYXJrZWRTcGFjZTo6c25hcHNob3QoKQoreworICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbklu
UHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9y
KAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RGb3JFZGVuQ29s
bGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRp
bnVlOworICAgICAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFjaEFsbG9j
YXRvcigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0
ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90Rm9yRnVs
bENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBNYXJrZWRTcGFjZTo6
YXNzZXJ0U25hcHNob3RFbXB0eSgpCit7CisgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAg
ICAgcmV0dXJuOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxs
b2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxv
Y2F0b3IuYXNzZXJ0U25hcHNob3RFbXB0eSgpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24g
MjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICBTdWJzcGFjZSYgc3Vi
c3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBtX25vcm1hbFNwYWNl
OyB9CiAgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxpYXJ5RGF0YSgpIHsgcmV0dXJuIG1f
YXV4aWxpYXJ5U3BhY2U7IH0KICAgICAKLSAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAg
IHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIAogICAgIHZvaWQgdmlzaXRXZWFrU2V0cyhI
ZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lkIHJlYXBXZWFrU2V0cygpOwpAQCAtMTQ0LDEwICsx
NDQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKTsKICAgICB2b2lkIGRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFu
ZGxlKik7CiAKLSAgICB2b2lkIGZsaXAoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZygpOworICAg
IHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNob3QoKTsKICAgICB2b2lkIGNsZWFy
TmV3bHlBbGxvY2F0ZWQoKTsKICAgICB2b2lkIHN3ZWVwKCk7CiAgICAgdm9pZCBzd2VlcExhcmdl
QWxsb2NhdGlvbnMoKTsKKyAgICB2b2lkIGFzc2VydFNuYXBzaG90RW1wdHkoKTsKICAgICB2b2lk
IHpvbWJpZnlTd2VlcCgpOwogICAgIHNpemVfdCBvYmplY3RDb3VudCgpOwogICAgIHNpemVfdCBz
aXplKCk7CkBAIC0xNTcsOCArMTYwLDYgQEAgcHVibGljOgogICAgIAogICAgIEhlYXBWZXJzaW9u
IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KIAotICAgIGNvbnN0IFZlY3Rv
cjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIGJsb2Nrc1dpdGhOZXdPYmplY3RzKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsgfQotICAgIAogICAgIGNvbnN0IFZlY3RvcjxM
YXJnZUFsbG9jYXRpb24qPiYgbGFyZ2VBbGxvY2F0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGFy
Z2VBbGxvY2F0aW9uczsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsgfQog
ICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyB9
CkBAIC0xNjksMTMgKzE3MCwxNCBAQCBwdWJsaWM6CiAgICAgTGFyZ2VBbGxvY2F0aW9uKiogbGFy
Z2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9sYXJn
ZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQ7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFs
bG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFs
bG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplOyB9CiAgICAgCisgICAgTWFya2VkQWxsb2Nh
dG9yKiBmaXJzdEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RBbGxvY2F0b3I7IH0K
KyAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyB9CisgICAgCisgICAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5QmxvY2soKTsKKyAgICAKICAgICAvLyBXaGVuIHRo
aXMgaXMgdHJ1ZSBpdCBtZWFucyB0aGF0IHdlIGhhdmUgZmxpcHBlZCBidXQgdGhlIG1hcmsgYml0
cyBoYXZlbid0IGNvbnZlcmdlZCB5ZXQuCiAgICAgYm9vbCBpc01hcmtpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2lzTWFya2luZzsgfQogICAgIAotICAgIC8vIEZJWE1FOiBBZnRlciBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxLCBNYXJrZWRTcGFjZSB3aWxsIGNv
bnRyb2wgdGhpcwotICAgIC8vIGZsYWcgZGlyZWN0bHkuCi0gICAgdm9pZCBzZXRJc01hcmtpbmco
Ym9vbCB2YWx1ZSkgeyBtX2lzTWFya2luZyA9IHZhbHVlOyB9Ci0KIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgSklUOwpA
QCAtMTkwLDggKzE5Miw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplU3Vi
c3BhY2UoU3Vic3BhY2UmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
Zm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3Qg
RnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZv
ckVhY2hTdWJzcGFjZShjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBhZGRBY3RpdmVX
ZWFrU2V0KFdlYWtTZXQqKTsKIApAQCAtMjA1LDcgKzIwNyw2IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9OwogICAgIE1h
cmtlZEJsb2NrU2V0IG1fYmxvY2tzOwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4g
bV9ibG9ja3NXaXRoTmV3T2JqZWN0czsKICAgICBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4gbV9s
YXJnZUFsbG9jYXRpb25zOwogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlP
ZmZzZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhp
c0NvbGxlY3Rpb24geyAwIH07CkBAIC0yMTUsNDAgKzIxNiwxMSBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSB7IDAgfTsKICAg
ICBTZW50aW5lbExpbmtlZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1Nl
dD4+IG1fYWN0aXZlV2Vha1NldHM7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJh
c2ljUmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX25ld0FjdGl2ZVdlYWtTZXRzOworICAgIAor
ICAgIE1hcmtlZEFsbG9jYXRvciogbV9maXJzdEFsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICBN
YXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0ciB9
OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3Bh
Y2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQotewotICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKLSAgICBCbG9ja0l0ZXJhdG9y
IGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9
IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAo
KCppdCktPmhhbmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0
dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoTGFyZ2VBbGxv
Y2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7Ci0gICAgICAgIGlmIChh
bGxvY2F0aW9uLT5pc0xpdmUoKSkgewotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlv
bi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlv
blN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNl
Ojpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKLXsKLSAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRvciBl
bmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBt
X2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgq
aXQpLT5oYW5kbGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVz
OjpEb25lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKExhcmdlQWxsb2Nh
dGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewotICAgICAgICBpZiAoIWFs
bG9jYXRpb24tPmlzTGl2ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9u
LT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LX0KLQogaW5saW5lIE1hcmtlZEFsbG9jYXRvciogTWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihT
dWJzcGFjZSYgc3BhY2UsIHNpemVfdCBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJr
ZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCit7CisgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOworICAgIEJsb2NrSXRl
cmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9y
IGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
IGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaExpdmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlv
blN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChMYXJn
ZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKKyAgICAgICAg
aWYgKGFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxv
Y2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRl
cmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2Vk
U3BhY2U6OmZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQoreworICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0ZXJh
dG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBp
dCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBp
ZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hEZWFkQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25T
dGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoTGFyZ2VB
bGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7CisgICAgICAgIGlm
ICghYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKKyAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9j
YXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVy
YXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9XZWFrQmxvY2suY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksOSArMTQ5
LDYgQEAgdm9pZCBXZWFrQmxvY2s6OnJlYXAoKQogICAgIAogICAgIG1fY29udGFpbmVyLmZsaXBJ
Zk5lY2Vzc2FyeSgpOwogCi0gICAgLy8gV2Ugb25seSByZWFwIGFmdGVyIG1hcmtpbmcuCi0gICAg
QVNTRVJUKG1fY29udGFpbmVyLmlzTWFya2VkKCkpOwotCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB3ZWFrSW1wbENvdW50KCk7ICsraSkgewogICAgICAgICBXZWFrSW1wbCogd2Vha0ltcGwg
PSAmd2Vha0ltcGxzKClbaV07CiAgICAgICAgIGlmICh3ZWFrSW1wbC0+c3RhdGUoKSA+IFdlYWtJ
bXBsOjpEZWFkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiAr
MTE2LDcgQEAKICNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1hcEl0ZXJh
dG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiTWFy
a2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aE9iamVjdC5oIgogI2luY2x1ZGUgIk1p
Y3JvdGFzay5oIgogI2luY2x1ZGUgIk1vZHVsZUxvYWRlclByb3RvdHlwZS5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJ
KHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVk
ZSAiTExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAi
TWFya2VkQmxvY2tTZXQuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNs
dWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5j
bHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAkJMEY0NTcwNDMxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQyMUJFNUI1OEYwMDYyQTYy
OSAvKiBEb21pbmF0b3JzLmggKi87IH07CiAJCTBGNDU3MDQ1MUJFODM0NDEwMDYyQTYyOSAvKiBC
dWJibGVTb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovOyB9OwogCQkwRjcy
NUNBQzFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5n
ZVNldC5oICovOyB9OworCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdD
NUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGODI0
QTY4MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQ
YXJraW5nTG90LmNwcCAqLzsgfTsKIAkJMEY4MjRBNjkxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtp
bmdMb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
ODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi87IH07CiAJCTBGODcxMDVB
MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9p
bnRlci5oICovOyB9OwpAQCAtMzY2LDYgKzM2Nyw3IEBACiAJCTBGNDU3MDQyMUJFNUI1OEYwMDYy
QTYyOSAvKiBEb21pbmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERv
bWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwNDQxQkU4MzQ0
MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnViYmxlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjcyNUNBQjFD
NTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmFuZ2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzVGQjUx
RDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmtpbmdMb3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2lu
Z0xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJraW5nTG90Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBS
YXdQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhd1BvaW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4MCw2ICs4ODIsNyBAQAogCQkJCUE4
QTQ3Mjk4MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9hLmggKi8sCiAJCQkJMUFFQTg4RTExRDZCQkNG
NDAwRTVBRDY0IC8qIEVudW1UcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5RjE1MUE4MjVBMDA0MTIz
RkYgLyogRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8q
IEZhc3RCaXRWZWN0b3IuY3BwICovLAogCQkJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBG
YXN0Qml0VmVjdG9yLmggKi8sCiAJCQkJQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RN
YWxsb2MuY3BwICovLAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9j
LmggKi8sCkBAIC0xNTk0LDYgKzE1OTcsNyBAQAogCQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMz
MCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRUMxNTFBODI1QjAw
NDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjQx
NTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDczRjcxNTFBODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2NhdG9yUG9zaXguY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9t
U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDAyMTUxQTgyNUIwMDQxMjNGRiAv
KiBQYWdlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBEYXRhTG9n
LmNwcAogICAgIERhdGVNYXRoLmNwcAogICAgIERlY2ltYWxOdW1iZXIuY3BwCisgICAgRmFzdEJp
dFZlY3Rvci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZpbGVQcmludFN0cmVhbS5jcHAK
ICAgICBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0
VmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGYXN0Qml0
VmVjdG9yLmgiCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3du
ZXI6OnNldEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCit7
CisgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPigKKyAgICAg
ICAgZmFzdENhbGxvYyhvdGhlci5hcnJheUxlbmd0aCgpLCBzaXplb2YodWludDMyX3QpKSk7Cisg
ICAgbWVtY3B5KG5ld0FycmF5LCBvdGhlci5tX3dvcmRzLCBvdGhlci5hcnJheUxlbmd0aCgpICog
c2l6ZW9mKHVpbnQzMl90KSk7CisgICAgaWYgKG1fd29yZHMpCisgICAgICAgIGZhc3RGcmVlKG1f
d29yZHMpOworICAgIG1fd29yZHMgPSBuZXdBcnJheTsKKyAgICBtX251bUJpdHMgPSBvdGhlci5t
X251bUJpdHM7Cit9CisKK3ZvaWQgRmFzdEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXplU2xvdyhz
aXplX3QgbnVtQml0cykKK3sKKyAgICBzaXplX3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFy
cmF5TGVuZ3RoKG51bUJpdHMpOworICAgIAorICAgIC8vIFVzZSBmYXN0Q2FsbG9jIGluc3RlYWQg
b2YgZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBleHBlY3QgdGhlIGNvbW1vbgorICAgIC8vIHVzZSBj
YXNlIGZvciB0aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJp
dHZlY3Rvci4KKyAgICAKKyAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdCo+KGZhc3RDYWxsb2MobmV3TGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7CisgICAgbWVt
Y3B5KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7
CisgICAgaWYgKG1fd29yZHMpCisgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOworICAgIG1fd29y
ZHMgPSBuZXdBcnJheTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRW
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtOTEsMTcgKzkyLDEyIEBAIHB1YmxpYzoKICAgICAK
ICAgICBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvcGVyYXRvcj0oY29uc3QgRmFzdEJpdFZlY3Rv
cldvcmRPd25lciYgb3RoZXIpCiAgICAgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gb3RoZXIu
YXJyYXlMZW5ndGgoKTsKLSAgICAgICAgaWYgKGxlbmd0aCA9PSBhcnJheUxlbmd0aCgpKSB7Ci0g
ICAgICAgICAgICBtZW1jcHkobV93b3Jkcywgb3RoZXIubV93b3JkcywgbGVuZ3RoICogc2l6ZW9m
KHVpbnQzMl90KSk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIGlmIChhcnJh
eUxlbmd0aCgpICE9IG90aGVyLmFycmF5TGVuZ3RoKCkpCisgICAgICAgICAgICBzZXRFcXVhbHNT
bG93KG90aGVyKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkobV93b3Jkcywg
b3RoZXIubV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAgICAg
ICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwogICAgICAgICB9Ci0gICAgICAgIHVp
bnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhsZW5n
dGgsIHNpemVvZih1aW50MzJfdCkpKTsKLSAgICAgICAgbWVtY3B5KG5ld0FycmF5LCBvdGhlci5t
X3dvcmRzLCBsZW5ndGggKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgaWYgKG1fd29yZHMp
Ci0gICAgICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAgbV93b3JkcyA9IG5ld0Fy
cmF5OwotICAgICAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7CiAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICB9CiAgICAgCkBAIC0xNDAsMTggKzEzNiw4IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIHJlc2l6ZShzaXplX3QgbnVtQml0cykKICAgICB7Ci0gICAgICAgIGlmIChudW1C
aXRzID09IG1fbnVtQml0cykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAg
IC8vIFVzZSBmYXN0Q2FsbG9jIGluc3RlYWQgb2YgZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBleHBl
Y3QgdGhlIGNvbW1vbgotICAgICAgICAvLyB1c2UgY2FzZSBmb3IgdGhpcyBtZXRob2QgdG8gYmUg
aW5pdGlhbGl6aW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3IuCi0gICAgICAgIAotICAgICAg
ICBzaXplX3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpOwot
ICAgICAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RD
YWxsb2MobmV3TGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7Ci0gICAgICAgIG1lbWNweShuZXdB
cnJheSwgbV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAg
ICBpZiAobV93b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOwotICAgICAgICBt
X3dvcmRzID0gbmV3QXJyYXk7CisgICAgICAgIGlmIChhcnJheUxlbmd0aCgpICE9IGZhc3RCaXRW
ZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKSkKKyAgICAgICAgICAgIHJlc2l6ZVNsb3cobnVtQml0
cyk7CiAgICAgICAgIG1fbnVtQml0cyA9IG51bUJpdHM7CiAgICAgfQogICAgIApAQCAtMTcxLDYg
KzE1Nyw5IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCogd29yZHMoKSB7IHJldHVybiBtX3dvcmRz
OyB9CiAKIHByaXZhdGU6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RXF1YWxzU2xv
dyhjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcmVzaXplU2xvdyhzaXplX3QgbnVtQml0cyk7CisgICAgCiAgICAgdWludDMy
X3QqIG1fd29yZHMgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKIH07
CkBAIC0zMjAsNiArMzA5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gYXJyYXlMZW5ndGgoKTsgaW5kZXgtLTspIHsKKyAgICAgICAgICAgIGlm
IChtX3dvcmRzLndvcmQoaW5kZXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3RoZXJXb3Jkcz4KICAgICBGYXN0Qml0VmVjdG9ySW1wbDxGYXN0Qml0VmVjdG9y
QW5kV29yZHM8dHlwZW5hbWUgV29yZHM6OlZpZXdUeXBlLCB0eXBlbmFtZSBPdGhlcldvcmRzOjpW
aWV3VHlwZT4+IG9wZXJhdG9yJihjb25zdCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYg
b3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNDcxLDYgKzQ2OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV93b3Jkcy5jbGVhckFsbCgpOwogICAgIH0KIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
Y29udGVudHMgb2YgdGhpcyBiaXR2ZWN0b3IgY2hhbmdlZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdGhlcldvcmRzPgogICAgIGJvb2wgc2V0QW5kQ2hlY2soY29uc3QgRmFzdEJpdFZlY3Rvcklt
cGw8T3RoZXJXb3Jkcz4mIG90aGVyKQogICAgIHsKQEAgLTU1MCw2ICs1NDksMjggQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKICAgICB9CisgICAgCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBjaGFuZ2VkLgorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBhdG9taWNTZXRBbmRDaGVjayhzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpCisgICAgewor
ICAgICAgICB1aW50MzJfdCogcG9pbnRlciA9ICZtX3dvcmRzLndvcmQoaW5kZXggPj4gNSk7Cisg
ICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChpbmRleCAmIDMxKTsKKyAgICAgICAgZm9yICg7
OykgeworICAgICAgICAgICAgdWludDMyX3Qgb2xkVmFsdWUgPSAqcG9pbnRlcjsKKyAgICAgICAg
ICAgIHVpbnQzMl90IG5ld1ZhbHVlOworICAgICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG9sZFZhbHVlICYgbWFzaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUgfCBtYXNrOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIShvbGRWYWx1ZSAmIG1hc2sp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3
VmFsdWUgPSBvbGRWYWx1ZSAmIH5tYXNrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KHdlYWtDb21wYXJlQW5kU3dhcChwb2ludGVyLCBvbGRWYWx1ZSwgbmV3VmFsdWUpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288757</attachid>
            <date>2016-09-13 18:10:08 -0700</date>
            <delta_ts>2016-09-14 14:06:11 -0700</delta_ts>
            <desc>it compiles!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>96655</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTBGN0MzOUZCMUM4RjYy
OTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5s
aW5lcy5oICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsK
IAkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFy
a2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmgg
Ki87IH07CisJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI5
MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLzsgfTsKIAkJMEY4MDIz
RUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4
MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI3MzEsNiArMjczMyw4IEBACiAJCTBGN0Mz
OUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyog
REZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5o
OyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3Bh
Y2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIz
MDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMz
OCw5ICs1MzQyLDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFs
bG9jYXRvci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9j
ay5jcHAgKi8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmgg
Ki8sCisJCQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5o
ICovLAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICov
LAogCQkJCTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJ
CQkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMEY3
QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0
MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBG
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlBRERCMUY2MjE4RDc3REI3
MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNzM5NCw2ICs3NDAwLDcgQEAKIAkJ
CQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50
UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAv
KiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4
QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJp
dGhNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkxOCw3IEBACiAJCQkJQTUwM0ZB
MkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0lu
amVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQkExRDg4OTUwNzAw
NDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1
QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0MgLyogSlNJbnB1dHMuanNv
biBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2
QXJyYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJW
TUVudHJ5U2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29u
dGFpbmVyLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NlbGxDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKICAgICBib29sIG5lZWRzRmxpcCgpIGNvbnN0
OwogICAgIAotICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKICAgICBib29sIGlzTWFya2VkKEhl
YXBDZWxsKikgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENl
bGwqKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxD
b250YWluZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTMgKzMyLDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGluZSBib29sIENlbGxD
b250YWluZXI6OmlzTWFya2VkKCkgY29uc3QKLXsKLSAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24o
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaGFuZGxl
KCkuaXNNYXJrZWQoKTsKLX0KLQogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQo
SGVhcENlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMu
Y3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25z
ZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmUuaCIKICNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJK
U1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMu
aCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tl
bi5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgpAQCAtNTI2LDExICs1MjcsOSBAQCB2b2lk
IEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgfQogICAgIAogICAgIHsKLSAgICAgICAgVGltaW5n
U2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5jbGVhck1h
cmtzIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZmxpcCgpOworICAgICAgICBUaW1pbmdTY29w
ZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2lu
ZyIpOworICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZygpOwogICAgIH0KLSAgICAK
LSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyh0cnVlKTsKIH0KIAogdm9pZCBIZWFwOjp2
aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCkBAIC03NzksNyArNzc4LDcgQEAgdm9pZCBIZWFw
OjplbmRNYXJraW5nKCkKICAgICBBU1NFUlQobV9zaGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKTsK
ICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLnJlbW92ZUFsbCgpOwogICAgIAotICAgIG1f
b2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKGZhbHNlKTsKKyAgICBtX29iamVjdFNwYWNlLmVuZE1h
cmtpbmcoKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVjdENvdW50KCkKQEAgLTkzOSw3ICs5Mzgs
NyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkKICAgICAgICAgbV9vYmplY3RTcGFj
ZS5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNwYWNlLnNocmluaygpOwogICAgIH0KLSAgICBB
U1NFUlQobV9ibG9ja1NuYXBzaG90LmlzRW1wdHkoKSk7CisgICAgbV9vYmplY3RTcGFjZS5hc3Nl
cnRTbmFwc2hvdEVtcHR5KCk7CiAKICAgICBzd2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vha0Jsb2Nr
cygpOwogfQpAQCAtMTA0OCw3ICsxMDQ3LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29s
bGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwogICAgIHdyaXRl
QmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKIAotICAgIHJlc2V0QWxsb2Nh
dG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdXBkYXRlQWxsb2NhdGlv
bkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUpOwogICAgIHJl
c3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTE2Miw0NCArMTE2MSwxMCBAQCB2b2lkIEhlYXA6
OnN3ZWVwQXJyYXlCdWZmZXJzKCkKICAgICBtX2FycmF5QnVmZmVycy5zd2VlcCgpOwogfQogCi1z
dHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZv
aWRGdW5jdG9yIHsKLSAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvcihWZWN0b3I8TWFya2Vk
QmxvY2s6OkhhbmRsZSo+JiBibG9ja3MpIAotICAgICAgICA6IG1faW5kZXgoMCkgCi0gICAgICAg
ICwgbV9ibG9ja3MoYmxvY2tzKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCko
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0gICAgewotICAgICAgICBibG9jay0+
c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAgIG1fYmxvY2tzW21faW5kZXgrK10g
PSBibG9jazsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG11dGFibGUgZmllbGQg
YmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKLSAgICBtdXRhYmxlIHNpemVfdCBtX2luZGV4
OwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIG1fYmxvY2tzOwotfTsKLQogdm9p
ZCBIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlKCkKIHsKICAgICBUaW1pbmdTY29wZSB0aW1pbmdT
Y29wZSgqdGhpcywgIkhlYXA6OnNuYXBzaG90TWFya2VkU3BhY2UiKTsKLSAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcmVuYW1lZC4gSXQncyBub3QgYWN0dWFsbHkgc25hcHNo
b3R0aW5nIGFsbCBvZiBNYXJrZWRTcGFjZS4KLSAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSW5jcmVt
ZW50YWxTd2VlcGVyLCBzbyBpdCBvbmx5IG5lZWRzIHRvIHNuYXBzaG90IGJsb2Nrcy4gSG93ZXZl
ciwgaWYgd2UgZXZlcgotICAgIC8vIHdhbnRlZCB0byBhZGQgb3RoZXIgc25hcHNob3R0aW5nIGxv
Z2luLCB3ZSdkIHByb2JhYmx5IHB1dCBpdCBoZXJlLgotICAgIAotICAgIGlmIChtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9yIChNYXJrZWRCbG9j
azo6SGFuZGxlKiBoYW5kbGUgOiBtX29iamVjdFNwYWNlLmJsb2Nrc1dpdGhOZXdPYmplY3RzKCkp
IHsKLSAgICAgICAgICAgIGlmIChoYW5kbGUtPmlzT25CbG9ja3NUb1N3ZWVwKCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX2Jsb2NrU25hcHNob3QuYXBwZW5kKGhh
bmRsZSk7Ci0gICAgICAgICAgICBoYW5kbGUtPnNldElzT25CbG9ja3NUb1N3ZWVwKHRydWUpOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9ibG9ja1NuYXBzaG90LnJlc2l6ZVRv
Rml0KG1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuc2l6ZSgpKTsKLSAgICAgICAgTWFya2Vk
QmxvY2tTbmFwc2hvdEZ1bmN0b3IgZnVuY3RvcihtX2Jsb2NrU25hcHNob3QpOwotICAgICAgICBt
X29iamVjdFNwYWNlLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICB9CisgICAgbV9vYmplY3RT
cGFjZS5zbmFwc2hvdCgpOwogfQogCiB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2Fj
aGVzKCkKQEAgLTEyMjIsOSArMTE4Nyw5IEBAIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyQ3VycmVu
dGx5RXhlY3V0aW4KICAgICBtX2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1
dGluZ0NvZGVCbG9ja3ModGhpcyk7CiB9CiAKLXZvaWQgSGVhcDo6cmVzZXRBbGxvY2F0b3JzKCkK
K3ZvaWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewotICAgIG1fb2JqZWN0U3BhY2Uu
cmVzZXRBbGxvY2F0b3JzKCk7CisgICAgbV9vYmplY3RTcGFjZS5wcmVwYXJlRm9yQWxsb2NhdGlv
bigpOwogfQogCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQpAQCAtMTQ3Myw3
ICsxNDM4LDcgQEAgcHVibGljOgogdm9pZCBIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMoKQogewog
ICAgIC8vIFN3ZWVwIG5vdyBiZWNhdXNlIGRlc3RydWN0b3JzIHdpbGwgY3Jhc2ggb25jZSB3ZSdy
ZSB6b21iaWZpZWQuCi0gICAgbV9vYmplY3RTcGFjZS56b21iaWZ5U3dlZXAoKTsKKyAgICBtX29i
amVjdFNwYWNlLnN3ZWVwKCk7CiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNjb3Bl
KCp0aGlzKTsKICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hEZWFkQ2VsbChpdGVyYXRpb25TY29w
ZSwgWm9tYmlmeSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlz
aW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsNyArOTcsNiBAQCBwdWJsaWM6CiAgICAgLy8gb3VyIHNjYW4gdG8gcnVu
IGZhc3Rlci4gCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfdGltZUNoZWNrUmVzb2x1dGlv
biA9IDE2OwogCi0gICAgc3RhdGljIGJvb2wgaXNMaXZlKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0
aWMgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIGJvb2wgaXNNYXJrZWRD
b25jdXJyZW50bHkoY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBib29sIHRlc3RBbmRTZXRNYXJr
ZWQoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKQEAgLTMzMyw3ICszMzIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMoKTsKICAgICB2b2lkIG5vdGlm
eUluY3JlbWVudGFsU3dlZXBlcigpOwogICAgIHZvaWQgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhl
Y3V0aW5nQ29kZUJsb2NrcygpOwotICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CisgICAgdm9p
ZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2Vz
KCk7CiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCk7CiAgICAgdm9p
ZCBjbGVhclVubWFya2VkRXhlY3V0YWJsZXMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcElubGluZXMuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTcgKzc0LDYg
QEAgaW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoY29uc3QgSlNWYWx1ZSB2KQogICAgIHJldHVybiBo
ZWFwKHYuYXNDZWxsKCkpOwogfQogCi1pbmxpbmUgYm9vbCBIZWFwOjppc0xpdmUoY29uc3Qgdm9p
ZCogcmF3Q2VsbCkKLXsKLSAgICBBU1NFUlQoIW1heUJlR0NUaHJlYWQoKSk7Ci0gICAgSGVhcENl
bGwqIGNlbGwgPSBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKTsKLSAgICBpZiAoY2Vs
bC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2Nh
dGlvbigpLmlzTGl2ZSgpOwotICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJs
b2NrKCk7Ci0gICAgYmxvY2suZmxpcElmTmVjZXNzYXJ5KGJsb2NrLnZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCkpOwotICAgIHJldHVybiBibG9jay5oYW5kbGUoKS5pc0xpdmVDZWxs
KGNlbGwpOwotfQotCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWQoY29uc3Qgdm9p
ZCogcmF3Q2VsbCkKIHsKICAgICBBU1NFUlQoIW1heUJlR0NUaHJlYWQoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAy
MDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9u
U2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAj
aW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHJldmlzaW9uIDIw
NTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNw
cAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVt
ZW50YWxTd2VlcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQCBzdGF0aWMg
Y29uc3QgZG91YmxlIHN3ZWVwVGltZU11bHRpcGxpZXIgCiAjaWYgVVNFKENGKQogSW5jcmVtZW50
YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3ApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSwgcnVuTG9vcCkKLSAgICAsIG1fYmxv
Y2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25hcHNob3QpCiB7CiB9CiAKQEAgLTY2LDcgKzY1LDYg
QEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICNlbGlmIFBMQVRGT1JN
KEVGTCkKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXAp
CiAgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSkKLSAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFw
LT5tX2Jsb2NrU25hcHNob3QpCiB7CiB9CiAKQEAgLTg2LDcgKzg0LDYgQEAgdm9pZCBJbmNyZW1l
bnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICNlbGlmIFVTRShHTElCKQogSW5jcmVtZW50YWxT
d2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCkKICAgICA6IEhlYXBUaW1lciho
ZWFwLT52bSgpKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkK
IHsKIH0KIApAQCAtMTIxLDE5ICsxMTgsMjAgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRv
U3dlZXAoZG91YmxlIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9ibG9ja3NUb1N3
ZWVwLmNsZWFyKCk7CiAgICAgY2FuY2VsVGltZXIoKTsKIH0KIAogYm9vbCBJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKCkKIHsKLSAgICB3aGlsZSAoIW1fYmxvY2tzVG9Td2VlcC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nr
c1RvU3dlZXAudGFrZUxhc3QoKTsKLSAgICAgICAgYmxvY2stPnNldElzT25CbG9ja3NUb1N3ZWVw
KGZhbHNlKTsKLQotICAgICAgICBpZiAoIWJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbnVsbHB0
cjsKKyAgICAKKyAgICBmb3IgKDsgbV9jdXJyZW50QWxsb2NhdG9yOyBtX2N1cnJlbnRBbGxvY2F0
b3IgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPm5leHRBbGxvY2F0b3IoKSkgeworICAgICAgICBibG9j
ayA9IG1fY3VycmVudEFsbG9jYXRvci0+ZmluZEJsb2NrVG9Td2VlcCgpOworICAgICAgICBpZiAo
YmxvY2spCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKGJsb2NrKSB7
CiAgICAgICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyhtX3ZtLT5oZWFwKTsKICAgICAgICAg
YmxvY2stPnN3ZWVwKCk7CiAgICAgICAgIG1fdm0tPmhlYXAub2JqZWN0U3BhY2UoKS5mcmVlT3JT
aHJpbmtCbG9jayhibG9jayk7CkBAIC0xNDYsMTEgKzE0NCwxMiBAQCBib29sIEluY3JlbWVudGFs
U3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRT
d2VlcGluZygpCiB7CiAgICAgc2NoZWR1bGVUaW1lcigpOworICAgIG1fY3VycmVudEFsbG9jYXRv
ciA9IG1fdm0tPmhlYXAub2JqZWN0U3BhY2UoKS5maXJzdEFsbG9jYXRvcigpOwogfQogCiB2b2lk
IEluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKCkKIHsKLSAgICBtX2Jsb2Nr
c1RvU3dlZXAuY2xlYXIoKTsKKyAgICBtX2N1cnJlbnRBbGxvY2F0b3IgPSBudWxscHRyOwogICAg
IGlmIChtX3ZtKQogICAgICAgICBjYW5jZWxUaW1lcigpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHJldmlzaW9uIDIwNTg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMTIgQEAKICNkZWZpbmUgSW5jcmVtZW50YWxTd2Vl
cGVyX2gKIAogI2luY2x1ZGUgIkhlYXBUaW1lci5oIgotI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgi
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVh
cDsKLWNsYXNzIE1hcmtlZEJsb2NrOworY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogCiBjbGFzcyBJ
bmNyZW1lbnRhbFN3ZWVwZXIgOiBwdWJsaWMgSGVhcFRpbWVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxl
VGltZXIoKTsKICAgICB2b2lkIGNhbmNlbFRpbWVyKCk7CiAgICAgCi0gICAgVmVjdG9yPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqPiYgbV9ibG9ja3NUb1N3ZWVwOworICAgIE1hcmtlZEFsbG9jYXRvciog
bV9jdXJyZW50QWxsb2NhdG9yOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBNYXJrZWRBbGxvY2F0b3I6
Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoZWFwLCBNYXJrZWRTcGFjZSogbWFya2VkU3BhY2UsIHNp
emVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcykKICAg
ICA6IG1fY3VycmVudEJsb2NrKDApCiAgICAgLCBtX2xhc3RBY3RpdmVCbG9jaygwKQotICAgICwg
bV9uZXh0QmxvY2tUb1N3ZWVwKG51bGxwdHIpCiAgICAgLCBtX2NlbGxTaXplKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjZWxsU2l6ZSkpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKICAg
ICAsIG1faGVhcChoZWFwKQpAQCAtNTAsOSArNDksOCBAQCBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtl
ZEFsbG9jYXRvcihIZWFwKiBoCiBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3Vi
bGUgZGVhZGxpbmUpCiB7CiAgICAgdW5zaWduZWQgaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPSAw
OwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja0xpc3QuYmVnaW4oKTsK
LSAgICB3aGlsZSAoYmxvY2spIHsKLSAgICAgICAgYmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2soYmxv
Y2stPm5leHQoKSk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxvY2tz
LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9
IG1fYmxvY2tzW2luZGV4XTsKICAgICAgICAgaWYgKGJsb2NrKQogICAgICAgICAgICAgYmxvY2st
PmZsaXBJZk5lY2Vzc2FyeSgpOyAvLyBGb3JjZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0
aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50aWMgZWZmZWN0LgogICAgICAgICArK2l0ZXJzU2lu
Y2VMYXN0VGltZUNoZWNrOwpAQCAtNjYsODQgKzY0LDc3IEBAIGJvb2wgTWFya2VkQWxsb2NhdG9y
Ojppc1BhZ2VkT3V0KGRvdWJsZSAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpyZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCitNYXJrZWRCbG9j
azo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJsb2NrKCkKIHsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvY2spOyAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIGluIHBhcmFsbGVs
IGR1cmluZyBHQy4KLSAgICBpZiAoYmxvY2sgPT0gbV9jdXJyZW50QmxvY2spIHsKLSAgICAgICAg
Ly8gVGhpcyBoYXBwZW5zIHdoZW4gdGhlIG11dGF0b3IgaXMgcnVubmluZy4gV2UgZmluaXNoZWQg
YSBmdWxsIEdDIGFuZCBtYXJrZWQgdG9vIGZldyB0aGluZ3MKLSAgICAgICAgLy8gdG8gcmV0aXJl
LiBUaGVuIHdlIHN0YXJ0ZWQgYWxsb2NhdGluZyBpbiB0aGlzIGJsb2NrLiBUaGVuIGEgYmFycmll
ciByYW4sIHdoaWNoIG1hcmtlZCBhbgotICAgICAgICAvLyBvYmplY3QgaW4gdGhpcyBibG9jaywg
d2hpY2ggcHV0IGl0IG92ZXIgdGhlIHJldGlyZW1lbnQgdGhyZXNob2xkLiBJdCdzIE9LIHRvIHNp
bXBseSBkbwotICAgICAgICAvLyBub3RoaW5nIGluIHRoYXQgY2FzZS4KLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoYmxvY2sgPT0gbV9sYXN0QWN0aXZlQmxvY2spIHsKLSAgICAgICAg
Ly8gVGhpcyBjYW4gZWFzaWx5IGhhcHBlbiBkdXJpbmcgbWFya2luZy4gSXQgd291bGQgYmUgZWFz
eSB0byBoYW5kbGUgdGhpcyBjYXNlLCBidXQgaXQncwotICAgICAgICAvLyBqdXN0IGFzIGVhc3kg
dG8gaWdub3JlIGl0LgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJU
KGJsb2NrLT5pc09uTGlzdCgpKTsKLSAgICBpZiAoYmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVw
KQotICAgICAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5l
eHQoKSk7Ci0gICAgYmxvY2stPnJlbW92ZSgpOwotICAgIG1fcmV0aXJlZEJsb2Nrcy5wdXNoKGJs
b2NrKTsKLX0KLQotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaWx0ZXJO
ZXh0QmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCi17Ci0gICAgaWYgKGJsb2NrID09
IG1fYmxvY2tMaXN0LmVuZCgpKQorICAgIG1fZW1wdHlDdXJzb3IgPSBtX2VtcHR5LmZpbmRCaXQo
bV9lbXB0eUN1cnNvciwgdHJ1ZSk7CisgICAgaWYgKG1fZW1wdHlDdXJzb3IgPj0gbV9ibG9ja3Mu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYmxvY2s7Ci19Ci0K
LXZvaWQgTWFya2VkQWxsb2NhdG9yOjpzZXROZXh0QmxvY2tUb1N3ZWVwKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKQotewotICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IGZpbHRlck5leHRCbG9j
ayhibG9jayk7CisgICAgcmV0dXJuIG1fYmxvY2tzW21fZW1wdHlDdXJzb3JdOwogfQogCiB2b2lk
KiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCkKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0g
ICAgaWYgKG1fY3VycmVudEJsb2NrKSB7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9
PSBtX25leHRCbG9ja1RvU3dlZXApOworICAgIGlmIChtX2N1cnJlbnRCbG9jaykKICAgICAgICAg
bV9jdXJyZW50QmxvY2stPmRpZENvbnN1bWVGcmVlTGlzdCgpOwotICAgICAgICBzZXROZXh0Qmxv
Y2tUb1N3ZWVwKG1fY3VycmVudEJsb2NrLT5uZXh0KCkpOwotICAgIH0KICAgICAKICAgICBzZXRG
cmVlTGlzdChGcmVlTGlzdCgpKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKG1fbmV4dEJsb2NrVG9T
d2VlcCAhPSBtX2Jsb2NrTGlzdC5lbmQoKSk7Ci0KLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBu
ZXh0OwotICAgIGZvciAoTWFya2VkQmxvY2s6OkhhbmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tU
b1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBmaWx0ZXJOZXh0
QmxvY2soYmxvY2stPm5leHQoKSk7Ci0KLSAgICAgICAgLy8gSXQgd291bGQgYmUgc3VwZXIgd2Vp
cmQgaWYgdGhlIGJsb2NrcyB3ZSBhcmUgc3dlZXBpbmcgaGF2ZSBhbnl0aGluZyBhbGxvY2F0ZWQg
ZHVyaW5nIHRoaXMKLSAgICAgICAgLy8gY3ljbGUuCi0gICAgICAgIEFTU0VSVCghYmxvY2stPmhh
c0FueU5ld2x5QWxsb2NhdGVkKCkpOwotICAgICAgICAKLSAgICAgICAgRnJlZUxpc3QgZnJlZUxp
c3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsK
KyAgICBtX2N1cnJlbnRCbG9jayA9IG51bGxwdHI7CisgICAgCisgICAgZm9yICg7OykgeworICAg
ICAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSBtX2NhbkFsbG9jYXRlLmZpbmRCaXQobV9hbGxvY2F0
aW9uQ3Vyc29yLCB0cnVlKTsKKyAgICAgICAgaWYgKG1fYWxsb2NhdGlvbkN1cnNvciA+PSBtX2Js
b2Nrcy5zaXplKCkpCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIC8vIEl0
J3MgcG9zc2libGUgdG8gc3R1bWJsZSBvbiBhIGNvbXBsZXRlLWZ1bGwgYmxvY2suIE1hcmtpbmcg
dHJpZXMgdG8gcmV0aXJlIHRoZXNlLCBidXQKLSAgICAgICAgLy8gdGhhdCBhbGdvcml0aG0gaXMg
cmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCi0gICAgICAgIGlmIChmcmVl
TGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSkgewotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5p
c0ZyZWVMaXN0ZWQoKSk7Ci0gICAgICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxs
b2NhdGVkKCk7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzTWFya2VkKCkpOwotICAgICAg
ICAgICAgcmV0aXJlKGJsb2NrKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Cisg
ICAgICAgIHNldElzQ2FuQWxsb2NhdGUobV9hbGxvY2F0aW9uQ3Vyc29yLCBmYWxzZSk7CiAKLSAg
ICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jazsKLSAgICAgICAgc2V0RnJlZUxpc3QoZnJlZUxp
c3QpOwotICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9j
YXRlSW4obV9ibG9ja3NbbV9hbGxvY2F0aW9uQ3Vyc29yXSkpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KICAgICAKLSAgICBpZiAoIW1fZnJlZUxpc3QpIHsKLSAgICAgICAgbV9j
dXJyZW50QmxvY2sgPSAwOwotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2sgPSBmaW5kRW1wdHlCbG9jaygpKQorICAgICAgICByZXR1cm4gYWxsb2Nh
dGVJbihibG9jayk7CisgICAgCisgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0g
bV9tYXJrZWRTcGFjZS0+ZmluZEVtcHR5QmxvY2soKSkgeworICAgICAgICBibG9jay0+c3dlZXAo
KTsKKyAgICAgICAgYmxvY2stPnJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgYWRkQmxv
Y2soYmxvY2spOworICAgICAgICByZXR1cm4gYWxsb2NhdGVJbihibG9jayk7CiAgICAgfQorICAg
IAorICAgIHJldHVybiBudWxscHRyOworfQogCit2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9j
YXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCit7CisgICAgdm9pZCogcmVzdWx0ID0g
dHJ5QWxsb2NhdGVJbihibG9jayk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSW4o
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCit7CisgICAgQVNTRVJUKGJsb2NrKTsKKyAgICBB
U1NFUlQoIWJsb2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKKyAgICBBU1NFUlQoIWJsb2Nr
LT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgCisgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+
c3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAKKyAgICAv
LyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24gYSBjb21wbGV0ZWx5IGZ1bGwgYmxvY2suIE1h
cmtpbmcgdHJpZXMgdG8gcmV0aXJlIHRoZXNlLCBidXQKKyAgICAvLyB0aGF0IGFsZ29yaXRobSBp
cyByYWN5IGFuZCBtYXkgZm9yZ2V0IHRvIGRvIGl0IHNvbWV0aW1lcy4KKyAgICBpZiAoZnJlZUxp
c3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpIHsKKyAgICAgICAgQVNTRVJUKGJsb2NrLT5pc0ZyZWVM
aXN0ZWQoKSk7CisgICAgICAgIGJsb2NrLT51bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKTsK
KyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBBU1NFUlQo
IWlzRW1wdHkoYmxvY2spKTsKKyAgICAgICAgQVNTRVJUKCFpc0NhbkFsbG9jYXRlKGJsb2NrKSk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKKyAgICBtX2N1cnJlbnRCbG9j
ayA9IGJsb2NrOworICAgIHNldEZyZWVMaXN0KGZyZWVMaXN0KTsKKyAgICAKICAgICB2b2lkKiBy
ZXN1bHQ7CiAgICAgaWYgKG1fZnJlZUxpc3QucmVtYWluaW5nKSB7CiAgICAgICAgIHVuc2lnbmVk
IGNlbGxTaXplID0gbV9jZWxsU2l6ZTsKQEAgLTE1NSw2ICsxNDYsNyBAQCB2b2lkKiBNYXJrZWRB
bGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91CiAgICAgICAgIHJlc3VsdCA9IGhlYWQ7CiAgICAg
fQogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgc2V0SXNFZGVuKG1fY3VycmVudEJs
b2NrLCB0cnVlKTsKICAgICBtX21hcmtlZFNwYWNlLT5kaWRBbGxvY2F0ZUluQmxvY2sobV9jdXJy
ZW50QmxvY2spOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMjcsOCArMjE5LDcgQEAgdm9p
ZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlSQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIGFkZEJsb2NrKGJsb2NrKTsKLSAgICAgICAgCi0gICAgcmVz
dWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOworICAgIHJlc3VsdCA9IGFsbG9j
YXRlSW4oYmxvY2spOwogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0yNDksMzcgKzI0MCw3MiBAQCBzaXplX3QgTWFya2VkQWxsb2NhdG9yOjpibG9ja1NpemVG
b3JCeXRlCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRl
QmxvY2soKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9oZWFwLCB0aGlzLCBtX2Nl
bGxTaXplLCBtX2F0dHJpYnV0ZXMpOworICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhh
bmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwgbV9jZWxsU2l6ZSwgbV9hdHRy
aWJ1dGVzKTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
CisgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soaGFuZGxlKTsKKyAgICAKKyAgICByZXR1
cm4gaGFuZGxlOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2soTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2spCiB7Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRCbG9jayk7Ci0gICAg
QVNTRVJUKCFtX2ZyZWVMaXN0KTsKKyAgICBzaXplX3QgaW5kZXg7CisgICAgaWYgKG1fZnJlZUJs
b2NrSW5kaWNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaW5kZXggPSBtX2Jsb2Nrcy5zaXplKCk7
CisKKyAgICAgICAgc2l6ZV90IG9sZENhcGFjaXR5ID0gbV9ibG9ja3MuY2FwYWNpdHkoKTsKKyAg
ICAgICAgbV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsKKyAgICAgICAgaWYgKG1fYmxvY2tzLmNhcGFj
aXR5KCkgIT0gb2xkQ2FwYWNpdHkpIHsKKyAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisg
ICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHZlY3Rvci5udW1CaXRzKCkgPT0gb2xkQ2FwYWNpdHkpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobV9ibG9ja3Mu
Y2FwYWNpdHkoKSA+IG9sZENhcGFjaXR5KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9y
RWFjaEJpdFZlY3RvcigKKyAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
cikgeworICAgICAgICAgICAgICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5
KCkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaW5kZXggPSBtX2ZyZWVCbG9ja0luZGljZXMudGFrZUxhc3QoKTsKKyAgICAgICAgQVNTRVJU
KCFtX2Jsb2Nrc1tpbmRleF0pOworICAgICAgICBtX2Jsb2Nrc1tpbmRleF0gPSBibG9jazsKKyAg
ICB9CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsKLSAgICBzZXROZXh0Qmxv
Y2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRCbG9jayhibG9jayk7
CisgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0
b3IpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmVjdG9yW2luZGV4XSk7CisgICAgICAgIH0pOwor
CisgICAgYmxvY2stPmRpZEFkZFRvQWxsb2NhdG9yKHRoaXMsIGluZGV4KTsKKyAgICAKKyAgICBz
ZXRJc0xpdmUoaW5kZXgsIHRydWUpOworICAgIHNldElzRW1wdHkoaW5kZXgsIHRydWUpOwogfQog
CiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVtb3ZlQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2spCiB7Ci0gICAgaWYgKG1fY3VycmVudEJsb2NrID09IGJsb2NrKSB7Ci0gICAgICAgIG1f
Y3VycmVudEJsb2NrID0gZmlsdGVyTmV4dEJsb2NrKG1fY3VycmVudEJsb2NrLT5uZXh0KCkpOwot
ICAgICAgICBzZXRGcmVlTGlzdChGcmVlTGlzdCgpKTsKLSAgICB9Ci0gICAgaWYgKG1fbmV4dEJs
b2NrVG9Td2VlcCA9PSBibG9jaykKLSAgICAgICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX25leHRC
bG9ja1RvU3dlZXAtPm5leHQoKSk7CisgICAgQVNTRVJUKGJsb2NrLT5hbGxvY2F0b3IoKSA9PSB0
aGlzKTsKKyAgICBBU1NFUlQobV9ibG9ja3NbYmxvY2stPmluZGV4KCldID09IGJsb2NrKTsKIAot
ICAgIGJsb2NrLT53aWxsUmVtb3ZlQmxvY2soKTsKLSAgICBtX2Jsb2NrTGlzdC5yZW1vdmUoYmxv
Y2spOworICAgIG1fYmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9IG51bGxwdHI7CisgICAgbV9mcmVl
QmxvY2tJbmRpY2VzLmFwcGVuZChibG9jay0+aW5kZXgoKSk7CisgICAgCisgICAgZm9yRWFjaEJp
dFZlY3RvcigKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAg
ICAgIHZlY3RvcltibG9jay0+aW5kZXgoKV0gPSBmYWxzZTsKKyAgICAgICAgfSk7CisgICAgCisg
ICAgYmxvY2stPmRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxv
Y2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblBy
b2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pCi0gICAgICAgIG1fYmxvY2tMaXN0LnRha2VGcm9t
KG1fcmV0aXJlZEJsb2Nrcyk7Ci0KICAgICBBU1NFUlQoIW1fbGFzdEFjdGl2ZUJsb2NrKTsKICAg
ICBpZiAoIW1fY3VycmVudEJsb2NrKSB7CiAgICAgICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CkBA
IC0yOTIsMjkgKzMxOCwyNSBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmco
KQogICAgIG1fZnJlZUxpc3QgPSBGcmVlTGlzdCgpOwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRv
cjo6cmVzZXQoKQordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkK
IHsKLSAgICBtX2xhc3RBY3RpdmVCbG9jayA9IDA7Ci0gICAgbV9jdXJyZW50QmxvY2sgPSAwOwor
ICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKKyAgICBtX2N1cnJlbnRCbG9jayA9IG51
bGxwdHI7CiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7CiAKLSAgICBzZXROZXh0QmxvY2tU
b1N3ZWVwKG1fYmxvY2tMaXN0LmJlZ2luKCkpOworICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IDA7
CisgICAgbV9lbXB0eUN1cnNvciA9IDA7CisgICAgbV9zbmFwc2hvdEN1cnNvciA9IDA7CisgICAg
CisgICAgbV9lZGVuLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNl
SW1tb3J0YWxPYmplY3RzKCkpKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7
Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6OkhhbmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tU
b1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgICAgICBuZXh0ID0gZmlsdGVy
TmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgICAgICBGcmVlTGlzdCBmcmVlTGlz
dCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOwot
ICAgICAgICAgICAgYmxvY2stPnphcChmcmVlTGlzdCk7Ci0gICAgICAgICAgICByZXRpcmUoYmxv
Y2spOwotICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBUaGluZ3M/CiAgICAgfQogfQogCiB2
b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewotICAgIG1fYmxv
Y2tMaXN0LnRha2VGcm9tKG1fcmV0aXJlZEJsb2Nrcyk7CiAgICAgZm9yRWFjaEJsb2NrKAogICAg
ICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CiAgICAgICAgICAgICBibG9j
ay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTMyNiw0ICszNDgsODUgQEAgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnNldEZyZWVMaXN0KGNvbnN0IAogICAgIG1fZnJlZUxpc3QgPSBmcmVlTGlz
dDsKIH0KIAordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcoKQoreworICAg
IGlmICghbV9sYXN0QWN0aXZlQmxvY2spCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJlZUxp
c3QgPSBtX2xhc3RBY3RpdmVCbG9jay0+cmVzdW1lQWxsb2NhdGluZygpOworICAgIG1fY3VycmVu
dEJsb2NrID0gbV9sYXN0QWN0aXZlQmxvY2s7CisgICAgbV9sYXN0QWN0aXZlQmxvY2sgPSBudWxs
cHRyOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YmVnaW5NYXJraW5nRm9yRnVsbENvbGxl
Y3Rpb24oKQoreworICAgIC8vIE1hcmsgYml0cyBhcmUgc3RpY2t5IGFuZCBzbyBpcyBvdXIgc3Vt
bWFyeSBvZiBtYXJrIGJpdHMuIFdlIG9ubHkgY2xlYXIgdGhlc2UgZHVyaW5nIGZ1bGwKKyAgICAv
LyBjb2xsZWN0aW9ucywgc28gaWYgeW91IHN1cnZpdmVkIHRoZSBsYXN0IGNvbGxlY3Rpb24geW91
IHdpbGwgc3Vydml2ZSB0aGUgbmV4dCBvbmUgc28gbG9uZworICAgIC8vIGFzIHRoZSBuZXh0IG9u
ZSBpcyBlZGVuLgorICAgIG1fbWFya2luZ05vdEVtcHR5LmNsZWFyQWxsKCk7CisgICAgbV9tYXJr
aW5nUmV0aXJlZC5jbGVhckFsbCgpOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZW5kTWFy
a2luZygpCit7CisgICAgbV9hbGxvY2F0ZWQuY2xlYXJBbGwoKTsKKyAgICAKKyAgICAvLyBJdCdz
IHN1cnByaXNpbmcgYW5kIGZydXN0cmF0aW5nIHRvIGNvbXByZWhlbmQsIGJ1dCB0aGUgZW5kLW9m
LW1hcmtpbmcgZmxpcCBkb2VzIG5vdCBuZWVkIHRvCisgICAgLy8ga25vdyB3aGF0IGtpbmQgb2Yg
Y29sbGVjdGlvbiBpdCBpcy4gVGhhdCBrbm93bGVkZ2UgaXMgYWxyZWFkeSBlbmNvZGVkIGluIHRo
ZSBtX21hcmtpbmdYWVoKKyAgICAvLyB2ZWN0b3JzLgorICAgIAorICAgIGlmIChuZWVkc0Rlc3Ry
dWN0aW9uKCkpIHsKKyAgICAgICAgLy8gSWYgYmxvY2tzIG5lZWQgZGVzdHJ1Y3Rpb24gdGhlbiBu
b3RoaW5nIGlzIGVtcHR5ISBUaGlzIGlzIGEgY29ycmVjdCBhc3NlcnRpb24gYnV0IG1heQorICAg
ICAgICAvLyBiZWNvbWUgd3Jvbmcgb25jZSB3ZSBnbyBmdWxsIGNvbmN1cnJlbnQ6IHdoZW4gd2Ug
Y3JlYXRlIGEgbmV3IGJsb2NrLCBpdCB3aWxsIGZsaWNrZXIKKyAgICAgICAgLy8gaW50byB0aGUg
ZW1wdHkgc2V0IGZvciBhIHRpbnkgbW9tZW50LiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBjb2Rl
IGlzIGxpa2VseSB0byBiZSBydW4KKyAgICAgICAgLy8gaW4gc3RvcFRoZVdvcmxkLgorICAgICAg
ICBBU1NFUlQobV9lbXB0eS5pc0VtcHR5KCkpOworICAgICAgICBtX2NhbkFsbG9jYXRlID0gbV9s
aXZlICYgfm1fbWFya2luZ1JldGlyZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgbV9lbXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKKyAgICBtX2NhbkFsbG9j
YXRlID0gbV9saXZlICYgbV9tYXJraW5nTm90RW1wdHkgJiB+bV9tYXJraW5nUmV0aXJlZDsKK30K
Kwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24oKQorewor
ICAgIG1fc25hcHNob3QgfD0gbV9lZGVuOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25h
cHNob3RGb3JGdWxsQ29sbGVjdGlvbigpCit7CisgICAgbV9zbmFwc2hvdCB8PSBtX2xpdmU7Cit9
CisKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmluZEJsb2NrVG9Td2Vl
cCgpCit7CisgICAgbV9zbmFwc2hvdEN1cnNvciA9IG1fc25hcHNob3QuZmluZEJpdChtX3NuYXBz
aG90Q3Vyc29yLCB0cnVlKTsKKyAgICBpZiAobV9zbmFwc2hvdEN1cnNvciA+PSBtX2Jsb2Nrcy5z
aXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2Jsb2Nrc1ttX3Nu
YXBzaG90Q3Vyc29yXTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN3ZWVwKCkKK3sKKyAg
ICBtX3NuYXBzaG90LmZvckVhY2hTZXRCaXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7
CisgICAgICAgICAgICBtX2Jsb2Nrc1tpbmRleF0tPnN3ZWVwKCk7CisgICAgICAgIH0pOworfQor
Cit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2hyaW5rKCkKK3sKKyAgICBtX2VtcHR5LmZvckVhY2hT
ZXRCaXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBtX21hcmtl
ZFNwYWNlLT5mcmVlQmxvY2sobV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgfSk7Cit9CisKK3Zv
aWQgTWFya2VkQWxsb2NhdG9yOjphc3NlcnRTbmFwc2hvdEVtcHR5KCkKK3sKKyAgICBBU1NFUlQo
bV9zbmFwc2hvdC5pc0VtcHR5KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHJldmlzaW9u
IDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiQWxsb2NhdG9yQXR0
cmlidXRlcy5oIgogI2luY2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2su
aCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TZW50aW5l
bExpbmtlZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC0zNyw2ICszOSwxMDYgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIE1hcmtlZFNwYWNlOwog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisjZGVmaW5lIEZPUl9FQUNIX01BUktFRF9B
TExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBv
ZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKKyAgICBtYWNybyhl
bXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBv
YmplY3RzIGFuZCBub3RoaW5nIHRvIGRlc3Ryb3kuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQs
IEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGxibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZl
IG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9jYXRlLCBDYW5BbGxvY2F0ZSkgLyogVGhl
IHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY2FuIGJlIGFsbG9jYXRlZCBpbiByaWdodCBub3cuICov
IFwKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBo
YXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKKyAgICBtYWNybyhzbmFwc2hv
dCwgU25hcHNob3QpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNvdWxkIGJlIHN3ZXB0
IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wKKyAgICBcCisgICAgLyogVGhlc2UgYXJl
IGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAqL1wKKyAgICBtYWNybyhtYXJraW5nTm90RW1wdHks
IE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIG5vdCBl
bXB0eS4gKi8gXAorICAgIG1hY3JvKG1hcmtpbmdSZXRpcmVkLCBNYXJraW5nUmV0aXJlZCkgLyog
VGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIHJldGlyZWQuICovCisKKy8vIE5vdGUgdGhh
dCB0aGlzIGNvbGxlY3RvciBzdXBwb3J0cyBvdmVybGFwcGluZyBhbGxvY2F0b3Igc3RhdGUgd2l0
aCBtYXJraW5nIHN0YXRlLCBzaW5jZSBpbiBhCisvLyBjb25jdXJyZW50IGNvbGxlY3RvciB5b3Ug
YWxsb3cgYWxsb2NhdGlvbiB3aGlsZSBtYXJraW5nIGlzIHJ1bm5pbmcuIFNvIGl0J3MgYmVzdCB0
byB2aXN1YWxpemUgYQorLy8gZnVsbCBtdXRhYmxlLT5lZGVuIGNvbGxlY3QtPm11dGF0ZS0+ZnVs
bCBjb2xsZWN0IGN5Y2xlIGFuZCBzZWUgaG93IHRoZSBiaXRzIGFib3ZlIGdldCBhZmZlY3RlZC4K
Ky8vIFRoZSBleGFtcGxlIGJlbG93IHRyaWVzIHRvIGJlIGV4aGF1c3RpdmUgYWJvdXQgd2hhdCBo
YXBwZW5zIHRvIHRoZSBiaXRzLCBidXQgb21pdHMgYSBsb3Qgb2YKKy8vIHRoaW5ncyB0aGF0IGhh
cHBlbiB0byBvdGhlciBzdGF0ZS4KKy8vCisvLyBDcmVhdGUgYWxsb2NhdG9yCisvLyAtIGFsbCBi
aXRzIGFyZSBlbXB0eQorLy8gU3RhcnQgYWxsb2NhdGluZyBpbiBzb21lIGJsb2NrCisvLyAtIGFs
bG9jYXRlIHRoZSBibG9jayBhbmQgc2V0IHRoZSBsaXZlIGJpdC4KKy8vIC0gdGhlIGVtcHR5IGJp
dCBmb3IgdGhlIGJsb2NrIGZsaWNrZXJzIG9uIGFuZCB0aGVuIGdldHMgaW1tZWRpYXRlbHkgY2xl
YXJlZCBieSBzd2VlcGluZy4KKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxv
Y2F0aW5nIGluIHRoYXQgYmxvY2sKKy8vIC0gc2V0IHRoZSBhbGxvY2F0ZWQgYml0LgorLy8gRG8g
dGhhdCB0byBhIGxvdCBvZiBibG9ja3MgYW5kIHRoZW4gc3RhcnQgYW4gZWRlbiBjb2xsZWN0aW9u
LgorLy8gLSBiZWdpbk1hcmtpbmcoKSBoYXMgbm90aGluZyB0byBkby4KKy8vIC0gYnkgZGVmYXVs
dCB3ZSBoYXZlIGNsZWFyIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJlZCBiaXRzLgorLy8g
LSBtYXJraW5nIGJ1aWxkcyB1cCBtYXJraW5nTm90RW1wdHkvbWFya2luZ1JldGlyZWQgYml0cy4K
Ky8vIFdlIGRvIGVuZE1hcmtpbmcoKQorLy8gLSBjbGVhciBhbGwgYWxsb2NhdGVkIGJpdHMuCisv
LyAtIGZvciBkZXN0cnVjdG9yIGJsb2NrczogY2FuQWxsb2NhdGUgPSBsaXZlICYgfm1hcmtpbmdS
ZXRpcmVkCisvLyAtIGZvciBub24tZGVzdHJ1Y3RvciBibG9ja3M6CisvLyAgICAgICBlbXB0eSA9
IGxpdmUgJiB+bWFya2luZ05vdEVtcHR5CisvLyAgICAgICBjYW5BbGxvY2F0ZSA9IGxpdmUgJiBt
YXJraW5nTm90RW1wdHkgJiB+bWFya2luZ1JldGlyZWQKKy8vIFNuYXBzaG90dGluZy4KKy8vIC0g
c25hcHNob3QgfD0gZWRlbgorLy8gUHJlcGFyZSBmb3IgYWxsb2NhdGlvbi4KKy8vIC0gY2xlYXIg
ZWRlbgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLyBBbGxvY2F0ZSBpbiBzb21lIGJsb2NrIHRo
YXQgaGFkIHNvbWUgZnJlZSBhbmQgc29tZSBsaXZlIG9iamVjdHMuCisvLyAtIGNsZWFyIHRoZSBj
YW5BbGxvY2F0ZSBiaXQKKy8vIC0gY2xlYXIgdGhlIHNuYXBzaG90IGJpdAorLy8gLSBzZXQgdGhl
IGVkZW4gYml0CisvLyBGaW5pc2ggYWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4K
Ky8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3YXMgY29tcGxldGVseSBlbXB0eS4KKy8v
IC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8gLSBjbGVhciB0aGUgc25hcHNob3QgYml0CisvLyAt
IHNldCB0aGUgZWRlbiBiaXQuCisvLyBGaW5pc2ggYWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0
ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3YXMgY29tcGxldGVseSBl
bXB0eSBpbiBhbm90aGVyIGFsbG9jYXRvci4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8g
LSBjbGVhciBhbGwgYml0cyBpbiB0aGF0IGFsbG9jYXRvcgorLy8gLSBzZXQgdGhlIGxpdmUgYml0
IGluIGFub3RoZXIgYWxsb2NhdG9yIGFuZCB0aGUgZW1wdHkgYml0LgorLy8gLSBjbGVhciB0aGUg
ZW1wdHksIHNuYXBzaG90IGJpdHMuCisvLyAtIHNldCB0aGUgZWRlbiBiaXQuCisvLyBGaW5pc2gg
YWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4KKy8vIFN0YXJ0IGEgZnVsbCBjb2xs
ZWN0aW9uLgorLy8gLSBiZWdpbk1hcmtpbmcoKSBjbGVhcnMgbWFya2luZ05vdEVtcHR5LCBtYXJr
aW5nUmV0aXJlZAorLy8gLSB0aGUgaGVhcCB2ZXJzaW9uIGlzIGluY3JlbWVudGVkCisvLyAtIG1h
cmtpbmcgcmVidWlsZHMgbWFya2luZ05vdEVtcHR5L21hcmtpbmdyZXRpcmVkIGJpdHMuCisvLyBX
ZSBkbyBlbmRNYXJraW5nKCkKKy8vIC0gY2xlYXIgYWxsIGFsbG9jYXRlZCBiaXRzLgorLy8gLSBz
ZXQgY2FuQWxsb2NhdGUvZW1wdHkgdGhlIHNhbWUgd2F5IGFzIGluIGVkZW4gY29sbGVjdGlvbi4K
Ky8vIFNuYXBzaG90dGluZy4KKy8vIC0gc25hcHNob3QgfD0gbGl2ZQorLy8gcHJlcGFyZSBmb3Ig
YWxsb2NhdGlvbi4KKy8vIC0gY2xlYXIgZWRlbi4KKy8vIEZpbmlzaCBjb2xsZWN0aW9uLgorLy8K
Ky8vIE5vdGljZSBob3cgaW4gdGhpcyBzY2hlbWUsIHRoZSBlbXB0eS9jYW5BbGxvY2F0ZSBzdGF0
ZSBzdGF5cyBzZXBhcmF0ZSBmcm9tIHRoZSBtYXJraW5nTm90RW1wdHkvCisvLyBtYXJraW5nUmV0
aXJlZCBzdGF0ZS4gVGhpcyBpcyBvbmUgc3RlcCB0b3dhcmRzIGhhdmluZyBzZXBhcmF0ZWQgYWxs
b2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZS4KKy8vCisvLyBBZnRlciB0aGlzLCB3ZSBqdXN0IG5l
ZWQgdG8gYW5zd2VyIHRoZSBxdWVzdGlvbjogd2hhdCBkb2VzIGFuIG9iamVjdCBhbGxvY2F0ZWQg
ZHVyaW5nIGVkZW4gR0MKKy8vIGxvb2sgbGlrZSB0byB0aGUgR0M/IEkgdGhpbmsgdGhhdCB0aGUg
ZWFzaWVzdCBhbnN3ZXIgaXMgdG8gYWxsb2NhdGUgdGhlIG9iamVjdCB3aGl0ZSBhbmQgdGhlbgor
Ly8gaW1tZWRpYXRlbHkgbWFyayBpdC4gVGhpcyBtYWtlcyB0aGUgb2JqZWN0IGJlaGF2ZSBhcyBp
ZiBpdCB3YXMgYWxsb2NhdGVkIGp1c3QgYmVmb3JlIHRoZSBzdGFydAorLy8gb2YgR0MgYW5kIGl0
IHdhcyBvbiB0aGUgc3RhY2sgYXQgdGhlIGJlZ2lubmluZyBvZiBHQy4gV2Ugd291bGRuJ3QgaGF2
ZSB0byBkbyBhbnl0aGluZyBkaWZmZXJlbnQKKy8vIHdpdGggdGhlIHZhcmlvdXMgYmxvY2sgYml0
cyB3aGVuIGFsbG9jYXRpbmcgZHVyaW5nIEdDOiB3ZSBjb3VsZCBzdGlsbCBzZXQgZWRlbiBhbmQg
YWxsb2NhdGVkCisvLyBzaW5jZSB0aGV5IHdpbGwgYmUgY2xlYXJlZCBhbnl3YXkuCisvLworLy8g
QnV0IHRoaXMgbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdvbid0IGJlIGVsaWdpYmxlIGZvciBmcmVl
aW5nIHVudGlsIHRoZSBuZXh0IGZ1bGwgR0MuIElkZWFsbHkKKy8vIHdlJ2QgbWFrZSB0aGUgb2Jq
ZWN0IGlzIGVsaWdpYmxlIGZvciBmcmVlaW5nIGF0IHRoZSBuZXh0IGVkZW4gR0MuIFRoZXJlJ3Mg
YSBidW5jaCBvZiB0aGluZ3Mgd2UKKy8vIGNvdWxkIGRvIHRvIG1ha2UgdGhpcyBoYXBwZW4uIEhl
cmUgYXJlIHNvbWUgaWRlYXM6CisvLworLy8gLSBJbnRyb2R1Y2UgYSBuZXcgQ2VsbFN0YXRlLCBj
YWxsZWQgRmxvYXQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG9iamVjdCB3YXMgYWxsb2NhdGVkIGR1
cmluZyB0aGUKKy8vICAgR0MuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IG1hcmtpbmcgZG9lcyBu
b3RoaW5nIGZvciBGbG9hdHMuIFRoaXMgd291bGQgbWFrZSBtYXJraW5nIGEgdGlueQorLy8gICBi
aXQgbW9yZSBleHBlbnNpdmUuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBiYXJyaWVyIHJl
Y29nbml6ZXMgc3RvcmVzIHRvIGEgRmxvYXQgdGhlIHNhbWUKKy8vICAgd2F5IHRoYXQgaXQgc2Vl
cyBhIHN0b3JlIHRvIE9sZEJsYWNrOiBpdCBwdXRzIHRoZSBvYmplY3Qgb24gdGhlIG1hcmsgc3Rh
Y2suIEZsb2F0cyB3b3VsZCBiZQorLy8gICBwdXQgb24gdGhlIG1hcmsgc3RhY2sgYXMgRmxvYXRH
cmV5IHRvIGluZGljYXRlIHRoYXQgdGhleSB3aWxsIGJlIHNjYW5uZWQgYnkgdGhlIEdDIGJ1dCB0
aGF0CisvLyAgIHRoZXkgYXJlbid0IGFjdHVhbGx5IG1hcmtlZC4KKy8vCisvLyAtIE1hcmsgdGhl
IG9iamVjdHMgYWZ0ZXIgYWxsb2NhdGlvbiwgYnV0IGFsc28gc2V0IHNvbWUgb3RoZXIgYml0cyB0
byBpbmRpY2F0ZSB0aGF0IHRoZSB0aG9zZQorLy8gICBvYmplY3RzIHNob3VsZCBiZSB1bm1hcmtl
ZCBhdCB0aGUgZW5kIG9mIHRoZSBHQy4KKy8vCisvLyBFaXRoZXIgb2YgdGhlc2UgYXBwcm9hY2hl
cyB3b3VsZCBtYWtlIGNvbGxlY3Rpb25zIG1vcmUgZXhwZW5zaXZlLCBidXQgaXQgZmVlbHMgbGlr
ZSB0aGUgbGF0dGVyCisvLyBhcHByb2FjaCB3b3VsZCBiZSBhIHByb2ZpdGFibGUgb3B0aW1pemF0
aW9uLiBJJ20gYWxzbyByZWFsbHkgZ2V0dGluZyB3b3JyaWVkIGFib3V0IGhvdyB0aGlzIEdDCisv
LyBleHBlcmllbmNlcyBiYWNrd2FyZHMgdGltZSB0cmF2ZWwsIHdpdGggYWxsIHRoZSByZW1hcmtp
bmcgb2YgdGhpbmdzIGxpa2UgbmV3IG9iamVjdHMgYW5kCisvLyB3aGF0bm90LgorCiBjbGFzcyBN
YXJrZWRBbGxvY2F0b3IgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKQEAgLTQ2LDkgKzE0OCwxNiBAQCBwdWJsaWM6CiAKICAgICBNYXJrZWRBbGxvY2F0b3IoSGVh
cCosIE1hcmtlZFNwYWNlKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1
dGVzJik7CiAgICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwotICAgIHZvaWQgcmVzZXQo
KTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBzdG9wQWxsb2Nh
dGluZygpOwogICAgIHZvaWQgcmVzdW1lQWxsb2NhdGluZygpOworICAgIHZvaWQgYmVnaW5NYXJr
aW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICB2b2lkIGVuZE1hcmtpbmcoKTsKKyAgICB2b2lk
IHNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICB2b2lkIHNuYXBzaG90Rm9yRnVsbENv
bGxlY3Rpb24oKTsKKyAgICB2b2lkIHN3ZWVwKCk7CisgICAgdm9pZCBzaHJpbmsoKTsKKyAgICB2
b2lkIGFzc2VydFNuYXBzaG90RW1wdHkoKTsKICAgICBzaXplX3QgY2VsbFNpemUoKSBjb25zdCB7
IHJldHVybiBtX2NlbGxTaXplOyB9CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0
cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgIGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBO
ZWVkc0Rlc3RydWN0aW9uOyB9CkBAIC03Miw2ICsxODEsMzQgQEAgcHVibGljOgogICAgIGJvb2wg
aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYmxv
Y2tTaXplRm9yQnl0ZXMoc2l6ZV90KTsKKyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9C
SVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAgICBcCisgICAgYm9v
bCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fICMj
IGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUo
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0YWxC
aXROYW1lKGJsb2NrLT5pbmRleCgpKTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0
TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4
XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzICMjIGNhcGl0YWxCaXROYW1l
KGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJ
cyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1f
ICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhpbmRleCwgdmFsdWUpOyB9IFwKKyAg
ICBib29sIGF0b21pY1NldEFuZENoZWNrSXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5h
dG9taWNTZXRBbmRDaGVjayhibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgRk9SX0VBQ0hf
TUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKQorI3Vu
ZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAg
ICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwg
Y2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAg
ICAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9D
QUxMQkFDSyk7CisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9Cisg
ICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBuZXh0QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9uZXh0QWxsb2NhdG9yOyB9CisgICAgCisgICAgLy8gTWFya2VkU3BhY2UgY2FsbHMgdGhpcyBk
dXJpbmcgaW5pdC4KKyAgICB2b2lkIHNldE5leHRBbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3IpIHsgbV9uZXh0QWxsb2NhdG9yID0gYWxsb2NhdG9yOyB9CisgICAgCisgICAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5QmxvY2soKTsKKyAgICAKKyAgICBNYXJrZWRCbG9j
azo6SGFuZGxlKiBmaW5kQmxvY2tUb1N3ZWVwKCk7CiAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIE1hcmtlZEJsb2NrOwpAQCAtODIsMjUgKzIxOSwzNyBAQCBwcml2YXRlOgogICAgIHZv
aWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0
ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpOwogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUFs
bG9jYXRlQmxvY2soKTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5k
bGUqKTsKKyAgICB2b2lkKiBhbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZCgpOwotICAgIHZvaWQg
cmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKICAgICB2b2lkIHNldEZyZWVMaXN0
KGNvbnN0IEZyZWVMaXN0Jik7CiAgICAgCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmlsdGVy
TmV4dEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKLSAgICB2b2lkIHNldE5leHRCbG9ja1Rv
U3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSopOwotICAgIAogICAgIEZyZWVMaXN0IG1fZnJlZUxp
c3Q7CisgICAgCisgICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2NrczsKKyAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsKKyAgICAKKyNkZWZpbmUgTUFS
S0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFt
ZSkgXAorICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1lOworICAgIEZPUl9FQUNI
X01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKQor
I3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OCisgICAgCisgICAgLy8gQWZ0
ZXIgeW91IGRvIHNvbWV0aGluZyB0byBhIGJsb2NrIGJhc2VkIG9uIG9uZSBvZiB0aGVzZSBjdXJz
b3JzLCB5b3UgY2xlYXIgdGhlIGJpdCBpbiB0aGUKKyAgICAvLyBjb3JyZXNwb25kaW5nIGJpdHZl
Y3RvciBhbmQgbGVhdmUgdGhlIGN1cnNvciB3aGVyZSBpdCB3YXMuCisgICAgc2l6ZV90IG1fYWxs
b2NhdGlvbkN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMg
YSBjYW5kaWRhdGUgZm9yIGFsbG9jYXRpb24uCisgICAgc2l6ZV90IG1fZW1wdHlDdXJzb3IgeyAw
IH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBl
bXB0eSBhbGxvY2F0aW9uIChhbGxvY2F0aW5nIGluIGVtcHR5IGJsb2NrcykuCisgICAgc2l6ZV90
IG1fc25hcHNob3RDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0
IGlzIGEgY2FuZGlkYXRlIGZvciBpbmNyZW1lbnRhbCBzd2VlcGluZy4KKyAgICAKICAgICBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBtX2N1cnJlbnRCbG9jazsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHRCbG9j
a1RvU3dlZXA7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJh
c2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBtX2Jsb2NrTGlzdDsKLSAg
ICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSwgQmFzaWNSYXdTZW50aW5l
bE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fcmV0aXJlZEJsb2NrczsKKwogICAgIExvY2sg
bV9sb2NrOwogICAgIHVuc2lnbmVkIG1fY2VsbFNpemU7CiAgICAgQWxsb2NhdG9yQXR0cmlidXRl
cyBtX2F0dHJpYnV0ZXM7CiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1hcmtlZFNwYWNlKiBtX21h
cmtlZFNwYWNlOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9uZXh0QWxsb2NhdG9yOwogfTsKIAog
aW5saW5lIHB0cmRpZmZfdCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKQpAQCAt
MTQ5LDIwICsyOTgsMTIgQEAgQUxXQVlTX0lOTElORSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFs
bAogICAgIHJldHVybiBoZWFkOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJl
c3VtZUFsbG9jYXRpbmcoKQotewotICAgIGlmICghbV9sYXN0QWN0aXZlQmxvY2spCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fZnJlZUxpc3QgPSBtX2xhc3RBY3RpdmVCbG9jay0+cmVzdW1lQWxs
b2NhdGluZygpOwotICAgIG1fY3VycmVudEJsb2NrID0gbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAg
bV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4g
aW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKLSAgICBtX2Jsb2NrTGlzdC5mb3JFYWNoKGZ1bmN0b3IpOwotICAgIG1fcmV0
aXJlZEJsb2Nrcy5mb3JFYWNoKGZ1bmN0b3IpOworICAgIG1fbGl2ZS5mb3JFYWNoU2V0Qml0KAor
ICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nr
c1tpbmRleF0pOworICAgICAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMDU4
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3Qg
Ym9vbCBjb21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGljIHNpemVfdCBiYWxhbmNlOwogCi1N
YXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRv
ckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9j
azo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9y
QXR0cmlidXRlcyYgYXR0cmlidXRlcykKIHsKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAg
ICAgICAgYmFsYW5jZSsrOwpAQCAtNDgsMjQgKzQ4LDIwIEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IE1hcmtlZEJsb2NrOjp0cnlDcmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNj
cmliYmxlRnJlZUNlbGxzKCkpCiAgICAgICAgIHNjcmliYmxlKGJsb2NrU3BhY2UsIGJsb2NrU2l6
ZSk7Ci0gICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYWxsb2NhdG9yLCBjZWxsU2l6ZSwgYXR0
cmlidXRlcywgYmxvY2tTcGFjZSk7CisgICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgY2VsbFNp
emUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOwogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlOjpI
YW5kbGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxs
U2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcywgdm9pZCogYmxvY2tT
cGFjZSkKK01hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCBzaXplX3QgY2Vs
bFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIHZvaWQqIGJsb2Nr
U3BhY2UpCiAgICAgOiBtX2F0b21zUGVyQ2VsbCgoY2VsbFNpemUgKyBhdG9tU2l6ZSAtIDEpIC8g
YXRvbVNpemUpCiAgICAgLCBtX2VuZEF0b20oYXRvbXNQZXJCbG9jayAtIG1fYXRvbXNQZXJDZWxs
ICsgMSkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQotICAgICwgbV9zdGF0ZShOZXcp
IC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCi0gICAgLCBtX2FsbG9jYXRvcihhbGxv
Y2F0b3IpCi0gICAgLCBtX3dlYWtTZXQoYWxsb2NhdG9yLT5oZWFwKCktPnZtKCksIENlbGxDb250
YWluZXIoKSkKKyAgICAsIG1fd2Vha1NldChoZWFwLnZtKCksIENlbGxDb250YWluZXIoKSkKIHsK
ICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1NwYWNlKSBNYXJrZWRCbG9jaygqaGVh
cC52bSgpLCAqdGhpcyk7CiAgICAgCiAgICAgbV93ZWFrU2V0LnNldENvbnRhaW5lcigqbV9ibG9j
ayk7CiAgICAgCiAgICAgaGVhcC5kaWRBbGxvY2F0ZUJsb2NrKGJsb2NrU2l6ZSk7Ci0gICAgSEVB
UF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICBBU1NFUlQoYWxsb2NhdG9y
KTsKICAgICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90
TmVlZERlc3RydWN0aW9uKTsKIH0KQEAgLTc4LDYgKzc0LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6fkhhbmRsZSgpCiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBk
YXRhTG9nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9Cisg
ICAgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgIG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwog
ICAgIGZhc3RBbGlnbmVkRnJlZShtX2Jsb2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9j
a1NpemUpOwpAQCAtMTAxLDIxICs5OCwyMiBAQCBNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soVk0m
IHZtLCBIYW5kbGUmCiAgICAgbV9iaWFzZWRNYXJrQ291bnQgPSBtX21hcmtDb3VudEJpYXM7IC8v
IFRoaXMgbWVhbnMgd2UgaGF2ZW4ndCBtYXJrZWQgYW55dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0
ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxh
dGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6
OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9u
TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4K
IEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoKQogewotICAg
IFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBBU1NFUlQo
YmxvY2tTdGF0ZSA9PSBOZXcgfHwgYmxvY2tTdGF0ZSA9PSBNYXJrZWQpOwotICAgIEFTU0VSVCgh
KGRlc3RydWN0aW9uTW9kZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9
PSBTd2VlcE9ubHkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghKGRlc3RydWN0aW9uTW9kZSA9PSBE
b2VzTm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsKKyAgICBS
RUxFQVNFX0FTU0VSVCghKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGVt
cHR5TW9kZSA9PSBJc0VtcHR5KSk7CiAgICAgCisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOworCiAgICAgYXNzZXJ0RmxpcHBlZCgpOwogICAgIE1hcmtlZEJs
b2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7CiAgICAgCi0gICAgYm9vbCBpc05ld0Jsb2NrID0g
YmxvY2tTdGF0ZSA9PSBOZXc7Ci0gICAgYm9vbCBpc0VtcHR5QmxvY2sgPSAhYmxvY2suaGFzQW55
TWFya2VkKCkKLSAgICAgICAgJiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3
bHlBbGxvY2F0ZWQKLSAgICAgICAgJiYgZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb247Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKSAmJiAoaXNOZXdC
bG9jayB8fCBpc0VtcHR5QmxvY2spKSB7CisgICAgbV9hbGxvY2F0b3ItPnNldElzU25hcHNob3Qo
dGhpcywgZmFsc2UpOworICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2NhdG9yKCkK
KyAgICAgICAgJiYgZW1wdHlNb2RlID09IElzRW1wdHkKKyAgICAgICAgJiYgbmV3bHlBbGxvY2F0
ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQpIHsKICAgICAgICAgQVNTRVJUKGJs
b2NrLm1fbWFya3MuaXNFbXB0eSgpKTsKICAgICAgICAgCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZM
YXN0Q2VsbCA9IHN0YXRpY19jYXN0PGNoYXIqPihjZWxsQWxpZ24oYmxvY2suYXRvbXMoKSArIG1f
ZW5kQXRvbSAtIDEpKTsKQEAgLTEyNCw3ICsxMjIsMTAgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6
OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgICAgICBjaGFyKiBwYXlsb2FkQmVnaW4gPSBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KGJsb2NrLmF0b21zKCkgKyBmaXJzdEF0b20oKSk7CiAgICAgICAgIGlmIChz
Y3JpYmJsZU1vZGUgPT0gU2NyaWJibGUpCiAgICAgICAgICAgICBzY3JpYmJsZShwYXlsb2FkQmVn
aW4sIHBheWxvYWRFbmQgLSBwYXlsb2FkQmVnaW4pOwotICAgICAgICBtX3N0YXRlID0gKChzd2Vl
cE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSA/IEZyZWVMaXN0ZWQgOiBNYXJrZWQpOworICAgICAg
ICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgICAgIHNldElzRnJl
ZUxpc3RlZCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2FsbG9jYXRvci0+c2V0SXNF
bXB0eSh0aGlzLCB0cnVlKTsKICAgICAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6OmJ1
bXAocGF5bG9hZEVuZCwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7CiAgICAgICAgIGlmIChm
YWxzZSkKICAgICAgICAgICAgIGRhdGFMb2coIlF1aWNrbHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9p
bnRlcih0aGlzKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSgpLCAiIGFuZCBhdHRyaWJ1
dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTEzNywxNCArMTM4
LDE0IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICBGcmVl
Q2VsbCogaGVhZCA9IDA7CiAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICBmb3IgKHNpemVfdCBp
ID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAg
ICAgICAgaWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkCisgICAgICAgIGlmIChlbXB0eU1vZGUgPT0g
Tm90RW1wdHkKICAgICAgICAgICAgICYmIChibG9jay5tX21hcmtzLmdldChpKQogICAgICAgICAg
ICAgICAgIHx8IChuZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYgbV9u
ZXdseUFsbG9jYXRlZC0+Z2V0KGkpKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmJsb2Nr
LmF0b21zKClbaV0pOwogCi0gICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNEZXN0
cnVjdGlvbiAmJiBibG9ja1N0YXRlICE9IE5ldykKKyAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9k
ZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGVtcHR5TW9kZSA9PSBOb3RFbXB0eSkKICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpLT5jYWxsRGVzdHJ1Y3Rvcigqdm0oKSk7CiAK
ICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKQEAgLTE2Myw3ICsx
NjQsMTMgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgICAg
ICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKIAogICAgIEZyZWVMaXN0IHJlc3VsdCA9IEZy
ZWVMaXN0OjpsaXN0KGhlYWQsIGNvdW50ICogY2VsbFNpemUoKSk7Ci0gICAgbV9zdGF0ZSA9IChz
d2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0ID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7CisgICAg
aWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHNldElzRnJlZUxpc3Rl
ZCgpOworICAgIGVsc2UgeworICAgICAgICB1bnNpZ25lZCBjZWxsc1BlckJsb2NrID0gTWFya2Vk
U3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7CisgICAgICAgIGlmIChjb3VudCA9PSBj
ZWxsc1BlckJsb2NrKQorICAgICAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywg
dHJ1ZSk7CisgICAgfQogICAgIGlmIChmYWxzZSkKICAgICAgICAgZGF0YUxvZygiU2xvd2x5IHN3
ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIoJmJsb2NrKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxs
U2l6ZSgpLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcmVzdWx0LCAi
XG4iKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTczLDEzICsxODAsMTggQEAgRnJlZUxpc3Qg
TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXAoU3dlZQogewogICAgIGZsaXBJZk5lY2Vzc2FyeSgp
OwogICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0KICAg
ICBtX3dlYWtTZXQuc3dlZXAoKTsKIAogICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYm
IG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKQogICAg
ICAgICByZXR1cm4gRnJlZUxpc3QoKTsKIAorICAgIGlmIChVTkxJS0VMWShtX2lzRnJlZUxpc3Rl
ZCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dCk7CisgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQo
IW1fYWxsb2NhdG9yLT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAgCiAgICAgaWYgKG1fYXR0cmli
dXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gc3dl
ZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8TmVlZHNEZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsK
ICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8RG9lc05vdE5lZWREZXN0
cnVjdGlvbj4oc3dlZXBNb2RlKTsKQEAgLTE4OSw0NyArMjAxLDQ0IEBAIHRlbXBsYXRlPERlc3Ry
dWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7CiAg
ICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCi0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNl
bGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgU2NyaWJibGU+KHN3ZWVwTW9k
ZSk7Ci0gICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGU8ZGVzdHJ1
Y3Rpb25Nb2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9kZSk7CisgICAgICAgIHJldHVybiBzd2Vl
cEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1v
ZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1v
ZGUsIERvbnRTY3JpYmJsZT4oc3dlZXBNb2RlKTsKIH0KIAogdGVtcGxhdGU8RGVzdHJ1Y3Rpb25N
b2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNj
cmliYmxlTW9kZT4KLUZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2Vs
ZWN0U3RhdGVBbmRTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK0ZyZWVMaXN0IE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVwTW9kZSBzd2Vl
cE1vZGUpCiB7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBOZXc6Ci0gICAgICAg
IEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIHNw
ZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2Ny
aWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgIGNhc2UgRnJlZUxp
c3RlZDoKLSAgICAgICAgLy8gSGFwcGVucyB3aGVuIGEgYmxvY2sgdHJhbnNpdGlvbnMgdG8gZnVs
bHkgYWxsb2NhdGVkLgotICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dCk7Ci0gICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAgIGNhc2UgQWxsb2NhdGVkOgotICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gRnJlZUxp
c3QoKTsKLSAgICBjYXNlIE1hcmtlZDoKLSAgICAgICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQpIHsK
LSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAg
ICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0
cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAg
ICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9u
TW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAg
ICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBk
ZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4o
KQotICAgICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwg
ZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+
KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gRnJlZUxpc3QoKTsKKyAgICBpZiAobV9hbGxvY2F0b3ItPmlzRW1wdHkodGhp
cykpCisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPElz
RW1wdHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworICAgIHJl
dHVybiBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPE5vdEVtcHR5LCBkZXN0cnVj
dGlvbk1vZGUsIHNjcmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8TWFya2Vk
QmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3Ry
dWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9k
ZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3
bHlBbGxvY2F0ZWQoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAobV9uZXdseUFsbG9j
YXRlZCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9k
ZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPihzd2Vl
cE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUs
IGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
Pihzd2VlcE1vZGUpOworfQorCit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1v
ZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVw
TW9kZSkKK3sKKyAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAg
cmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3Ry
dWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0
dXJuIHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CiB9CiAKIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCkKIHsKLSAgICBmbGlw
SWZOZWNlc3NhcnkoKTsKLSAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9O
KHRoaXMpOwotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7
Ci0gICAgbV9zdGF0ZSA9IE1hcmtlZDsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lzRnJlZUxpc3Rl
ZCk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpzZXRJc0ZyZWVMaXN0ZWQoKQoreworICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5
KHRoaXMsIGZhbHNlKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IHRydWU7CiB9CiAKIGNsYXNzIFNl
dE5ld2x5QWxsb2NhdGVkRnVuY3RvciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3Ig
ewpAQCAtMjUzLDI1ICsyNjIsMTYgQEAgcHJpdmF0ZToKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRnJlZUxpc3QmIGZyZWVMaXN0KQogewogICAgIGZsaXBJ
Zk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7
CisgICAgCisgICAgQVNTRVJUKCFhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOwogCi0g
ICAgaWYgKG1fc3RhdGUgPT0gTWFya2VkKSB7Ci0gICAgICAgIC8vIElmIHRoZSBibG9jayBpcyBp
biB0aGUgTWFya2VkIHN0YXRlIHRoZW4gd2Uga25vdyB0aGF0IG9uZSBvZiB0aGVzZQotICAgICAg
ICAvLyBjb25kaXRpb25zIGhvbGRzOgotICAgICAgICAvLwotICAgICAgICAvLyAtIEl0IHdhcyBu
b3QgdXNlZCBmb3IgYWxsb2NhdGlvbiBkdXJpbmcgdGhlIHByZXZpb3VzIGFsbG9jYXRpb24gY3lj
bGUuCi0gICAgICAgIC8vICAgSXQgbWF5IGhhdmUgZGVhZCBvYmplY3RzLCBhbmQgd2Ugb25seSBr
bm93IHRoZW0gdG8gYmUgZGVhZCBieSB0aGUKLSAgICAgICAgLy8gICBmYWN0IHRoYXQgdGhlaXIg
bWFyayBiaXRzIGFyZSB1bnNldC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBTb21lb25lIGhh
ZCBhbHJlYWR5IGRvbmUgc3RvcEFsbG9jYXRpbmcoKSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBvZgot
ICAgICAgICAvLyAgIGhlYXAgaXRlcmF0aW9uLCBhbmQgdGhleSBoYWQgYWxyZWFkeSAKLSAgICAg
ICAgLy8gSGVuY2UgaWYgdGhlIGJsb2NrIGlzIE1hcmtlZCB3ZSBuZWVkIHRvIGxlYXZlIGl0IE1h
cmtlZC4KKyAgICBpZiAoIWlzRnJlZUxpc3RlZCgpKSB7CisgICAgICAgIC8vIFRoaXMgbWVhbnMg
dGhhdCB3ZSBlaXRoZXIgZGlkbid0IHVzZSB0aGlzIGJsb2NrIGF0IGFsbCBmb3IgYWxsb2NhdGlv
biBzaW5jZSBsYXN0IEdDLAorICAgICAgICAvLyBvciBzb21lb25lIGhhZCBhbHJlYWR5IGRvbmUg
c3RvcEFsbG9jYXRpbmcoKSBiZWZvcmUuCiAgICAgICAgIEFTU0VSVChmcmVlTGlzdC5hbGxvY2F0
aW9uV2lsbEZhaWwoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgQVNTRVJU
KG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0gICAgCiAgICAgLy8gUm9sbCBiYWNrIHRvIGEgY29o
ZXJlbnQgc3RhdGUgZm9yIEhlYXAgaW50cm9zcGVjdGlvbi4gQ2VsbHMgbmV3bHkKICAgICAvLyBh
bGxvY2F0ZWQgZnJvbSBvdXIgZnJlZSBsaXN0IGFyZSBub3QgY3VycmVudGx5IG1hcmtlZCwgc28g
d2UgbmVlZCBhbm90aGVyCiAgICAgLy8gd2F5IHRvIHRlbGwgd2hhdCdzIGxpdmUgdnMgZGVhZC4g
CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2Nh
dGluZwogICAgICAgICAgICAgY2xlYXJOZXdseUFsbG9jYXRlZChjZWxsKTsKICAgICAgICAgfSk7
CiAgICAgCi0gICAgbV9zdGF0ZSA9IE1hcmtlZDsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNl
OwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkK
QEAgLTMwNSwxMyArMzA1LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5j
ZVRvRmkKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcoKQog
ewogICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT04odGhpcyk7CiAKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOworICAgIEFTU0VS
VCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICBBU1NFUlQoIWlzRnJlZUxp
c3RlZCgpKTsKIAogICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAvLyBXZSBk
aWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAuIFRoYXQgbWVh
bnMgd2Ugd2VyZSBhbHJlYWR5IE1hcmtlZAotICAgICAgICAvLyB3aGVuIHdlIGxhc3Qgc3RvcHBl
ZCBhbGxvY2F0aW9uLCBzbyByZXR1cm4gYW4gZW1wdHkgZnJlZSBsaXN0IGFuZCBzdGF5IGluIHRo
ZSBNYXJrZWQgc3RhdGUuCisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXho
YXVzdGVkIHRoZSBibG9jayB3aGVuIHdlIHN0b3BwZWQgYWxsb2NhdGlvbi4KICAgICAgICAgcmV0
dXJuIEZyZWVMaXN0KCk7CiAgICAgfQogCkBAIC0zNjYsMTcgKzM2NSwxNyBAQCB2b2lkIE1hcmtl
ZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNCiB7CiAgICAgQVNTRVJUKHZtKCktPmhlYXAu
b2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKLSAgICBpZiAobmVlZHNGbGlwKCkpCisgICAgaWYgKG5lZWRzRmxpcCgpKSB7CiAgICAgICAg
IGNsZWFyTWFya3MoKTsKKyAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25l
cyB0byBtYXJrIGFueSBvYmplY3QgaW4gdGhpcyBibG9jay4KKyAgICAgICAgaGFuZGxlKCkuYWxs
b2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0
cnVlKTsKKyAgICB9CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQogewogICAg
IG1fbWFya3MuY2xlYXJBbGwoKTsKICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIC8vIFRo
aXMgd2lsbCBiZWNvbWUgdHJ1ZSBhdCB0aGUgZW5kIG9mIHRoZSBtYXJrIHBoYXNlLiBXZSBzZXQg
aXQgbm93IHRvCi0gICAgLy8gYXZvaWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4KLSAg
ICBoYW5kbGUoKS5tX3N0YXRlID0gTWFya2VkOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7
CiAgICAgbV92ZXJzaW9uID0gdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKIH0K
QEAgLTM5OCwxOSArMzk3LDExIEBAIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlw
KCkKICAgICByZXR1cm4gbV9ibG9jay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6d2lsbFJlbW92ZUJsb2NrKCkKLXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsK
LX0KLQogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QoKQogewot
ICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJ
T04odGhpcyk7Ci0gICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0KLSAg
ICBtX3N0YXRlID0gQWxsb2NhdGVkOworICAgIEFTU0VSVChpc0ZyZWVMaXN0ZWQoKSk7CisgICAg
bV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKKyAgICBhbGxvY2F0b3IoKS0+c2V0SXNBbGxvY2F0ZWQo
dGhpcywgdHJ1ZSk7CiB9CiAKIHNpemVfdCBNYXJrZWRCbG9jazo6bWFya0NvdW50KCkKQEAgLTQy
MSw4ICs0MTIsNyBAQCBzaXplX3QgTWFya2VkQmxvY2s6Om1hcmtDb3VudCgpCiAKIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNFbXB0eSgpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0g
ICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkICYmICFibG9jaygpLmhhc0FueU1hcmtlZCgpICYm
IG1fd2Vha1NldC5pc0VtcHR5KCkgJiYgKCFtX25ld2x5QWxsb2NhdGVkIHx8IG1fbmV3bHlBbGxv
Y2F0ZWQtPmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMp
OwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhckhhc0FueU1hcmtlZCgpCkBAIC00MzIsMzMg
KzQyMiwzNiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhckhhc0FueU1hcmtlZCgpCiAKIHZvaWQg
TWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KCkKIHsKLSAgICBoYW5kbGUoKS5tX2FsbG9jYXRv
ci0+cmV0aXJlKCZoYW5kbGUoKSk7CisgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1Nl
dEFuZENoZWNrSXNNYXJraW5nUmV0aXJlZCgmaGFuZGxlKCksIHRydWUpOwogfQogCi19IC8vIG5h
bWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnJlbW92ZUZyb21BbGxvY2F0b3IoKQoreworICAgIGlmICghbV9hbGxvY2F0b3IpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBtX2FsbG9jYXRvci0+cmVtb3ZlQmxvY2sodGhpcyk7Cit9CiAK
LXVzaW5nIG5hbWVzcGFjZSBKU0M7Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRv
QWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgaW5kZXgpCit7Cisg
ICAgQVNTRVJUKG1faW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7
CisgICAgQVNTRVJUKCFtX2FsbG9jYXRvcik7CisgICAgCisgICAgbV9pbmRleCA9IGluZGV4Owor
ICAgIG1fYWxsb2NhdG9yID0gYWxsb2NhdG9yOworfQogCi12b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgTWFya2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSkKK3ZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpCiB7Ci0gICAgc3dp
dGNoIChibG9ja1N0YXRlKSB7Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TmV3OgotICAgICAgICBv
dXQucHJpbnQoIk5ldyIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6
RnJlZUxpc3RlZDoKLSAgICAgICAgb3V0LnByaW50KCJGcmVlTGlzdGVkIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpBbGxvY2F0ZWQ6Ci0gICAgICAgIG91dC5wcmlu
dCgiQWxsb2NhdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpN
YXJrZWQ6Ci0gICAgICAgIG91dC5wcmludCgiTWFya2VkIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBmbGlwSWZOZWNlc3Nh
cnkoKTsKKyAgICAKKyAgICBBU1NFUlQobV9pbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworICAgIAorICAgIG1faW5k
ZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworICAgIG1fYWxsb2NhdG9y
ID0gbnVsbHB0cjsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV1RGCit9IC8vIG5hbWVzcGFjZSBKU0MK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lv
biAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCwyMCArNDQsNiBAQCBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiB0
eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogdHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKIAot
Ly8gU2V0IHRvIGxvZyBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBibG9ja3MuCi0jZGVmaW5lIEhFQVBf
TE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05TIDAKLQotI2lmIEhFQVBfTE9HX0JMT0NLX1NUQVRF
X1RSQU5TSVRJT05TCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oaGFu
ZGxlKSBkbyB7ICAgICAgICAgICAgXAotICAgICAgICBkYXRhTG9nRiggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICIlczolZCAlczog
YmxvY2sgJXMgPSAlcCwgJWRcbiIsICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBf
X0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXywgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICAgICAgI2hhbmRsZSwgJihoYW5kbGUpLT5ibG9jaygpLCAoaGFuZGxlKS0+bV9zdGF0ZSk7
ICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLSNlbHNlCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NL
X1NUQVRFX1RSQU5TSVRJT04oaGFuZGxlKSAoKHZvaWQpMCkKLSNlbmRpZgotCiAvLyBBIG1hcmtl
ZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25lZCBjb250YWluZXIgZm9yIGhlYXAtYWxsb2NhdGVkIG9i
amVjdHMuCiAvLyBPYmplY3RzIGFyZSBhbGxvY2F0ZWQgd2l0aGluIGNlbGxzIG9mIHRoZSBtYXJr
ZWQgYmxvY2suIEZvciBhIGdpdmVuCiAvLyBtYXJrZWQgYmxvY2ssIGFsbCBjZWxscyBoYXZlIHRo
ZSBzYW1lIHNpemUuIE9iamVjdHMgc21hbGxlciB0aGFuIHRoZQpAQCAtNzYsOCArNjIsNiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIYW5kbGU7CiBwdWJsaWM6Ci0gICAg
ZW51bSBCbG9ja1N0YXRlIDogdWludDhfdCB7IE5ldywgRnJlZUxpc3RlZCwgQWxsb2NhdGVkLCBN
YXJrZWQgfTsKLSAgICAgICAgCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tU2l6ZSA9IDE2
OyAvLyBieXRlcwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0gMTYgKiBLQjsK
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrTWFzayA9IH4oYmxvY2tTaXplIC0gMSk7IC8v
IGJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgpAQCAtMTMwLDYgKzExNCwxNCBAQCBw
dWJsaWM6CiAgICAgICAgIFZNKiB2bSgpIGNvbnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0
KCk7CiAgICAgICAgICAgICAKKyAgICAgICAgLy8gU3dlZXBpbmcgZW5zdXJlcyB0aGF0IGRlc3Ry
dWN0b3JzIGdldCBjYWxsZWQgYW5kIHJlbW92ZXMgdGhlIGJsb2NrIGZyb20gdGhlIHNuYXBzaG90
LgorICAgICAgICAvLyBTd2VlcGluZyB0byBmcmVlIGxpc3QgYWxzbyByZW1vdmVzIHRoZSBibG9j
ayBmcm9tIHRoZSBlbXB0eSBzZXQsIGlmIGl0IHdhcyBpbiB0aGF0IHNldC4KKyAgICAgICAgLy8g
U3dlZXBpbmcgb25seSBtYXkgYWRkIHRoaXMgYmxvY2sgdG8gdGhlIGVtcHR5IHNldCwgaWYgdGhl
IGJsb2NrIGlzIGZvdW5kIHRvIGJlIGVtcHR5LgorICAgICAgICAvLworICAgICAgICAvLyBOb3Rl
IHRoYXQgeW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGVtcHR5IGJpdCByZWZsZWN0cyBy
ZWFsaXR5LiBJZiBpdCdzIG5vdCBzZXQKKyAgICAgICAgLy8gYW5kIHRoZSBibG9jayBpcyBmcmVz
aGx5IGNyZWF0ZWQsIHRoZW4gd2UnbGwgbWFrZSB0aGUgbWlzdGFrZSBvZiBydW5uaW5nIGRlc3Ry
dWN0b3JzIGluCisgICAgICAgIC8vIHRoZSBibG9jay4gSWYgaXQncyBub3Qgc2V0IGFuZCB0aGUg
YmxvY2sgaGFzIG5vdGhpbmcgbWFya2VkLCB0aGVuIHdlJ2xsIG1ha2UgdGhlCisgICAgICAgIC8v
IG1pc3Rha2Ugb2YgbWFraW5nIGEgcG9wIGZyZWVsaXN0IHJhdGhlciB0aGFuIGEgYnVtcCBmcmVl
bGlzdC4KICAgICAgICAgZW51bSBTd2VlcE1vZGUgeyBTd2VlcE9ubHksIFN3ZWVwVG9GcmVlTGlz
dCB9OwogICAgICAgICBGcmVlTGlzdCBzd2VlcChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAg
ICAgICAKQEAgLTE1Myw4ICsxNDUsNiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFuZCB3YXMgc3Vj
Y2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAgICAgICAgYm9vbCBjbGVh
ck5ld2x5QWxsb2NhdGVkKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgdm9pZCBmbGlwRm9yRWRl
bkNvbGxlY3Rpb24oKTsKLSAgICAgICAgICAgIAogICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsK
ICAgICAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0Owog
ICAgICAgICBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb24oKSBjb25zdDsKQEAgLTE2NCw4ICsx
NTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBtYXJrQ291bnQoKTsKICAgICAgICAgc2l6
ZV90IHNpemUoKTsKICAgICAgICAgICAgIAotICAgICAgICBib29sIGlzTGl2ZShjb25zdCBIZWFw
Q2VsbCopOwotICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCopOworICAgICAgICBp
bmxpbmUgYm9vbCBpc0xpdmUoY29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgaW5saW5lIGJvb2wg
aXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxs
b2NhdGVkKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBpc05l
d2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKQEAgLTE3NCwxNSArMTY0LDkgQEAgcHVibGljOgog
ICAgICAgICAKICAgICAgICAgYm9vbCBoYXNBbnlOZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9uZXdseUFsbG9jYXRlZDsgfQogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNB
bGxvY2F0ZWQoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwotICAgICAg
ICBib29sIGlzRnJlZUxpc3RlZCgpIGNvbnN0OwotICAgICAgICBib29sIG5lZWRzU3dlZXBpbmco
KSBjb25zdDsKLSAgICAgICAgdm9pZCB3aWxsUmVtb3ZlQmxvY2soKTsKLQogICAgICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNvbnN0
IEZ1bmN0b3ImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlv
blN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25z
dCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
SXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVh
Y2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBu
ZWVkc0ZsaXAoKTsKICAgICAgICAgICAgIApAQCAtMTkyLDEzICsxNzYsMTcgQEAgcHVibGljOgog
ICAgICAgICAgICAgCiAgICAgICAgIHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAgICAg
Ci0gICAgICAgIGJvb2wgaXNPbkJsb2Nrc1RvU3dlZXAoKSBjb25zdCB7IHJldHVybiBtX2lzT25C
bG9ja3NUb1N3ZWVwOyB9Ci0gICAgICAgIHZvaWQgc2V0SXNPbkJsb2Nrc1RvU3dlZXAoYm9vbCB2
YWx1ZSkgeyBtX2lzT25CbG9ja3NUb1N3ZWVwID0gdmFsdWU7IH0KKyAgICAgICAgYm9vbCBpc0Zy
ZWVMaXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnJlZUxpc3RlZDsgfQorICAgICAgICAKKyAg
ICAgICAgc2l6ZV90IGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgICAgICAK
KyAgICAgICAgdm9pZCByZW1vdmVGcm9tQWxsb2NhdG9yKCk7CisgICAgICAgIAorICAgICAgICB2
b2lkIGRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBpbmRleCk7Cisg
ICAgICAgIHZvaWQgZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgICAgICAKLSAgICAgICAg
QmxvY2tTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICAgICAgICAg
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIEhhbmRsZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwg
c2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiwgdm9pZCopOworICAg
ICAgICBIYW5kbGUoSGVhcCYsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmli
dXRlcyYsIHZvaWQqKTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlv
bk1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3
ZWVwTW9kZSA9IFN3ZWVwT25seSk7CkBAIC0yMDYsMTYgKzE5NCwyNiBAQCBwdWJsaWM6CiAgICAg
ICAgIGVudW0gU2NyaWJibGVNb2RlIHsgRG9udFNjcmliYmxlLCBTY3JpYmJsZSB9OwogICAgICAg
ICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgot
ICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVw
TW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0RW1w
dHlNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAgICAgICAgICAKKyAgICAgICAgZW51
bSBFbXB0eU1vZGUgeyBJc0VtcHR5LCBOb3RFbXB0eSB9OworICAgICAgICAKKyAgICAgICAgdGVt
cGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZT4KKyAgICAgICAg
RnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgPSBT
d2VlcE9ubHkpOworICAgICAgICAKICAgICAgICAgZW51bSBOZXdseUFsbG9jYXRlZE1vZGUgeyBI
YXNOZXdseUFsbG9jYXRlZCwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCB9OwotICAgICAgICAg
ICAgCi0gICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25N
b2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgCisgICAgICAg
IHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5
QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1v
ZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVt
cHR5TW9kZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlB
bGxvY2F0ZWRNb2RlPgogICAgICAgICBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVwKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICAgICAgdm9pZCBm
b3JFYWNoRnJlZUNlbGwoY29uc3QgRnJlZUxpc3QmLCBjb25zdCBGdW5jJik7Ci0gICAgICAgICAg
ICAKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIAog
ICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX3ByZXY7CiAgICAgICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIG1fbmV4dDsKICAgICAgICAgICAgIApAQCAtMjI1LDE2ICsyMjMsMTYgQEAgcHVi
bGljOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+
IG1fbmV3bHlBbGxvY2F0ZWQ7CiAgICAgICAgICAgICAKICAgICAgICAgQWxsb2NhdG9yQXR0cmli
dXRlcyBtX2F0dHJpYnV0ZXM7Ci0gICAgICAgIEJsb2NrU3RhdGUgbV9zdGF0ZTsKLSAgICAgICAg
Ym9vbCBtX2lzT25CbG9ja3NUb1N3ZWVwIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2lzRnJl
ZUxpc3RlZCB7IGZhbHNlIH07CiAgICAgICAgICAgICAKLSAgICAgICAgTWFya2VkQWxsb2NhdG9y
KiBtX2FsbG9jYXRvcjsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvciB7IG51
bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OwogICAgICAgICAgICAg
CiAgICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrOwogICAgIH07CiAgICAgICAgIAotICAgIHN0
YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRv
ciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOworICAgIHN0
YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYsIHNpemVfdCBjZWxsU2l6
ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwogICAgICAgICAKICAgICBIYW5kbGUmIGhh
bmRsZSgpOwogICAgICAgICAKQEAgLTI3NSw3ICsyNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
c3NlcnRGbGlwcGVkKCk7CiAgICAgICAgIAogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNEZXN0cnVjdGlvbjsgfQotICAgICAgICAKKyAgICAKIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXpl
IC0gMTsKIApAQCAtNDkyLDE3ICs0OTAsNiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpmbGlwSWZOCiAgICAgYmxvY2soKS5mbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKGhl
YXBWZXJzaW9uKTsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcEZv
ckVkZW5Db2xsZWN0aW9uKCkKLXsKLSAgICBhc3NlcnRGbGlwcGVkKCk7Ci0gICAgICAgIAotICAg
IEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgCi0gICAgQVNTRVJU
KG1fc3RhdGUgIT0gTmV3ICYmIG1fc3RhdGUgIT0gRnJlZUxpc3RlZCk7Ci0gICAgCi0gICAgbV9z
dGF0ZSA9IE1hcmtlZDsKLX0KLQogI2lmIEFTU0VSVF9ESVNBQkxFRAogaW5saW5lIHZvaWQgTWFy
a2VkQmxvY2s6OmFzc2VydEZsaXBwZWQoKQogewpAQCAtNTUyLDEzICs1MzksMTEgQEAgaW5saW5l
IGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZQogCiBpbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqIGNl
bGwpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKICAgICByZXR1cm4gbV9ibG9j
ay0+aXNNYXJrZWQoY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNOZXdseUFsbG9jYXRl
ZChjZWxsKSk7CiB9CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlB
bGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgQVNTRVJUKG1faGFuZGxlLm1f
c3RhdGUgPT0gTWFya2VkKTsKICAgICByZXR1cm4gaXNNYXJrZWQoY2VsbCkgfHwgKG1faGFuZGxl
Lm1fbmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiB9
CiAKQEAgLTU2OSwyNiArNTU0LDYgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2Vk
T3JOZXdseQogICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiB9CiAK
LWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCog
Y2VsbCkKLXsKLSAgICBhc3NlcnRGbGlwcGVkKCk7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0g
ICAgY2FzZSBBbGxvY2F0ZWQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2FzZSBNYXJr
ZWQ6Ci0gICAgICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7Ci0KLSAg
ICBjYXNlIE5ldzoKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogaW5saW5l
IGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQogewogICAgIEFTU0VSVChN
YXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSk7CkBAIC02MDMsMTMgKzU2OCw2IEBAIGlubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm8KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lk
KiBwKQotewotICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsK
LX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
CiB7CkBAIC02MjIsNjIgKzU4MCw2IEBAIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxv
Y2s6OkhhbmQKICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewot
ICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJp
YnV0ZXMuY2VsbEtpbmQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9l
bmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIEhlYXBDZWxsKiBjZWxsID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7Ci0g
ICAgICAgIGlmICghaXNMaXZlKGNlbGwpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKLSAgICB9Ci0gICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPgotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNo
RGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBmbGlwSWZOZWNlc3Nhcnko
KTsKLSAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOwotICAg
IGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21z
UGVyQ2VsbCkgewotICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOwotICAgICAgICBpZiAoaXNMaXZlKGNl
bGwpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwg
a2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6RG9uZTsKLSAgICB9Ci0gICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRzU3dlZXBp
bmcoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMp
LT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0K
LWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzQWxsb2NhdGVkKCkgY29uc3QKLXsK
LSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNz
YXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gQWxsb2NhdGVkOwotfQotCi1pbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2Fz
dDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJl
dHVybiBtX3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Okhh
bmRsZTo6aXNGcmVlTGlzdGVkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2Nr
OjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUg
PT0gRnJlZUxpc3RlZDsKLX0KLQogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omhhc0FueU1hcmtl
ZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmlhc2VkTWFya0NvdW50ICE9IG1fbWFya0NvdW50
QmlhczsKQEAgLTcxMSw4ICs2MTMsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxK
U0M6Ok1hcmtlCiAgICAgdHlwZWRlZiBNYXJrZWRCbG9ja0hhc2ggSGFzaDsKIH07CiAKLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6Ok1hcmtlZEJsb2NrOjpCbG9ja1N0
YXRlKTsKLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBNYXJrZWRCbG9ja19oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
a0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTWFya2VkQWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25z
dCBIZWFwQ2VsbCogY2VsbCkKK3sKKyAgICBhc3NlcnRGbGlwcGVkKCk7CisgICAgQVNTRVJUKCFp
c0ZyZWVMaXN0ZWQoKSk7CisKKyAgICBpZiAoYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5
QWxsb2NhdGVkKGNlbGwpOworfQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20ocCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNv
bnN0IEhlYXBDZWxsKj4ocCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KK2lu
bGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExpdmVDZWxs
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAg
SGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAgICBmb3IgKHNp
emVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwp
IHsKKyAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2Vs
bCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKKyAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9
PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lOworICAgIH0KKyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CitpbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQoreworICAgIGZsaXBJZk5lY2Vzc2FyeSgpOworICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQg
PSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgp
OyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CisgICAgICAgIEhlYXBDZWxs
KiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMo
KVtpXSk7CisgICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRv
bmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOworICAgIH0KKyAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJ
KHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSwxOSBAQCBNYXJrZWRTcGFjZTo6
TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOworICAgIAorICAgIE1hcmtl
ZEFsbG9jYXRvciogcHJldmlvdXMgPSBudWxscHRyOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisg
ICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1
cyB7CisgICAgICAgICAgICAvLyBXZSBjYW4gc2V0IHRoaXMgaW4gYW55IG9yZGVyLiBUaGUgcG9p
bnQgaXMganVzdCB0aGF0IHdlIHdhbnQgdG8gYmUgYWJsZSB0bworICAgICAgICAgICAgLy8gY3Vy
c29yIG92ZXIgYWxsb2NhdG9ycy4KKyAgICAgICAgICAgIGFsbG9jYXRvci5zZXROZXh0QWxsb2Nh
dG9yKHByZXZpb3VzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHJldmlvdXMgPSAmYWxs
b2NhdG9yOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cisg
ICAgICAgIH0pOworICAgIG1fZmlyc3RBbGxvY2F0b3IgPSBwcmV2aW91czsKKyAgICBtX2FsbG9j
YXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IHByZXZpb3VzOwogfQogCiBNYXJrZWRTcGFjZTo6fk1h
cmtlZFNwYWNlKCkKQEAgLTI1Nyw5ICsyNzAsMTAgQEAgdm9pZCogTWFya2VkU3BhY2U6OnRyeUFs
bG9jYXRlTGFyZ2UoU3Vicwogdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXAoKQogewogICAgIG1faGVh
cC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAgICBmb3JFYWNoQmxvY2soCi0g
ICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIGJs
b2NrLT5zd2VlcCgpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBh
bGxvY2F0b3Iuc3dlZXAoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOwogICAgICAgICB9KTsKIH0KIApAQCAtMjgyLDI4ICsyOTYsMTYgQEAgdm9pZCBNYXJr
ZWRTcGFjZTo6c3dlZXBMYXJnZUFsbG9jYXRpb25zKAogICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051
cnNlcnlPZmZzZXQgPSBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOwogfQogCi12b2lkIE1hcmtl
ZFNwYWNlOjp6b21iaWZ5U3dlZXAoKQotewotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAg
ICAgICBkYXRhTG9nKCJab21iaWZ5aW5nIHN3ZWVwLi4uIik7Ci0gICAgbV9oZWFwLT5zd2VlcGVy
KCktPndpbGxGaW5pc2hTd2VlcGluZygpOwotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZd
IChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgaWYgKGJsb2NrLT5u
ZWVkc1N3ZWVwaW5nKCkpCi0gICAgICAgICAgICAgICAgYmxvY2stPnN3ZWVwKCk7Ci0gICAgICAg
IH0pOwotfQotCi12b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMoKQordm9pZCBNYXJr
ZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewogICAgIGZvckVhY2hBbGxvY2F0b3Io
CiAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0
YXR1cyB7Ci0gICAgICAgICAgICBhbGxvY2F0b3IucmVzZXQoKTsKKyAgICAgICAgICAgIGFsbG9j
YXRvci5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOwogCi0gICAgbV9ibG9ja3NXaXRoTmV3T2Jq
ZWN0cy5jbGVhcigpOwogICAgIG1fYWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9uZXdBY3RpdmVX
ZWFrU2V0cyk7CisgICAgCiAgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09
IEVkZW5Db2xsZWN0aW9uKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0
Rm9yU3dlZXAgPSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UKQEAg
LTQwOCwxMSArNDEwLDExIEBAIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVPclNocmlua0Jsb2NrKE1h
cmsKIAogdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKIHsKLSAgICBmb3JFYWNoQmxvY2soCi0g
ICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIGZy
ZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBb
Jl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAg
ICAgICAgICAgYWxsb2NhdG9yLnNocmluaygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOwotICAgIC8vIEZvciBMYXJnZUFsbG9jYXRp
b25zLCB3ZSBkbyB0aGUgbW9yYWwgZXF1aXZhbGVudCBpbiBzd2VlcExhcmdlQWxsb2NhdGlvbnMo
KS4KIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCkBAIC00Mjcs
MzkgKzQyOSwyNiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVj
dGlvbjsgaSA8IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgbV9sYXJn
ZUFsbG9jYXRpb25zW2ldLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECi0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWJsb2NrLT5jbGVhck5ld2x5QWxsb2Nh
dGVkKCkpOwotICAgICAgICB9KTsKLQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0
aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQotICAgICAgICBBU1NFUlQoIWFsbG9jYXRpb24tPmlz
TmV3bHlBbGxvY2F0ZWQoKSk7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfQotCi0jaWZu
ZGVmIE5ERUJVRyAKLXN0cnVjdCBWZXJpZnlNYXJrZWQgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0
b3IgeyAKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNv
bnN0Ci0gICAgewotICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBzd2l0Y2ggKGJsb2NrLT5tX3N0YXRlKSB7Ci0gICAgICAgIGNhc2Ug
TWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0K
KyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAg
ICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKCFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICAKKyAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBt
X2xhcmdlQWxsb2NhdGlvbnMpCisgICAgICAgICAgICBBU1NFUlQoIWFsbG9jYXRpb24tPmlzTmV3
bHlBbGxvY2F0ZWQoKSk7CiAgICAgfQotfTsgCi0jZW5kaWYgCit9CiAKLXZvaWQgTWFya2VkU3Bh
Y2U6OmZsaXAoKQordm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAo
bV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuc2l6ZSgp
OyArK2kpCi0gICAgICAgICAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT5mbGlwRm9yRWRl
bkNvbGxlY3Rpb24oKTsKLSAgICB9IGVsc2UgeworICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbklu
UHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9y
KAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3IuYmVnaW5NYXJraW5nRm9yRnVs
bENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgIEhlYXBWZXJzaW9uIG5leHRWZXJz
aW9uID0gbV92ZXJzaW9uICsgMTsKICAgICAgICAgaWYgKFVOTElLRUxZKG5leHRWZXJzaW9uID09
IGluaXRpYWxWZXJzaW9uKSkgewogICAgICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24gd3JhcC1h
cm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5IGZsaXBwaW5nIGFsbCBibG9ja3MuIFRoaXMgaGFwcGVu
cwpAQCAtNDc0LDEwICs0NjMsMjcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZmxpcCgpCiAgICAgICAg
ICAgICBhbGxvY2F0aW9uLT5mbGlwKCk7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwotICAgIFZl
cmlmeU1hcmtlZCB2ZXJpZnlGdW5jdG9yOwotICAgIGZvckVhY2hCbG9jayh2ZXJpZnlGdW5jdG9y
KTsKLSNlbmRpZgorICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hC
bG9jaygKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkp
OworICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIG1faXNNYXJraW5nID0gdHJ1ZTsK
K30KKwordm9pZCBNYXJrZWRTcGFjZTo6ZW5kTWFya2luZygpCit7CisgICAgZm9yRWFjaEFsbG9j
YXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5lbmRNYXJraW5nKCk7CisgICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7CisgICAg
CisgICAgbV9pc01hcmtpbmcgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6d2lsbFN0
YXJ0SXRlcmF0aW5nKCkKQEAgLTU0NSw3ICs1NTEsNiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRB
ZGRCbG9jayhNYXJrZWRCbG9jCiB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2so
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7CiAgICAgYmxvY2stPmFzc2VydEZsaXBwZWQo
KTsKLSAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLmFwcGVuZChibG9jayk7CiAgICAgCiAgICAg
aWYgKGJsb2NrLT53ZWFrU2V0KCkuaXNPbkxpc3QoKSkgewogICAgICAgICBibG9jay0+d2Vha1Nl
dCgpLnJlbW92ZSgpOwpAQCAtNTUzLDQgKzU1OCw0MSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRB
bGxvY2F0ZUluQmxvY2soTWFyCiAgICAgfQogfQogCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJr
ZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2soKQoreworICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbjsgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRv
ckZvckVtcHR5QWxsb2NhdGlvbi0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGlmIChNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5m
aW5kRW1wdHlCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIGJsb2NrOworICAgIH0KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3QoKQoreworICAg
IGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgewor
ICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0
b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxv
Y2F0b3Iuc25hcHNob3RGb3JFZGVuQ29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgfSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxs
b2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAg
YWxsb2NhdG9yLnNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0K
K30KKwordm9pZCBNYXJrZWRTcGFjZTo6YXNzZXJ0U25hcHNob3RFbXB0eSgpCit7CisgICAgaWYg
KEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgcmV0dXJuOworICAgIGZvckVhY2hBbGxvY2F0b3Io
CisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0
YXR1cyB7CisgICAgICAgICAgICBhbGxvY2F0b3IuYXNzZXJ0U25hcHNob3RFbXB0eSgpOworICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIHB1
YmxpYzoKICAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3Io
KSB7IHJldHVybiBtX25vcm1hbFNwYWNlOyB9CiAgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yQXV4
aWxpYXJ5RGF0YSgpIHsgcmV0dXJuIG1fYXV4aWxpYXJ5U3BhY2U7IH0KICAgICAKLSAgICB2b2lk
IHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIAog
ICAgIHZvaWQgdmlzaXRXZWFrU2V0cyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lkIHJlYXBX
ZWFrU2V0cygpOwpAQCAtMTQ0LDExICsxNDQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29u
c3VtZUZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICB2b2lkIGRpZEFsbG9jYXRl
SW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAKLSAgICB2b2lkIGZsaXAoKTsKKyAgICB2
b2lkIGJlZ2luTWFya2luZygpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25h
cHNob3QoKTsKICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgICB2b2lkIHN3ZWVw
KCk7CiAgICAgdm9pZCBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKTsKLSAgICB2b2lkIHpvbWJpZnlT
d2VlcCgpOworICAgIHZvaWQgYXNzZXJ0U25hcHNob3RFbXB0eSgpOwogICAgIHNpemVfdCBvYmpl
Y3RDb3VudCgpOwogICAgIHNpemVfdCBzaXplKCk7CiAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CkBA
IC0xNTcsOCArMTU5LDYgQEAgcHVibGljOgogICAgIAogICAgIEhlYXBWZXJzaW9uIHZlcnNpb24o
KSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KIAotICAgIGNvbnN0IFZlY3RvcjxNYXJrZWRC
bG9jazo6SGFuZGxlKj4mIGJsb2Nrc1dpdGhOZXdPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9ja3NXaXRoTmV3T2JqZWN0czsgfQotICAgIAogICAgIGNvbnN0IFZlY3RvcjxMYXJnZUFsbG9j
YXRpb24qPiYgbGFyZ2VBbGxvY2F0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0
aW9uczsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsgfQogICAgIHVuc2ln
bmVkIGxhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyB9CkBAIC0xNjks
MTMgKzE2OSwxNCBAQCBwdWJsaWM6CiAgICAgTGFyZ2VBbGxvY2F0aW9uKiogbGFyZ2VBbGxvY2F0
aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRp
b25zRm9yVGhpc0NvbGxlY3Rpb25FbmQ7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25z
Rm9yVGhpc0NvbGxlY3Rpb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25z
Rm9yVGhpc0NvbGxlY3Rpb25TaXplOyB9CiAgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBmaXJz
dEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RBbGxvY2F0b3I7IH0KKyAgICBNYXJr
ZWRBbGxvY2F0b3IqIGFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogZmluZEVtcHR5QmxvY2soKTsKKyAgICAKICAgICAvLyBXaGVuIHRoaXMgaXMgdHJ1
ZSBpdCBtZWFucyB0aGF0IHdlIGhhdmUgZmxpcHBlZCBidXQgdGhlIG1hcmsgYml0cyBoYXZlbid0
IGNvbnZlcmdlZCB5ZXQuCiAgICAgYm9vbCBpc01hcmtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lz
TWFya2luZzsgfQogICAgIAotICAgIC8vIEZJWE1FOiBBZnRlciBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxLCBNYXJrZWRTcGFjZSB3aWxsIGNvbnRyb2wgdGhp
cwotICAgIC8vIGZsYWcgZGlyZWN0bHkuCi0gICAgdm9pZCBzZXRJc01hcmtpbmcoYm9vbCB2YWx1
ZSkgeyBtX2lzTWFya2luZyA9IHZhbHVlOyB9Ci0KIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMTkwLDgg
KzE5MSw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplU3Vic3BhY2UoU3Vi
c3BhY2UmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFs
bG9jYXRvcihjb25zdCBGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZvckVhY2hTdWJz
cGFjZShjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBhZGRBY3RpdmVXZWFrU2V0KFdl
YWtTZXQqKTsKIApAQCAtMjA1LDcgKzIwNiw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSXRl
cmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9OwogICAgIE1hcmtlZEJsb2Nr
U2V0IG1fYmxvY2tzOwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9ja3NX
aXRoTmV3T2JqZWN0czsKICAgICBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4gbV9sYXJnZUFsbG9j
YXRpb25zOwogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQgeyAw
IH07CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rp
b24geyAwIH07CkBAIC0yMTUsNDAgKzIxNSwxMSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
bGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSB7IDAgfTsKICAgICBTZW50aW5l
bExpbmtlZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+IG1fYWN0
aXZlV2Vha1NldHM7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2Vu
dGluZWxOb2RlPFdlYWtTZXQ+PiBtX25ld0FjdGl2ZVdlYWtTZXRzOworICAgIAorICAgIE1hcmtl
ZEFsbG9jYXRvciogbV9maXJzdEFsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICBNYXJrZWRBbGxv
Y2F0b3IqIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0ciB9OwogfTsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVh
Y2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQot
ewotICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1f
YmxvY2tzLnNldCgpLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tz
LnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmhh
bmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBh
bGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7Ci0gICAgICAgIGlmIChhbGxvY2F0aW9u
LT5pc0xpdmUoKSkgewotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgp
LCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6
RG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNo
RGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsK
LSAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Js
b2Nrcy5zZXQoKS5lbmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5z
ZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5oYW5k
bGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxs
b2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewotICAgICAgICBpZiAoIWFsbG9jYXRpb24t
PmlzTGl2ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCks
IGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpE
b25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQogaW5s
aW5lIE1hcmtlZEFsbG9jYXRvciogTWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihTdWJzcGFjZSYg
c3BhY2UsIHNpemVfdCBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtlZEJs
b2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6
Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCit7CisgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOworICAgIEJsb2NrSXRlcmF0b3IgZW5k
ID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9i
bG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0
KS0+aGFuZGxlKCkuZm9yRWFjaExpdmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6
RG9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChMYXJnZUFsbG9jYXRp
b24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKKyAgICAgICAgaWYgKGFsbG9j
YXRpb24tPmlzTGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5j
ZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZv
ckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQoreworICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9
IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxv
Y2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoKCppdCkt
PmhhbmRsZSgpLmZvckVhY2hEZWFkQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRv
bmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7CisgICAgICAgIGlmICghYWxsb2Nh
dGlvbi0+aXNMaXZlKCkpIHsKKyAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNl
bGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0
dXM6OkRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9X
ZWFrQmxvY2suY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksOSArMTQ5LDYgQEAgdm9p
ZCBXZWFrQmxvY2s6OnJlYXAoKQogICAgIAogICAgIG1fY29udGFpbmVyLmZsaXBJZk5lY2Vzc2Fy
eSgpOwogCi0gICAgLy8gV2Ugb25seSByZWFwIGFmdGVyIG1hcmtpbmcuCi0gICAgQVNTRVJUKG1f
Y29udGFpbmVyLmlzTWFya2VkKCkpOwotCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWFr
SW1wbENvdW50KCk7ICsraSkgewogICAgICAgICBXZWFrSW1wbCogd2Vha0ltcGwgPSAmd2Vha0lt
cGxzKClbaV07CiAgICAgICAgIGlmICh3ZWFrSW1wbC0+c3RhdGUoKSA+IFdlYWtJbXBsOjpEZWFk
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAK
ICNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1hcEl0ZXJhdG9yUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aE9iamVjdC5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5o
IgogI2luY2x1ZGUgIk1vZHVsZUxvYWRlclByb3RvdHlwZS5oIgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9u
IDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTExJbnRQ
Q1Jhbmdlcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxv
Y2tTZXQuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQQ1Rv
Q29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiU2xv
dFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogI2lu
Y2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwNTg1OSkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAkJMEY0NTcwNDMxQkU1QjU4RjAwNjJBNjI5
IC8qIERvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi87IH07CiAJ
CTBGNDU3MDQ1MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzA0NDFCRTgzNDQxMDA2MkE2Mjkg
LyogQnViYmxlU29ydC5oICovOyB9OwogCQkwRjcyNUNBQzFDNTA0NjE2MDBBRDk0M0EgLyogUmFu
Z2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oICovOyB9OworCQkwRjdDNUZCNjFE
ODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFz
dEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGODI0QTY4MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJr
aW5nTG90LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLzsgfTsKIAkJMEY4
MjRBNjkxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQ
YXJraW5nTG90LmggKi87IH07CiAJCTBGODcxMDVBMTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2lu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3
MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oICovOyB9OwpAQCAtMzY2LDYgKzM2
Nyw3IEBACiAJCTBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvbWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnViYmxlU29ydC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VTZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRW
ZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmFzdEJpdFZl
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY0MUI3NDQzQTAw
MDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBhcmtpbmdMb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgy
NEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYXJraW5nTG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJhd1BvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTg4MCw2ICs4ODIsNyBAQAogCQkJCUE4QTQ3Mjk4MTUxQTgyNUEwMDQxMjNGRiAvKiBk
dG9hLmggKi8sCiAJCQkJMUFFQTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1UcmFpdHMuaCAq
LywKIAkJCQlBOEE0NzI5RjE1MUE4MjVBMDA0MTIzRkYgLyogRXhwb3J0TWFjcm9zLmggKi8sCisJ
CQkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovLAogCQkJ
CTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8sCiAJCQkJQThB
NDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwICovLAogCQkJCUE4QTQ3MkEy
MTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi8sCkBAIC0xNTk0LDYgKzE1OTcsNyBA
QAogCQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDczRUMxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9m
Q29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8q
IEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjcxNTFBODI1QjAw
NDEyM0ZGIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDcz
RjkxNTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9tU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3NDAyMTUxQTgyNUIwMDQxMjNGRiAvKiBQYWdlQmxvY2suY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBA
QCBzZXQoV1RGX1NPVVJDRVMKICAgICBEYXRhTG9nLmNwcAogICAgIERhdGVNYXRoLmNwcAogICAg
IERlY2ltYWxOdW1iZXIuY3BwCisgICAgRmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0TWFsbG9j
LmNwcAogICAgIEZpbGVQcmludFN0cmVhbS5jcHAKICAgICBGdW5jdGlvbkRpc3BhdGNoZXIuY3Bw
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJGYXN0Qml0VmVjdG9yLmgiCisKK25hbWVzcGFjZSBXVEYg
eworCit2b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnNldEVxdWFsc1Nsb3coY29uc3QgRmFz
dEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCit7CisgICAgdWludDMyX3QqIG5ld0FycmF5ID0g
c3RhdGljX2Nhc3Q8dWludDMyX3QqPigKKyAgICAgICAgZmFzdENhbGxvYyhvdGhlci5hcnJheUxl
bmd0aCgpLCBzaXplb2YodWludDMyX3QpKSk7CisgICAgbWVtY3B5KG5ld0FycmF5LCBvdGhlci5t
X3dvcmRzLCBvdGhlci5hcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgaWYg
KG1fd29yZHMpCisgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOworICAgIG1fd29yZHMgPSBuZXdB
cnJheTsKKyAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7Cit9CisKK3ZvaWQgRmFzdEJp
dFZlY3RvcldvcmRPd25lcjo6cmVzaXplU2xvdyhzaXplX3QgbnVtQml0cykKK3sKKyAgICBzaXpl
X3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpOworICAgIAor
ICAgIC8vIFVzZSBmYXN0Q2FsbG9jIGluc3RlYWQgb2YgZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBl
eHBlY3QgdGhlIGNvbW1vbgorICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1ldGhvZCB0byBiZSBp
bml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rvci4KKyAgICAKKyAgICB1aW50MzJf
dCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobmV3TGVuZ3Ro
LCBzaXplb2YodWludDMyX3QpKSk7CisgICAgbWVtY3B5KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJh
eUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgaWYgKG1fd29yZHMpCisgICAgICAg
IGZhc3RGcmVlKG1fd29yZHMpOworICAgIG1fd29yZHMgPSBuZXdBcnJheTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJKHJldmlzaW9uIDIwNTg1
OSkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAt
OTEsMTcgKzkyLDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBGYXN0Qml0VmVjdG9yV29yZE93bmVy
JiBvcGVyYXRvcj0oY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCiAgICAgewot
ICAgICAgICBzaXplX3QgbGVuZ3RoID0gb3RoZXIuYXJyYXlMZW5ndGgoKTsKLSAgICAgICAgaWYg
KGxlbmd0aCA9PSBhcnJheUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBtZW1jcHkobV93b3Jkcywg
b3RoZXIubV93b3JkcywgbGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgICAgIGlmIChhcnJheUxlbmd0aCgpICE9IG90aGVyLmFycmF5TGVu
Z3RoKCkpCisgICAgICAgICAgICBzZXRFcXVhbHNTbG93KG90aGVyKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBtZW1jcHkobV93b3Jkcywgb3RoZXIubV93b3JkcywgYXJyYXlMZW5ndGgo
KSAqIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9u
dW1CaXRzOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhsZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKLSAg
ICAgICAgbWVtY3B5KG5ld0FycmF5LCBvdGhlci5tX3dvcmRzLCBsZW5ndGggKiBzaXplb2YodWlu
dDMyX3QpKTsKLSAgICAgICAgaWYgKG1fd29yZHMpCi0gICAgICAgICAgICBmYXN0RnJlZShtX3dv
cmRzKTsKLSAgICAgICAgbV93b3JkcyA9IG5ld0FycmF5OwotICAgICAgICBtX251bUJpdHMgPSBv
dGhlci5tX251bUJpdHM7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAgICAgCkBAIC0x
NDAsMTggKzEzNiw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlc2l6ZShzaXplX3QgbnVt
Qml0cykKICAgICB7Ci0gICAgICAgIGlmIChudW1CaXRzID09IG1fbnVtQml0cykKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIC8vIFVzZSBmYXN0Q2FsbG9jIGluc3RlYWQg
b2YgZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBleHBlY3QgdGhlIGNvbW1vbgotICAgICAgICAvLyB1
c2UgY2FzZSBmb3IgdGhpcyBtZXRob2QgdG8gYmUgaW5pdGlhbGl6aW5nIHRoZSBzaXplIG9mIHRo
ZSBiaXR2ZWN0b3IuCi0gICAgICAgIAotICAgICAgICBzaXplX3QgbmV3TGVuZ3RoID0gZmFzdEJp
dFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpOwotICAgICAgICB1aW50MzJfdCogbmV3QXJyYXkg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobmV3TGVuZ3RoLCBzaXplb2YodWlu
dDMyX3QpKSk7Ci0gICAgICAgIG1lbWNweShuZXdBcnJheSwgbV93b3JkcywgYXJyYXlMZW5ndGgo
KSAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBpZiAobV93b3JkcykKLSAgICAgICAgICAg
IGZhc3RGcmVlKG1fd29yZHMpOwotICAgICAgICBtX3dvcmRzID0gbmV3QXJyYXk7CisgICAgICAg
IGlmIChhcnJheUxlbmd0aCgpICE9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKSkK
KyAgICAgICAgICAgIHJlc2l6ZVNsb3cobnVtQml0cyk7CiAgICAgICAgIG1fbnVtQml0cyA9IG51
bUJpdHM7CiAgICAgfQogICAgIApAQCAtMTcxLDYgKzE1Nyw5IEBAIHB1YmxpYzoKICAgICB1aW50
MzJfdCogd29yZHMoKSB7IHJldHVybiBtX3dvcmRzOyB9CiAKIHByaXZhdGU6CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgc2V0RXF1YWxzU2xvdyhjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93
bmVyJiBvdGhlcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzaXplU2xvdyhzaXpl
X3QgbnVtQml0cyk7CisgICAgCiAgICAgdWludDMyX3QqIG1fd29yZHMgeyBudWxscHRyIH07CiAg
ICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKIH07CkBAIC0zMjAsNiArMzA5LDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gYXJyYXlMZW5ndGgo
KTsgaW5kZXgtLTspIHsKKyAgICAgICAgICAgIGlmIChtX3dvcmRzLndvcmQoaW5kZXgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KICAgICBG
YXN0Qml0VmVjdG9ySW1wbDxGYXN0Qml0VmVjdG9yQW5kV29yZHM8dHlwZW5hbWUgV29yZHM6OlZp
ZXdUeXBlLCB0eXBlbmFtZSBPdGhlcldvcmRzOjpWaWV3VHlwZT4+IG9wZXJhdG9yJihjb25zdCBG
YXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNDcx
LDYgKzQ2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV93b3Jkcy5jbGVhckFsbCgpOwogICAgIH0K
IAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29udGVudHMgb2YgdGhpcyBiaXR2ZWN0b3Ig
Y2hhbmdlZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIGJvb2wgc2V0
QW5kQ2hlY2soY29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQogICAg
IHsKQEAgLTU1MCw2ICs1NDksMjggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGF0
KGluZGV4KTsKICAgICB9CisgICAgCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50
cyBjaGFuZ2VkLgorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdG9taWNTZXRBbmRDaGVjayhzaXpl
X3QgaW5kZXgsIGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICB1aW50MzJfdCogcG9pbnRlciA9
ICZtX3dvcmRzLndvcmQoaW5kZXggPj4gNSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8
IChpbmRleCAmIDMxKTsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgdWludDMyX3Qg
b2xkVmFsdWUgPSAqcG9pbnRlcjsKKyAgICAgICAgICAgIHVpbnQzMl90IG5ld1ZhbHVlOworICAg
ICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKG9sZFZhbHVlICYgbWFz
aykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG5l
d1ZhbHVlID0gb2xkVmFsdWUgfCBtYXNrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIShvbGRWYWx1ZSAmIG1hc2spKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSAmIH5tYXNrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdlYWtDb21wYXJlQW5kU3dhcChwb2ludGVy
LCBvbGRWYWx1ZSwgbmV3VmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288855</attachid>
            <date>2016-09-14 14:06:11 -0700</date>
            <delta_ts>2016-09-14 14:50:20 -0700</delta_ts>
            <desc>fixing it</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>120220</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTBGN0MzOUZCMUM4RjYy
OTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5s
aW5lcy5oICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsK
IAkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFy
a2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmgg
Ki87IH07CisJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI5
MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLzsgfTsKIAkJMEY4MDIz
RUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4
MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI3MzEsNiArMjczMyw4IEBACiAJCTBGN0Mz
OUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyog
REZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5o
OyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3Bh
Y2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIz
MDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMz
OCw5ICs1MzQyLDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFs
bG9jYXRvci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9j
ay5jcHAgKi8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmgg
Ki8sCisJCQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5o
ICovLAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICov
LAogCQkJCTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJ
CQkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMEY3
QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0
MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBG
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlBRERCMUY2MjE4RDc3REI3
MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNzM5NCw2ICs3NDAwLDcgQEAKIAkJ
CQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50
UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAv
KiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4
QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJp
dGhNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkxOCw3IEBACiAJCQkJQTUwM0ZB
MkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0lu
amVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQkExRDg4OTUwNzAw
NDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1
QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0MgLyogSlNJbnB1dHMuanNv
biBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2
QXJyYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJW
TUVudHJ5U2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29u
dGFpbmVyLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NlbGxDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBIZWFwOwogY2xhc3MgSGVhcENlbGw7CiBjbGFzcyBMYXJn
ZUFsbG9jYXRpb247CiBjbGFzcyBNYXJrZWRCbG9jazsKIGNsYXNzIFdlYWtTZXQ7CitjbGFzcyBW
TTsKIAogdHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKIApAQCAtNTYsNiArNTgsOSBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KICAgICAKKyAgICBWTSogdm0oKSBjb25zdDsKKyAgICBIZWFw
KiBoZWFwKCkgY29uc3Q7CisgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9lbmNvZGVkUG9pbnRlcjsgfQogICAgIAogICAgIGJvb2wgaXNNYXJrZWRC
bG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZFBvaW50ZXIgJiYgIShtX2VuY29kZWRQb2lu
dGVyICYgaXNMYXJnZUFsbG9jYXRpb25CaXQpOyB9CkBAIC03MywxMSArNzgsOSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PExhcmdlQWxsb2NhdGlvbio+KG1fZW5jb2Rl
ZFBvaW50ZXIgLSBpc0xhcmdlQWxsb2NhdGlvbkJpdCk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSgp
OworICAgIHZvaWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24pOwogICAgIGJvb2wgbmVlZHNGbGlw
KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwogICAgIGJvb2wgaXNN
YXJrZWQoSGVhcENlbGwqKSBjb25zdDsKICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRl
ZChIZWFwQ2VsbCopIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwxNCArMjksMjAgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRl
ICJMYXJnZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUg
IlZNLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjpp
c01hcmtlZCgpIGNvbnN0CitpbmxpbmUgVk0qIENlbGxDb250YWluZXI6OnZtKCkgY29uc3QKIHsK
ICAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
cmV0dXJuIG1hcmtlZEJsb2NrKCkuaGFuZGxlKCkuaXNNYXJrZWQoKTsKKyAgICAgICAgcmV0dXJu
IGxhcmdlQWxsb2NhdGlvbigpLnZtKCk7CisgICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkudm0oKTsK
K30KKworaW5saW5lIEhlYXAqIENlbGxDb250YWluZXI6OmhlYXAoKSBjb25zdAoreworICAgIHJl
dHVybiAmdm0oKS0+aGVhcDsKIH0KIAogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJr
ZWQoSGVhcENlbGwqIGNlbGwpIGNvbnN0CkBAIC03MywxNiArNzksMTAgQEAgaW5saW5lIFdlYWtT
ZXQmIENlbGxDb250YWluZXI6OndlYWtTZXQoKQogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLndl
YWtTZXQoKTsKIH0KIAotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6ZmxpcElmTmVjZXNzYXJ5
KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQotewotICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24o
KSkKLSAgICAgICAgbWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwot
fQotCi1pbmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkoKQoraW5saW5l
IHZvaWQgQ2VsbENvbnRhaW5lcjo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24p
CiB7CiAgICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICBtYXJrZWRCbG9jaygp
LmZsaXBJZk5lY2Vzc2FyeSgpOworICAgICAgICBtYXJrZWRCbG9jaygpLmFib3V0VG9NYXJrKGhl
YXBWZXJzaW9uKTsKIH0KIAogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6bmVlZHNGbGlwKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3Rz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRp
dmVSb290cy5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgogCkBAIC02NSwxMiAr
NjYsMTIgQEAgdm9pZCBDb25zZXJ2YXRpdmVSb290czo6Z3JvdygpCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1hcmtIb29rPgotaW5saW5lIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6OmdlbmVyaWNB
ZGRQb2ludGVyKHZvaWQqIHAsIEhlYXBWZXJzaW9uIHZlcnNpb24sIFRpbnlCbG9vbUZpbHRlciBm
aWx0ZXIsIE1hcmtIb29rJiBtYXJrSG9vaykKK2lubGluZSB2b2lkIENvbnNlcnZhdGl2ZVJvb3Rz
OjpnZW5lcmljQWRkUG9pbnRlcih2b2lkKiBwLCBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyLCBNYXJr
SG9vayYgbWFya0hvb2spCiB7CiAgICAgbWFya0hvb2subWFyayhwKTsKIAogICAgIEhlYXBVdGls
OjpmaW5kR0NPYmplY3RQb2ludGVyc0Zvck1hcmtpbmcoCi0gICAgICAgIG1faGVhcCwgdmVyc2lv
biwgZmlsdGVyLCBwLAorICAgICAgICBtX2hlYXAsIGZpbHRlciwgcCwKICAgICAgICAgWyZdICh2
b2lkKiBwKSB7CiAgICAgICAgICAgICBpZiAobV9zaXplID09IG1fY2FwYWNpdHkpCiAgICAgICAg
ICAgICAgICAgZ3JvdygpOwpAQCAtOTMsOSArOTQsOCBAQCB2b2lkIENvbnNlcnZhdGl2ZVJvb3Rz
OjpnZW5lcmljQWRkU3Bhbih2CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNQb2ludGVyQWxpZ25lZChl
bmQpKTsKIAogICAgIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIgPSBtX2hlYXAub2JqZWN0U3BhY2Uo
KS5ibG9ja3MoKS5maWx0ZXIoKTsgLy8gTWFrZSBhIGxvY2FsIGNvcHkgb2YgZmlsdGVyIHRvIHNo
b3cgdGhlIGNvbXBpbGVyIGl0IHdvbid0IGFsaWFzLCBhbmQgY2FuIGJlIHJlZ2lzdGVyLWFsbG9j
YXRlZC4KLSAgICBIZWFwVmVyc2lvbiB2ZXJzaW9uID0gbV9oZWFwLm9iamVjdFNwYWNlKCkudmVy
c2lvbigpOwogICAgIGZvciAoY2hhcioqIGl0ID0gc3RhdGljX2Nhc3Q8Y2hhcioqPihiZWdpbik7
IGl0ICE9IHN0YXRpY19jYXN0PGNoYXIqKj4oZW5kKTsgKytpdCkKLSAgICAgICAgZ2VuZXJpY0Fk
ZFBvaW50ZXIoKml0LCB2ZXJzaW9uLCBmaWx0ZXIsIG1hcmtIb29rKTsKKyAgICAgICAgZ2VuZXJp
Y0FkZFBvaW50ZXIoKml0LCBmaWx0ZXIsIG1hcmtIb29rKTsKIH0KIAogY2xhc3MgRHVtbXlNYXJr
SG9vayB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2
ZVJvb3RzLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbnNlcnZhdGl2ZVJvb3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG5vbklubGluZUNhcGFjaXR5ID0gODE5MiAv
IHNpemVvZihIZWFwQ2VsbCopOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcmtIb29r
PgotICAgIHZvaWQgZ2VuZXJpY0FkZFBvaW50ZXIodm9pZCosIEhlYXBWZXJzaW9uLCBUaW55Qmxv
b21GaWx0ZXIsIE1hcmtIb29rJik7CisgICAgdm9pZCBnZW5lcmljQWRkUG9pbnRlcih2b2lkKiwg
VGlueUJsb29tRmlsdGVyLCBNYXJrSG9vayYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFy
a0hvb2s+CiAgICAgdm9pZCBnZW5lcmljQWRkU3Bhbih2b2lkKiwgdm9pZCogZW5kLCBNYXJrSG9v
ayYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNTg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKKyNpbmNs
dWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgi
CiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgpA
QCAtNTI2LDExICs1MjcsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgfQogICAg
IAogICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlz
LCAibV9vYmplY3RTcGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZmxp
cCgpOworICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJt
X29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2lu
TWFya2luZygpOwogICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyh0
cnVlKTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCkBAIC03
NzksNyArNzc4LDcgQEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAgICBBU1NFUlQobV9zaGFy
ZWRNYXJrU3RhY2suaXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLnJl
bW92ZUFsbCgpOwogICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKGZhbHNlKTsK
KyAgICBtX29iamVjdFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVj
dENvdW50KCkKQEAgLTkzOSw3ICs5MzgsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdl
KCkKICAgICAgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNwYWNl
LnNocmluaygpOwogICAgIH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBzaG90LmlzRW1wdHkoKSk7
CisgICAgbV9vYmplY3RTcGFjZS5hc3NlcnRTbmFwc2hvdEVtcHR5KCk7CiAKICAgICBzd2VlcEFs
bExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrcygpOwogfQpAQCAtMTA0OCw3ICsxMDQ3LDcgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3JlbWVu
dGFsU3dlZXBlcigpOwogICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9j
a3MoKTsKIAotICAgIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0aW9u
KCk7CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rp
b24oZ2NTdGFydFRpbWUpOwogICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTE2Miw0
NCArMTE2MSwxMCBAQCB2b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKICAgICBtX2FycmF5
QnVmZmVycy5zd2VlcCgpOwogfQogCi1zdHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3Ig
OiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBNYXJrZWRCbG9ja1NuYXBz
aG90RnVuY3RvcihWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBibG9ja3MpIAotICAgICAg
ICA6IG1faW5kZXgoMCkgCi0gICAgICAgICwgbV9ibG9ja3MoYmxvY2tzKQotICAgIHsKLSAgICB9
Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0
Ci0gICAgewotICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAg
ICAgIG1fYmxvY2tzW21faW5kZXgrK10gPSBibG9jazsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTog
VGhpcyBpcyBhIG11dGFibGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgot
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKLSAg
ICBtdXRhYmxlIHNpemVfdCBtX2luZGV4OwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxl
Kj4mIG1fYmxvY2tzOwotfTsKLQogdm9pZCBIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlKCkKIHsK
ICAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhpcywgIkhlYXA6OnNuYXBzaG90TWFya2Vk
U3BhY2UiKTsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcmVuYW1lZC4g
SXQncyBub3QgYWN0dWFsbHkgc25hcHNob3R0aW5nIGFsbCBvZiBNYXJrZWRTcGFjZS4KLSAgICAv
LyBUaGlzIGlzIHVzZWQgYnkgSW5jcmVtZW50YWxTd2VlcGVyLCBzbyBpdCBvbmx5IG5lZWRzIHRv
IHNuYXBzaG90IGJsb2Nrcy4gSG93ZXZlciwgaWYgd2UgZXZlcgotICAgIC8vIHdhbnRlZCB0byBh
ZGQgb3RoZXIgc25hcHNob3R0aW5nIGxvZ2luLCB3ZSdkIHByb2JhYmx5IHB1dCBpdCBoZXJlLgot
ICAgIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsK
LSAgICAgICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgOiBtX29iamVjdFNwYWNl
LmJsb2Nrc1dpdGhOZXdPYmplY3RzKCkpIHsKLSAgICAgICAgICAgIGlmIChoYW5kbGUtPmlzT25C
bG9ja3NUb1N3ZWVwKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBt
X2Jsb2NrU25hcHNob3QuYXBwZW5kKGhhbmRsZSk7Ci0gICAgICAgICAgICBoYW5kbGUtPnNldElz
T25CbG9ja3NUb1N3ZWVwKHRydWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
bV9ibG9ja1NuYXBzaG90LnJlc2l6ZVRvRml0KG1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCku
c2l6ZSgpKTsKLSAgICAgICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgZnVuY3RvcihtX2Js
b2NrU25hcHNob3QpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hCbG9jayhmdW5jdG9y
KTsKLSAgICB9CisgICAgbV9vYmplY3RTcGFjZS5zbmFwc2hvdCgpOwogfQogCiB2b2lkIEhlYXA6
OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKQEAgLTEyMjIsOSArMTE4Nyw5IEBAIHZvaWQg
SGVhcDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW4KICAgICBtX2NvZGVCbG9ja3MtPndy
aXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhpcyk7CiB9CiAKLXZvaWQg
SGVhcDo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24o
KQogewotICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3JzKCk7CisgICAgbV9vYmplY3RT
cGFjZS5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogfQogCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9j
YXRpb25MaW1pdHMoKQpAQCAtMTQ3Myw3ICsxNDM4LDcgQEAgcHVibGljOgogdm9pZCBIZWFwOjp6
b21iaWZ5RGVhZE9iamVjdHMoKQogewogICAgIC8vIFN3ZWVwIG5vdyBiZWNhdXNlIGRlc3RydWN0
b3JzIHdpbGwgY3Jhc2ggb25jZSB3ZSdyZSB6b21iaWZpZWQuCi0gICAgbV9vYmplY3RTcGFjZS56
b21iaWZ5U3dlZXAoKTsKKyAgICBtX29iamVjdFNwYWNlLnN3ZWVwKCk7CiAgICAgSGVhcEl0ZXJh
dGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICBtX29iamVjdFNwYWNlLmZvckVh
Y2hEZWFkQ2VsbChpdGVyYXRpb25TY29wZSwgWm9tYmlmeSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsMTEgKzk3LDkgQEAgcHVibGlj
OgogICAgIC8vIG91ciBzY2FuIHRvIHJ1biBmYXN0ZXIuIAogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX3RpbWVDaGVja1Jlc29sdXRpb24gPSAxNjsKIAotICAgIHN0YXRpYyBib29sIGlzTGl2
ZShjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOwog
ICAgIHN0YXRpYyBib29sIGlzTWFya2VkQ29uY3VycmVudGx5KGNvbnN0IHZvaWQqKTsKICAgICBz
dGF0aWMgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7Ci0g
ICAgc3RhdGljIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAKICAgICBzdGF0aWMg
c2l6ZV90IGNlbGxTaXplKGNvbnN0IHZvaWQqKTsKIApAQCAtMzMzLDcgKzMzMSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpOwogICAgIHZvaWQgbm90
aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAgdm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKCk7Ci0gICAgdm9pZCByZXNldEFsbG9jYXRvcnMoKTsKKyAgICB2
b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5j
ZXMoKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKICAgICB2
b2lkIGNsZWFyVW5tYXJrZWRFeGVjdXRhYmxlcygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxNyArNzQs
NiBAQCBpbmxpbmUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBKU1ZhbHVlIHYpCiAgICAgcmV0dXJu
IGhlYXAodi5hc0NlbGwoKSk7CiB9CiAKLWlubGluZSBib29sIEhlYXA6OmlzTGl2ZShjb25zdCB2
b2lkKiByYXdDZWxsKQotewotICAgIEFTU0VSVCghbWF5QmVHQ1RocmVhZCgpKTsKLSAgICBIZWFw
Q2VsbCogY2VsbCA9IGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHJhd0NlbGwpOwotICAgIGlmIChj
ZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxv
Y2F0aW9uKCkuaXNMaXZlKCk7Ci0gICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2Vk
QmxvY2soKTsKLSAgICBibG9jay5mbGlwSWZOZWNlc3NhcnkoYmxvY2sudm0oKS0+aGVhcC5vYmpl
Y3RTcGFjZSgpLnZlcnNpb24oKSk7Ci0gICAgcmV0dXJuIGJsb2NrLmhhbmRsZSgpLmlzTGl2ZUNl
bGwoY2VsbCk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZChjb25zdCB2
b2lkKiByYXdDZWxsKQogewogICAgIEFTU0VSVCghbWF5QmVHQ1RocmVhZCgpKTsKQEAgLTkyLDkg
KzgxLDggQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IAogICAgIGlm
IChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VB
bGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5t
YXJrZWRCbG9jaygpOwotICAgIGlmIChibG9jay5uZWVkc0ZsaXAoYmxvY2sudm0oKS0+aGVhcC5v
YmplY3RTcGFjZSgpLnZlcnNpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gYmxvY2suaXNNYXJrZWQoY2VsbCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKAorICAg
ICAgICBibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKIH0K
IAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNvbnN0IHZv
aWQqIHJhd0NlbGwpCkBAIC0xMDMsMTAgKzkxLDggQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6
OmlzTWFya2VkQ29uY3VycgogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAg
ICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsKICAgICBNYXJr
ZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGlmIChibG9jay5uZWVk
c0ZsaXAoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICByZXR1cm4gYmxv
Y2suaXNNYXJrZWQoY2VsbCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkQ29uY3VycmVudGx5
KAorICAgICAgICBibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxs
KTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQoSGVhcFZl
cnNpb24gdmVyc2lvbiwgY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTExNSwyMiArMTAxLDEwIEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjp0ZXN0QW5kU2V0TWFya2UKICAgICBpZiAoY2VsbC0+
aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlv
bigpLnRlc3RBbmRTZXRNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5t
YXJrZWRCbG9jaygpOwotICAgIGJsb2NrLmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcodmVy
c2lvbik7CisgICAgYmxvY2suYWJvdXRUb01hcmsodmVyc2lvbik7CiAgICAgcmV0dXJuIGJsb2Nr
LnRlc3RBbmRTZXRNYXJrZWQoY2VsbCk7CiB9CiAKLWlubGluZSB2b2lkIEhlYXA6OnNldE1hcmtl
ZChjb25zdCB2b2lkKiByYXdDZWxsKQotewotICAgIEhlYXBDZWxsKiBjZWxsID0gYml0d2lzZV9j
YXN0PEhlYXBDZWxsKj4ocmF3Q2VsbCk7Ci0gICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9u
KCkpIHsKLSAgICAgICAgY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuc2V0TWFya2VkKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2Vk
QmxvY2soKTsKLSAgICBibG9jay5mbGlwSWZOZWNlc3NhcnkoYmxvY2sudm0oKS0+aGVhcC5vYmpl
Y3RTcGFjZSgpLnZlcnNpb24oKSk7Ci0gICAgYmxvY2suc2V0TWFya2VkKGNlbGwpOwotfQotCiBB
TFdBWVNfSU5MSU5FIHNpemVfdCBIZWFwOjpjZWxsU2l6ZShjb25zdCB2b2lkKiByYXdDZWxsKQog
ewogICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKS0+Y2VsbFNpemUo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5j
cHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBT
dGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkocmV2aXNpb24g
MjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsOCArNDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gYmVmb3JlIGxpdmVuZXNz
IGRhdGEgaXMgY2xlYXJlZCB0byBiZSBhY2N1cmF0ZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgogICAgIHN0YXRpYyB2b2lkIGZpbmRHQ09iamVjdFBvaW50ZXJzRm9yTWFya2luZygKLSAg
ICAgICAgSGVhcCYgaGVhcCwgSGVhcFZlcnNpb24gaGVhcFZlcnNpb24sIFRpbnlCbG9vbUZpbHRl
ciBmaWx0ZXIsIHZvaWQqIHBhc3NlZFBvaW50ZXIsCi0gICAgICAgIGNvbnN0IEZ1bmMmIGZ1bmMp
CisgICAgICAgIEhlYXAmIGhlYXAsIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIsIHZvaWQqIHBhc3Nl
ZFBvaW50ZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogICAgICAgICBjb25zdCBIYXNoU2V0
PE1hcmtlZEJsb2NrKj4mIHNldCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5zZXQoKTsK
ICAgICAgICAgCkBAIC04NCw3ICs4Myw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghZmls
dGVyLnJ1bGVPdXQoYml0d2lzZV9jYXN0PEJpdHM+KHByZXZpb3VzQ2FuZGlkYXRlKSkKICAgICAg
ICAgICAgICAgICAmJiBzZXQuY29udGFpbnMocHJldmlvdXNDYW5kaWRhdGUpCiAgICAgICAgICAg
ICAgICAgJiYgcHJldmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgPT0gSGVhcENl
bGw6OkF1eGlsaWFyeSkgewotICAgICAgICAgICAgICAgIHByZXZpb3VzQ2FuZGlkYXRlLT5mbGlw
SWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwogICAgICAgICAgICAgICAgIHByZXZpb3VzUG9pbnRl
ciA9IHN0YXRpY19jYXN0PGNoYXIqPihwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEFs
aWduKHByZXZpb3VzUG9pbnRlcikpOwogICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRp
ZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChwcmV2aW91c1BvaW50ZXIpKQogICAgICAgICAgICAg
ICAgICAgICBmdW5jKHByZXZpb3VzUG9pbnRlcik7CkBAIC05OSw4ICs5Nyw2IEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKCFzZXQuY29udGFpbnMoY2FuZGlkYXRlKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCi0gICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJz
aW9uKTsKLQogICAgICAgICBhdXRvIHRyeVBvaW50ZXIgPSBbJl0gKHZvaWQqIHBvaW50ZXIpIHsK
ICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwocG9pbnRlcikp
CiAgICAgICAgICAgICAgICAgZnVuYyhwb2ludGVyKTsKQEAgLTE3MCw3ICsxNjYsNiBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgIT0gSGVhcENl
bGw6OkpTQ2VsbCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAg
IGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5KCk7CiAgICAgICAgIGlmICghY2FuZGlkYXRlLT5o
YW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVy
LmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxT
d2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNy
ZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgc3dlZXBUaW1lTXVsdGlwbGllciAKICNpZiBV
U0UoQ0YpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFw
LCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpLCBydW5M
b29wKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKIHsKIH0K
IApAQCAtNjYsNyArNjUsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIo
KQogI2VsaWYgUExBVEZPUk0oRUZMKQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3
ZWVwZXIoSGVhcCogaGVhcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpKQotICAgICwgbV9i
bG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKIHsKIH0KIApAQCAtODYsNyArODQs
NiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogI2VsaWYgVVNFKEdM
SUIpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwKQog
ICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+
bV9ibG9ja1NuYXBzaG90KQogewogfQogCkBAIC0xMjEsMTkgKzExOCwyMCBAQCB2b2lkIEluY3Jl
bWVudGFsU3dlZXBlcjo6ZG9Td2VlcChkb3VibGUgCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsKICAgICBjYW5jZWxUaW1lcigpOwogfQogCiBi
b29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soKQogewotICAgIHdoaWxlICgh
bV9ibG9ja3NUb1N3ZWVwLmlzRW1wdHkoKSkgewotICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcC50YWtlTGFzdCgpOwotICAgICAgICBibG9jay0+c2V0
SXNPbkJsb2Nrc1RvU3dlZXAoZmFsc2UpOwotCi0gICAgICAgIGlmICghYmxvY2stPm5lZWRzU3dl
ZXBpbmcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAoOyBtX2N1cnJlbnRBbGxvY2F0b3I7
IG1fY3VycmVudEFsbG9jYXRvciA9IG1fY3VycmVudEFsbG9jYXRvci0+bmV4dEFsbG9jYXRvcigp
KSB7CisgICAgICAgIGJsb2NrID0gbV9jdXJyZW50QWxsb2NhdG9yLT5maW5kQmxvY2tUb1N3ZWVw
KCk7CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAK
KyAgICBpZiAoYmxvY2spIHsKICAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKG1fdm0t
PmhlYXApOwogICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgICAgICAgbV92bS0+aGVhcC5vYmpl
Y3RTcGFjZSgpLmZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKQEAgLTE0NiwxMSArMTQ0LDEyIEBA
IGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygKIHZvaWQgSW5jcmVtZW50
YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKCkKIHsKICAgICBzY2hlZHVsZVRpbWVyKCk7CisgICAg
bV9jdXJyZW50QWxsb2NhdG9yID0gbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZpcnN0QWxsb2Nh
dG9yKCk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dlZXBpbmco
KQogewotICAgIG1fYmxvY2tzVG9Td2VlcC5jbGVhcigpOworICAgIG1fY3VycmVudEFsbG9jYXRv
ciA9IG51bGxwdHI7CiAgICAgaWYgKG1fdm0pCiAgICAgICAgIGNhbmNlbFRpbWVyKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIu
aAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVt
ZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMiBAQAogI2RlZmlu
ZSBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogCiAjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCi0jaW5jbHVk
ZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBIZWFwOwotY2xhc3MgTWFya2VkQmxvY2s7CitjbGFzcyBNYXJrZWRBbGxv
Y2F0b3I7CiAKIGNsYXNzIEluY3JlbWVudGFsU3dlZXBlciA6IHB1YmxpYyBIZWFwVGltZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2NoZWR1bGVUaW1lcigpOwogICAgIHZvaWQgY2FuY2VsVGltZXIoKTsKICAgICAK
LSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBtX2Jsb2Nrc1RvU3dlZXA7CisgICAg
TWFya2VkQWxsb2NhdG9yKiBtX2N1cnJlbnRBbGxvY2F0b3I7CiAjZW5kaWYKIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCShyZXZpc2lv
biAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lO
TElORSBib29sIGlzTWFya2VkKCkgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5
X29yZGVyX3JlbGF4ZWQpOyB9CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKSB7
IHJldHVybiBpc01hcmtlZCgpIHx8IGlzTmV3bHlBbGxvY2F0ZWQoKTsgfQogICAgIGJvb2wgaXNN
YXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJrZWRPck5ld2x5
QWxsb2NhdGVkKCk7IH0KLSAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZER1cmluZ1dl
YWtWaXNpdGluZyhIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVybiBpc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQoKTsgfQorICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBW
ZXJzaW9uLCBIZWFwQ2VsbCopIHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOyB9
CisgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWRDb25jdXJyZW50bHkoSGVhcFZlcnNp
b24sIEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7IH0KICAg
ICBib29sIGlzTGl2ZSgpIHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOyB9CiAg
ICAgCiAgICAgYm9vbCBoYXNWYWxpZENlbGwoKSBjb25zdCB7IHJldHVybiBtX2hhc1ZhbGlkQ2Vs
bDsgfQpAQCAtMTA2LDggKzEwNyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBjb25zdCBBbGxvY2F0
b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9
CiAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkodWludDY0X3QpIHsgfQotICAgIHZvaWQg
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyh1aW50NjRfdCkgeyB9CisgICAgdm9pZCBhYm91
dFRvTWFyayhIZWFwVmVyc2lvbikgeyB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIHRl
c3RBbmRTZXRNYXJrZWQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3
ZWVwZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTM5LDcgKzQwLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoZWFwLCBNYXJrZWRT
cGFjZSogbWFya2VkU3BhY2UsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmli
dXRlcyYgYXR0cmlidXRlcykKICAgICA6IG1fY3VycmVudEJsb2NrKDApCiAgICAgLCBtX2xhc3RB
Y3RpdmVCbG9jaygwKQotICAgICwgbV9uZXh0QmxvY2tUb1N3ZWVwKG51bGxwdHIpCiAgICAgLCBt
X2NlbGxTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjZWxsU2l6ZSkpCiAgICAgLCBtX2F0dHJp
YnV0ZXMoYXR0cmlidXRlcykKICAgICAsIG1faGVhcChoZWFwKQpAQCAtNTAsMTEgKzUwLDEzIEBA
IE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKEhlYXAqIGgKIGJvb2wgTWFya2VkQWxs
b2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSkKIHsKICAgICB1bnNpZ25lZCBpdGVy
c1NpbmNlTGFzdFRpbWVDaGVjayA9IDA7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sg
PSBtX2Jsb2NrTGlzdC5iZWdpbigpOwotICAgIHdoaWxlIChibG9jaykgewotICAgICAgICBibG9j
ayA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLSAgICAgICAgaWYgKGJsb2NrKQot
ICAgICAgICAgICAgYmxvY2stPmZsaXBJZk5lY2Vzc2FyeSgpOyAvLyBGb3JjZXMgdXMgdG8gdG91
Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50aWMgZWZmZWN0Lgor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2Jsb2Nrcy5zaXplKCk7ICsraW5k
ZXgpIHsKKyAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRl
eF07CisgICAgICAgIGlmIChibG9jaykgeworICAgICAgICAgICAgLy8gRm9yY2VzIHVzIHRvIHRv
dWNoIHRoZSBtZW1vcnkgb2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVjdC4K
KyAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCisgICAgICAgICAgICAgICAgYmxv
Y2stPmJsb2NrKCkucmVzZXRWZXJzaW9uKCk7CisgICAgICAgIH0KICAgICAgICAgKytpdGVyc1Np
bmNlTGFzdFRpbWVDaGVjazsKICAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID49
IEhlYXA6OnNfdGltZUNoZWNrUmVzb2x1dGlvbikgewogICAgICAgICAgICAgZG91YmxlIGN1cnJl
bnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAgLTY2LDg0ICs2
OCw3NyBAQCBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3VibGUgCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmV0aXJlKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKQorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpm
aW5kRW1wdHlCbG9jaygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsgLy8gVGhp
cyB3aWxsIGJlIGNhbGxlZCBpbiBwYXJhbGxlbCBkdXJpbmcgR0MuCi0gICAgaWYgKGJsb2NrID09
IG1fY3VycmVudEJsb2NrKSB7Ci0gICAgICAgIC8vIFRoaXMgaGFwcGVucyB3aGVuIHRoZSBtdXRh
dG9yIGlzIHJ1bm5pbmcuIFdlIGZpbmlzaGVkIGEgZnVsbCBHQyBhbmQgbWFya2VkIHRvbyBmZXcg
dGhpbmdzCi0gICAgICAgIC8vIHRvIHJldGlyZS4gVGhlbiB3ZSBzdGFydGVkIGFsbG9jYXRpbmcg
aW4gdGhpcyBibG9jay4gVGhlbiBhIGJhcnJpZXIgcmFuLCB3aGljaCBtYXJrZWQgYW4KLSAgICAg
ICAgLy8gb2JqZWN0IGluIHRoaXMgYmxvY2ssIHdoaWNoIHB1dCBpdCBvdmVyIHRoZSByZXRpcmVt
ZW50IHRocmVzaG9sZC4gSXQncyBPSyB0byBzaW1wbHkgZG8KLSAgICAgICAgLy8gbm90aGluZyBp
biB0aGF0IGNhc2UuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGJsb2NrID09IG1f
bGFzdEFjdGl2ZUJsb2NrKSB7Ci0gICAgICAgIC8vIFRoaXMgY2FuIGVhc2lseSBoYXBwZW4gZHVy
aW5nIG1hcmtpbmcuIEl0IHdvdWxkIGJlIGVhc3kgdG8gaGFuZGxlIHRoaXMgY2FzZSwgYnV0IGl0
J3MKLSAgICAgICAgLy8ganVzdCBhcyBlYXN5IHRvIGlnbm9yZSBpdC4KLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+aXNPbkxpc3QoKSk7Ci0gICAgaWYg
KGJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCkKLSAgICAgICAgbV9uZXh0QmxvY2tUb1N3ZWVw
ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotICAgIGJsb2NrLT5yZW1vdmUoKTsK
LSAgICBtX3JldGlyZWRCbG9ja3MucHVzaChibG9jayk7Ci19Ci0KLU1hcmtlZEJsb2NrOjpIYW5k
bGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmlsdGVyTmV4dEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKQotewotICAgIGlmIChibG9jayA9PSBtX2Jsb2NrTGlzdC5lbmQoKSkKKyAgICBtX2Vt
cHR5Q3Vyc29yID0gbV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJzb3IsIHRydWUpOworICAgIGlm
IChtX2VtcHR5Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIGJsb2NrOwotfQotCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4
dEJsb2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKLXsKLSAgICBtX25leHRC
bG9ja1RvU3dlZXAgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2spOworICAgIHJldHVybiBtX2Jsb2Nr
c1ttX2VtcHR5Q3Vyc29yXTsKIH0KIAogdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0
ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlmIChtX2N1cnJlbnRCbG9jaykgewotICAg
ICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVwKTsKKyAgICBp
ZiAobV9jdXJyZW50QmxvY2spCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJl
ZUxpc3QoKTsKLSAgICAgICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2N1cnJlbnRCbG9jay0+bmV4
dCgpKTsKLSAgICB9CiAgICAgCiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0KLSAgICBS
RUxFQVNFX0FTU0VSVChtX25leHRCbG9ja1RvU3dlZXAgIT0gbV9ibG9ja0xpc3QuZW5kKCkpOwot
Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJsb2NrOjpI
YW5kbGUqJiBibG9jayA9IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkg
ewotICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAg
ICAgIC8vIEl0IHdvdWxkIGJlIHN1cGVyIHdlaXJkIGlmIHRoZSBibG9ja3Mgd2UgYXJlIHN3ZWVw
aW5nIGhhdmUgYW55dGhpbmcgYWxsb2NhdGVkIGR1cmluZyB0aGlzCi0gICAgICAgIC8vIGN5Y2xl
LgotICAgICAgICBBU1NFUlQoIWJsb2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAg
ICAgCi0gICAgICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRy
OworICAgIAorICAgIGZvciAoOzspIHsKKyAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0gbV9j
YW5BbGxvY2F0ZS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGlm
IChtX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24gYSBj
b21wbGV0ZS1mdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0Ci0g
ICAgICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8gaXQg
c29tZXRpbWVzLgotICAgICAgICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOwotICAgICAgICAgICAg
YmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgQVNTRVJU
KGJsb2NrLT5pc01hcmtlZCgpKTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKG1fYWxs
b2NhdGlvbkN1cnNvciwgZmFsc2UpOwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7
Ci0gICAgICAgIHNldEZyZWVMaXN0KGZyZWVMaXN0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAg
IGlmICh2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZUluKG1fYmxvY2tzW21fYWxsb2NhdGlvbkN1
cnNvcl0pKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgaWYg
KCFtX2ZyZWVMaXN0KSB7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZmluZEVtcHR5Qmxv
Y2soKSkKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlSW4oYmxvY2spOworICAgIAorICAgIGlmIChN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fbWFya2VkU3BhY2UtPmZpbmRFbXB0eUJsb2Nr
KCkpIHsKKyAgICAgICAgYmxvY2stPnN3ZWVwKCk7CisgICAgICAgIGJsb2NrLT5yZW1vdmVGcm9t
QWxsb2NhdG9yKCk7CisgICAgICAgIGFkZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGFs
bG9jYXRlSW4oYmxvY2spOwogICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAor
dm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKQoreworICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4oYmxvY2spOworICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCogTWFy
a2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQor
eworICAgIEFTU0VSVChibG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxv
Y2F0ZWQoKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgIAorICAg
IEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3
ZWVwVG9GcmVlTGlzdCk7CisgICAgCisgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9u
IGEgY29tcGxldGVseSBmdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwg
YnV0CisgICAgLy8gdGhhdCBhbGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBp
dCBzb21ldGltZXMuCisgICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7Cisg
ICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBibG9jay0+dW5z
d2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJl
ZUxpc3RlZCgpKTsKKyAgICAgICAgQVNTRVJUKCFpc0VtcHR5KGJsb2NrKSk7CisgICAgICAgIEFT
U0VSVCghaXNDYW5BbGxvY2F0ZShibG9jaykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgCisgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jazsKKyAgICBzZXRGcmVlTGlzdChm
cmVlTGlzdCk7CisgICAgCiAgICAgdm9pZCogcmVzdWx0OwogICAgIGlmIChtX2ZyZWVMaXN0LnJl
bWFpbmluZykgewogICAgICAgICB1bnNpZ25lZCBjZWxsU2l6ZSA9IG1fY2VsbFNpemU7CkBAIC0x
NTUsNiArMTUwLDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQog
ICAgICAgICByZXN1bHQgPSBoZWFkOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQp
OworICAgIHNldElzRWRlbihtX2N1cnJlbnRCbG9jaywgdHJ1ZSk7CiAgICAgbV9tYXJrZWRTcGFj
ZS0+ZGlkQWxsb2NhdGVJbkJsb2NrKG1fY3VycmVudEJsb2NrKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtMjI3LDggKzIyMyw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVT
bG93Q2FzZUkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBhZGRCbG9j
ayhibG9jayk7Ci0gICAgICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxl
Y3RpbmcoKTsKKyAgICByZXN1bHQgPSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBBU1NFUlQocmVz
dWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ5LDM3ICsyNDQsNzIgQEAgc2l6ZV90
IE1hcmtlZEFsbG9jYXRvcjo6YmxvY2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6OkhhbmRsZSog
TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2NrOjp0
cnlDcmVhdGUoKm1faGVhcCwgdGhpcywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAgICAK
KyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRl
KCptX2hlYXAsIG1fY2VsbFNpemUsIG1fYXR0cmlidXRlcyk7CisgICAgaWYgKCFoYW5kbGUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJs
b2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJrZWRB
bGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIEFT
U0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAgc2l6
ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBhY2l0
eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChibG9jayk7
CisgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9sZENhcGFjaXR5KSB7CisgICAg
ICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZl
Y3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IubnVtQml0
cygpID09IG9sZENhcGFjaXR5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAg
ICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVj
dG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2Vz
LnRha2VMYXN0KCk7CisgICAgICAgIEFTU0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAg
bV9ibG9ja3NbaW5kZXhdID0gYmxvY2s7CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRWZWN0
b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICBB
U1NFUlQoIXZlY3RvcltpbmRleF0pOworICAgICAgICB9KTsKKworICAgIGJsb2NrLT5kaWRBZGRU
b0FsbG9jYXRvcih0aGlzLCBpbmRleCk7CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJs
b2NrKTsKLSAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtlZFNwYWNl
LT5kaWRBZGRCbG9jayhibG9jayk7CisgICAgc2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKKyAgICBz
ZXRJc0VtcHR5KGluZGV4LCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlbW92
ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlmIChtX2N1cnJlbnRC
bG9jayA9PSBibG9jaykgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZpbHRlck5leHRCbG9j
ayhtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3Qo
KSk7Ci0gICAgfQotICAgIGlmIChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxvY2spCi0gICAgICAg
IHNldE5leHRCbG9ja1RvU3dlZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOworICAgIEFT
U0VSVChibG9jay0+YWxsb2NhdG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fYmxvY2tzW2Js
b2NrLT5pbmRleCgpXSA9PSBibG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJlbW92ZUJsb2NrKCk7
Ci0gICAgbV9ibG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9jay0+aW5k
ZXgoKV0gPSBudWxscHRyOworICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2stPmlu
ZGV4KCkpOworICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJp
dFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCldID0g
ZmFsc2U7CisgICAgICAgIH0pOworICAgIAorICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9tQWxsb2Nh
dG9yKCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCiB7Ci0g
ICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKQot
ICAgICAgICBtX2Jsb2NrTGlzdC50YWtlRnJvbShtX3JldGlyZWRCbG9ja3MpOwotCiAgICAgQVNT
RVJUKCFtX2xhc3RBY3RpdmVCbG9jayk7CiAgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykgewogICAg
ICAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOwpAQCAtMjkyLDI5ICszMjIsMjUgQEAgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKICAgICBtX2ZyZWVMaXN0ID0gRnJlZUxpc3Qo
KTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAw
OwotICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxw
dHI7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogICAgIHNldEZyZWVMaXN0KEZyZWVM
aXN0KCkpOwogCi0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2Jsb2NrTGlzdC5iZWdpbigpKTsK
KyAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSAwOworICAgIG1fZW1wdHlDdXJzb3IgPSAwOworICAg
IG1fc25hcHNob3RDdXJzb3IgPSAwOworICAgIAorICAgIG1fZWRlbi5jbGVhckFsbCgpOwogCiAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUltbW9ydGFsT2JqZWN0cygpKSkgewotICAgICAg
ICBNYXJrZWRCbG9jazo6SGFuZGxlKiBuZXh0OwotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrOjpI
YW5kbGUqJiBibG9jayA9IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkg
ewotICAgICAgICAgICAgbmV4dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQot
ICAgICAgICAgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6
OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgICAgIGJsb2NrLT56YXAoZnJlZUxp
c3QpOwotICAgICAgICAgICAgcmV0aXJlKGJsb2NrKTsKLSAgICAgICAgfQorICAgICAgICAvLyBG
SVhNRTogVGhpbmdzPwogICAgIH0KIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6Omxhc3RDaGFu
Y2VUb0ZpbmFsaXplKCkKIHsKLSAgICBtX2Jsb2NrTGlzdC50YWtlRnJvbShtX3JldGlyZWRCbG9j
a3MpOwogICAgIGZvckVhY2hCbG9jaygKICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaykgewogICAgICAgICAgICAgYmxvY2stPmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CkBA
IC0zMjYsNCArMzUyLDEwNiBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0RnJlZUxpc3QoY29u
c3QgCiAgICAgbV9mcmVlTGlzdCA9IGZyZWVMaXN0OwogfQogCit2b2lkIE1hcmtlZEFsbG9jYXRv
cjo6cmVzdW1lQWxsb2NhdGluZygpCit7CisgICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9jaykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5yZXN1
bWVBbGxvY2F0aW5nKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVCbG9jazsK
KyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpiZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpCit7CisgICAgLy8gTWFyayBiaXRz
IGFyZSBzdGlja3kgYW5kIHNvIGlzIG91ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25seSBj
bGVhciB0aGVzZSBkdXJpbmcgZnVsbAorICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ugc3Vy
dml2ZWQgdGhlIGxhc3QgY29sbGVjdGlvbiB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9uZSBz
byBsb25nCisgICAgLy8gYXMgdGhlIG5leHQgb25lIGlzIGVkZW4uCisgICAgbV9tYXJraW5nTm90
RW1wdHkuY2xlYXJBbGwoKTsKKyAgICBtX21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7Cit9CisK
K3ZvaWQgTWFya2VkQWxsb2NhdG9yOjplbmRNYXJraW5nKCkKK3sKKyAgICBtX2FsbG9jYXRlZC5j
bGVhckFsbCgpOworICAgIAorICAgIC8vIEl0J3Mgc3VycHJpc2luZyBhbmQgZnJ1c3RyYXRpbmcg
dG8gY29tcHJlaGVuZCwgYnV0IHRoZSBlbmQtb2YtbWFya2luZyBmbGlwIGRvZXMgbm90IG5lZWQg
dG8KKyAgICAvLyBrbm93IHdoYXQga2luZCBvZiBjb2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3ds
ZWRnZSBpcyBhbHJlYWR5IGVuY29kZWQgaW4gdGhlIG1fbWFya2luZ1hZWgorICAgIC8vIHZlY3Rv
cnMuCisgICAgCisgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgeworICAgICAgICAvLyBJZiBi
bG9ja3MgbmVlZCBkZXN0cnVjdGlvbiB0aGVuIG5vdGhpbmcgaXMgZW1wdHkhIFRoaXMgaXMgYSBj
b3JyZWN0IGFzc2VydGlvbiBidXQgbWF5CisgICAgICAgIC8vIGJlY29tZSB3cm9uZyBvbmNlIHdl
IGdvIGZ1bGwgY29uY3VycmVudDogd2hlbiB3ZSBjcmVhdGUgYSBuZXcgYmxvY2ssIGl0IHdpbGwg
ZmxpY2tlcgorICAgICAgICAvLyBpbnRvIHRoZSBlbXB0eSBzZXQgZm9yIGEgdGlueSBtb21lbnQu
IE9uIHRoZSBvdGhlciBoYW5kLCB0aGlzIGNvZGUgaXMgbGlrZWx5IHRvIGJlIHJ1bgorICAgICAg
ICAvLyBpbiBzdG9wVGhlV29ybGQuCisgICAgICAgIEFTU0VSVChtX2VtcHR5LmlzRW1wdHkoKSk7
CisgICAgICAgIG1fY2FuQWxsb2NhdGUgPSBtX2xpdmUgJiB+bV9tYXJraW5nUmV0aXJlZDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2VtcHR5ID0gbV9saXZlICYgfm1fbWFy
a2luZ05vdEVtcHR5OworICAgIG1fY2FuQWxsb2NhdGUgPSBtX2xpdmUgJiBtX21hcmtpbmdOb3RF
bXB0eSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgIAorICAgIGRhdGFMb2coIkJpdHMgZm9yICIs
IG1fY2VsbFNpemUsICIsICIsIG1fYXR0cmlidXRlcywgIjpcbiIpOworICAgIGR1bXBCaXRzKFdU
Rjo6ZGF0YUZpbGUoKSk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZvckVk
ZW5Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3NuYXBzaG90IHw9IG1fZWRlbjsKK30KKwordm9pZCBN
YXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24oKQoreworICAgIG1fc25h
cHNob3QgPSBtX2xpdmU7Cit9CisKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRv
cjo6ZmluZEJsb2NrVG9Td2VlcCgpCit7CisgICAgbV9zbmFwc2hvdEN1cnNvciA9IG1fc25hcHNo
b3QuZmluZEJpdChtX3NuYXBzaG90Q3Vyc29yLCB0cnVlKTsKKyAgICBpZiAobV9zbmFwc2hvdEN1
cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBtX2Jsb2Nrc1ttX3NuYXBzaG90Q3Vyc29yXTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0
b3I6OnN3ZWVwKCkKK3sKKyAgICBtX3NuYXBzaG90LmZvckVhY2hTZXRCaXQoCisgICAgICAgIFsm
XSAoc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBtX2Jsb2Nrc1tpbmRleF0tPnN3ZWVwKCk7
CisgICAgICAgIH0pOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2hyaW5rKCkKK3sKKyAg
ICBtX2VtcHR5LmZvckVhY2hTZXRCaXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7Cisg
ICAgICAgICAgICBtX21hcmtlZFNwYWNlLT5mcmVlQmxvY2sobV9ibG9ja3NbaW5kZXhdKTsKKyAg
ICAgICAgfSk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjphc3NlcnRTbmFwc2hvdEVtcHR5
KCkKK3sKKyAgICBBU1NFUlQobV9zbmFwc2hvdC5pc0VtcHR5KCkpOworfQorCit2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICB1bnNpZ25lZCBt
YXhOYW1lTGVuZ3RoID0gMDsKKyAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCisgICAgICAg
IFsmXSAoRmFzdEJpdFZlY3RvciYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmxlbihuYW1lKTsKKyAgICAgICAgICAgIG1heE5hbWVMZW5ndGgg
PSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBsZW5ndGgpOworICAgICAgICB9KTsKKyAgICAKKyAg
ICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYg
dmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAi
LCBuYW1lLCAiOiAiKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1heE5hbWVMZW5n
dGggLSBzdHJsZW4obmFtZSk7IGktLTspCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIik7
CisgICAgICAgICAgICBvdXQucHJpbnQodmVjdG9yLCAiXG4iKTsKKyAgICAgICAgfSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDkgQEAKICNpbmNsdWRlICJBbGxvY2F0b3JBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRnJlZUxp
c3QuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM5LDEzNCBAQCBjbGFz
cyBIZWFwOwogY2xhc3MgTWFya2VkU3BhY2U7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKKyNkZWZpbmUgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQobWFjcm8pIFwKKyAgICBt
YWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBoYXZlIGFj
dHVhbCBibG9ja3MuICovXAorICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVjdHMgYW5kIG5vdGhpbmcgdG8gZGVzdHJv
eS4gKi8gXAorICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9mIGFs
bGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCisgICAgbWFjcm8oY2Fu
QWxsb2NhdGUsIENhbkFsbG9jYXRlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjYW4g
YmUgYWxsb2NhdGVkIGluIHJpZ2h0IG5vdy4gKi8gXAorICAgIG1hY3JvKGVkZW4sIEVkZW4pIC8q
IFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhlIGxh
c3QgR0MuICovXAorICAgIG1hY3JvKHNuYXBzaG90LCBTbmFwc2hvdCkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIu
ICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcuICov
XAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisgICAgbWFjcm8obWFya2lu
Z1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBh
cmUgcmV0aXJlZC4gKi8KKworLy8gTm90ZSB0aGF0IHRoaXMgY29sbGVjdG9yIHN1cHBvcnRzIG92
ZXJsYXBwaW5nIGFsbG9jYXRvciBzdGF0ZSB3aXRoIG1hcmtpbmcgc3RhdGUsIHNpbmNlIGluIGEK
Ky8vIGNvbmN1cnJlbnQgY29sbGVjdG9yIHlvdSBhbGxvdyBhbGxvY2F0aW9uIHdoaWxlIG1hcmtp
bmcgaXMgcnVubmluZy4gU28gaXQncyBiZXN0IHRvIHZpc3VhbGl6ZSBhCisvLyBmdWxsIG11dGFi
bGUtPmVkZW4gY29sbGVjdC0+bXV0YXRlLT5mdWxsIGNvbGxlY3QgY3ljbGUgYW5kIHNlZSBob3cg
dGhlIGJpdHMgYWJvdmUgZ2V0IGFmZmVjdGVkLgorLy8gVGhlIGV4YW1wbGUgYmVsb3cgdHJpZXMg
dG8gYmUgZXhoYXVzdGl2ZSBhYm91dCB3aGF0IGhhcHBlbnMgdG8gdGhlIGJpdHMsIGJ1dCBvbWl0
cyBhIGxvdCBvZgorLy8gdGhpbmdzIHRoYXQgaGFwcGVuIHRvIG90aGVyIHN0YXRlLgorLy8KKy8v
IENyZWF0ZSBhbGxvY2F0b3IKKy8vIC0gYWxsIGJpdHMgYXJlIGVtcHR5CisvLyBTdGFydCBhbGxv
Y2F0aW5nIGluIHNvbWUgYmxvY2sKKy8vIC0gYWxsb2NhdGUgdGhlIGJsb2NrIGFuZCBzZXQgdGhl
IGxpdmUgYml0LgorLy8gLSB0aGUgZW1wdHkgYml0IGZvciB0aGUgYmxvY2sgZmxpY2tlcnMgb24g
YW5kIHRoZW4gZ2V0cyBpbW1lZGlhdGVseSBjbGVhcmVkIGJ5IHN3ZWVwaW5nLgorLy8gLSBzZXQg
dGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgaW4gdGhhdCBibG9jaworLy8gLSBz
ZXQgdGhlIGFsbG9jYXRlZCBiaXQuCisvLyBEbyB0aGF0IHRvIGEgbG90IG9mIGJsb2NrcyBhbmQg
dGhlbiBzdGFydCBhbiBlZGVuIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygpIGhhcyBu
b3RoaW5nIHRvIGRvLgorLy8gLSBieSBkZWZhdWx0IHdlIGhhdmUgY2xlYXIgbWFya2luZ05vdEVt
cHR5L21hcmtpbmdSZXRpcmVkIGJpdHMuCisvLyAtIG1hcmtpbmcgYnVpbGRzIHVwIG1hcmtpbmdO
b3RFbXB0eS9tYXJraW5nUmV0aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAt
IGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gZm9yIGRlc3RydWN0b3IgYmxvY2tzOiBj
YW5BbGxvY2F0ZSA9IGxpdmUgJiB+bWFya2luZ1JldGlyZWQKKy8vIC0gZm9yIG5vbi1kZXN0cnVj
dG9yIGJsb2NrczoKKy8vICAgICAgIGVtcHR5ID0gbGl2ZSAmIH5tYXJraW5nTm90RW1wdHkKKy8v
ICAgICAgIGNhbkFsbG9jYXRlID0gbGl2ZSAmIG1hcmtpbmdOb3RFbXB0eSAmIH5tYXJraW5nUmV0
aXJlZAorLy8gU25hcHNob3R0aW5nLgorLy8gLSBzbmFwc2hvdCB8PSBlZGVuCisvLyBQcmVwYXJl
IGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBlZGVuCisvLyBGaW5pc2ggY29sbGVjdGlvbi4K
Ky8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCBoYWQgc29tZSBmcmVlIGFuZCBzb21lIGxp
dmUgb2JqZWN0cy4KKy8vIC0gY2xlYXIgdGhlIGNhbkFsbG9jYXRlIGJpdAorLy8gLSBjbGVhciB0
aGUgc25hcHNob3QgYml0CisvLyAtIHNldCB0aGUgZWRlbiBiaXQKKy8vIEZpbmlzaCBhbGxvY2F0
aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9jayB0
aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5LgorLy8gLSBjbGVhciB0aGUgZW1wdHkgYml0CisvLyAt
IGNsZWFyIHRoZSBzbmFwc2hvdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlz
aCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4gc29t
ZSBibG9jayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5IGluIGFub3RoZXIgYWxsb2NhdG9yLgor
Ly8gLSBjbGVhciB0aGUgZW1wdHkgYml0CisvLyAtIGNsZWFyIGFsbCBiaXRzIGluIHRoYXQgYWxs
b2NhdG9yCisvLyAtIHNldCB0aGUgbGl2ZSBiaXQgaW4gYW5vdGhlciBhbGxvY2F0b3IgYW5kIHRo
ZSBlbXB0eSBiaXQuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSwgc25hcHNob3QgYml0cy4KKy8vIC0g
c2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRl
ZCBiaXQpLgorLy8gU3RhcnQgYSBmdWxsIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygp
IGNsZWFycyBtYXJraW5nTm90RW1wdHksIG1hcmtpbmdSZXRpcmVkCisvLyAtIHRoZSBoZWFwIHZl
cnNpb24gaXMgaW5jcmVtZW50ZWQKKy8vIC0gbWFya2luZyByZWJ1aWxkcyBtYXJraW5nTm90RW1w
dHkvbWFya2luZ3JldGlyZWQgYml0cy4KKy8vIFdlIGRvIGVuZE1hcmtpbmcoKQorLy8gLSBjbGVh
ciBhbGwgYWxsb2NhdGVkIGJpdHMuCisvLyAtIHNldCBjYW5BbGxvY2F0ZS9lbXB0eSB0aGUgc2Ft
ZSB3YXkgYXMgaW4gZWRlbiBjb2xsZWN0aW9uLgorLy8gU25hcHNob3R0aW5nLgorLy8gLSBzbmFw
c2hvdCB8PSBsaXZlCisvLyBwcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBlZGVu
LgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLworLy8gTm90aWNlIGhvdyBpbiB0aGlzIHNjaGVt
ZSwgdGhlIGVtcHR5L2NhbkFsbG9jYXRlIHN0YXRlIHN0YXlzIHNlcGFyYXRlIGZyb20gdGhlIG1h
cmtpbmdOb3RFbXB0eS8KKy8vIG1hcmtpbmdSZXRpcmVkIHN0YXRlLiBUaGlzIGlzIG9uZSBzdGVw
IHRvd2FyZHMgaGF2aW5nIHNlcGFyYXRlZCBhbGxvY2F0aW9uIGFuZCBtYXJraW5nIHN0YXRlLgor
Ly8KKy8vIEFmdGVyIHRoaXMsIHdlIGp1c3QgbmVlZCB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9uOiB3
aGF0IGRvZXMgYW4gb2JqZWN0IGFsbG9jYXRlZCBkdXJpbmcgZWRlbiBHQworLy8gbG9vayBsaWtl
IHRvIHRoZSBHQz8KKy8vCisvLyBJJ3ZlIGNvbWUgdXAgd2l0aCB0d28gY29tcGVsbGluZyBhbnN3
ZXJzLgorLy8KKy8vIDEuIEFMTE9DQVRFIEJMQUNLCisvLworLy8gSSB0aGluayB0aGF0IHRoZSBl
YXNpZXN0IGFuc3dlciBpcyB0byBhbGxvY2F0ZSB0aGUgb2JqZWN0IHdoaXRlIGFuZCB0aGVuCisv
LyBpbW1lZGlhdGVseSBtYXJrIGl0LiBUaGlzIG1ha2VzIHRoZSBvYmplY3QgYmVoYXZlIGFzIGlm
IGl0IHdhcyBhbGxvY2F0ZWQganVzdCBiZWZvcmUgdGhlIHN0YXJ0CisvLyBvZiBHQyBhbmQgaXQg
d2FzIG9uIHRoZSBzdGFjayBhdCB0aGUgYmVnaW5uaW5nIG9mIEdDLiBXZSB3b3VsZG4ndCBoYXZl
IHRvIGRvIGFueXRoaW5nIGRpZmZlcmVudAorLy8gd2l0aCB0aGUgdmFyaW91cyBibG9jayBiaXRz
IHdoZW4gYWxsb2NhdGluZyBkdXJpbmcgR0M6IHdlIGNvdWxkIHN0aWxsIHNldCBlZGVuIGFuZCBh
bGxvY2F0ZWQKKy8vIHNpbmNlIHRoZXkgd2lsbCBiZSBjbGVhcmVkIGFueXdheS4KKy8vCisvLyBC
dXQgdGhpcyBtZWFucyB0aGF0IHRoZSBvYmplY3Qgd29uJ3QgYmUgZWxpZ2libGUgZm9yIGZyZWVp
bmcgdW50aWwgdGhlIG5leHQgZnVsbCBHQy4gSWRlYWxseQorLy8gd2UnZCBtYWtlIHRoZSBvYmpl
Y3QgaXMgZWxpZ2libGUgZm9yIGZyZWVpbmcgYXQgdGhlIG5leHQgZWRlbiBHQy4gVGhlcmUncyBh
IGJ1bmNoIG9mIHRoaW5ncyB3ZQorLy8gY291bGQgZG8gdG8gbWFrZSB0aGlzIGhhcHBlbi4gSGVy
ZSBhcmUgc29tZSBpZGVhczoKKy8vCisvLyAtIEludHJvZHVjZSBhIG5ldyBDZWxsU3RhdGUsIGNh
bGxlZCBGbG9hdCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdhcyBhbGxvY2F0ZWQgZHVy
aW5nIHRoZQorLy8gICBHQy4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgbWFya2luZyBkb2VzIG5v
dGhpbmcgZm9yIEZsb2F0cy4gVGhpcyB3b3VsZCBtYWtlIG1hcmtpbmcgYSB0aW55CisvLyAgIGJp
dCBtb3JlIGV4cGVuc2l2ZS4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgdGhlIGJhcnJpZXIgcmVj
b2duaXplcyBzdG9yZXMgdG8gYSBGbG9hdCB0aGUgc2FtZQorLy8gICB3YXkgdGhhdCBpdCBzZWVz
IGEgc3RvcmUgdG8gT2xkQmxhY2s6IGl0IHB1dHMgdGhlIG9iamVjdCBvbiB0aGUgbWFyayBzdGFj
ay4gRmxvYXRzIHdvdWxkIGJlCisvLyAgIHB1dCBvbiB0aGUgbWFyayBzdGFjayBhcyBGbG9hdEdy
ZXkgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IHdpbGwgYmUgc2Nhbm5lZCBieSB0aGUgR0MgYnV0IHRo
YXQKKy8vICAgdGhleSBhcmVuJ3QgYWN0dWFsbHkgbWFya2VkLgorLy8KKy8vICAgTm90ZSB0aGF0
IHRoaXMgaW1wbGllcyBoYXZpbmcgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aG9zZSBjZWxscyBm
cm9tIEZsb2F0IHRvIHNvbWV0aGluZyBlbHNlCisvLyAgIGF0IHRoZSBlbmQgb2YgR0MuICBJJ20g
bm90IHN1cmUgdGhhdCB0aGlzIGlzIHNvIGdyZWF0LgorLy8KKy8vIC0gTWFyayB0aGUgb2JqZWN0
cyBhZnRlciBhbGxvY2F0aW9uLCBidXQgYWxzbyBzZXQgc29tZSBvdGhlciBiaXRzIHRvIGluZGlj
YXRlIHRoYXQgdGhlIHRob3NlCisvLyAgIG9iamVjdHMgc2hvdWxkIGJlIHVubWFya2VkIGF0IHRo
ZSBlbmQgb2YgdGhlIEdDLgorLy8KKy8vIEVpdGhlciBvZiB0aGVzZSBhcHByb2FjaGVzIHdvdWxk
IG1ha2UgY29sbGVjdGlvbnMgbW9yZSBleHBlbnNpdmUsIGJ1dCBpdCBmZWVscyBsaWtlIHRoZSBs
YXR0ZXIKKy8vIGFwcHJvYWNoIHdvdWxkIGJlIGEgcHJvZml0YWJsZSBvcHRpbWl6YXRpb24uIEkn
bSBhbHNvIHJlYWxseSBnZXR0aW5nIHdvcnJpZWQgYWJvdXQgaG93IHRoaXMgR0MKKy8vIGV4cGVy
aWVuY2VzIGJhY2t3YXJkcyB0aW1lIHRyYXZlbCwgd2l0aCBhbGwgdGhlIHJlbWFya2luZyBvZiB0
aGluZ3MgbGlrZSBuZXcgb2JqZWN0cyBhbmQKKy8vIHdoYXRub3QuCisvLworLy8gMi4gQUxMT0NB
VEUgV0hJVEUKKy8vCisvLyBJIGRvbid0IGtub3cgaWYgdGhpcyBpcyBzb3VuZCwgYnV0IGlmIGl0
IHdhcyB0aGVuIGl0IHdvdWxkIGJlIHRoZSBvcHRpbWFsIHNvbHV0aW9uLiBBbGxvY2F0aW9uCisv
LyB3b3VsZCB3b3JrIGFzIG5vdyBhbmQgY29uc2VxdWVudGx5LCBldmVyeXRoaW5nIHdlIGtub3cg
YWJvdXQgd2hhdCB3YXMgYWxsb2NhdGVkIGR1cmluZyBhIEdDIGlzCisvLyBmb3Jnb3R0ZW4gYXQg
dGhlIGVuZCBvZiBHQy4gQnV0IHRoYXQncyBmaW5lLiBFbmQgb2YgR0MgbXVzdCByZXNjYW4gYW55
IGhlYXAgbG9jYXRpb25zIHRoYXQgZ290CisvLyBzdG9yZWQgaW50byBhbmQgaXQgbXVzdCByZXNj
YW4gdGhlIHN0YWNrLiBTbywgd2hpdGUgb2JqZWN0cyBhbGxvY2F0ZWQgZHVyaW5nIEdDIHdvdWxk
IGdldAorLy8gbWFya2VkIGlmIHRoZXkgc29tZWhvdyBzdXJ2aXZlZC4KKy8vCisvLyBUaGlzIG1l
YW5zIHRoYXQgZm9yIGV4YW1wbGUgaWYgdGhlcmUgaXMgYSBmaWVsZCB0aGF0IG9mdGVuIGdldHMg
c3RvcmVkIHRvIHdpdGggbmV3IG9iamVjdHMsIHRoZQorLy8gR0Mgd2lsbCBub3Qgc2VlIGFsbCBv
ZiB0aGUgdmFsdWVzIGluIHRoYXQgZmllbGQgYnV0IGluc3RlYWQgaXQgd291bGQgcG9sbCB0aGF0
IGZpZWxkLCBob3BlZnVsbHkKKy8vIHNvbWV3aGF0IHJhcmVseS4gV2UgY2FuIG1ha2UgaXQgdmVy
eSByYXJlIGJ5IG9ubHkgaW5mcmVxdWVudGx5IGRvbmF0aW5nIGZyb20gdGhlIG1haW4gdGhyZWFk
J3MKKy8vIHNsb3QgdmlzaXRvciB0byBhbnkgb2YgdGhlIG90aGVycy4gU28sIHdlIHdvdWxkIG9u
bHkgbWFyayBzb21lIG9mIHRoZSBuZXcgb2JqZWN0cyB0aGF0IGdvdAorLy8gc3RvcmVkIGludG8g
dGhhdCBmaWVsZC4gSXQgYWxzbyBtZWFucyB0aGF0IGFueSBvYmplY3QgYWxsb2NhdGVkIGR1cmlu
ZyB0aGUgR0MgdGhhdCBkaWRuJ3QgZ2V0CisvLyBzdG9yZWQgaW50byBhbnkgb2JqZWN0IHRoYXQg
d2FzIGxpdmUgc2luY2UgYmVmb3JlIHRoZSBzdGFydCBvZiBHQyB3b3VsZCBzaW1wbHkgZGlzYXBw
ZWFyLiBUaGlzCisvLyBtZWFucyBtdWNoIGxlc3MgcmVzY2FubmluZyB0aGFuIGFueSBvZiB0aGUg
b3RoZXIgcHJvcG9zYWxzLgorLy8KKy8vIEkgcmVhbGx5IHdhbnQgdG8gZ28gd2l0aCB0aGUgYWxs
b2NhdGUtd2hpdGUgYXBwcm9hY2gsIGJ1dCBJIG5lZWQgdG8gdGhpbmsgbW9yZSBkZWVwbHkgYWJv
dXQgaXQKKy8vIGJlZm9yZSBJIGNvbW1pdCB0byBpdC4KKwogY2xhc3MgTWFya2VkQWxsb2NhdG9y
IHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCkBAIC00Niw5ICsx
NzYsMTYgQEAgcHVibGljOgogCiAgICAgTWFya2VkQWxsb2NhdG9yKEhlYXAqLCBNYXJrZWRTcGFj
ZSosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwogICAgIHZv
aWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKLSAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBw
cmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKICAgICB2
b2lkIHJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZ0ZvckZ1bGxDb2xs
ZWN0aW9uKCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdEZvckVk
ZW5Db2xsZWN0aW9uKCk7CisgICAgdm9pZCBzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKCk7Cisg
ICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc2hyaW5rKCk7CisgICAgdm9pZCBhc3NlcnRTbmFw
c2hvdEVtcHR5KCk7CiAgICAgc2l6ZV90IGNlbGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jZWxs
U2l6ZTsgfQogICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25z
dCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlv
bjsgfQpAQCAtNzIsNiArMjA5LDQ1IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91
YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJsb2NrU2l6ZUZvckJ5dGVz
KHNpemVfdCk7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUyhs
b3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2FwaXRh
bEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWVb
aW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+
aW5kZXgoKSk7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGlu
ZGV4LCBib29sIHZhbHVlKSB7IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1ZTsgfSBc
CisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+aW5kZXgo
KSwgdmFsdWUpOyB9IFwKKyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMgIyMgY2FwaXRhbEJp
dE5hbWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5h
bWUuYXRvbWljU2V0QW5kQ2hlY2soaW5kZXgsIHZhbHVlKTsgfSBcCisgICAgYm9vbCBhdG9taWNT
ZXRBbmRDaGVja0lzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
LCBib29sIHZhbHVlKSB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWUuYXRvbWljU2V0QW5kQ2hl
Y2soYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQorICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FU
T1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUykKKyN1bmRlZiBNQVJLRURfQUxM
T0NBVE9SX0JJVF9BQ0NFU1NPUlMKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAg
dm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworI2RlZmluZSBN
QVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1l
KSBcCisgICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAgICAgRk9SX0VBQ0hf
TUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0spOworI3Vu
ZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoY29u
c3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExC
QUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgZnVuYyhtXyAjIyBs
b3dlckJpdE5hbWUsICNjYXBpdGFsQml0TmFtZSk7CisgICAgICAgIEZPUl9FQUNIX01BUktFRF9B
TExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKTsKKyN1bmRlZiBNQVJL
RURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0
b3IqIG5leHRBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25leHRBbGxvY2F0b3I7IH0KKyAg
ICAKKyAgICAvLyBNYXJrZWRTcGFjZSBjYWxscyB0aGlzIGR1cmluZyBpbml0LgorICAgIHZvaWQg
c2V0TmV4dEFsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcikgeyBtX25leHRBbGxv
Y2F0b3IgPSBhbGxvY2F0b3I7IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5k
RW1wdHlCbG9jaygpOworICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9ja1Rv
U3dlZXAoKTsKKyAgICAKKyAgICB2b2lkIGR1bXBCaXRzKFByaW50U3RyZWFtJik7CiAgICAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwpAQCAtODIsMjUgKzI1OCwzNyBA
QCBwcml2YXRlOgogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAg
ICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpOwogICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUlu
KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkKiBhbGxvY2F0ZUluKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5l
ZWRlZCgpOwotICAgIHZvaWQgcmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKICAg
ICB2b2lkIHNldEZyZWVMaXN0KGNvbnN0IEZyZWVMaXN0Jik7CiAgICAgCi0gICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogZmlsdGVyTmV4dEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKLSAgICB2
b2lkIHNldE5leHRCbG9ja1RvU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSopOwotICAgIAogICAg
IEZyZWVMaXN0IG1fZnJlZUxpc3Q7CisgICAgCisgICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5k
bGUqPiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsK
KyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04obG93ZXJCaXRO
YW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMgbG93ZXJCaXRO
YW1lOworICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1Jf
QklUX0RFQ0xBUkFUSU9OKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9O
CisgICAgCisgICAgLy8gQWZ0ZXIgeW91IGRvIHNvbWV0aGluZyB0byBhIGJsb2NrIGJhc2VkIG9u
IG9uZSBvZiB0aGVzZSBjdXJzb3JzLCB5b3UgY2xlYXIgdGhlIGJpdCBpbiB0aGUKKyAgICAvLyBj
b3JyZXNwb25kaW5nIGJpdHZlY3RvciBhbmQgbGVhdmUgdGhlIGN1cnNvciB3aGVyZSBpdCB3YXMu
CisgICAgc2l6ZV90IG1fYWxsb2NhdGlvbkN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBu
ZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGFsbG9jYXRpb24uCisgICAgc2l6ZV90
IG1fZW1wdHlDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlz
IGEgY2FuZGlkYXRlIGZvciBlbXB0eSBhbGxvY2F0aW9uIChhbGxvY2F0aW5nIGluIGVtcHR5IGJs
b2NrcykuCisgICAgc2l6ZV90IG1fc25hcHNob3RDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0
aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBpbmNyZW1lbnRhbCBzd2VlcGlu
Zy4KKyAgICAKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2N1cnJlbnRCbG9jazsKICAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBtX25leHRCbG9ja1RvU3dlZXA7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtl
ZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+
PiBtX2Jsb2NrTGlzdDsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRs
ZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fcmV0aXJlZEJs
b2NrczsKKwogICAgIExvY2sgbV9sb2NrOwogICAgIHVuc2lnbmVkIG1fY2VsbFNpemU7CiAgICAg
QWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAgICAgSGVhcCogbV9oZWFwOwogICAg
IE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9uZXh0
QWxsb2NhdG9yOwogfTsKIAogaW5saW5lIHB0cmRpZmZfdCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNl
dE9mRnJlZUxpc3QoKQpAQCAtMTQ5LDIwICszMzcsMTIgQEAgQUxXQVlTX0lOTElORSB2b2lkKiBN
YXJrZWRBbGxvY2F0b3I6OmFsbAogICAgIHJldHVybiBoZWFkOwogfQogCi1pbmxpbmUgdm9pZCBN
YXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcoKQotewotICAgIGlmICghbV9sYXN0QWN0
aXZlQmxvY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZnJlZUxpc3QgPSBtX2xhc3RBY3Rp
dmVCbG9jay0+cmVzdW1lQWxsb2NhdGluZygpOwotICAgIG1fY3VycmVudEJsb2NrID0gbV9sYXN0
QWN0aXZlQmxvY2s7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotfQotCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQmxv
Y2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX2Jsb2NrTGlzdC5mb3JFYWNoKGZ1
bmN0b3IpOwotICAgIG1fcmV0aXJlZEJsb2Nrcy5mb3JFYWNoKGZ1bmN0b3IpOworICAgIG1fbGl2
ZS5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAg
ICAgZnVuY3RvcihtX2Jsb2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
Y3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBzdGF0aWMgY29uc3QgYm9vbCBjb21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGljIHNp
emVfdCBiYWxhbmNlOwogCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3Jl
YXRlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNp
emUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCitNYXJrZWRCbG9jazo6
SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIHNpemVfdCBjZWxsU2l6
ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcykKIHsKICAgICBpZiAoY29t
cHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFsYW5jZSsrOwpAQCAtNDgsMjQgKzQ4LDIwIEBAIE1h
cmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmUKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCiAgICAgICAgIHNjcmliYmxlKGJs
b2NrU3BhY2UsIGJsb2NrU2l6ZSk7Ci0gICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYWxsb2Nh
dG9yLCBjZWxsU2l6ZSwgYXR0cmlidXRlcywgYmxvY2tTcGFjZSk7CisgICAgcmV0dXJuIG5ldyBI
YW5kbGUoaGVhcCwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOwogfQogCi1NYXJr
ZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgdm9pZCogYmxvY2tTcGFjZSkKK01hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFw
JiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMsIHZvaWQqIGJsb2NrU3BhY2UpCiAgICAgOiBtX2F0b21zUGVyQ2VsbCgoY2VsbFNpemUg
KyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemUpCiAgICAgLCBtX2VuZEF0b20oYXRvbXNQZXJCbG9j
ayAtIG1fYXRvbXNQZXJDZWxsICsgMSkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQot
ICAgICwgbV9zdGF0ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCi0gICAg
LCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX3dlYWtTZXQoYWxsb2NhdG9yLT5oZWFw
KCktPnZtKCksIENlbGxDb250YWluZXIoKSkKKyAgICAsIG1fd2Vha1NldChoZWFwLnZtKCksIENl
bGxDb250YWluZXIoKSkKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1NwYWNl
KSBNYXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCiAgICAgbV93ZWFrU2V0LnNl
dENvbnRhaW5lcigqbV9ibG9jayk7CiAgICAgCiAgICAgaGVhcC5kaWRBbGxvY2F0ZUJsb2NrKGJs
b2NrU2l6ZSk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAg
ICBBU1NFUlQoYWxsb2NhdG9yKTsKICAgICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxLaW5kICE9IEhl
YXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0cmlidXRlcy5kZXN0
cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKIH0KQEAgLTc4LDYgKzc0LDcgQEAg
TWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAx
MCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNl
LCAiXG4iKTsKICAgICB9CisgICAgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgIG1fYmxvY2st
Pn5NYXJrZWRCbG9jaygpOwogICAgIGZhc3RBbGlnbmVkRnJlZShtX2Jsb2NrKTsKICAgICBoZWFw
LmRpZEZyZWVCbG9jayhibG9ja1NpemUpOwpAQCAtODUsNyArODIsNyBAQCBNYXJrZWRCbG9jazo6
SGFuZGxlOjp+SGFuZGxlKCkKIAogTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKFZNJiB2bSwgSGFu
ZGxlJiBoYW5kbGUpCiAgICAgOiBtX25lZWRzRGVzdHJ1Y3Rpb24oaGFuZGxlLm5lZWRzRGVzdHJ1
Y3Rpb24oKSkKLSAgICAsIG1fdmVyc2lvbih2bS5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigp
KQorICAgICwgbV92ZXJzaW9uKE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbikKICAgICAsIG1faGFu
ZGxlKGhhbmRsZSkKICAgICAsIG1fdm0oJnZtKQogewpAQCAtMTAxLDIyICs5OCwyMSBAQCBNYXJr
ZWRCbG9jazo6TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmCiAgICAgbV9iaWFzZWRNYXJrQ291
bnQgPSBtX21hcmtDb3VudEJpYXM7IC8vIFRoaXMgbWVhbnMgd2UgaGF2ZW4ndCBtYXJrZWQgYW55
dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0
YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlv
bk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUg
c2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3
bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2Rl
IGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVz
dHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJi
bGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRN
b2RlIG5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6RmxpcE1vZGUgZmxp
cE1vZGU+CiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwKCkK
IHsKLSAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAg
QVNTRVJUKGJsb2NrU3RhdGUgPT0gTmV3IHx8IGJsb2NrU3RhdGUgPT0gTWFya2VkKTsKLSAgICBB
U1NFUlQoIShkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBzd2Vl
cE1vZGUgPT0gU3dlZXBPbmx5KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIShkZXN0cnVjdGlvbk1v
ZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7
CiAgICAgCi0gICAgYXNzZXJ0RmxpcHBlZCgpOworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVy
U2FtcGxlclNjb3BlKGZhbHNlKTsKKwogICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJs
b2NrKCk7CiAgICAgCi0gICAgYm9vbCBpc05ld0Jsb2NrID0gYmxvY2tTdGF0ZSA9PSBOZXc7Ci0g
ICAgYm9vbCBpc0VtcHR5QmxvY2sgPSAhYmxvY2suaGFzQW55TWFya2VkKCkKLSAgICAgICAgJiYg
bmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQKLSAgICAgICAg
JiYgZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb247Ci0gICAgaWYgKE9w
dGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKSAmJiAoaXNOZXdCbG9jayB8fCBpc0VtcHR5QmxvY2sp
KSB7Ci0gICAgICAgIEFTU0VSVChibG9jay5tX21hcmtzLmlzRW1wdHkoKSk7CisgICAgbV9hbGxv
Y2F0b3ItPnNldElzU25hcHNob3QodGhpcywgZmFsc2UpOworICAgIAorICAgIGlmIChPcHRpb25z
Ojp1c2VCdW1wQWxsb2NhdG9yKCkKKyAgICAgICAgJiYgZW1wdHlNb2RlID09IElzRW1wdHkKKyAg
ICAgICAgJiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQp
IHsKKyAgICAgICAgQVNTRVJUKGZsaXBNb2RlID09IE5lZWRzRmxpcCk7CiAgICAgICAgIAogICAg
ICAgICBjaGFyKiBzdGFydE9mTGFzdENlbGwgPSBzdGF0aWNfY2FzdDxjaGFyKj4oY2VsbEFsaWdu
KGJsb2NrLmF0b21zKCkgKyBtX2VuZEF0b20gLSAxKSk7CiAgICAgICAgIGNoYXIqIHBheWxvYWRF
bmQgPSBzdGFydE9mTGFzdENlbGwgKyBjZWxsU2l6ZSgpOwpAQCAtMTI0LDcgKzEyMCwxMCBAQCBG
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIGNoYXIqIHBh
eWxvYWRCZWdpbiA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oYmxvY2suYXRvbXMoKSArIGZpcnN0QXRv
bSgpKTsKICAgICAgICAgaWYgKHNjcmliYmxlTW9kZSA9PSBTY3JpYmJsZSkKICAgICAgICAgICAg
IHNjcmliYmxlKHBheWxvYWRCZWdpbiwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7Ci0gICAg
ICAgIG1fc3RhdGUgPSAoKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpID8gRnJlZUxpc3Rl
ZCA6IE1hcmtlZCk7CisgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQor
ICAgICAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIHRydWUpOwogICAgICAgICBGcmVlTGlzdCBy
ZXN1bHQgPSBGcmVlTGlzdDo6YnVtcChwYXlsb2FkRW5kLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJl
Z2luKTsKICAgICAgICAgaWYgKGZhbHNlKQogICAgICAgICAgICAgZGF0YUxvZygiUXVpY2tseSBz
d2VwdCBibG9jayAiLCBSYXdQb2ludGVyKHRoaXMpLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxT
aXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJc
biIpOwpAQCAtMTM3LDE0ICsxMzYsMTQgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3BlY2lhbGl6ZQogICAgIEZyZWVDZWxsKiBoZWFkID0gMDsKICAgICBzaXplX3QgY291bnQgPSAw
OwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBt
X2F0b21zUGVyQ2VsbCkgewotICAgICAgICBpZiAoYmxvY2tTdGF0ZSA9PSBNYXJrZWQKLSAgICAg
ICAgICAgICYmIChibG9jay5tX21hcmtzLmdldChpKQorICAgICAgICBpZiAoZW1wdHlNb2RlID09
IE5vdEVtcHR5CisgICAgICAgICAgICAmJiAoKGZsaXBNb2RlID09IERvZXNOb3ROZWVkRmxpcCAm
JiBibG9jay5tX21hcmtzLmdldChpKSkKICAgICAgICAgICAgICAgICB8fCAobmV3bHlBbGxvY2F0
ZWRNb2RlID09IEhhc05ld2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChpKSkp
KQogICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAgICAgCiAgICAgICAgIEhlYXBDZWxsKiBj
ZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYmxvY2suYXRvbXMoKVtpXSk7
CiAKLSAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGJs
b2NrU3RhdGUgIT0gTmV3KQorICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVz
dHJ1Y3Rpb24gJiYgZW1wdHlNb2RlID09IE5vdEVtcHR5KQogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8SlNDZWxsKj4oY2VsbCktPmNhbGxEZXN0cnVjdG9yKCp2bSgpKTsKIAogICAgICAgICBpZiAo
c3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkgewpAQCAtMTYzLDcgKzE2MiwxMyBAQCBGcmVl
TGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIG1fbmV3bHlBbGxv
Y2F0ZWQgPSBudWxscHRyOwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6Omxpc3Qo
aGVhZCwgY291bnQgKiBjZWxsU2l6ZSgpKTsKLSAgICBtX3N0YXRlID0gKHN3ZWVwTW9kZSA9PSBT
d2VlcFRvRnJlZUxpc3QgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICBpZiAoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQ
YXlsb2FkIC8gY2VsbFNpemUoKTsKKyAgICAgICAgaWYgKGNvdW50ID09IGNlbGxzUGVyQmxvY2sp
CisgICAgICAgICAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVlKTsKKyAgICB9
CiAgICAgaWYgKGZhbHNlKQogICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sgIiwg
UmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5k
IGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC0xNzEsMTUgKzE3NiwxOCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpzcGVjaWFsaXplCiAKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVw
KFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgCi0g
ICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLQogICAgIG1fd2Vha1Nl
dC5zd2VlcCgpOwogCiAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkgJiYgbV9hdHRyaWJ1
dGVzLmRlc3RydWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pCiAgICAgICAgIHJldHVy
biBGcmVlTGlzdCgpOwogCisgICAgaWYgKFVOTElLRUxZKG1faXNGcmVlTGlzdGVkKSkgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAg
ICAgcmV0dXJuIEZyZWVMaXN0KCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVCghbV9hbGxvY2F0
b3ItPmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICAKICAgICBpZiAobV9hdHRyaWJ1dGVzLmRlc3Ry
dWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb24pCiAgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNl
bGVjdFNjcmliYmxlTW9kZTxOZWVkc0Rlc3RydWN0aW9uPihzd2VlcE1vZGUpOwogICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZTxEb2VzTm90TmVlZERlc3RydWN0aW9uPihz
d2VlcE1vZGUpOwpAQCAtMTg5LDQ3ICsxOTcsNTIgQEAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2Rl
IGRlc3RydWN0aW9uTW9kZQogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxw
ZXJTZWxlY3RTY3JpYmJsZU1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKICAgICBpZiAoc2Ny
aWJibGVGcmVlQ2VsbHMoKSkKLSAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVB
bmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsKLSAgICBy
ZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZTxkZXN0cnVjdGlvbk1vZGUs
IERvbnRTY3JpYmJsZT4oc3dlZXBNb2RlKTsKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2Vs
ZWN0RW1wdHlNb2RlPGRlc3RydWN0aW9uTW9kZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7CisgICAg
cmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlPGRlc3RydWN0aW9uTW9kZSwgRG9udFNj
cmliYmxlPihzd2VlcE1vZGUpOwogfQogCiB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1
Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2Rl
PgotRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFu
ZFN3ZWVwTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQorRnJlZUxpc3QgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsK
LSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBjYXNlIE5ldzoKLSAgICAgICAgQVNTRVJUKHN3
ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRT
d2VlcDxOZXcsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUs
IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgY2FzZSBGcmVlTGlzdGVkOgotICAg
ICAgICAvLyBIYXBwZW5zIHdoZW4gYSBibG9jayB0cmFuc2l0aW9ucyB0byBmdWxseSBhbGxvY2F0
ZWQuCi0gICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAg
ICAgcmV0dXJuIEZyZWVMaXN0KCk7Ci0gICAgY2FzZSBBbGxvY2F0ZWQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAg
IGNhc2UgTWFya2VkOgotICAgICAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAg
ICAgcmV0dXJuIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKLSAgICAgICAgICAgICAgICA/
IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oKQotICAgICAgICAgICAgICAgIDog
c3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3Jp
YmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPigpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgcmV0dXJuIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKLSAgICAgICAgICAgICAg
ICA/IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9u
TW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpCi0gICAgICAg
ICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlv
bk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBGcmVlTGlzdCgpOworICAgIGlmIChtX2FsbG9jYXRvci0+aXNFbXB0eSh0aGlzKSkKKyAgICAg
ICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQ8SXNFbXB0eSwgZGVz
dHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGU+KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3ZWVw
SGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQ8Tm90RW1wdHksIGRlc3RydWN0aW9uTW9kZSwg
c2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworfQorCit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFu
ZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2Rl
LCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgorRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRl
ZChTd2VlcE1vZGUgc3dlZXBNb2RlKQoreworICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKQorICAg
ICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVj
dGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7Cisg
ICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rp
b25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9k
ZSk7Cit9CisKK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1v
ZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxs
b2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQorewor
ICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICByZXR1cm4gc3dl
ZXBIZWxwZXJTZWxlY3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1
Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKKyAgICByZXR1
cm4gc3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3ZWVwT25seSwgZGVzdHJ1
Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKK30KKwordGVt
cGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0
aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwg
TWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9k
ZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RmxpcE1v
ZGUoKQoreworICAgIGlmIChuZWVkc0ZsaXAoKSkKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVk
U3dlZXA8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGUsIE5lZWRzRmxpcD4oKTsKKyAgICByZXR1cm4gc3Bl
Y2lhbGl6ZWRTd2VlcDxlbXB0eU1vZGUsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2Rl
LCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZSwgRG9lc05vdE5lZWRGbGlwPigpOwog
fQogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRl
ZCgpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tf
U1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRl
ID09IEZyZWVMaXN0ZWQpOwotICAgIG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgUkVMRUFTRV9BU1NF
UlQobV9pc0ZyZWVMaXN0ZWQpOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7Cit9CisKK3Zv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c2V0SXNGcmVlTGlzdGVkKCkKK3sKKyAgICBtX2FsbG9j
YXRvci0+c2V0SXNFbXB0eSh0aGlzLCBmYWxzZSk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSB0cnVl
OwogfQogCiBjbGFzcyBTZXROZXdseUFsbG9jYXRlZEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxv
Y2s6OlZvaWRGdW5jdG9yIHsKQEAgLTI1MiwyNiArMjY1LDE3IEBAIHByaXZhdGU6CiAKIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRnJlZUxpc3QmIGZyZWVM
aXN0KQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRF
X1RSQU5TSVRJT04odGhpcyk7CisgICAgYXNzZXJ0RmxpcHBlZCgpOworICAgIAorICAgIEFTU0VS
VCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAgIGlmIChtX3N0YXRlID09
IE1hcmtlZCkgewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4gdGhlIE1hcmtlZCBzdGF0
ZSB0aGVuIHdlIGtub3cgdGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAgLy8gY29uZGl0aW9ucyBo
b2xkczoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90IHVzZWQgZm9yIGFsbG9j
YXRpb24gZHVyaW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xlLgotICAgICAgICAvLyAg
IEl0IG1heSBoYXZlIGRlYWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25vdyB0aGVtIHRvIGJlIGRl
YWQgYnkgdGhlCi0gICAgICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1hcmsgYml0cyBhcmUgdW5z
ZXQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0
b3BBbGxvY2F0aW5nKCksIGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAgICAgICAgLy8gICBoZWFw
IGl0ZXJhdGlvbiwgYW5kIHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAgIC8vIEhlbmNlIGlmIHRo
ZSBibG9jayBpcyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJrZWQuCisgICAgaWYgKCFp
c0ZyZWVMaXN0ZWQoKSkgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgZWl0aGVyIGRp
ZG4ndCB1c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24gc2luY2UgbGFzdCBHQywK
KyAgICAgICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCkg
YmVmb3JlLgogICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVM
aXN0ZWQpOwotICAgIAogICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVyZW50IHN0YXRlIGZvciBI
ZWFwIGludHJvc3BlY3Rpb24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxsb2NhdGVkIGZyb20gb3Vy
IGZyZWUgbGlzdCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQgYW5vdGhlcgog
ICAgIC8vIHdheSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApAQCAtMjkwLDcgKzI5NCw3
IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAgICAgICAg
IGNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAgICAgIH0pOwogICAgIAotICAgIG1fc3Rh
dGUgPSBNYXJrZWQ7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCkBAIC0zMDQsMTQgKzMwOCwx
MyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpCiAKIEZyZWVMaXN0
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcoKQogewotICAgIGZsaXBJZk5l
Y2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Cisg
ICAgYXNzZXJ0RmxpcHBlZCgpOwogCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKKyAg
ICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAgQVNTRVJUKCFp
c0ZyZWVMaXN0ZWQoKSk7CiAKICAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAg
Ly8gV2UgZGlkbid0IGhhdmUgdG8gY3JlYXRlIGEgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwLiBU
aGF0IG1lYW5zIHdlIHdlcmUgYWxyZWFkeSBNYXJrZWQKLSAgICAgICAgLy8gd2hlbiB3ZSBsYXN0
IHN0b3BwZWQgYWxsb2NhdGlvbiwgc28gcmV0dXJuIGFuIGVtcHR5IGZyZWUgbGlzdCBhbmQgc3Rh
eSBpbiB0aGUgTWFya2VkIHN0YXRlLgorICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJl
YWR5IGV4aGF1c3RlZCB0aGUgYmxvY2sgd2hlbiB3ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAg
ICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAgIH0KIApAQCAtMzQ1LDQwICszNDgsMzAgQEAgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoRnJlZUNlbAogICAgIH0KIH0KIAotdm9pZCBN
YXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KCkKLXsKLSAgICBmbGlwSWZOZWNlc3Nhcnkodm0o
KS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5KCkKLXsKLSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2Fy
eSgpOwotfQotCi12b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlTbG93KCkKLXsKLSAg
ICBBU1NFUlQobmVlZHNGbGlwKCkpOwotICAgIEFTU0VSVCghdm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLmlzTWFya2luZygpKTsKLSAgICBjbGVhck1hcmtzKCk7Ci19Ci0KLXZvaWQgTWFya2VkQmxv
Y2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmdTbG93KCkKK3ZvaWQgTWFya2VkQmxvY2s6
OmFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKIHsKICAgICBBU1NFUlQo
dm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOwotICAgIGlmIChuZWVkc0ZsaXAoKSkKLSAgICAgICAgY2xlYXJNYXJrcygp
OworICAgIGRhdGFMb2coIkluIGhlcmUuXG4iKTsKKyAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJz
aW9uKSkgeworICAgICAgICBjbGVhck1hcmtzKGhlYXBWZXJzaW9uKTsKKyAgICAgICAgLy8gVGhp
cyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3QgaW4gdGhpcyBi
bG9jay4KKyAgICAgICAgZGF0YUxvZygiTm90IGVtcHR5OiBpbmRleCA9ICIsIGhhbmRsZSgpLmlu
ZGV4KCksICIsIHNpemUgPSAiLCBjZWxsU2l6ZSgpLCAiLCBhdHRyaWJ1dGVzID0gIiwgYXR0cmli
dXRlcygpLCAiXG4iKTsKKyAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFu
ZENoZWNrSXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICB9CiB9CiAKIHZv
aWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQogeworICAgIGNsZWFyTWFya3Modm0oKS0+aGVh
cC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSk7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6OmNsZWFy
TWFya3MoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCit7CiAgICAgbV9tYXJrcy5jbGVhckFsbCgp
OwogICAgIGNsZWFySGFzQW55TWFya2VkKCk7Ci0gICAgLy8gVGhpcyB3aWxsIGJlY29tZSB0cnVl
IGF0IHRoZSBlbmQgb2YgdGhlIG1hcmsgcGhhc2UuIFdlIHNldCBpdCBub3cgdG8KLSAgICAvLyBh
dm9pZCBhbiBleHRyYSBwYXNzIHRvIGRvIHNvIGxhdGVyLgotICAgIGhhbmRsZSgpLm1fc3RhdGUg
PSBNYXJrZWQ7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBtX3ZlcnNpb24gPSB2
bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpOworICAgIG1fdmVyc2lvbiA9IGhlYXBW
ZXJzaW9uOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMzk4LDMxICszOTEsMzYgQEAg
Ym9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc0ZsaXAoKQogICAgIHJldHVybiBtX2Jsb2Nr
LT5uZWVkc0ZsaXAoKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxsUmVtb3Zl
QmxvY2soKQorYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkKIHsKLSAg
ICBmbGlwSWZOZWNlc3NhcnkoKTsKKyAgICByZXR1cm4gaXNNYXJrZWQodm0oKS0+aGVhcC5vYmpl
Y3RTcGFjZSgpLnZlcnNpb24oKSwgcCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
ZGlkQ29uc3VtZUZyZWVMaXN0KCkKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIGZsaXBJZk5lY2Vz
c2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAg
Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7CisgICAgcmV0dXJuIGlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxs
KTsKK30KKworYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0
IEhlYXBDZWxsKiBjZWxsKQoreworICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQo
dm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7Cit9CiAKLSAgICBtX3N0
YXRlID0gQWxsb2NhdGVkOwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJl
ZUxpc3QoKQoreworICAgIEFTU0VSVChpc0ZyZWVMaXN0ZWQoKSk7CisgICAgbV9pc0ZyZWVMaXN0
ZWQgPSBmYWxzZTsKKyAgICBhbGxvY2F0b3IoKS0+c2V0SXNBbGxvY2F0ZWQodGhpcywgdHJ1ZSk7
CiB9CiAKIHNpemVfdCBNYXJrZWRCbG9jazo6bWFya0NvdW50KCkKIHsKLSAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICByZXR1cm4gbV9tYXJrcy5jb3VudCgpOworICAgIHJldHVybiBuZWVkc0Zs
aXAoKSA/IDAgOiBtX21hcmtzLmNvdW50KCk7CiB9CiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNFbXB0eSgpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3Rh
dGUgPT0gTWFya2VkICYmICFibG9jaygpLmhhc0FueU1hcmtlZCgpICYmIG1fd2Vha1NldC5pc0Vt
cHR5KCkgJiYgKCFtX25ld2x5QWxsb2NhdGVkIHx8IG1fbmV3bHlBbGxvY2F0ZWQtPmlzRW1wdHko
KSk7CisgICAgcmV0dXJuIG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMpOwogfQogCiB2b2lkIE1h
cmtlZEJsb2NrOjpjbGVhckhhc0FueU1hcmtlZCgpCkBAIC00MzIsMzMgKzQzMCwzNiBAQCB2b2lk
IE1hcmtlZEJsb2NrOjpjbGVhckhhc0FueU1hcmtlZCgpCiAKIHZvaWQgTWFya2VkQmxvY2s6Om5v
dGVNYXJrZWRTbG93KCkKIHsKLSAgICBoYW5kbGUoKS5tX2FsbG9jYXRvci0+cmV0aXJlKCZoYW5k
bGUoKSk7CisgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJr
aW5nUmV0aXJlZCgmaGFuZGxlKCksIHRydWUpOwogfQogCi19IC8vIG5hbWVzcGFjZSBKU0MKLQot
bmFtZXNwYWNlIFdURiB7Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21BbGxv
Y2F0b3IoKQoreworICAgIGlmICghbV9hbGxvY2F0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBtX2FsbG9jYXRvci0+cmVtb3ZlQmxvY2sodGhpcyk7Cit9CiAKLXVzaW5nIG5hbWVzcGFj
ZSBKU0M7Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKE1hcmtl
ZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgaW5kZXgpCit7CisgICAgQVNTRVJUKG1faW5k
ZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKCFt
X2FsbG9jYXRvcik7CisgICAgCisgICAgZGF0YUxvZygiQWRkZWQgdG8gYWxsb2NhdG9yICIsIFJh
d1BvaW50ZXIoYWxsb2NhdG9yKSwgIiB3aXRoIGluZGV4ID0gIiwgaW5kZXgsICJcbiIpOworICAg
IAorICAgIG1faW5kZXggPSBpbmRleDsKKyAgICBtX2FsbG9jYXRvciA9IGFsbG9jYXRvcjsKK30K
IAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE1hcmtlZEJsb2NrOjpCbG9j
a1N0YXRlIGJsb2NrU3RhdGUpCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZy
b21BbGxvY2F0b3IoKQogewotICAgIHN3aXRjaCAoYmxvY2tTdGF0ZSkgewotICAgIGNhc2UgTWFy
a2VkQmxvY2s6Ok5ldzoKLSAgICAgICAgb3V0LnByaW50KCJOZXciKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgTWFya2VkQmxvY2s6OkZyZWVMaXN0ZWQ6Ci0gICAgICAgIG91dC5wcmludCgi
RnJlZUxpc3RlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6QWxs
b2NhdGVkOgotICAgICAgICBvdXQucHJpbnQoIkFsbG9jYXRlZCIpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TWFya2VkOgotICAgICAgICBvdXQucHJpbnQoIk1hcmtl
ZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgQVNTRVJUKG1faW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSk7CisgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4ID0g
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKyAgICBtX2FsbG9jYXRvciA9IG51
bGxwdHI7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdURgorfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA1
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsMjAgKzQ0LDYgQEAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogdHlwZWRl
ZiB1aW50cHRyX3QgQml0czsKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKLS8vIFNl
dCB0byBsb2cgc3RhdGUgdHJhbnNpdGlvbnMgb2YgYmxvY2tzLgotI2RlZmluZSBIRUFQX0xPR19C
TE9DS19TVEFURV9UUkFOU0lUSU9OUyAwCi0KLSNpZiBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFO
U0lUSU9OUwotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkg
ZG8geyAgICAgICAgICAgIFwKLSAgICAgICAgZGF0YUxvZ0YoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAiJXM6JWQgJXM6IGJsb2Nr
ICVzID0gJXAsICVkXG4iLCAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgX19GSUxF
X18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18sICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
ICAgICNoYW5kbGUsICYoaGFuZGxlKS0+YmxvY2soKSwgKGhhbmRsZSktPm1fc3RhdGUpOyAgICBc
Ci0gICAgfSB3aGlsZSAoZmFsc2UpCi0jZWxzZQotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFU
RV9UUkFOU0lUSU9OKGhhbmRsZSkgKCh2b2lkKTApCi0jZW5kaWYKLQogLy8gQSBtYXJrZWQgYmxv
Y2sgaXMgYSBwYWdlLWFsaWduZWQgY29udGFpbmVyIGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3Rz
LgogLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVkIHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJs
b2NrLiBGb3IgYSBnaXZlbgogLy8gbWFya2VkIGJsb2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2Ft
ZSBzaXplLiBPYmplY3RzIHNtYWxsZXIgdGhhbiB0aGUKQEAgLTc2LDggKzYyLDYgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSGFuZGxlOwogcHVibGljOgotICAgIGVudW0g
QmxvY2tTdGF0ZSA6IHVpbnQ4X3QgeyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2Vk
IH07Ci0gICAgICAgIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8g
Ynl0ZXMKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBibG9ja01hc2sgPSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBibG9j
a1NpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4KQEAgLTg2LDEyICs3MCwxMiBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkQmxvY2s6OmF0b21TaXplICYgKE1hcmtlZEJs
b2NrOjphdG9tU2l6ZSAtIDEpKSwgIk1hcmtlZEJsb2NrOjphdG9tU2l6ZSBtdXN0IGJlIGEgcG93
ZXIgb2YgdHdvLiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShNYXJrZWRCbG9jazo6YmxvY2tTaXpl
ICYgKE1hcmtlZEJsb2NrOjpibG9ja1NpemUgLSAxKSksICJNYXJrZWRCbG9jazo6YmxvY2tTaXpl
IG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7Ci0KKyAgICAKICAgICBzdHJ1Y3QgVm9pZEZ1bmN0
b3IgewogICAgICAgICB0eXBlZGVmIHZvaWQgUmV0dXJuVHlwZTsKICAgICAgICAgdm9pZCByZXR1
cm5WYWx1ZSgpIHsgfQogICAgIH07Ci0KKyAgICAKICAgICBjbGFzcyBDb3VudEZ1bmN0b3Igewog
ICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBzaXplX3QgUmV0dXJuVHlwZTsKQEAgLTEzMCw2
ICsxMTQsMTQgQEAgcHVibGljOgogICAgICAgICBWTSogdm0oKSBjb25zdDsKICAgICAgICAgV2Vh
a1NldCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCisgICAgICAgIC8vIFN3ZWVwaW5nIGVuc3Vy
ZXMgdGhhdCBkZXN0cnVjdG9ycyBnZXQgY2FsbGVkIGFuZCByZW1vdmVzIHRoZSBibG9jayBmcm9t
IHRoZSBzbmFwc2hvdC4KKyAgICAgICAgLy8gU3dlZXBpbmcgdG8gZnJlZSBsaXN0IGFsc28gcmVt
b3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgZW1wdHkgc2V0LCBpZiBpdCB3YXMgaW4gdGhhdCBzZXQu
CisgICAgICAgIC8vIFN3ZWVwaW5nIG9ubHkgbWF5IGFkZCB0aGlzIGJsb2NrIHRvIHRoZSBlbXB0
eSBzZXQsIGlmIHRoZSBibG9jayBpcyBmb3VuZCB0byBiZSBlbXB0eS4KKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gTm90ZSB0aGF0IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBlbXB0eSBi
aXQgcmVmbGVjdHMgcmVhbGl0eS4gSWYgaXQncyBub3Qgc2V0CisgICAgICAgIC8vIGFuZCB0aGUg
YmxvY2sgaXMgZnJlc2hseSBjcmVhdGVkLCB0aGVuIHdlJ2xsIG1ha2UgdGhlIG1pc3Rha2Ugb2Yg
cnVubmluZyBkZXN0cnVjdG9ycyBpbgorICAgICAgICAvLyB0aGUgYmxvY2suIElmIGl0J3Mgbm90
IHNldCBhbmQgdGhlIGJsb2NrIGhhcyBub3RoaW5nIG1hcmtlZCwgdGhlbiB3ZSdsbCBtYWtlIHRo
ZQorICAgICAgICAvLyBtaXN0YWtlIG9mIG1ha2luZyBhIHBvcCBmcmVlbGlzdCByYXRoZXIgdGhh
biBhIGJ1bXAgZnJlZWxpc3QuCiAgICAgICAgIGVudW0gU3dlZXBNb2RlIHsgU3dlZXBPbmx5LCBT
d2VlcFRvRnJlZUxpc3QgfTsKICAgICAgICAgRnJlZUxpc3Qgc3dlZXAoU3dlZXBNb2RlID0gU3dl
ZXBPbmx5KTsKICAgICAgICAgCkBAIC0xNTMsOCArMTQ1LDYgQEAgcHVibGljOgogICAgICAgICAv
LyBhbmQgd2FzIHN1Y2Nlc3NmdWxseSBjbGVhcmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgICAg
ICAgIGJvb2wgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwogICAgICAgICAgICAgCi0gICAgICAgIHZv
aWQgZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgc2l6ZV90
IGNlbGxTaXplKCk7CiAgICAgICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7
CkBAIC0xNjQsOSArMTU0LDExIEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG1hcmtDb3VudCgp
OwogICAgICAgICBzaXplX3Qgc2l6ZSgpOwogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNM
aXZlKGNvbnN0IEhlYXBDZWxsKik7Ci0gICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lk
Kik7CisgICAgICAgIGlubGluZSBib29sIGlzTGl2ZShjb25zdCBIZWFwQ2VsbCopOworICAgICAg
ICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKICAgICAgICAgYm9vbCBpc01h
cmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgYm9vbCBpc01h
cmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CisgICAg
ICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9u
LCBjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNOZXdseUFs
bG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgc2V0TmV3bHlBbGxvY2F0ZWQoY29u
c3Qgdm9pZCopOwpAQCAtMTc0LDMxICsxNjYsMjUgQEAgcHVibGljOgogICAgICAgICAKICAgICAg
ICAgYm9vbCBoYXNBbnlOZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9uZXdseUFs
bG9jYXRlZDsgfQogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBbGxvY2F0ZWQoKSBjb25z
dDsKLSAgICAgICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzRnJlZUxp
c3RlZCgpIGNvbnN0OwotICAgICAgICBib29sIG5lZWRzU3dlZXBpbmcoKSBjb25zdDsKLSAgICAg
ICAgdm9pZCB3aWxsUmVtb3ZlQmxvY2soKTsKLQogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKLSAg
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNo
TGl2ZUNlbGwoY29uc3QgRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7Cisg
ICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25z
dCBGdW5jdG9yJik7CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBuZWVkc0ZsaXAoKTsKLSAg
ICAgICAgICAgIAotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVh
cFZlcnNpb24pOwotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0g
ICAgICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICAKKyAgICAgICAgCiAg
ICAgICAgIHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wg
aXNPbkJsb2Nrc1RvU3dlZXAoKSBjb25zdCB7IHJldHVybiBtX2lzT25CbG9ja3NUb1N3ZWVwOyB9
Ci0gICAgICAgIHZvaWQgc2V0SXNPbkJsb2Nrc1RvU3dlZXAoYm9vbCB2YWx1ZSkgeyBtX2lzT25C
bG9ja3NUb1N3ZWVwID0gdmFsdWU7IH0KKyAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRnJlZUxpc3RlZDsgfQorICAgICAgICAKKyAgICAgICAgc2l6ZV90IGlu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBy
ZW1vdmVGcm9tQWxsb2NhdG9yKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGRpZEFkZFRvQWxs
b2NhdG9yKE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBpbmRleCk7CisgICAgICAgIHZvaWQgZGlk
UmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgICAgICAKLSAgICAgICAgQmxvY2tTdGF0ZSBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICAgICAgICAgIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIEhhbmRsZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXpl
LCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiwgdm9pZCopOworICAgICAgICBIYW5kbGUoSGVh
cCYsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYsIHZvaWQqKTsK
ICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGU+CiAgICAgICAg
IEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVw
T25seSk7CkBAIC0yMDYsMTYgKzE5MiwzMSBAQCBwdWJsaWM6CiAgICAgICAgIGVudW0gU2NyaWJi
bGVNb2RlIHsgRG9udFNjcmliYmxlLCBTY3JpYmJsZSB9OwogICAgICAgICAgICAgCiAgICAgICAg
IHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgotICAgICAgICBGcmVlTGlz
dCBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25s
eSk7CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVwTW9k
ZSA9IFN3ZWVwT25seSk7CiAgICAgICAgICAgICAKKyAgICAgICAgZW51bSBFbXB0eU1vZGUgeyBJ
c0VtcHR5LCBOb3RFbXB0eSB9OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2Rl
LCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBI
ZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAg
ICAgICAKICAgICAgICAgZW51bSBOZXdseUFsbG9jYXRlZE1vZGUgeyBIYXNOZXdseUFsbG9jYXRl
ZCwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCB9OwotICAgICAgICAgICAgCi0gICAgICAgIHRl
bXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1v
ZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5
TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4K
KyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlID0g
U3dlZXBPbmx5KTsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgU3dlZXBN
b2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgor
ICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCk7CisgICAgICAgIAor
ICAgICAgICBlbnVtIEZsaXBNb2RlIHsgTmVlZHNGbGlwLCBEb2VzTm90TmVlZEZsaXAgfTsKKyAg
ICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlv
bk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlLCBGbGlwTW9kZT4KICAgICAg
ICAgRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAgICAgCiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgICAgIHZvaWQgZm9yRWFjaEZyZWVDZWxsKGNvbnN0
IEZyZWVMaXN0JiwgY29uc3QgRnVuYyYpOwotICAgICAgICAgICAgCisgICAgICAgIAorICAgICAg
ICB2b2lkIHNldElzRnJlZUxpc3RlZCgpOworICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogbV9wcmV2OwogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHQ7CiAg
ICAgICAgICAgICAKQEAgLTIyNSwxNiArMjI2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+PiBtX25ld2x5QWxsb2NhdGVkOwog
ICAgICAgICAgICAgCiAgICAgICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwot
ICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7Ci0gICAgICAgIGJvb2wgbV9pc09uQmxvY2tzVG9T
d2VlcCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxzZSB9Owog
ICAgICAgICAgICAgCi0gICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAg
ICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgICAgIHNp
emVfdCBtX2luZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAg
ICAgICBXZWFrU2V0IG1fd2Vha1NldDsKICAgICAgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9j
ayogbV9ibG9jazsKICAgICB9OwogICAgICAgICAKLSAgICBzdGF0aWMgTWFya2VkQmxvY2s6Okhh
bmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUs
IGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgTWFya2VkQmxvY2s6Okhh
bmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0
dHJpYnV0ZXMmKTsKICAgICAgICAgCiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBA
IC0yNDgsMzQgKzI0OSwzNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogCiAg
ICAgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7CisgICAgYm9vbCBpc01hcmtlZChIZWFwVmVy
c2lvbiwgY29uc3Qgdm9pZCopOworICAgIGJvb2wgaXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZl
cnNpb24sIGNvbnN0IHZvaWQqKTsKICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9p
ZCopOwogICAgICAgICAKICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBI
ZWFwQ2VsbCopOwotICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkRHVyaW5nV2Vha1Zp
c2l0aW5nKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwotCisgICAgYm9vbCBpc01hcmtl
ZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CisgICAgYm9v
bCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24sIGNvbnN0
IEhlYXBDZWxsKik7CisgICAgCiAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgIHZv
aWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZv
aWQqKTsKLSAgICAgICAgCisgICAgCiAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgY29uc3Qg
QWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OwotCisgICAgCiAgICAgYm9v
bCBoYXNBbnlNYXJrZWQoKSBjb25zdDsKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKICAgICAgICAg
CiAgICAgV2Vha1NldCYgd2Vha1NldCgpOwotCisgICAgCiAgICAgYm9vbCBuZWVkc0ZsaXAoSGVh
cFZlcnNpb24pOwogICAgIGJvb2wgbmVlZHNGbGlwKCk7Ci0gICAgICAgIAotICAgIHZvaWQgZmxp
cElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZO
ZWNlc3NhcnkoSGVhcFZlcnNpb24pOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAg
CisgICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lvbik7CiAgICAgICAgIAogICAgIHZvaWQg
YXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247IH0KLSAgICAgICAgCisgICAgCisgICAg
aW5saW5lIHZvaWQgcmVzZXRWZXJzaW9uKCk7CisgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CiAKQEAgLTI4NCw5
ICsyODgsOSBAQCBwcml2YXRlOgogICAgIE1hcmtlZEJsb2NrKFZNJiwgSGFuZGxlJik7CiAgICAg
QXRvbSogYXRvbXMoKTsKICAgICAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdN
YXJraW5nU2xvdygpOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5U2xvdygpOworICAgIHZvaWQg
YWJvdXRUb01hcmtTbG93KEhlYXBWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFyTWFya3MoKTsKKyAg
ICB2b2lkIGNsZWFyTWFya3MoSGVhcFZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJIYXNBbnlNYXJr
ZWQoKTsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWRTbG93KCk7CkBAIC00NjksNDAgKzQ3Mywx
NCBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bmVlZHNGbGlwKEhlYXBWCiAgICAgcmV0dXJu
IGhlYXBWZXJzaW9uICE9IG1fdmVyc2lvbjsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6
OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBpZiAoVU5M
SUtFTFkobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkpCi0gICAgICAgIGZsaXBJZk5lY2Vzc2FyeVNs
b3coKTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmlu
Z01hcmtpbmcoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9j
azo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiB7CisgICAgZGF0YUxvZyhS
YXdQb2ludGVyKHRoaXMpLCAiOiBDaGVja2luZyBpZiBmbGlwIG5lY2Vzc2FyeSwgYmxvY2sgdmVy
c2lvbiAiLCBtX3ZlcnNpb24sICIgaGVhcCB2ZXJzaW9uICIsIGhlYXBWZXJzaW9uLCAiXG4iKTsK
ICAgICBpZiAoVU5MSUtFTFkobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkpCi0gICAgICAgIGZsaXBJ
Zk5lY2Vzc2FyeUR1cmluZ01hcmtpbmdTbG93KCk7CisgICAgICAgIGFib3V0VG9NYXJrU2xvdyho
ZWFwVmVyc2lvbik7CiAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiB9CiAKLWlubGluZSB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVy
c2lvbikKLXsKLSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7Ci19Ci0K
LWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01h
cmtpbmcoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2soKS5mbGlwSWZOZWNl
c3NhcnlEdXJpbmdNYXJraW5nKGhlYXBWZXJzaW9uKTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZmxpcEZvckVkZW5Db2xsZWN0aW9uKCkKLXsKLSAgICBhc3NlcnRGbGlw
cGVkKCk7Ci0gICAgICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhp
cyk7Ci0gICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgIT0gTmV3ICYmIG1fc3RhdGUgIT0gRnJlZUxp
c3RlZCk7Ci0gICAgCi0gICAgbV9zdGF0ZSA9IE1hcmtlZDsKLX0KLQogI2lmIEFTU0VSVF9ESVNB
QkxFRAogaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmFzc2VydEZsaXBwZWQoKQogewpAQCAtNTE0
LDkgKzQ5MiwxNiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjphc3NlcnRGCiAg
ICAgYmxvY2soKS5hc3NlcnRGbGlwcGVkKCk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2Nr
Ojppc01hcmtlZChjb25zdCB2b2lkKiBwKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFy
a2VkKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKiBwKQogewotICAgIGFzc2Vy
dEZsaXBwZWQoKTsKKyAgICByZXR1cm4gbmVlZHNGbGlwKGhlYXBWZXJzaW9uKSA/IGZhbHNlIDog
bV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2Nr
Ojppc01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29uc3Qgdm9p
ZCogcCkKK3sKKyAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAgIHJldHVybiBtX21hcmtzLmdl
dChhdG9tTnVtYmVyKHApKTsKIH0KIApAQCAtNTUwLDQzICs1MzUsMjQgQEAgaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNv
bnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNN
YXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxs
KiBjZWxsKQogewotICAgIEFTU0VSVChtX3N0YXRlID09IE1hcmtlZCk7Ci0gICAgcmV0dXJuIG1f
YmxvY2stPmlzTWFya2VkKGNlbGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxv
Y2F0ZWQoY2VsbCkpOworICAgIHJldHVybiBtX2Jsb2NrLT5pc01hcmtlZCh2ZXJzaW9uLCBjZWxs
KSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAot
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBI
ZWFwQ2VsbCogY2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBI
ZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBBU1NFUlQobV9oYW5kbGUubV9zdGF0ZSA9PSBNYXJrZWQp
OwotICAgIHJldHVybiBpc01hcmtlZChjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRl
ZCAmJiBtX2hhbmRsZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKKyAgICByZXR1cm4gbV9ibG9j
ay0+aXNNYXJrZWRDb25jdXJyZW50bHkodmVyc2lvbiwgY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0
ZWQgJiYgaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJs
b2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNp
b24gaGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25z
dCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQo
Y2VsbCk7CisgICAgcmV0dXJuIGlzTWFya2VkKHZlcnNpb24sIGNlbGwpIHx8IChtX2hhbmRsZS5t
X25ld2x5QWxsb2NhdGVkICYmIG1faGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQog
Ci1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENlbGwq
IGNlbGwpCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVk
Q29uY3VycmVudGx5KEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQog
ewotICAgIGFzc2VydEZsaXBwZWQoKTsKLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBjYXNl
IEFsbG9jYXRlZDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIE1hcmtlZDoKLSAg
ICAgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKLQotICAgIGNhc2Ug
TmV3OgotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc01hcmtl
ZENvbmN1cnJlbnRseSh2ZXJzaW9uLCBjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRl
ZCAmJiBtX2hhbmRsZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAogaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQpAQCAtNjAzLDEzICs1NjksNiBAQCBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qg
dm9pZCogcCkKLXsKLSAgICBpZiAoIW1fYmxvY2stPmlzQXRvbShwKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihw
KSk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEl0ZXJhdGlvblN0
YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQogewpAQCAtNjIyLDYyICs1ODEsNiBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtl
ZEJsb2NrOjpIYW5kCiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
LXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9h
dHRyaWJ1dGVzLmNlbGxLaW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8
IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBIZWFwQ2VsbCogY2Vs
bCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0p
OwotICAgICAgICBpZiAoIWlzTGl2ZShjZWxsKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkK
LSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4KLWlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9y
RWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVjZXNz
YXJ5KCk7Ci0gICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsK
LSAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9h
dG9tc1BlckNlbGwpIHsKLSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0
X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKGlzTGl2
ZShjZWxsKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmdW5jdG9yKGNl
bGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc1N3
ZWVwaW5nKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0
aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwot
fQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0FsbG9jYXRlZCgpIGNvbnN0
Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5l
Y2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IEFsbG9jYXRlZDsKLX0KLQotaW5saW5l
IGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQoKSBjb25zdAotewotICAgIGNvbnN0
X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAg
ICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmlzRnJlZUxpc3RlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRC
bG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0
YXRlID09IEZyZWVMaXN0ZWQ7Ci19Ci0KIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpoYXNBbnlN
YXJrZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2JpYXNlZE1hcmtDb3VudCAhPSBtX21hcmtD
b3VudEJpYXM7CkBAIC03MTEsOCArNjE0LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhh
c2g8SlNDOjpNYXJrZQogICAgIHR5cGVkZWYgTWFya2VkQmxvY2tIYXNoIEhhc2g7CiB9OwogCi12
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6Qmxv
Y2tTdGF0ZSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gTWFya2VkQmxvY2tf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxp
bmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUo
Y29uc3QgSGVhcENlbGwqIGNlbGwpCit7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7Cisg
ICAgCisgICAgaWYgKG5lZWRzRmxpcCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAKKyAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOworfQorCitp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHAp
Cit7CisgICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20ocCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KK2lubGluZSBJdGVyYXRpb25TdGF0dXMgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
Cit7CisgICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAg
ICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9t
c1BlckNlbGwpIHsKKyAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0
cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKKyAgICAgICAgaWYgKCFpc0xpdmUo
Y2VsbCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZnVuY3RvcihjZWxs
LCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpEb25lOworICAgIH0KKyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CitpbmxpbmUgSXRlcmF0
aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQoreworICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMu
Y2VsbEtpbmQ7CisgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9t
OyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CisgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRl
cnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7CisgICAgICAg
IGlmIChpc0xpdmUoY2VsbCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAo
ZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOworICAgIH0KKyAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpDb250aW51ZTsKK30KKworaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OnJlc2V0
VmVyc2lvbigpCit7CisgICAgbV92ZXJzaW9uID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3
IEBACiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+
CiAKQEAgLTE5NSw2ICsxOTYsMTkgQEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhl
YXApCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOwogICAgICAgICB9KTsKKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIHByZXZpb3Vz
ID0gbnVsbHB0cjsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFs
bG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgLy8g
V2UgY2FuIHNldCB0aGlzIGluIGFueSBvcmRlci4gVGhlIHBvaW50IGlzIGp1c3QgdGhhdCB3ZSB3
YW50IHRvIGJlIGFibGUgdG8KKyAgICAgICAgICAgIC8vIGN1cnNvciBvdmVyIGFsbG9jYXRvcnMu
CisgICAgICAgICAgICBhbGxvY2F0b3Iuc2V0TmV4dEFsbG9jYXRvcihwcmV2aW91cyk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHByZXZpb3VzID0gJmFsbG9jYXRvcjsKKyAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKKyAgICBtX2Zp
cnN0QWxsb2NhdG9yID0gcHJldmlvdXM7CisgICAgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRp
b24gPSBwcmV2aW91czsKIH0KIAogTWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSgpCkBAIC0yNTcs
OSArMjcxLDEwIEBAIHZvaWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZUxhcmdlKFN1YnMKIHZv
aWQgTWFya2VkU3BhY2U6OnN3ZWVwKCkKIHsKICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZp
bmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAgICBm
b3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9y
KSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLnN3ZWVwKCk7Cisg
ICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7
CiB9CiAKQEAgLTI4MiwyOCArMjk3LDE2IEBAIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwTGFyZ2VB
bGxvY2F0aW9ucygKICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0ID0gbV9sYXJn
ZUFsbG9jYXRpb25zLnNpemUoKTsKIH0KIAotdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVw
KCkKLXsKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0YUxvZygiWm9tYmlm
eWluZyBzd2VlcC4uLiIpOwotICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBp
bmcoKTsKLSAgICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2spIHsKLSAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNTd2VlcGluZygpKQotICAg
ICAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwotICAgICAgICB9KTsKLX0KLQotdm9pZCBNYXJr
ZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JB
bGxvY2F0aW9uKCkKIHsKICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAgICBbJl0gKE1hcmtl
ZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAgICAgICAg
YWxsb2NhdG9yLnJlc2V0KCk7CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlcGFyZUZvckFsbG9j
YXRpb24oKTsKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwog
ICAgICAgICB9KTsKIAotICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHMuY2xlYXIoKTsKICAgICBt
X2FjdGl2ZVdlYWtTZXRzLnRha2VGcm9tKG1fbmV3QWN0aXZlV2Vha1NldHMpOworICAgIAogICAg
IGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikKICAg
ICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9sYXJnZUFs
bG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCkBAIC00MDgsMTEgKzQxMSwxMSBAQCB2
b2lkIE1hcmtlZFNwYWNlOjpmcmVlT3JTaHJpbmtCbG9jayhNYXJrCiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OnNocmluaygpCiB7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBmcmVlT3JTaHJpbmtCbG9jayhibG9j
ayk7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3Im
IGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5z
aHJpbmsoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwog
ICAgICAgICB9KTsKLSAgICAvLyBGb3IgTGFyZ2VBbGxvY2F0aW9ucywgd2UgZG8gdGhlIG1vcmFs
IGVxdWl2YWxlbnQgaW4gc3dlZXBMYXJnZUFsbG9jYXRpb25zKCkuCiB9CiAKIHZvaWQgTWFya2Vk
U3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQpAQCAtNDI3LDU3ICs0MzAsNjEgQEAgdm9pZCBN
YXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxs
b2NhdGlvbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xl
YXJOZXdseUFsbG9jYXRlZCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGZvckVhY2hC
bG9jaygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAg
ICAgICAgQVNTRVJUKCFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgfSk7
Ci0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0
aW9ucykKLSAgICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwot
I2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKLX0KLQotI2lmbmRlZiBOREVCVUcgCi1zdHJ1Y3Qg
VmVyaWZ5TWFya2VkIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsgCi0gICAgdm9pZCBvcGVy
YXRvcigpKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3dp
dGNoIChibG9jay0+bV9zdGF0ZSkgewotICAgICAgICBjYXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9CisgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jaykgeworICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmNs
ZWFyTmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAg
IGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQor
ICAgICAgICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwogICAg
IH0KLX07IAotI2VuZGlmIAorfQogCi12b2lkIE1hcmtlZFNwYWNlOjpmbGlwKCkKK3ZvaWQgTWFy
a2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Q
cm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNpemUoKTsgKytpKQotICAgICAgICAgICAg
bV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+ZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24gPSBtX3ZlcnNpb24gKyAx
OwotICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24gPT0gaW5pdGlhbFZlcnNpb24pKSB7
Ci0gICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRo
aXMgYnkgZmxpcHBpbmcgYWxsIGJsb2Nrcy4gVGhpcyBoYXBwZW5zCi0gICAgICAgICAgICAvLyBz
dXBlciByYXJlbHksIHByb2JhYmx5IG5ldmVyIGZvciBtb3N0IHVzZXJzLgorICAgIGlmIChtX2hl
YXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBm
b3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9j
YXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3IuYmVn
aW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIG1fdmVy
c2lvbiA9IG5leHRWZXJzaW9uKG1fdmVyc2lvbik7CisgICAgICAgIAorICAgICAgICBpZiAoVU5M
SUtFTFkobV92ZXJzaW9uID09IGluaXRpYWxWZXJzaW9uKSkgeworICAgICAgICAgICAgLy8gT2gg
bm8hIFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5IHNldHRpbmcgYWxsIGJs
b2NrIHZlcnNpb25zIHRvIG51bGwuCiAgICAgICAgICAgICBmb3JFYWNoQmxvY2soCiAgICAgICAg
ICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlLT5mbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgICAgICAgICAg
aGFuZGxlLT5ibG9jaygpLnJlc2V0VmVyc2lvbigpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9Ci0gICAgICAgIG1fdmVyc2lvbiA9IG5leHRWZXJzaW9uOyAvLyBIZW5jZWZvcnRoLCBm
bGlwSWZOZWNlc3NhcnkoKSB3aWxsIHRyaWdnZXIgb24gYWxsIGJsb2Nrcy4KKyAgICAgICAgCiAg
ICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRp
b25zKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAgIH0KIAotI2lmbmRlZiBO
REVCVUcKLSAgICBWZXJpZnlNYXJrZWQgdmVyaWZ5RnVuY3RvcjsKLSAgICBmb3JFYWNoQmxvY2so
dmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAg
ICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmlz
RnJlZUxpc3RlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICBtX2lzTWFy
a2luZyA9IHRydWU7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmVuZE1hcmtpbmcoKQoreworICAg
IGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0
b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxvY2F0b3IuZW5kTWFya2lu
ZygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAg
ICAgIH0pOworICAgIAorICAgIG1faXNNYXJraW5nID0gZmFsc2U7CiB9CiAKIHZvaWQgTWFya2Vk
U3BhY2U6OndpbGxTdGFydEl0ZXJhdGluZygpCkBAIC01NDUsNyArNTUyLDYgQEAgdm9pZCBNYXJr
ZWRTcGFjZTo6ZGlkQWRkQmxvY2soTWFya2VkQmxvYwogdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWxs
b2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewogICAgIGJsb2NrLT5h
c3NlcnRGbGlwcGVkKCk7Ci0gICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5hcHBlbmQoYmxvY2sp
OwogICAgIAogICAgIGlmIChibG9jay0+d2Vha1NldCgpLmlzT25MaXN0KCkpIHsKICAgICAgICAg
YmxvY2stPndlYWtTZXQoKS5yZW1vdmUoKTsKQEAgLTU1Myw0ICs1NTksNDEgQEAgdm9pZCBNYXJr
ZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsb2NrKE1hcgogICAgIH0KIH0KIAorTWFya2VkQmxvY2s6
OkhhbmRsZSogTWFya2VkU3BhY2U6OmZpbmRFbXB0eUJsb2NrKCkKK3sKKyAgICBmb3IgKDsgbV9h
bGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9u
ID0gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPm5leHRBbGxvY2F0b3IoKSkgeworICAg
ICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2FsbG9jYXRvckZvckVtcHR5
QWxsb2NhdGlvbi0+ZmluZEVtcHR5QmxvY2soKSkKKyAgICAgICAgICAgIHJldHVybiBibG9jazsK
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OnNuYXBz
aG90KCkKK3sKKyAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNv
bGxlY3Rpb24pIHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAo
TWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAg
ICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0p
OworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgICAgICBb
Jl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAg
ICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgICAg
ICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmFzc2VydFNuYXBzaG90RW1wdHko
KQoreworICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCisgICAgICAgIHJldHVybjsKKyAgICBmb3JF
YWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAt
PiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLmFzc2VydFNuYXBzaG90
RW1wdHkoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwor
ICAgICAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcg
KzY1LDE2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbnVtU2l6ZUNsYXNz
ZXMgPSBsYXJnZUN1dG9mZiAvIHNpemVTdGVwOwogICAgIAotICAgIHN0YXRpYyBjb25zdCBIZWFw
VmVyc2lvbiBpbml0aWFsVmVyc2lvbiA9IDQyOyAgLy8gVGhpcyBjYW4gYmUgYW55IHZhbHVlLCBp
bmNsdWRpbmcgcmFuZG9tIGdhcmJhZ2UsIHNvIGxvbmcgYXMgaXQncyBjb25zaXN0ZW50IGZvciB0
aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nlc3MuCisgICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9u
IG51bGxWZXJzaW9uID0gMDsgLy8gVGhlIHZlcnNpb24gb2YgZnJlc2hseSBhbGxvY2F0ZWQgYmxv
Y2tzLgorICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBpbml0aWFsVmVyc2lvbiA9IDE7IC8v
IFRoZSB2ZXJzaW9uIHRoYXQgdGhlIGhlYXAgc3RhcnRzIG91dCB3aXRoLgorICAgIAorICAgIEhl
YXBWZXJzaW9uIG5leHRWZXJzaW9uKEhlYXBWZXJzaW9uIHZlcnNpb24pCisgICAgeworICAgICAg
ICB2ZXJzaW9uKys7CisgICAgICAgIGlmICh2ZXJzaW9uID09IG51bGxWZXJzaW9uKQorICAgICAg
ICAgICAgdmVyc2lvbisrOworICAgICAgICByZXR1cm4gdmVyc2lvbjsKKyAgICB9CiAgICAgCiAg
ICAgc3RhdGljIHNpemVfdCBzaXplQ2xhc3NUb0luZGV4KHNpemVfdCBzaXplKQogICAgIHsKQEAg
LTExNCw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0
c1dpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9ub3JtYWxTcGFjZTsgfQogICAgIFN1YnNw
YWNlJiBzdWJzcGFjZUZvckF1eGlsaWFyeURhdGEoKSB7IHJldHVybiBtX2F1eGlsaWFyeVNwYWNl
OyB9CiAgICAgCi0gICAgdm9pZCByZXNldEFsbG9jYXRvcnMoKTsKKyAgICB2b2lkIHByZXBhcmVG
b3JBbGxvY2F0aW9uKCk7CiAKICAgICB2b2lkIHZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNpdG9y
Jik7CiAgICAgdm9pZCByZWFwV2Vha1NldHMoKTsKQEAgLTE0NCwxMSArMTUzLDEzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAg
ICAgdm9pZCBkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSopOwogCi0gICAg
dm9pZCBmbGlwKCk7CisgICAgdm9pZCBiZWdpbk1hcmtpbmcoKTsKKyAgICB2b2lkIGVuZE1hcmtp
bmcoKTsKKyAgICB2b2lkIHNuYXBzaG90KCk7CiAgICAgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVk
KCk7CiAgICAgdm9pZCBzd2VlcCgpOwogICAgIHZvaWQgc3dlZXBMYXJnZUFsbG9jYXRpb25zKCk7
Ci0gICAgdm9pZCB6b21iaWZ5U3dlZXAoKTsKKyAgICB2b2lkIGFzc2VydFNuYXBzaG90RW1wdHko
KTsKICAgICBzaXplX3Qgb2JqZWN0Q291bnQoKTsKICAgICBzaXplX3Qgc2l6ZSgpOwogICAgIHNp
emVfdCBjYXBhY2l0eSgpOwpAQCAtMTU3LDggKzE2OCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBI
ZWFwVmVyc2lvbiB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAKLSAgICBj
b25zdCBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBibG9ja3NXaXRoTmV3T2JqZWN0cygp
IGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzV2l0aE5ld09iamVjdHM7IH0KLSAgICAKICAgICBjb25z
dCBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4mIGxhcmdlQWxsb2NhdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX2xhcmdlQWxsb2NhdGlvbnM7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25z
TnVyc2VyeU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlP
ZmZzZXQ7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29s
bGVjdGlvbjsgfQpAQCAtMTY5LDEzICsxNzgsMTQgQEAgcHVibGljOgogICAgIExhcmdlQWxsb2Nh
dGlvbioqIGxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kOyB9CiAgICAgdW5zaWdu
ZWQgbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZTsgfQogICAgIAorICAgIE1h
cmtlZEFsbG9jYXRvciogZmlyc3RBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0QWxs
b2NhdG9yOyB9CisgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbjsgfQorICAg
IAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRFbXB0eUJsb2NrKCk7CisgICAgCiAgICAg
Ly8gV2hlbiB0aGlzIGlzIHRydWUgaXQgbWVhbnMgdGhhdCB3ZSBoYXZlIGZsaXBwZWQgYnV0IHRo
ZSBtYXJrIGJpdHMgaGF2ZW4ndCBjb252ZXJnZWQgeWV0LgogICAgIGJvb2wgaXNNYXJraW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9pc01hcmtpbmc7IH0KICAgICAKLSAgICAvLyBGSVhNRTogQWZ0ZXIg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTU4MSwgTWFya2VkU3Bh
Y2Ugd2lsbCBjb250cm9sIHRoaXMKLSAgICAvLyBmbGFnIGRpcmVjdGx5LgotICAgIHZvaWQgc2V0
SXNNYXJraW5nKGJvb2wgdmFsdWUpIHsgbV9pc01hcmtpbmcgPSB2YWx1ZTsgfQotCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKQEAgLTE5MCw4ICsyMDAsOCBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgaW5p
dGlhbGl6ZVN1YnNwYWNlKFN1YnNwYWNlJik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYpOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaFN1YnNwYWNlKGNvbnN0IEZ1bmN0b3ImKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBmb3JFYWNoQWxsb2Nh
dG9yKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYpOwogICAgIAogICAgIHZvaWQg
YWRkQWN0aXZlV2Vha1NldChXZWFrU2V0Kik7CiAKQEAgLTIwNSw3ICsyMTUsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc0l0ZXJhdGluZzsKICAgICBib29sIG1faXNNYXJraW5nIHsgZmFsc2Ug
fTsKICAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6
OkhhbmRsZSo+IG1fYmxvY2tzV2l0aE5ld09iamVjdHM7CiAgICAgVmVjdG9yPExhcmdlQWxsb2Nh
dGlvbio+IG1fbGFyZ2VBbGxvY2F0aW9uczsKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlv
bnNOdXJzZXJ5T2Zmc2V0IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc09m
ZnNldEZvclRoaXNDb2xsZWN0aW9uIHsgMCB9OwpAQCAtMjE1LDQwICsyMjQsMTEgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUg
eyAwIH07CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxO
b2RlPFdlYWtTZXQ+PiBtX2FjdGl2ZVdlYWtTZXRzOwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxX
ZWFrU2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9uZXdBY3RpdmVXZWFrU2V0
czsKKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fZmlyc3RBbGxvY2F0b3IgeyBudWxscHRy
IH07CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiB7
IG51bGxwdHIgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lk
IE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAgQmxv
Y2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAgICBmb3IgKEJsb2NrSXRl
cmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoTGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRl
cmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3Ig
KExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewotICAg
ICAgICBpZiAoYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKLSAgICAgICAgICAgIGlmIChmdW5jdG9y
KGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9
PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBN
YXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwotICAgIEJsb2Nr
SXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJh
dG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaERlYWRDZWxsKGZ1bmN0b3IpID09IEl0ZXJh
dGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChM
YXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKLSAgICAg
ICAgaWYgKCFhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewotICAgICAgICAgICAgaWYgKGZ1bmN0b3Io
YWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09
IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KIGlubGluZSBNYXJrZWRBbGxvY2F0b3IqIE1hcmtlZFNwYWNlOjphbGxv
Y2F0b3JGb3IoU3Vic3BhY2UmIHNwYWNlLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5
dGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
SW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5l
IHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKKyAg
ICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxv
Y2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9
PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7
CisgICAgICAgIGlmIChhbGxvY2F0aW9uLT5pc0xpdmUoKSkgeworICAgICAgICAgICAgaWYgKGZ1
bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtp
bmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2
b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7CisgICAg
QmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2Nr
SXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0g
SXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBm
b3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewor
ICAgICAgICBpZiAoIWFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoZnVu
Y3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2lu
ZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVu
ZFRvTWEKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lclR5cGU+CiBBTFdBWVNfSU5MSU5FIHZv
aWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKENvbnRhaW5lclR5
cGUmIGNvbnRhaW5lciwgSlNDZWxsKiBjZWxsKQogewotICAgIGNvbnRhaW5lci5mbGlwSWZOZWNl
c3NhcnlEdXJpbmdNYXJraW5nKG1fdmVyc2lvbik7CisgICAgY29udGFpbmVyLmFib3V0VG9NYXJr
KG1fdmVyc2lvbik7CiAgICAgCiAgICAgaWYgKGNvbnRhaW5lci50ZXN0QW5kU2V0TWFya2VkKGNl
bGwpKQogICAgICAgICByZXR1cm47CkBAIC0yNDYsMTAgKzI0NiwxMiBAQCB2b2lkIFNsb3RWaXNp
dG9yOjptYXJrQXV4aWxpYXJ5KGNvbnN0IHZvCiAgICAgCiAgICAgQVNTRVJUKGNlbGwtPmhlYXAo
KSA9PSBoZWFwKCkpOwogICAgIAotICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1fdmVy
c2lvbiwgY2VsbCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoSGVhcDo6aXNNYXJrZWRDb25j
dXJyZW50bHkoY2VsbCkpOworICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihjZWxs
KSk7CisgICAgaWYgKCFjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAgICBkYXRhTG9n
KCIsIGJsb2NrIGluZGV4ID0gIiwgY2VsbC0+bWFya2VkQmxvY2soKS5oYW5kbGUoKS5pbmRleCgp
LCAiLCBzaXplID0gIiwgY2VsbC0+bWFya2VkQmxvY2soKS5jZWxsU2l6ZSgpLCAiLCBhdHRyaWJ1
dGVzID0gIiwgY2VsbC0+bWFya2VkQmxvY2soKS5hdHRyaWJ1dGVzKCksICJcbiIpOworICAgIAor
ICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1fdmVyc2lvbiwgY2VsbCkpCiAgICAgICAg
IHJldHVybjsKLSAgICB9CiAgICAgCiAgICAgbm90ZUxpdmVBdXhpbGlhcnlDZWxsKGNlbGwpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCShyZXZpc2lv
biAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBXZWFrQmxvY2s6OnNwZWNpYWxp
emVkVmlzaXQoQ29udGFpbgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgY29uc3Qg
SlNWYWx1ZSYganNWYWx1ZSA9IHdlYWtJbXBsLT5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChjb250
YWluZXIuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkRHVyaW5nV2Vha1Zpc2l0aW5nKHZlcnNpb24s
IGpzVmFsdWUuYXNDZWxsKCkpKQorICAgICAgICBpZiAoY29udGFpbmVyLmlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZENvbmN1cnJlbnRseSh2ZXJzaW9uLCBqc1ZhbHVlLmFzQ2VsbCgpKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYgKCF3ZWFrSGFuZGxlT3duZXIt
PmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3QoJmNv
bnN0X2Nhc3Q8SlNWYWx1ZSY+KGpzVmFsdWUpKSwgd2Vha0ltcGwtPmNvbnRleHQoKSwgdmlzaXRv
cikpCkBAIC0xNDcsMTcgKzE0NywxNCBAQCB2b2lkIFdlYWtCbG9jazo6cmVhcCgpCiAgICAgLy8g
SWYgdGhpcyBXZWFrQmxvY2sgZG9lc24ndCBiZWxvbmcgdG8gYSBDZWxsQ29udGFpbmVyLCB3ZSB3
b24ndCBldmVuIGJlIGhlcmUuCiAgICAgQVNTRVJUKG1fY29udGFpbmVyKTsKICAgICAKLSAgICBt
X2NvbnRhaW5lci5mbGlwSWZOZWNlc3NhcnkoKTsKLQotICAgIC8vIFdlIG9ubHkgcmVhcCBhZnRl
ciBtYXJraW5nLgotICAgIEFTU0VSVChtX2NvbnRhaW5lci5pc01hcmtlZCgpKTsKKyAgICBIZWFw
VmVyc2lvbiB2ZXJzaW9uID0gbV9jb250YWluZXIuaGVhcCgpLT5vYmplY3RTcGFjZSgpLnZlcnNp
b24oKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2Vha0ltcGxDb3VudCgpOyArK2kp
IHsKICAgICAgICAgV2Vha0ltcGwqIHdlYWtJbXBsID0gJndlYWtJbXBscygpW2ldOwogICAgICAg
ICBpZiAod2Vha0ltcGwtPnN0YXRlKCkgPiBXZWFrSW1wbDo6RGVhZCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIGlmIChtX2NvbnRhaW5lci5pc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQod2Vha0ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkpIHsKKyAgICAgICAgaWYgKG1fY29udGFp
bmVyLmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh2ZXJzaW9uLCB3ZWFrSW1wbC0+anNWYWx1ZSgp
LmFzQ2VsbCgpKSkgewogICAgICAgICAgICAgQVNTRVJUKHdlYWtJbXBsLT5zdGF0ZSgpID09IFdl
YWtJbXBsOjpMaXZlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiV2Vh
ay5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgotI2luY2x1ZGUgIldlYWtJbmxpbmVz
LmgiCiAjaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJNYXBJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hdGhPYmplY3Qu
aCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKICNpbmNsdWRlICJNb2R1bGVMb2FkZXJQcm90b3R5
cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1h
cC5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90b3R5cGVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBQ
cm90b3R5cGVNYXBfaAogI2RlZmluZSBQcm90b3R5cGVNYXBfaAogCisjaW5jbHVkZSAiSW5kZXhp
bmdUeXBlLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIldlYWtHQ01hcC5o
IgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjA1ODU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJMTEludFBDUmFuZ2Vz
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5o
IgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlBDVG9Db2RlT3Jp
Z2luTWFwLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJTbG90VmlzaXRv
cklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01h
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01h
cC5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrR0NNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWFr
R0NNYXBfaAogCiAjaW5jbHVkZSAiV2Vhay5oIgotI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlN0YWNrVmlzaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAkJ
MEY0NTcwNDMxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAv
KiBEb21pbmF0b3JzLmggKi87IH07CiAJCTBGNDU3MDQ1MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJi
bGVTb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovOyB9OwogCQkwRjcyNUNB
QzFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNl
dC5oICovOyB9OworCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDNUZC
NTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGODI0QTY4
MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJr
aW5nTG90LmNwcCAqLzsgfTsKIAkJMEY4MjRBNjkxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdM
b3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0
QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi87IH07CiAJCTBGODcxMDVBMTY2
NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRl
ci5oICovOyB9OwpAQCAtMzY2LDYgKzM2Nyw3IEBACiAJCTBGNDU3MDQyMUJFNUI1OEYwMDYyQTYy
OSAvKiBEb21pbmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvbWlu
YXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwNDQxQkU4MzQ0MTAw
NjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QnViYmxlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjcyNUNBQjFDNTA0
NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmFuZ2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzVGQjUxRDg4
NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmtpbmdMb3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xv
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJraW5nTG90Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQ
b2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhd1BvaW50ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4MCw2ICs4ODIsNyBAQAogCQkJCUE4QTQ3
Mjk4MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9hLmggKi8sCiAJCQkJMUFFQTg4RTExRDZCQkNGNDAw
RTVBRDY0IC8qIEVudW1UcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5RjE1MUE4MjVBMDA0MTIzRkYg
LyogRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZh
c3RCaXRWZWN0b3IuY3BwICovLAogCQkJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0
Qml0VmVjdG9yLmggKi8sCiAJCQkJQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxs
b2MuY3BwICovLAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmgg
Ki8sCkBAIC0xNTk0LDYgKzE1OTcsNyBAQAogCQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAv
KiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRUMxNTFBODI1QjAwNDEy
M0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjQxNTFB
ODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY3
QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDczRjcxNTFBODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9tU291
cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDAyMTUxQTgyNUIwMDQxMjNGRiAvKiBQ
YWdlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMjA1ODU5KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBEYXRhTG9nLmNw
cAogICAgIERhdGVNYXRoLmNwcAogICAgIERlY2ltYWxOdW1iZXIuY3BwCisgICAgRmFzdEJpdFZl
Y3Rvci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZpbGVQcmludFN0cmVhbS5jcHAKICAg
ICBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGYXN0Qml0VmVj
dG9yLmgiCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6
OnNldEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCit7Cisg
ICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPigKKyAgICAgICAg
ZmFzdENhbGxvYyhvdGhlci5hcnJheUxlbmd0aCgpLCBzaXplb2YodWludDMyX3QpKSk7CisgICAg
bWVtY3B5KG5ld0FycmF5LCBvdGhlci5tX3dvcmRzLCBvdGhlci5hcnJheUxlbmd0aCgpICogc2l6
ZW9mKHVpbnQzMl90KSk7CisgICAgaWYgKG1fd29yZHMpCisgICAgICAgIGZhc3RGcmVlKG1fd29y
ZHMpOworICAgIG1fd29yZHMgPSBuZXdBcnJheTsKKyAgICBtX251bUJpdHMgPSBvdGhlci5tX251
bUJpdHM7Cit9CisKK3ZvaWQgRmFzdEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXplU2xvdyhzaXpl
X3QgbnVtQml0cykKK3sKKyAgICBzaXplX3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFycmF5
TGVuZ3RoKG51bUJpdHMpOworICAgIAorICAgIC8vIFVzZSBmYXN0Q2FsbG9jIGluc3RlYWQgb2Yg
ZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBleHBlY3QgdGhlIGNvbW1vbgorICAgIC8vIHVzZSBjYXNl
IGZvciB0aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZl
Y3Rvci4KKyAgICAKKyAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dCo+KGZhc3RDYWxsb2MobmV3TGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7CisgICAgbWVtY3B5
KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7Cisg
ICAgaWYgKG1fd29yZHMpCisgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOworICAgIG1fd29yZHMg
PSBuZXdBcnJheTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL0Zhc3RCaXRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0
VmVjdG9yLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtOTEsMTcgKzkyLDEyIEBAIHB1YmxpYzoKICAgICAKICAg
ICBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvcGVyYXRvcj0oY29uc3QgRmFzdEJpdFZlY3Rvcldv
cmRPd25lciYgb3RoZXIpCiAgICAgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gb3RoZXIuYXJy
YXlMZW5ndGgoKTsKLSAgICAgICAgaWYgKGxlbmd0aCA9PSBhcnJheUxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICBtZW1jcHkobV93b3Jkcywgb3RoZXIubV93b3JkcywgbGVuZ3RoICogc2l6ZW9mKHVp
bnQzMl90KSk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIGlmIChhcnJheUxl
bmd0aCgpICE9IG90aGVyLmFycmF5TGVuZ3RoKCkpCisgICAgICAgICAgICBzZXRFcXVhbHNTbG93
KG90aGVyKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkobV93b3Jkcywgb3Ro
ZXIubV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAg
ICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQz
Ml90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhsZW5ndGgs
IHNpemVvZih1aW50MzJfdCkpKTsKLSAgICAgICAgbWVtY3B5KG5ld0FycmF5LCBvdGhlci5tX3dv
cmRzLCBsZW5ndGggKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgaWYgKG1fd29yZHMpCi0g
ICAgICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAgbV93b3JkcyA9IG5ld0FycmF5
OwotICAgICAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7CiAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICB9CiAgICAgCkBAIC0xNDAsMTggKzEzNiw4IEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIHJlc2l6ZShzaXplX3QgbnVtQml0cykKICAgICB7Ci0gICAgICAgIGlmIChudW1CaXRz
ID09IG1fbnVtQml0cykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIC8v
IFVzZSBmYXN0Q2FsbG9jIGluc3RlYWQgb2YgZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBleHBlY3Qg
dGhlIGNvbW1vbgotICAgICAgICAvLyB1c2UgY2FzZSBmb3IgdGhpcyBtZXRob2QgdG8gYmUgaW5p
dGlhbGl6aW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3IuCi0gICAgICAgIAotICAgICAgICBz
aXplX3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpOwotICAg
ICAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxs
b2MobmV3TGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7Ci0gICAgICAgIG1lbWNweShuZXdBcnJh
eSwgbV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBp
ZiAobV93b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOwotICAgICAgICBtX3dv
cmRzID0gbmV3QXJyYXk7CisgICAgICAgIGlmIChhcnJheUxlbmd0aCgpICE9IGZhc3RCaXRWZWN0
b3JBcnJheUxlbmd0aChudW1CaXRzKSkKKyAgICAgICAgICAgIHJlc2l6ZVNsb3cobnVtQml0cyk7
CiAgICAgICAgIG1fbnVtQml0cyA9IG51bUJpdHM7CiAgICAgfQogICAgIApAQCAtMTcxLDYgKzE1
Nyw5IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCogd29yZHMoKSB7IHJldHVybiBtX3dvcmRzOyB9
CiAKIHByaXZhdGU6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RXF1YWxzU2xvdyhj
b25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcik7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVzaXplU2xvdyhzaXplX3QgbnVtQml0cyk7CisgICAgCiAgICAgdWludDMyX3Qq
IG1fd29yZHMgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKIH07CkBA
IC0zMjAsNiArMzA5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAoc2l6
ZV90IGluZGV4ID0gYXJyYXlMZW5ndGgoKTsgaW5kZXgtLTspIHsKKyAgICAgICAgICAgIGlmICht
X3dvcmRzLndvcmQoaW5kZXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3RoZXJXb3Jkcz4KICAgICBGYXN0Qml0VmVjdG9ySW1wbDxGYXN0Qml0VmVjdG9yQW5k
V29yZHM8dHlwZW5hbWUgV29yZHM6OlZpZXdUeXBlLCB0eXBlbmFtZSBPdGhlcldvcmRzOjpWaWV3
VHlwZT4+IG9wZXJhdG9yJihjb25zdCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3Ro
ZXIpIGNvbnN0CiAgICAgewpAQCAtNDcxLDYgKzQ2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV93
b3Jkcy5jbGVhckFsbCgpOwogICAgIH0KIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29u
dGVudHMgb2YgdGhpcyBiaXR2ZWN0b3IgY2hhbmdlZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
dGhlcldvcmRzPgogICAgIGJvb2wgc2V0QW5kQ2hlY2soY29uc3QgRmFzdEJpdFZlY3RvckltcGw8
T3RoZXJXb3Jkcz4mIG90aGVyKQogICAgIHsKQEAgLTU1MCw2ICs1NDksMjggQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKICAgICB9CisgICAgCisgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBjaGFuZ2VkLgorICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBhdG9taWNTZXRBbmRDaGVjayhzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpCisgICAgeworICAg
ICAgICB1aW50MzJfdCogcG9pbnRlciA9ICZtX3dvcmRzLndvcmQoaW5kZXggPj4gNSk7CisgICAg
ICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChpbmRleCAmIDMxKTsKKyAgICAgICAgZm9yICg7Oykg
eworICAgICAgICAgICAgdWludDMyX3Qgb2xkVmFsdWUgPSAqcG9pbnRlcjsKKyAgICAgICAgICAg
IHVpbnQzMl90IG5ld1ZhbHVlOworICAgICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgaWYgKG9sZFZhbHVlICYgbWFzaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUgfCBtYXNrOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIShvbGRWYWx1ZSAmIG1hc2spKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFs
dWUgPSBvbGRWYWx1ZSAmIH5tYXNrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdl
YWtDb21wYXJlQW5kU3dhcChwb2ludGVyLCBvbGRWYWx1ZSwgbmV3VmFsdWUpKQorICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288866</attachid>
            <date>2016-09-14 14:50:20 -0700</date>
            <delta_ts>2016-09-15 11:19:20 -0700</delta_ts>
            <desc>it just ran a program</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>123033</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTBGN0MzOUZCMUM4RjYy
OTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5s
aW5lcy5oICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsK
IAkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFy
a2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmgg
Ki87IH07CisJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI5
MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLzsgfTsKIAkJMEY4MDIz
RUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4
MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI3MzEsNiArMjczMyw4IEBACiAJCTBGN0Mz
OUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyog
REZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5o
OyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3Bh
Y2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIz
MDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMz
OCw5ICs1MzQyLDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFs
bG9jYXRvci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9j
ay5jcHAgKi8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmgg
Ki8sCisJCQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5o
ICovLAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICov
LAogCQkJCTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJ
CQkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMEY3
QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0
MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBG
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlBRERCMUY2MjE4RDc3REI3
MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNzM5NCw2ICs3NDAwLDcgQEAKIAkJ
CQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50
UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAv
KiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4
QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJp
dGhNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkxOCw3IEBACiAJCQkJQTUwM0ZB
MkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0lu
amVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQkExRDg4OTUwNzAw
NDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1
QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0MgLyogSlNJbnB1dHMuanNv
biBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2
QXJyYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJW
TUVudHJ5U2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29u
dGFpbmVyLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NlbGxDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBIZWFwOwogY2xhc3MgSGVhcENlbGw7CiBjbGFzcyBMYXJn
ZUFsbG9jYXRpb247CiBjbGFzcyBNYXJrZWRCbG9jazsKIGNsYXNzIFdlYWtTZXQ7CitjbGFzcyBW
TTsKIAogdHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKIApAQCAtNTYsNiArNTgsOSBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KICAgICAKKyAgICBWTSogdm0oKSBjb25zdDsKKyAgICBIZWFw
KiBoZWFwKCkgY29uc3Q7CisgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9lbmNvZGVkUG9pbnRlcjsgfQogICAgIAogICAgIGJvb2wgaXNNYXJrZWRC
bG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZFBvaW50ZXIgJiYgIShtX2VuY29kZWRQb2lu
dGVyICYgaXNMYXJnZUFsbG9jYXRpb25CaXQpOyB9CkBAIC03MywxMyArNzgsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxMYXJnZUFsbG9jYXRpb24qPihtX2VuY29k
ZWRQb2ludGVyIC0gaXNMYXJnZUFsbG9jYXRpb25CaXQpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3Nhcnko
KTsKKyAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxp
cCgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKICAgICBib29sIGlz
TWFya2VkKEhlYXBDZWxsKikgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQoSGVhcENlbGwqKSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChI
ZWFwVmVyc2lvbiwgSGVhcENlbGwqKSBjb25zdDsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWQo
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXJJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENv
bnRhaW5lcklubGluZXMuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQg
KzI5LDIwIEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJWTS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoKSBjb25zdAor
aW5saW5lIFZNKiBDZWxsQ29udGFpbmVyOjp2bSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGFyZ2VB
bGxvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtYXJrZWRCbG9j
aygpLmhhbmRsZSgpLmlzTWFya2VkKCk7CisgICAgICAgIHJldHVybiBsYXJnZUFsbG9jYXRpb24o
KS52bSgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLnZtKCk7Cit9CisKK2lubGluZSBIZWFw
KiBDZWxsQ29udGFpbmVyOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJnZtKCktPmhlYXA7
CiB9CiAKIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXBDZWxsKiBjZWxs
KSBjb25zdApAQCAtNTMsNiArNTksMTMgQEAgaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNN
YXJrZWRPck5ldwogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChjZWxsKTsKIH0KIAoraW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIEhlYXBDZWxsKiBjZWxsKSBjb25zdAor
eworICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAgICByZXR1cm4gbGFyZ2VBbGxv
Y2F0aW9uKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7CisgICAgcmV0dXJuIG1hcmtlZEJs
b2NrKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHZlcnNpb24sIGNlbGwpOworfQorCiBpbmxp
bmUgdm9pZCBDZWxsQ29udGFpbmVyOjpub3RlTWFya2VkKCkKIHsKICAgICBpZiAoIWlzTGFyZ2VB
bGxvY2F0aW9uKCkpCkBAIC03MywxNiArODYsMTAgQEAgaW5saW5lIFdlYWtTZXQmIENlbGxDb250
YWluZXI6OndlYWtTZXQoKQogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLndlYWtTZXQoKTsKIH0K
IAotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9u
IGhlYXBWZXJzaW9uKQotewotICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24oKSkKLSAgICAgICAg
bWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUg
dm9pZCBDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkoKQoraW5saW5lIHZvaWQgQ2VsbENv
bnRhaW5lcjo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiB7CiAgICAgaWYg
KCFpc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICBtYXJrZWRCbG9jaygpLmZsaXBJZk5lY2Vz
c2FyeSgpOworICAgICAgICBtYXJrZWRCbG9jaygpLmFib3V0VG9NYXJrKGhlYXBWZXJzaW9uKTsK
IH0KIAogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6bmVlZHNGbGlwKCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJ
KHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZh
dGl2ZVJvb3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgogCkBAIC02NSwxMiArNjYsMTIgQEAgdm9p
ZCBDb25zZXJ2YXRpdmVSb290czo6Z3JvdygpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1hcmtI
b29rPgotaW5saW5lIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6OmdlbmVyaWNBZGRQb2ludGVyKHZv
aWQqIHAsIEhlYXBWZXJzaW9uIHZlcnNpb24sIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIsIE1hcmtI
b29rJiBtYXJrSG9vaykKK2lubGluZSB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRk
UG9pbnRlcih2b2lkKiBwLCBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyLCBNYXJrSG9vayYgbWFya0hv
b2spCiB7CiAgICAgbWFya0hvb2subWFyayhwKTsKIAogICAgIEhlYXBVdGlsOjpmaW5kR0NPYmpl
Y3RQb2ludGVyc0Zvck1hcmtpbmcoCi0gICAgICAgIG1faGVhcCwgdmVyc2lvbiwgZmlsdGVyLCBw
LAorICAgICAgICBtX2hlYXAsIGZpbHRlciwgcCwKICAgICAgICAgWyZdICh2b2lkKiBwKSB7CiAg
ICAgICAgICAgICBpZiAobV9zaXplID09IG1fY2FwYWNpdHkpCiAgICAgICAgICAgICAgICAgZ3Jv
dygpOwpAQCAtOTMsOSArOTQsOCBAQCB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRk
U3Bhbih2CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNQb2ludGVyQWxpZ25lZChlbmQpKTsKIAogICAg
IFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIgPSBtX2hlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5m
aWx0ZXIoKTsgLy8gTWFrZSBhIGxvY2FsIGNvcHkgb2YgZmlsdGVyIHRvIHNob3cgdGhlIGNvbXBp
bGVyIGl0IHdvbid0IGFsaWFzLCBhbmQgY2FuIGJlIHJlZ2lzdGVyLWFsbG9jYXRlZC4KLSAgICBI
ZWFwVmVyc2lvbiB2ZXJzaW9uID0gbV9oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpOwogICAg
IGZvciAoY2hhcioqIGl0ID0gc3RhdGljX2Nhc3Q8Y2hhcioqPihiZWdpbik7IGl0ICE9IHN0YXRp
Y19jYXN0PGNoYXIqKj4oZW5kKTsgKytpdCkKLSAgICAgICAgZ2VuZXJpY0FkZFBvaW50ZXIoKml0
LCB2ZXJzaW9uLCBmaWx0ZXIsIG1hcmtIb29rKTsKKyAgICAgICAgZ2VuZXJpY0FkZFBvaW50ZXIo
Kml0LCBmaWx0ZXIsIG1hcmtIb29rKTsKIH0KIAogY2xhc3MgRHVtbXlNYXJrSG9vayB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgJKHJl
dmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2
ZVJvb3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IG5vbklubGluZUNhcGFjaXR5ID0gODE5MiAvIHNpemVvZihIZWFw
Q2VsbCopOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcmtIb29rPgotICAgIHZvaWQg
Z2VuZXJpY0FkZFBvaW50ZXIodm9pZCosIEhlYXBWZXJzaW9uLCBUaW55Qmxvb21GaWx0ZXIsIE1h
cmtIb29rJik7CisgICAgdm9pZCBnZW5lcmljQWRkUG9pbnRlcih2b2lkKiwgVGlueUJsb29tRmls
dGVyLCBNYXJrSG9vayYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFya0hvb2s+CiAgICAg
dm9pZCBnZW5lcmljQWRkU3Bhbih2b2lkKiwgdm9pZCogZW5kLCBNYXJrSG9vayYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIK
ICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJNYXJrZWRT
cGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAi
U2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgpAQCAtNTI2LDExICs1
MjcsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgfQogICAgIAogICAgIHsKLSAg
ICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RT
cGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZmxpcCgpOworICAgICAg
ICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNl
LmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZygpOwog
ICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyh0cnVlKTsKIH0KIAog
dm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCkBAIC03NzksNyArNzc4LDcg
QEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAgICBBU1NFUlQobV9zaGFyZWRNYXJrU3RhY2su
aXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLnJlbW92ZUFsbCgpOwog
ICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKGZhbHNlKTsKKyAgICBtX29iamVj
dFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVjdENvdW50KCkKQEAg
LTkzOSw3ICs5MzgsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkKICAgICAgICAg
bV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNwYWNlLnNocmluaygpOwog
ICAgIH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBzaG90LmlzRW1wdHkoKSk7CisgICAgbV9vYmpl
Y3RTcGFjZS5hc3NlcnRTbmFwc2hvdEVtcHR5KCk7CiAKICAgICBzd2VlcEFsbExvZ2ljYWxseUVt
cHR5V2Vha0Jsb2NrcygpOwogfQpAQCAtMTA0OCw3ICsxMDQ3LDcgQEAgTkVWRVJfSU5MSU5FIHZv
aWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigp
OwogICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKIAotICAg
IHJlc2V0QWxsb2NhdG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdXBk
YXRlQWxsb2NhdGlvbkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRp
bWUpOwogICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTE2Miw0NCArMTE2MSwxMCBA
QCB2b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKICAgICBtX2FycmF5QnVmZmVycy5zd2Vl
cCgpOwogfQogCi1zdHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgOiBwdWJsaWMgTWFy
a2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvcihW
ZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBibG9ja3MpIAotICAgICAgICA6IG1faW5kZXgo
MCkgCi0gICAgICAgICwgbV9ibG9ja3MoYmxvY2tzKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lk
IG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0gICAgewotICAg
ICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAgIG1fYmxvY2tz
W21faW5kZXgrK10gPSBibG9jazsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG11
dGFibGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgotICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKLSAgICBtdXRhYmxlIHNp
emVfdCBtX2luZGV4OwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIG1fYmxvY2tz
OwotfTsKLQogdm9pZCBIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlKCkKIHsKICAgICBUaW1pbmdT
Y29wZSB0aW1pbmdTY29wZSgqdGhpcywgIkhlYXA6OnNuYXBzaG90TWFya2VkU3BhY2UiKTsKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcmVuYW1lZC4gSXQncyBub3QgYWN0
dWFsbHkgc25hcHNob3R0aW5nIGFsbCBvZiBNYXJrZWRTcGFjZS4KLSAgICAvLyBUaGlzIGlzIHVz
ZWQgYnkgSW5jcmVtZW50YWxTd2VlcGVyLCBzbyBpdCBvbmx5IG5lZWRzIHRvIHNuYXBzaG90IGJs
b2Nrcy4gSG93ZXZlciwgaWYgd2UgZXZlcgotICAgIC8vIHdhbnRlZCB0byBhZGQgb3RoZXIgc25h
cHNob3R0aW5nIGxvZ2luLCB3ZSdkIHByb2JhYmx5IHB1dCBpdCBoZXJlLgotICAgIAotICAgIGlm
IChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9y
IChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgOiBtX29iamVjdFNwYWNlLmJsb2Nrc1dpdGhO
ZXdPYmplY3RzKCkpIHsKLSAgICAgICAgICAgIGlmIChoYW5kbGUtPmlzT25CbG9ja3NUb1N3ZWVw
KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX2Jsb2NrU25hcHNo
b3QuYXBwZW5kKGhhbmRsZSk7Ci0gICAgICAgICAgICBoYW5kbGUtPnNldElzT25CbG9ja3NUb1N3
ZWVwKHRydWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9ibG9ja1NuYXBz
aG90LnJlc2l6ZVRvRml0KG1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuc2l6ZSgpKTsKLSAg
ICAgICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgZnVuY3RvcihtX2Jsb2NrU25hcHNob3Qp
OwotICAgICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICB9Cisg
ICAgbV9vYmplY3RTcGFjZS5zbmFwc2hvdCgpOwogfQogCiB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJj
ZVByb3ZpZGVyQ2FjaGVzKCkKQEAgLTEyMjIsOSArMTE4Nyw5IEBAIHZvaWQgSGVhcDo6d3JpdGVC
YXJyaWVyQ3VycmVudGx5RXhlY3V0aW4KICAgICBtX2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1
cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhpcyk7CiB9CiAKLXZvaWQgSGVhcDo6cmVzZXRB
bGxvY2F0b3JzKCkKK3ZvaWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewotICAgIG1f
b2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3JzKCk7CisgICAgbV9vYmplY3RTcGFjZS5wcmVwYXJl
Rm9yQWxsb2NhdGlvbigpOwogfQogCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMo
KQpAQCAtMTQ3Myw3ICsxNDM4LDcgQEAgcHVibGljOgogdm9pZCBIZWFwOjp6b21iaWZ5RGVhZE9i
amVjdHMoKQogewogICAgIC8vIFN3ZWVwIG5vdyBiZWNhdXNlIGRlc3RydWN0b3JzIHdpbGwgY3Jh
c2ggb25jZSB3ZSdyZSB6b21iaWZpZWQuCi0gICAgbV9vYmplY3RTcGFjZS56b21iaWZ5U3dlZXAo
KTsKKyAgICBtX29iamVjdFNwYWNlLnN3ZWVwKCk7CiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0
ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hEZWFkQ2VsbChp
dGVyYXRpb25TY29wZSwgWm9tYmlmeSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsMTEgKzk3LDkgQEAgcHVibGljOgogICAgIC8vIG91
ciBzY2FuIHRvIHJ1biBmYXN0ZXIuIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3RpbWVD
aGVja1Jlc29sdXRpb24gPSAxNjsKIAotICAgIHN0YXRpYyBib29sIGlzTGl2ZShjb25zdCB2b2lk
Kik7CiAgICAgc3RhdGljIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBi
b29sIGlzTWFya2VkQ29uY3VycmVudGx5KGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgYm9vbCB0
ZXN0QW5kU2V0TWFya2VkKEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7Ci0gICAgc3RhdGljIHZv
aWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGNlbGxT
aXplKGNvbnN0IHZvaWQqKTsKIApAQCAtMzMzLDcgKzMzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpOwogICAgIHZvaWQgbm90aWZ5SW5jcmVtZW50
YWxTd2VlcGVyKCk7CiAgICAgdm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2Rl
QmxvY2tzKCk7Ci0gICAgdm9pZCByZXNldEFsbG9jYXRvcnMoKTsKKyAgICB2b2lkIHByZXBhcmVG
b3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKICAgICB2b2lkIGNsZWFyVW5t
YXJrZWRFeGVjdXRhYmxlcygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
SW5saW5lcy5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxNyArNzQsNiBAQCBpbmxpbmUg
SGVhcCogSGVhcDo6aGVhcChjb25zdCBKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGhlYXAodi5hc0Nl
bGwoKSk7CiB9CiAKLWlubGluZSBib29sIEhlYXA6OmlzTGl2ZShjb25zdCB2b2lkKiByYXdDZWxs
KQotewotICAgIEFTU0VSVCghbWF5QmVHQ1RocmVhZCgpKTsKLSAgICBIZWFwQ2VsbCogY2VsbCA9
IGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHJhd0NlbGwpOwotICAgIGlmIChjZWxsLT5pc0xhcmdl
QWxsb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNM
aXZlKCk7Ci0gICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAg
ICBibG9jay5mbGlwSWZOZWNlc3NhcnkoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKSk7Ci0gICAgcmV0dXJuIGJsb2NrLmhhbmRsZSgpLmlzTGl2ZUNlbGwoY2VsbCk7Ci19
Ci0KIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZChjb25zdCB2b2lkKiByYXdDZWxs
KQogewogICAgIEFTU0VSVCghbWF5QmVHQ1RocmVhZCgpKTsKQEAgLTkyLDkgKzgxLDggQEAgQUxX
QVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IAogICAgIGlmIChjZWxsLT5pc0xh
cmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCku
aXNNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygp
OwotICAgIGlmIChibG9jay5uZWVkc0ZsaXAoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgp
LnZlcnNpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gYmxvY2suaXNN
YXJrZWQoY2VsbCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKAorICAgICAgICBibG9jay52
bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKIH0KIAogQUxXQVlTX0lO
TElORSBib29sIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNvbnN0IHZvaWQqIHJhd0NlbGwp
CkBAIC0xMDMsMTAgKzkxLDggQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2VkQ29u
Y3VycgogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1cm4g
Y2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxv
Y2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGlmIChibG9jay5uZWVkc0ZsaXAoYmxvY2su
dm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQo
Y2VsbCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkQ29uY3VycmVudGx5KAorICAgICAgICBi
bG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKIH0KIAogQUxX
QVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQoSGVhcFZlcnNpb24gdmVyc2lv
biwgY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTExNSwyMiArMTAxLDEwIEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBIZWFwOjp0ZXN0QW5kU2V0TWFya2UKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9j
YXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLnRlc3RBbmRT
ZXRNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygp
OwotICAgIGJsb2NrLmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcodmVyc2lvbik7CisgICAg
YmxvY2suYWJvdXRUb01hcmsodmVyc2lvbik7CiAgICAgcmV0dXJuIGJsb2NrLnRlc3RBbmRTZXRN
YXJrZWQoY2VsbCk7CiB9CiAKLWlubGluZSB2b2lkIEhlYXA6OnNldE1hcmtlZChjb25zdCB2b2lk
KiByYXdDZWxsKQotewotICAgIEhlYXBDZWxsKiBjZWxsID0gYml0d2lzZV9jYXN0PEhlYXBDZWxs
Kj4ocmF3Q2VsbCk7Ci0gICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpIHsKLSAgICAg
ICAgY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuc2V0TWFya2VkKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAg
ICBibG9jay5mbGlwSWZOZWNlc3NhcnkoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKSk7Ci0gICAgYmxvY2suc2V0TWFya2VkKGNlbGwpOwotfQotCiBBTFdBWVNfSU5MSU5F
IHNpemVfdCBIZWFwOjpjZWxsU2l6ZShjb25zdCB2b2lkKiByYXdDZWxsKQogewogICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKS0+Y2VsbFNpemUoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHJldmlzaW9u
IDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRp
b25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIK
ICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkocmV2aXNpb24gMjA1ODU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkod29ya2luZyBjb3B5KQpAQCAt
NDYsOCArNDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gYmVmb3JlIGxpdmVuZXNzIGRhdGEgaXMgY2xl
YXJlZCB0byBiZSBhY2N1cmF0ZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHN0
YXRpYyB2b2lkIGZpbmRHQ09iamVjdFBvaW50ZXJzRm9yTWFya2luZygKLSAgICAgICAgSGVhcCYg
aGVhcCwgSGVhcFZlcnNpb24gaGVhcFZlcnNpb24sIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIsIHZv
aWQqIHBhc3NlZFBvaW50ZXIsCi0gICAgICAgIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgICAgIEhl
YXAmIGhlYXAsIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIsIHZvaWQqIHBhc3NlZFBvaW50ZXIsIGNv
bnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogICAgICAgICBjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2Nr
Kj4mIHNldCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5zZXQoKTsKICAgICAgICAgCkBA
IC04NCw3ICs4Myw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghZmlsdGVyLnJ1bGVPdXQo
Yml0d2lzZV9jYXN0PEJpdHM+KHByZXZpb3VzQ2FuZGlkYXRlKSkKICAgICAgICAgICAgICAgICAm
JiBzZXQuY29udGFpbnMocHJldmlvdXNDYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgJiYgcHJl
dmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgPT0gSGVhcENlbGw6OkF1eGlsaWFy
eSkgewotICAgICAgICAgICAgICAgIHByZXZpb3VzQ2FuZGlkYXRlLT5mbGlwSWZOZWNlc3Nhcnko
aGVhcFZlcnNpb24pOwogICAgICAgICAgICAgICAgIHByZXZpb3VzUG9pbnRlciA9IHN0YXRpY19j
YXN0PGNoYXIqPihwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEFsaWduKHByZXZpb3Vz
UG9pbnRlcikpOwogICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxl
KCkuaXNMaXZlQ2VsbChwcmV2aW91c1BvaW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBmdW5j
KHByZXZpb3VzUG9pbnRlcik7CkBAIC05OSw4ICs5Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCFzZXQuY29udGFpbnMoY2FuZGlkYXRlKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Ci0gICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLQogICAg
ICAgICBhdXRvIHRyeVBvaW50ZXIgPSBbJl0gKHZvaWQqIHBvaW50ZXIpIHsKICAgICAgICAgICAg
IGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwocG9pbnRlcikpCiAgICAgICAgICAg
ICAgICAgZnVuYyhwb2ludGVyKTsKQEAgLTE3MCw3ICsxNjYsNiBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgIT0gSGVhcENlbGw6OkpTQ2VsbCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGNhbmRpZGF0ZS0+
ZmxpcElmTmVjZXNzYXJ5KCk7CiAgICAgICAgIGlmICghY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xp
dmVDZWxsKHBvaW50ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkocmV2aXNp
b24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25T
Y29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgor
I2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIu
Y3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNy
ZW1lbnRhbFN3ZWVwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBAIHN0YXRp
YyBjb25zdCBkb3VibGUgc3dlZXBUaW1lTXVsdGlwbGllciAKICNpZiBVU0UoQ0YpCiBJbmNyZW1l
bnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYg
cnVuTG9vcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpLCBydW5Mb29wKQotICAgICwgbV9i
bG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKIHsKIH0KIApAQCAtNjYsNyArNjUs
NiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogI2VsaWYgUExBVEZP
Uk0oRUZMKQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVh
cCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhl
YXAtPm1fYmxvY2tTbmFwc2hvdCkKIHsKIH0KIApAQCAtODYsNyArODQsNiBAQCB2b2lkIEluY3Jl
bWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogI2VsaWYgVVNFKEdMSUIpCiBJbmNyZW1lbnRh
bFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwKQogICAgIDogSGVhcFRpbWVy
KGhlYXAtPnZtKCkpCi0gICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90
KQogewogfQogCkBAIC0xMjEsMTkgKzExOCwyMCBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6
ZG9Td2VlcChkb3VibGUgCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Jsb2Nrc1Rv
U3dlZXAuY2xlYXIoKTsKICAgICBjYW5jZWxUaW1lcigpOwogfQogCiBib29sIEluY3JlbWVudGFs
U3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soKQogewotICAgIHdoaWxlICghbV9ibG9ja3NUb1N3ZWVw
LmlzRW1wdHkoKSkgewotICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYmxv
Y2tzVG9Td2VlcC50YWtlTGFzdCgpOwotICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dl
ZXAoZmFsc2UpOwotCi0gICAgICAgIGlmICghYmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBudWxs
cHRyOworICAgIAorICAgIGZvciAoOyBtX2N1cnJlbnRBbGxvY2F0b3I7IG1fY3VycmVudEFsbG9j
YXRvciA9IG1fY3VycmVudEFsbG9jYXRvci0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGJs
b2NrID0gbV9jdXJyZW50QWxsb2NhdG9yLT5maW5kQmxvY2tUb1N3ZWVwKCk7CisgICAgICAgIGlm
IChibG9jaykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoYmxvY2sp
IHsKICAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKG1fdm0tPmhlYXApOwogICAgICAg
ICBibG9jay0+c3dlZXAoKTsKICAgICAgICAgbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZyZWVP
clNocmlua0Jsb2NrKGJsb2NrKTsKQEAgLTE0NiwxMSArMTQ0LDEyIEBAIGJvb2wgSW5jcmVtZW50
YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzdGFy
dFN3ZWVwaW5nKCkKIHsKICAgICBzY2hlZHVsZVRpbWVyKCk7CisgICAgbV9jdXJyZW50QWxsb2Nh
dG9yID0gbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZpcnN0QWxsb2NhdG9yKCk7CiB9CiAKIHZv
aWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dlZXBpbmcoKQogewotICAgIG1fYmxv
Y2tzVG9Td2VlcC5jbGVhcigpOworICAgIG1fY3VycmVudEFsbG9jYXRvciA9IG51bGxwdHI7CiAg
ICAgaWYgKG1fdm0pCiAgICAgICAgIGNhbmNlbFRpbWVyKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24gMjA1
ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMiBAQAogI2RlZmluZSBJbmNyZW1lbnRhbFN3
ZWVwZXJfaAogCiAjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCi0jaW5jbHVkZSAiTWFya2VkQmxvY2su
aCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBI
ZWFwOwotY2xhc3MgTWFya2VkQmxvY2s7CitjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAKIGNsYXNz
IEluY3JlbWVudGFsU3dlZXBlciA6IHB1YmxpYyBIZWFwVGltZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1
bGVUaW1lcigpOwogICAgIHZvaWQgY2FuY2VsVGltZXIoKTsKICAgICAKLSAgICBWZWN0b3I8TWFy
a2VkQmxvY2s6OkhhbmRsZSo+JiBtX2Jsb2Nrc1RvU3dlZXA7CisgICAgTWFya2VkQWxsb2NhdG9y
KiBtX2N1cnJlbnRBbGxvY2F0b3I7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNzIsNyArNzIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFy
a2VkKCkgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OyB9CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKSB7IHJldHVybiBpc01hcmtl
ZCgpIHx8IGlzTmV3bHlBbGxvY2F0ZWQoKTsgfQogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxs
b2NhdGVkKEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7IH0K
LSAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZER1cmluZ1dlYWtWaXNpdGluZyhIZWFw
VmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsg
fQorICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBIZWFwQ2Vs
bCopIHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOyB9CisgICAgYm9vbCBpc01h
cmtlZE9yTmV3bHlBbGxvY2F0ZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24sIEhlYXBDZWxsKikg
eyByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7IH0KICAgICBib29sIGlzTGl2ZSgp
IHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOyB9CiAgICAgCiAgICAgYm9vbCBo
YXNWYWxpZENlbGwoKSBjb25zdCB7IHJldHVybiBtX2hhc1ZhbGlkQ2VsbDsgfQpAQCAtMTA2LDgg
KzEwNyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAgICAgCi0gICAgdm9p
ZCBmbGlwSWZOZWNlc3NhcnkodWludDY0X3QpIHsgfQotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5
RHVyaW5nTWFya2luZyh1aW50NjRfdCkgeyB9CisgICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVy
c2lvbikgeyB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIHRlc3RBbmRTZXRNYXJrZWQo
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxs
b2NhdG9yLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KQEAgLTM5LDcgKzQwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBNYXJrZWRBbGxv
Y2F0b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoZWFwLCBNYXJrZWRTcGFjZSogbWFya2VkU3Bh
Y2UsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRl
cykKICAgICA6IG1fY3VycmVudEJsb2NrKDApCiAgICAgLCBtX2xhc3RBY3RpdmVCbG9jaygwKQot
ICAgICwgbV9uZXh0QmxvY2tUb1N3ZWVwKG51bGxwdHIpCiAgICAgLCBtX2NlbGxTaXplKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjZWxsU2l6ZSkpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRl
cykKICAgICAsIG1faGVhcChoZWFwKQpAQCAtNTAsMTEgKzUwLDEzIEBAIE1hcmtlZEFsbG9jYXRv
cjo6TWFya2VkQWxsb2NhdG9yKEhlYXAqIGgKIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2Vk
T3V0KGRvdWJsZSBkZWFkbGluZSkKIHsKICAgICB1bnNpZ25lZCBpdGVyc1NpbmNlTGFzdFRpbWVD
aGVjayA9IDA7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2NrTGlzdC5i
ZWdpbigpOwotICAgIHdoaWxlIChibG9jaykgewotICAgICAgICBibG9jayA9IGZpbHRlck5leHRC
bG9jayhibG9jay0+bmV4dCgpKTsKLSAgICAgICAgaWYgKGJsb2NrKQotICAgICAgICAgICAgYmxv
Y2stPmZsaXBJZk5lY2Vzc2FyeSgpOyAvLyBGb3JjZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBv
ZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50aWMgZWZmZWN0LgorICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtX2Jsb2Nrcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRleF07CisgICAgICAgIGlm
IChibG9jaykgeworICAgICAgICAgICAgLy8gRm9yY2VzIHVzIHRvIHRvdWNoIHRoZSBtZW1vcnkg
b2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVjdC4KKyAgICAgICAgICAgIGlm
IChibG9jay0+bmVlZHNGbGlwKCkpCisgICAgICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkucmVz
ZXRWZXJzaW9uKCk7CisgICAgICAgIH0KICAgICAgICAgKytpdGVyc1NpbmNlTGFzdFRpbWVDaGVj
azsKICAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID49IEhlYXA6OnNfdGltZUNo
ZWNrUmVzb2x1dGlvbikgewogICAgICAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAgLTY2LDg0ICs2OCw3NyBAQCBib29sIE1h
cmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3VibGUgCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KQotewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7IC8vIFRoaXMgd2lsbCBiZSBjYWxs
ZWQgaW4gcGFyYWxsZWwgZHVyaW5nIEdDLgotICAgIGlmIChibG9jayA9PSBtX2N1cnJlbnRCbG9j
aykgewotICAgICAgICAvLyBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgbXV0YXRvciBpcyBydW5uaW5n
LiBXZSBmaW5pc2hlZCBhIGZ1bGwgR0MgYW5kIG1hcmtlZCB0b28gZmV3IHRoaW5ncwotICAgICAg
ICAvLyB0byByZXRpcmUuIFRoZW4gd2Ugc3RhcnRlZCBhbGxvY2F0aW5nIGluIHRoaXMgYmxvY2su
IFRoZW4gYSBiYXJyaWVyIHJhbiwgd2hpY2ggbWFya2VkIGFuCi0gICAgICAgIC8vIG9iamVjdCBp
biB0aGlzIGJsb2NrLCB3aGljaCBwdXQgaXQgb3ZlciB0aGUgcmV0aXJlbWVudCB0aHJlc2hvbGQu
IEl0J3MgT0sgdG8gc2ltcGx5IGRvCi0gICAgICAgIC8vIG5vdGhpbmcgaW4gdGhhdCBjYXNlLgot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChibG9jayA9PSBtX2xhc3RBY3RpdmVCbG9j
aykgewotICAgICAgICAvLyBUaGlzIGNhbiBlYXNpbHkgaGFwcGVuIGR1cmluZyBtYXJraW5nLiBJ
dCB3b3VsZCBiZSBlYXN5IHRvIGhhbmRsZSB0aGlzIGNhc2UsIGJ1dCBpdCdzCi0gICAgICAgIC8v
IGp1c3QgYXMgZWFzeSB0byBpZ25vcmUgaXQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
UkVMRUFTRV9BU1NFUlQoYmxvY2stPmlzT25MaXN0KCkpOwotICAgIGlmIChibG9jayA9PSBtX25l
eHRCbG9ja1RvU3dlZXApCi0gICAgICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IGZpbHRlck5leHRC
bG9jayhibG9jay0+bmV4dCgpKTsKLSAgICBibG9jay0+cmVtb3ZlKCk7Ci0gICAgbV9yZXRpcmVk
QmxvY2tzLnB1c2goYmxvY2spOwotfQotCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxv
Y2F0b3I6OmZpbHRlck5leHRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK01hcmtl
ZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmluZEVtcHR5QmxvY2soKQogewotICAg
IGlmIChibG9jayA9PSBtX2Jsb2NrTGlzdC5lbmQoKSkKKyAgICBtX2VtcHR5Q3Vyc29yID0gbV9l
bXB0eS5maW5kQml0KG1fZW1wdHlDdXJzb3IsIHRydWUpOworICAgIGlmIChtX2VtcHR5Q3Vyc29y
ID49IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IGJsb2NrOwotfQotCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEJsb2NrVG9Td2VlcChN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKLXsKLSAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBm
aWx0ZXJOZXh0QmxvY2soYmxvY2spOworICAgIHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5Q3Vyc29y
XTsKIH0KIAogdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0
aW5nSW1wbCgpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOwogICAgIAotICAgIGlmIChtX2N1cnJlbnRCbG9jaykgewotICAgICAgICBBU1NFUlQobV9j
dXJyZW50QmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVwKTsKKyAgICBpZiAobV9jdXJyZW50Qmxv
Y2spCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAg
ICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICB9CiAg
ICAgCiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVCht
X25leHRCbG9ja1RvU3dlZXAgIT0gbV9ibG9ja0xpc3QuZW5kKCkpOwotCi0gICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqJiBibG9jayA9
IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICBuZXh0
ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgIC8vIEl0IHdvdWxk
IGJlIHN1cGVyIHdlaXJkIGlmIHRoZSBibG9ja3Mgd2UgYXJlIHN3ZWVwaW5nIGhhdmUgYW55dGhp
bmcgYWxsb2NhdGVkIGR1cmluZyB0aGlzCi0gICAgICAgIC8vIGN5Y2xlLgotICAgICAgICBBU1NF
UlQoIWJsb2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgCi0gICAgICAgIEZy
ZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVw
VG9GcmVlTGlzdCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZv
ciAoOzspIHsKKyAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0gbV9jYW5BbGxvY2F0ZS5maW5k
Qml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGlmIChtX2FsbG9jYXRpb25D
dXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAot
ICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24gYSBjb21wbGV0ZS1mdWxsIGJs
b2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0Ci0gICAgICAgIC8vIHRoYXQg
YWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8gaXQgc29tZXRpbWVzLgotICAg
ICAgICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOwotICAgICAgICAgICAgYmxvY2stPnVuc3dlZXBX
aXRoTm9OZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc01hcmtl
ZCgpKTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQorICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKG1fYWxsb2NhdGlvbkN1cnNvciwg
ZmFsc2UpOwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7Ci0gICAgICAgIHNldEZy
ZWVMaXN0KGZyZWVMaXN0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICh2b2lkKiByZXN1
bHQgPSB0cnlBbGxvY2F0ZUluKG1fYmxvY2tzW21fYWxsb2NhdGlvbkN1cnNvcl0pKQorICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZyZWVMaXN0KSB7
Ci0gICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg
KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZmluZEVtcHR5QmxvY2soKSkKKyAgICAgICAg
cmV0dXJuIGFsbG9jYXRlSW4oYmxvY2spOworICAgIAorICAgIGlmIChNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jayA9IG1fbWFya2VkU3BhY2UtPmZpbmRFbXB0eUJsb2NrKCkpIHsKKyAgICAgICAg
YmxvY2stPnN3ZWVwKCk7CisgICAgICAgIGJsb2NrLT5yZW1vdmVGcm9tQWxsb2NhdG9yKCk7Cisg
ICAgICAgIGFkZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlSW4oYmxvY2sp
OwogICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCogTWFya2VkQWxs
b2NhdG9yOjphbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIHZv
aWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4oYmxvY2spOworICAgIFJFTEVBU0VfQVNTRVJUKHJl
c3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAordm9pZCogTWFya2VkQWxsb2NhdG9yOjp0
cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIEFTU0VSVChi
bG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAg
QVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIEZyZWVMaXN0IGZyZWVM
aXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7
CisgICAgCisgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGVseSBm
dWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0CisgICAgLy8gdGhh
dCBhbGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCisg
ICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7CisgICAgICAgIEFTU0VSVChi
bG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5
QWxsb2NhdGVkKCk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAg
ICAgICAgQVNTRVJUKCFpc0VtcHR5KGJsb2NrKSk7CisgICAgICAgIEFTU0VSVCghaXNDYW5BbGxv
Y2F0ZShibG9jaykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCisgICAg
bV9jdXJyZW50QmxvY2sgPSBibG9jazsKKyAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7CisgICAg
CiAgICAgdm9pZCogcmVzdWx0OwogICAgIGlmIChtX2ZyZWVMaXN0LnJlbWFpbmluZykgewogICAg
ICAgICB1bnNpZ25lZCBjZWxsU2l6ZSA9IG1fY2VsbFNpemU7CkBAIC0xNTUsNiArMTUwLDcgQEAg
dm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQogICAgICAgICByZXN1bHQg
PSBoZWFkOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHNldElzRWRl
bihtX2N1cnJlbnRCbG9jaywgdHJ1ZSk7CiAgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWxsb2NhdGVJ
bkJsb2NrKG1fY3VycmVudEJsb2NrKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjI3LDgg
KzIyMyw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBhZGRCbG9jayhibG9jayk7Ci0gICAg
ICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKKyAgICBy
ZXN1bHQgPSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBBU1NFUlQocmVzdWx0KTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtMjQ5LDM3ICsyNDQsNzIgQEAgc2l6ZV90IE1hcmtlZEFsbG9jYXRv
cjo6YmxvY2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9y
Ojp0cnlBbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVh
cCwgdGhpcywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAgICAKKyAgICBNYXJrZWRCbG9j
azo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIG1fY2Vs
bFNpemUsIG1fYXR0cmlidXRlcyk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7Cisg
ICAgCisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJs
b2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50
QmxvY2spOwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAg
IGlmIChtX2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9i
bG9ja3Muc2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNh
cGFjaXR5KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChibG9jayk7CisgICAgICAgIGlmICht
X2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9sZENhcGFjaXR5KSB7CisgICAgICAgICAgICBmb3JFYWNo
Qml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFj
aXR5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNT
RVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0
VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Js
b2Nrcy5jYXBhY2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7Cisg
ICAgICAgIEFTU0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgbV9ibG9ja3NbaW5kZXhd
ID0gYmxvY2s7CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsm
XSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICBBU1NFUlQoIXZlY3Rvcltp
bmRleF0pOworICAgICAgICB9KTsKKworICAgIGJsb2NrLT5kaWRBZGRUb0FsbG9jYXRvcih0aGlz
LCBpbmRleCk7CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsKLSAgICBzZXRO
ZXh0QmxvY2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRCbG9jayhi
bG9jayk7CisgICAgc2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKKyAgICBzZXRJc0VtcHR5KGluZGV4
LCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlbW92ZUJsb2NrKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBibG9jaykg
ewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZpbHRlck5leHRCbG9jayhtX2N1cnJlbnRCbG9j
ay0+bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0gICAgfQotICAg
IGlmIChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxvY2spCi0gICAgICAgIHNldE5leHRCbG9ja1Rv
U3dlZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOworICAgIEFTU0VSVChibG9jay0+YWxs
b2NhdG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fYmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9
PSBibG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJlbW92ZUJsb2NrKCk7Ci0gICAgbV9ibG9ja0xp
c3QucmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPSBudWxscHRy
OworICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2stPmluZGV4KCkpOworICAgIAor
ICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9y
KSB7CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCldID0gZmFsc2U7CisgICAgICAg
IH0pOworICAgIAorICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiB9CiAKIHZv
aWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+
b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKQotICAgICAgICBtX2Jsb2Nr
TGlzdC50YWtlRnJvbShtX3JldGlyZWRCbG9ja3MpOwotCiAgICAgQVNTRVJUKCFtX2xhc3RBY3Rp
dmVCbG9jayk7CiAgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykgewogICAgICAgICBBU1NFUlQoIW1f
ZnJlZUxpc3QpOwpAQCAtMjkyLDI5ICszMjIsMjUgQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN0
b3BBbGxvY2F0aW5nKCkKICAgICBtX2ZyZWVMaXN0ID0gRnJlZUxpc3QoKTsKIH0KIAotdm9pZCBN
YXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpwcmVwYXJlRm9y
QWxsb2NhdGlvbigpCiB7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotICAgIG1fY3VycmVu
dEJsb2NrID0gMDsKKyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxwdHI7CisgICAgbV9jdXJy
ZW50QmxvY2sgPSBudWxscHRyOwogICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwogCi0gICAg
c2V0TmV4dEJsb2NrVG9Td2VlcChtX2Jsb2NrTGlzdC5iZWdpbigpKTsKKyAgICBtX2FsbG9jYXRp
b25DdXJzb3IgPSAwOworICAgIG1fZW1wdHlDdXJzb3IgPSAwOworICAgIG1fc25hcHNob3RDdXJz
b3IgPSAwOworICAgIAorICAgIG1fZWRlbi5jbGVhckFsbCgpOwogCiAgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnVzZUltbW9ydGFsT2JqZWN0cygpKSkgewotICAgICAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBuZXh0OwotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqJiBibG9jayA9
IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICAgICAg
bmV4dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAgICAgICAgRnJl
ZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBU
b0ZyZWVMaXN0KTsKLSAgICAgICAgICAgIGJsb2NrLT56YXAoZnJlZUxpc3QpOwotICAgICAgICAg
ICAgcmV0aXJlKGJsb2NrKTsKLSAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogVGhpbmdzPwog
ICAgIH0KIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkK
IHsKLSAgICBtX2Jsb2NrTGlzdC50YWtlRnJvbShtX3JldGlyZWRCbG9ja3MpOwogICAgIGZvckVh
Y2hCbG9jaygKICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewogICAg
ICAgICAgICAgYmxvY2stPmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CkBAIC0zMjYsNCArMzUyLDEw
MyBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0RnJlZUxpc3QoY29uc3QgCiAgICAgbV9mcmVl
TGlzdCA9IGZyZWVMaXN0OwogfQogCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2Nh
dGluZygpCit7CisgICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9jaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5yZXN1bWVBbGxvY2F0aW5nKCk7
CisgICAgbV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVCbG9jazsKKyAgICBtX2xhc3RBY3Rp
dmVCbG9jayA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpiZWdpbk1hcmtp
bmdGb3JGdWxsQ29sbGVjdGlvbigpCit7CisgICAgLy8gTWFyayBiaXRzIGFyZSBzdGlja3kgYW5k
IHNvIGlzIG91ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25seSBjbGVhciB0aGVzZSBkdXJp
bmcgZnVsbAorICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ugc3Vydml2ZWQgdGhlIGxhc3Qg
Y29sbGVjdGlvbiB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9uZSBzbyBsb25nCisgICAgLy8g
YXMgdGhlIG5leHQgb25lIGlzIGVkZW4uCisgICAgbV9tYXJraW5nTm90RW1wdHkuY2xlYXJBbGwo
KTsKKyAgICBtX21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7Cit9CisKK3ZvaWQgTWFya2VkQWxs
b2NhdG9yOjplbmRNYXJraW5nKCkKK3sKKyAgICBtX2FsbG9jYXRlZC5jbGVhckFsbCgpOworICAg
IAorICAgIC8vIEl0J3Mgc3VycHJpc2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8gY29tcHJlaGVuZCwg
YnV0IHRoZSBlbmQtb2YtbWFya2luZyBmbGlwIGRvZXMgbm90IG5lZWQgdG8KKyAgICAvLyBrbm93
IHdoYXQga2luZCBvZiBjb2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3dsZWRnZSBpcyBhbHJlYWR5
IGVuY29kZWQgaW4gdGhlIG1fbWFya2luZ1hZWgorICAgIC8vIHZlY3RvcnMuCisgICAgCisgICAg
aWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgeworICAgICAgICAvLyBJZiBibG9ja3MgbmVlZCBkZXN0
cnVjdGlvbiB0aGVuIG5vdGhpbmcgaXMgZW1wdHkhIFRoaXMgaXMgYSBjb3JyZWN0IGFzc2VydGlv
biBidXQgbWF5CisgICAgICAgIC8vIGJlY29tZSB3cm9uZyBvbmNlIHdlIGdvIGZ1bGwgY29uY3Vy
cmVudDogd2hlbiB3ZSBjcmVhdGUgYSBuZXcgYmxvY2ssIGl0IHdpbGwgZmxpY2tlcgorICAgICAg
ICAvLyBpbnRvIHRoZSBlbXB0eSBzZXQgZm9yIGEgdGlueSBtb21lbnQuIE9uIHRoZSBvdGhlciBo
YW5kLCB0aGlzIGNvZGUgaXMgbGlrZWx5IHRvIGJlIHJ1bgorICAgICAgICAvLyBpbiBzdG9wVGhl
V29ybGQuCisgICAgICAgIEFTU0VSVChtX2VtcHR5LmlzRW1wdHkoKSk7CisgICAgICAgIG1fY2Fu
QWxsb2NhdGUgPSBtX2xpdmUgJiB+bV9tYXJraW5nUmV0aXJlZDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBtX2VtcHR5ID0gbV9saXZlICYgfm1fbWFya2luZ05vdEVtcHR5Owor
ICAgIG1fY2FuQWxsb2NhdGUgPSBtX2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtp
bmdSZXRpcmVkOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RGb3JFZGVuQ29s
bGVjdGlvbigpCit7CisgICAgbV9zbmFwc2hvdCB8PSBtX2VkZW47Cit9CisKK3ZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICBtX3NuYXBzaG90
ID0gbV9saXZlOworfQorCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZp
bmRCbG9ja1RvU3dlZXAoKQoreworICAgIG1fc25hcHNob3RDdXJzb3IgPSBtX3NuYXBzaG90LmZp
bmRCaXQobV9zbmFwc2hvdEN1cnNvciwgdHJ1ZSk7CisgICAgaWYgKG1fc25hcHNob3RDdXJzb3Ig
Pj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
bV9ibG9ja3NbbV9zbmFwc2hvdEN1cnNvcl07Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpz
d2VlcCgpCit7CisgICAgbV9zbmFwc2hvdC5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNp
emVfdCBpbmRleCkgeworICAgICAgICAgICAgbV9ibG9ja3NbaW5kZXhdLT5zd2VlcCgpOworICAg
ICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNocmluaygpCit7CisgICAgbV9l
bXB0eS5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAg
ICAgICAgbV9tYXJrZWRTcGFjZS0+ZnJlZUJsb2NrKG1fYmxvY2tzW2luZGV4XSk7CisgICAgICAg
IH0pOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YXNzZXJ0U25hcHNob3RFbXB0eSgpCit7
CisgICAgQVNTRVJUKG1fc25hcHNob3QuaXNFbXB0eSgpKTsKK30KKwordm9pZCBNYXJrZWRBbGxv
Y2F0b3I6OmR1bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgdW5zaWduZWQgbWF4TmFt
ZUxlbmd0aCA9IDA7CisgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBbJl0g
KEZhc3RCaXRWZWN0b3ImLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdHJsZW4obmFtZSk7CisgICAgICAgICAgICBtYXhOYW1lTGVuZ3RoID0gc3Rk
OjptYXgobWF4TmFtZUxlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgZm9y
RWFjaEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
ciwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgIiwgbmFt
ZSwgIjogIik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXhOYW1lTGVuZ3RoIC0g
c3RybGVuKG5hbWUpOyBpLS07KQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIpOworICAg
ICAgICAgICAgb3V0LnByaW50KHZlY3RvciwgIlxuIik7CisgICAgICAgIH0pOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQWxsb2NhdG9yLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw5IEBA
CiAjaW5jbHVkZSAiQWxsb2NhdG9yQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkZyZWVMaXN0Lmgi
CiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNyw2ICszOSwxMzQgQEAgY2xhc3MgSGVh
cDsKIGNsYXNzIE1hcmtlZFNwYWNlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisj
ZGVmaW5lIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8o
bGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBvZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwg
YmxvY2tzLiAqL1wKKyAgICBtYWNybyhlbXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBvYmplY3RzIGFuZCBub3RoaW5nIHRvIGRlc3Ryb3kuICov
IFwKKyAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGxibG9j
a3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9j
YXRlLCBDYW5BbGxvY2F0ZSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY2FuIGJlIGFs
bG9jYXRlZCBpbiByaWdodCBub3cuICovIFwKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBUaGUg
c2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0IEdD
LiAqL1wKKyAgICBtYWNybyhzbmFwc2hvdCwgU25hcHNob3QpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGNvdWxkIGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wK
KyAgICBcCisgICAgLyogVGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAqL1wKKyAg
ICBtYWNybyhtYXJraW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgYXJlIG5vdCBlbXB0eS4gKi8gXAorICAgIG1hY3JvKG1hcmtpbmdSZXRp
cmVkLCBNYXJraW5nUmV0aXJlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIHJl
dGlyZWQuICovCisKKy8vIE5vdGUgdGhhdCB0aGlzIGNvbGxlY3RvciBzdXBwb3J0cyBvdmVybGFw
cGluZyBhbGxvY2F0b3Igc3RhdGUgd2l0aCBtYXJraW5nIHN0YXRlLCBzaW5jZSBpbiBhCisvLyBj
b25jdXJyZW50IGNvbGxlY3RvciB5b3UgYWxsb3cgYWxsb2NhdGlvbiB3aGlsZSBtYXJraW5nIGlz
IHJ1bm5pbmcuIFNvIGl0J3MgYmVzdCB0byB2aXN1YWxpemUgYQorLy8gZnVsbCBtdXRhYmxlLT5l
ZGVuIGNvbGxlY3QtPm11dGF0ZS0+ZnVsbCBjb2xsZWN0IGN5Y2xlIGFuZCBzZWUgaG93IHRoZSBi
aXRzIGFib3ZlIGdldCBhZmZlY3RlZC4KKy8vIFRoZSBleGFtcGxlIGJlbG93IHRyaWVzIHRvIGJl
IGV4aGF1c3RpdmUgYWJvdXQgd2hhdCBoYXBwZW5zIHRvIHRoZSBiaXRzLCBidXQgb21pdHMgYSBs
b3Qgb2YKKy8vIHRoaW5ncyB0aGF0IGhhcHBlbiB0byBvdGhlciBzdGF0ZS4KKy8vCisvLyBDcmVh
dGUgYWxsb2NhdG9yCisvLyAtIGFsbCBiaXRzIGFyZSBlbXB0eQorLy8gU3RhcnQgYWxsb2NhdGlu
ZyBpbiBzb21lIGJsb2NrCisvLyAtIGFsbG9jYXRlIHRoZSBibG9jayBhbmQgc2V0IHRoZSBsaXZl
IGJpdC4KKy8vIC0gdGhlIGVtcHR5IGJpdCBmb3IgdGhlIGJsb2NrIGZsaWNrZXJzIG9uIGFuZCB0
aGVuIGdldHMgaW1tZWRpYXRlbHkgY2xlYXJlZCBieSBzd2VlcGluZy4KKy8vIC0gc2V0IHRoZSBl
ZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIGluIHRoYXQgYmxvY2sKKy8vIC0gc2V0IHRo
ZSBhbGxvY2F0ZWQgYml0LgorLy8gRG8gdGhhdCB0byBhIGxvdCBvZiBibG9ja3MgYW5kIHRoZW4g
c3RhcnQgYW4gZWRlbiBjb2xsZWN0aW9uLgorLy8gLSBiZWdpbk1hcmtpbmcoKSBoYXMgbm90aGlu
ZyB0byBkby4KKy8vIC0gYnkgZGVmYXVsdCB3ZSBoYXZlIGNsZWFyIG1hcmtpbmdOb3RFbXB0eS9t
YXJraW5nUmV0aXJlZCBiaXRzLgorLy8gLSBtYXJraW5nIGJ1aWxkcyB1cCBtYXJraW5nTm90RW1w
dHkvbWFya2luZ1JldGlyZWQgYml0cy4KKy8vIFdlIGRvIGVuZE1hcmtpbmcoKQorLy8gLSBjbGVh
ciBhbGwgYWxsb2NhdGVkIGJpdHMuCisvLyAtIGZvciBkZXN0cnVjdG9yIGJsb2NrczogY2FuQWxs
b2NhdGUgPSBsaXZlICYgfm1hcmtpbmdSZXRpcmVkCisvLyAtIGZvciBub24tZGVzdHJ1Y3RvciBi
bG9ja3M6CisvLyAgICAgICBlbXB0eSA9IGxpdmUgJiB+bWFya2luZ05vdEVtcHR5CisvLyAgICAg
ICBjYW5BbGxvY2F0ZSA9IGxpdmUgJiBtYXJraW5nTm90RW1wdHkgJiB+bWFya2luZ1JldGlyZWQK
Ky8vIFNuYXBzaG90dGluZy4KKy8vIC0gc25hcHNob3QgfD0gZWRlbgorLy8gUHJlcGFyZSBmb3Ig
YWxsb2NhdGlvbi4KKy8vIC0gY2xlYXIgZWRlbgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLyBB
bGxvY2F0ZSBpbiBzb21lIGJsb2NrIHRoYXQgaGFkIHNvbWUgZnJlZSBhbmQgc29tZSBsaXZlIG9i
amVjdHMuCisvLyAtIGNsZWFyIHRoZSBjYW5BbGxvY2F0ZSBiaXQKKy8vIC0gY2xlYXIgdGhlIHNu
YXBzaG90IGJpdAorLy8gLSBzZXQgdGhlIGVkZW4gYml0CisvLyBGaW5pc2ggYWxsb2NhdGluZyAo
c2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3
YXMgY29tcGxldGVseSBlbXB0eS4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8gLSBjbGVh
ciB0aGUgc25hcHNob3QgYml0CisvLyAtIHNldCB0aGUgZWRlbiBiaXQuCisvLyBGaW5pc2ggYWxs
b2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxv
Y2sgdGhhdCB3YXMgY29tcGxldGVseSBlbXB0eSBpbiBhbm90aGVyIGFsbG9jYXRvci4KKy8vIC0g
Y2xlYXIgdGhlIGVtcHR5IGJpdAorLy8gLSBjbGVhciBhbGwgYml0cyBpbiB0aGF0IGFsbG9jYXRv
cgorLy8gLSBzZXQgdGhlIGxpdmUgYml0IGluIGFub3RoZXIgYWxsb2NhdG9yIGFuZCB0aGUgZW1w
dHkgYml0LgorLy8gLSBjbGVhciB0aGUgZW1wdHksIHNuYXBzaG90IGJpdHMuCisvLyAtIHNldCB0
aGUgZWRlbiBiaXQuCisvLyBGaW5pc2ggYWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0ZWQgYml0
KS4KKy8vIFN0YXJ0IGEgZnVsbCBjb2xsZWN0aW9uLgorLy8gLSBiZWdpbk1hcmtpbmcoKSBjbGVh
cnMgbWFya2luZ05vdEVtcHR5LCBtYXJraW5nUmV0aXJlZAorLy8gLSB0aGUgaGVhcCB2ZXJzaW9u
IGlzIGluY3JlbWVudGVkCisvLyAtIG1hcmtpbmcgcmVidWlsZHMgbWFya2luZ05vdEVtcHR5L21h
cmtpbmdyZXRpcmVkIGJpdHMuCisvLyBXZSBkbyBlbmRNYXJraW5nKCkKKy8vIC0gY2xlYXIgYWxs
IGFsbG9jYXRlZCBiaXRzLgorLy8gLSBzZXQgY2FuQWxsb2NhdGUvZW1wdHkgdGhlIHNhbWUgd2F5
IGFzIGluIGVkZW4gY29sbGVjdGlvbi4KKy8vIFNuYXBzaG90dGluZy4KKy8vIC0gc25hcHNob3Qg
fD0gbGl2ZQorLy8gcHJlcGFyZSBmb3IgYWxsb2NhdGlvbi4KKy8vIC0gY2xlYXIgZWRlbi4KKy8v
IEZpbmlzaCBjb2xsZWN0aW9uLgorLy8KKy8vIE5vdGljZSBob3cgaW4gdGhpcyBzY2hlbWUsIHRo
ZSBlbXB0eS9jYW5BbGxvY2F0ZSBzdGF0ZSBzdGF5cyBzZXBhcmF0ZSBmcm9tIHRoZSBtYXJraW5n
Tm90RW1wdHkvCisvLyBtYXJraW5nUmV0aXJlZCBzdGF0ZS4gVGhpcyBpcyBvbmUgc3RlcCB0b3dh
cmRzIGhhdmluZyBzZXBhcmF0ZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZS4KKy8vCisv
LyBBZnRlciB0aGlzLCB3ZSBqdXN0IG5lZWQgdG8gYW5zd2VyIHRoZSBxdWVzdGlvbjogd2hhdCBk
b2VzIGFuIG9iamVjdCBhbGxvY2F0ZWQgZHVyaW5nIGVkZW4gR0MKKy8vIGxvb2sgbGlrZSB0byB0
aGUgR0M/CisvLworLy8gSSd2ZSBjb21lIHVwIHdpdGggdHdvIGNvbXBlbGxpbmcgYW5zd2Vycy4K
Ky8vCisvLyAxLiBBTExPQ0FURSBCTEFDSworLy8KKy8vIEkgdGhpbmsgdGhhdCB0aGUgZWFzaWVz
dCBhbnN3ZXIgaXMgdG8gYWxsb2NhdGUgdGhlIG9iamVjdCB3aGl0ZSBhbmQgdGhlbgorLy8gaW1t
ZWRpYXRlbHkgbWFyayBpdC4gVGhpcyBtYWtlcyB0aGUgb2JqZWN0IGJlaGF2ZSBhcyBpZiBpdCB3
YXMgYWxsb2NhdGVkIGp1c3QgYmVmb3JlIHRoZSBzdGFydAorLy8gb2YgR0MgYW5kIGl0IHdhcyBv
biB0aGUgc3RhY2sgYXQgdGhlIGJlZ2lubmluZyBvZiBHQy4gV2Ugd291bGRuJ3QgaGF2ZSB0byBk
byBhbnl0aGluZyBkaWZmZXJlbnQKKy8vIHdpdGggdGhlIHZhcmlvdXMgYmxvY2sgYml0cyB3aGVu
IGFsbG9jYXRpbmcgZHVyaW5nIEdDOiB3ZSBjb3VsZCBzdGlsbCBzZXQgZWRlbiBhbmQgYWxsb2Nh
dGVkCisvLyBzaW5jZSB0aGV5IHdpbGwgYmUgY2xlYXJlZCBhbnl3YXkuCisvLworLy8gQnV0IHRo
aXMgbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdvbid0IGJlIGVsaWdpYmxlIGZvciBmcmVlaW5nIHVu
dGlsIHRoZSBuZXh0IGZ1bGwgR0MuIElkZWFsbHkKKy8vIHdlJ2QgbWFrZSB0aGUgb2JqZWN0IGlz
IGVsaWdpYmxlIGZvciBmcmVlaW5nIGF0IHRoZSBuZXh0IGVkZW4gR0MuIFRoZXJlJ3MgYSBidW5j
aCBvZiB0aGluZ3Mgd2UKKy8vIGNvdWxkIGRvIHRvIG1ha2UgdGhpcyBoYXBwZW4uIEhlcmUgYXJl
IHNvbWUgaWRlYXM6CisvLworLy8gLSBJbnRyb2R1Y2UgYSBuZXcgQ2VsbFN0YXRlLCBjYWxsZWQg
RmxvYXQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG9iamVjdCB3YXMgYWxsb2NhdGVkIGR1cmluZyB0
aGUKKy8vICAgR0MuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IG1hcmtpbmcgZG9lcyBub3RoaW5n
IGZvciBGbG9hdHMuIFRoaXMgd291bGQgbWFrZSBtYXJraW5nIGEgdGlueQorLy8gICBiaXQgbW9y
ZSBleHBlbnNpdmUuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBiYXJyaWVyIHJlY29nbml6
ZXMgc3RvcmVzIHRvIGEgRmxvYXQgdGhlIHNhbWUKKy8vICAgd2F5IHRoYXQgaXQgc2VlcyBhIHN0
b3JlIHRvIE9sZEJsYWNrOiBpdCBwdXRzIHRoZSBvYmplY3Qgb24gdGhlIG1hcmsgc3RhY2suIEZs
b2F0cyB3b3VsZCBiZQorLy8gICBwdXQgb24gdGhlIG1hcmsgc3RhY2sgYXMgRmxvYXRHcmV5IHRv
IGluZGljYXRlIHRoYXQgdGhleSB3aWxsIGJlIHNjYW5uZWQgYnkgdGhlIEdDIGJ1dCB0aGF0Cisv
LyAgIHRoZXkgYXJlbid0IGFjdHVhbGx5IG1hcmtlZC4KKy8vCisvLyAgIE5vdGUgdGhhdCB0aGlz
IGltcGxpZXMgaGF2aW5nIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhvc2UgY2VsbHMgZnJvbSBG
bG9hdCB0byBzb21ldGhpbmcgZWxzZQorLy8gICBhdCB0aGUgZW5kIG9mIEdDLiAgSSdtIG5vdCBz
dXJlIHRoYXQgdGhpcyBpcyBzbyBncmVhdC4KKy8vCisvLyAtIE1hcmsgdGhlIG9iamVjdHMgYWZ0
ZXIgYWxsb2NhdGlvbiwgYnV0IGFsc28gc2V0IHNvbWUgb3RoZXIgYml0cyB0byBpbmRpY2F0ZSB0
aGF0IHRoZSB0aG9zZQorLy8gICBvYmplY3RzIHNob3VsZCBiZSB1bm1hcmtlZCBhdCB0aGUgZW5k
IG9mIHRoZSBHQy4KKy8vCisvLyBFaXRoZXIgb2YgdGhlc2UgYXBwcm9hY2hlcyB3b3VsZCBtYWtl
IGNvbGxlY3Rpb25zIG1vcmUgZXhwZW5zaXZlLCBidXQgaXQgZmVlbHMgbGlrZSB0aGUgbGF0dGVy
CisvLyBhcHByb2FjaCB3b3VsZCBiZSBhIHByb2ZpdGFibGUgb3B0aW1pemF0aW9uLiBJJ20gYWxz
byByZWFsbHkgZ2V0dGluZyB3b3JyaWVkIGFib3V0IGhvdyB0aGlzIEdDCisvLyBleHBlcmllbmNl
cyBiYWNrd2FyZHMgdGltZSB0cmF2ZWwsIHdpdGggYWxsIHRoZSByZW1hcmtpbmcgb2YgdGhpbmdz
IGxpa2UgbmV3IG9iamVjdHMgYW5kCisvLyB3aGF0bm90LgorLy8KKy8vIDIuIEFMTE9DQVRFIFdI
SVRFCisvLworLy8gSSBkb24ndCBrbm93IGlmIHRoaXMgaXMgc291bmQsIGJ1dCBpZiBpdCB3YXMg
dGhlbiBpdCB3b3VsZCBiZSB0aGUgb3B0aW1hbCBzb2x1dGlvbi4gQWxsb2NhdGlvbgorLy8gd291
bGQgd29yayBhcyBub3cgYW5kIGNvbnNlcXVlbnRseSwgZXZlcnl0aGluZyB3ZSBrbm93IGFib3V0
IHdoYXQgd2FzIGFsbG9jYXRlZCBkdXJpbmcgYSBHQyBpcworLy8gZm9yZ290dGVuIGF0IHRoZSBl
bmQgb2YgR0MuIEJ1dCB0aGF0J3MgZmluZS4gRW5kIG9mIEdDIG11c3QgcmVzY2FuIGFueSBoZWFw
IGxvY2F0aW9ucyB0aGF0IGdvdAorLy8gc3RvcmVkIGludG8gYW5kIGl0IG11c3QgcmVzY2FuIHRo
ZSBzdGFjay4gU28sIHdoaXRlIG9iamVjdHMgYWxsb2NhdGVkIGR1cmluZyBHQyB3b3VsZCBnZXQK
Ky8vIG1hcmtlZCBpZiB0aGV5IHNvbWVob3cgc3Vydml2ZWQuCisvLworLy8gVGhpcyBtZWFucyB0
aGF0IGZvciBleGFtcGxlIGlmIHRoZXJlIGlzIGEgZmllbGQgdGhhdCBvZnRlbiBnZXRzIHN0b3Jl
ZCB0byB3aXRoIG5ldyBvYmplY3RzLCB0aGUKKy8vIEdDIHdpbGwgbm90IHNlZSBhbGwgb2YgdGhl
IHZhbHVlcyBpbiB0aGF0IGZpZWxkIGJ1dCBpbnN0ZWFkIGl0IHdvdWxkIHBvbGwgdGhhdCBmaWVs
ZCwgaG9wZWZ1bGx5CisvLyBzb21ld2hhdCByYXJlbHkuIFdlIGNhbiBtYWtlIGl0IHZlcnkgcmFy
ZSBieSBvbmx5IGluZnJlcXVlbnRseSBkb25hdGluZyBmcm9tIHRoZSBtYWluIHRocmVhZCdzCisv
LyBzbG90IHZpc2l0b3IgdG8gYW55IG9mIHRoZSBvdGhlcnMuIFNvLCB3ZSB3b3VsZCBvbmx5IG1h
cmsgc29tZSBvZiB0aGUgbmV3IG9iamVjdHMgdGhhdCBnb3QKKy8vIHN0b3JlZCBpbnRvIHRoYXQg
ZmllbGQuIEl0IGFsc28gbWVhbnMgdGhhdCBhbnkgb2JqZWN0IGFsbG9jYXRlZCBkdXJpbmcgdGhl
IEdDIHRoYXQgZGlkbid0IGdldAorLy8gc3RvcmVkIGludG8gYW55IG9iamVjdCB0aGF0IHdhcyBs
aXZlIHNpbmNlIGJlZm9yZSB0aGUgc3RhcnQgb2YgR0Mgd291bGQgc2ltcGx5IGRpc2FwcGVhci4g
VGhpcworLy8gbWVhbnMgbXVjaCBsZXNzIHJlc2Nhbm5pbmcgdGhhbiBhbnkgb2YgdGhlIG90aGVy
IHByb3Bvc2Fscy4KKy8vCisvLyBJIHJlYWxseSB3YW50IHRvIGdvIHdpdGggdGhlIGFsbG9jYXRl
LXdoaXRlIGFwcHJvYWNoLCBidXQgSSBuZWVkIHRvIHRoaW5rIG1vcmUgZGVlcGx5IGFib3V0IGl0
CisvLyBiZWZvcmUgSSBjb21taXQgdG8gaXQuCisKIGNsYXNzIE1hcmtlZEFsbG9jYXRvciB7CiAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApAQCAtNDYsOSArMTc2LDE2
IEBAIHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvcihIZWFwKiwgTWFya2VkU3BhY2UqLCBz
aXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIGxh
c3RDaGFuY2VUb0ZpbmFsaXplKCk7Ci0gICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgcHJlcGFy
ZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKCk7CiAgICAgdm9pZCBy
ZXN1bWVBbGxvY2F0aW5nKCk7CisgICAgdm9pZCBiZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlv
bigpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNob3RGb3JFZGVuQ29s
bGVjdGlvbigpOworICAgIHZvaWQgc25hcHNob3RGb3JGdWxsQ29sbGVjdGlvbigpOworICAgIHZv
aWQgc3dlZXAoKTsKKyAgICB2b2lkIHNocmluaygpOworICAgIHZvaWQgYXNzZXJ0U25hcHNob3RF
bXB0eSgpOwogICAgIHNpemVfdCBjZWxsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VsbFNpemU7
IH0KICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb247IH0K
QEAgLTcyLDYgKzIwOSw0NSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSBk
ZWFkbGluZSk7CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBibG9ja1NpemVGb3JCeXRlcyhzaXpl
X3QpOworICAgIAorI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMobG93ZXJC
aXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXRO
YW1lKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4
XTsgfSBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaykgY29uc3QgeyByZXR1cm4gaXMgIyMgY2FwaXRhbEJpdE5hbWUoYmxvY2stPmluZGV4
KCkpOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwg
Ym9vbCB2YWx1ZSkgeyBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdID0gdmFsdWU7IH0gXAorICAg
IHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ss
IGJvb2wgdmFsdWUpIHsgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoYmxvY2stPmluZGV4KCksIHZh
bHVlKTsgfSBcCisgICAgYm9vbCBhdG9taWNTZXRBbmRDaGVja0lzICMjIGNhcGl0YWxCaXROYW1l
KHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lLmF0
b21pY1NldEFuZENoZWNrKGluZGV4LCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5k
Q2hlY2tJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9v
bCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lLmF0b21pY1NldEFuZENoZWNrKGJs
b2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0KKyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJ
VChNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMpCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRP
Ul9CSVRfQUNDRVNTT1JTCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQg
Zm9yRWFjaEJpdFZlY3Rvcihjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNkZWZpbmUgTUFSS0VE
X0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAor
ICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSk7CisgICAgICAgIEZPUl9FQUNIX01BUktF
RF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKTsKKyN1bmRlZiBN
QVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKGNvbnN0IEZ1
bmMmIGZ1bmMpCisgICAgeworI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyhs
b3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCisgICAgICAgIGZ1bmMobV8gIyMgbG93ZXJC
aXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOworICAgICAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NB
VE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyk7CisjdW5kZWYgTUFSS0VEX0FM
TE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9CisgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBu
ZXh0QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0QWxsb2NhdG9yOyB9CisgICAgCisg
ICAgLy8gTWFya2VkU3BhY2UgY2FsbHMgdGhpcyBkdXJpbmcgaW5pdC4KKyAgICB2b2lkIHNldE5l
eHRBbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IpIHsgbV9uZXh0QWxsb2NhdG9y
ID0gYWxsb2NhdG9yOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5
QmxvY2soKTsKKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kQmxvY2tUb1N3ZWVw
KCk7CisgICAgCisgICAgdm9pZCBkdW1wQml0cyhQcmludFN0cmVhbSYpOwogICAgCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKQEAgLTgyLDI1ICsyNTgsMzcgQEAgcHJp
dmF0ZToKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgdm9p
ZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwoKTsKICAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiB0cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAgdm9pZCogdHJ5QWxsb2NhdGVJbihNYXJr
ZWRCbG9jazo6SGFuZGxlKik7CisgICAgdm9pZCogYWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFu
ZGxlKik7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQo
KTsKLSAgICB2b2lkIHJldGlyZShNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgCiAgICAgdm9p
ZCBzZXRGcmVlTGlzdChjb25zdCBGcmVlTGlzdCYpOwogICAgIAotICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGZpbHRlck5leHRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7Ci0gICAgdm9pZCBz
ZXROZXh0QmxvY2tUb1N3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKLSAgICAKICAgICBGcmVl
TGlzdCBtX2ZyZWVMaXN0OworICAgIAorICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4g
bV9ibG9ja3M7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVCbG9ja0luZGljZXM7CisgICAg
CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwg
Y2FwaXRhbEJpdE5hbWUpIFwKKyAgICBGYXN0Qml0VmVjdG9yIG1fICMjIGxvd2VyQml0TmFtZTsK
KyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9E
RUNMQVJBVElPTikKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTgorICAg
IAorICAgIC8vIEFmdGVyIHlvdSBkbyBzb21ldGhpbmcgdG8gYSBibG9jayBiYXNlZCBvbiBvbmUg
b2YgdGhlc2UgY3Vyc29ycywgeW91IGNsZWFyIHRoZSBiaXQgaW4gdGhlCisgICAgLy8gY29ycmVz
cG9uZGluZyBiaXR2ZWN0b3IgYW5kIGxlYXZlIHRoZSBjdXJzb3Igd2hlcmUgaXQgd2FzLgorICAg
IHNpemVfdCBtX2FsbG9jYXRpb25DdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBi
bG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBhbGxvY2F0aW9uLgorICAgIHNpemVfdCBtX2Vt
cHR5Q3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNh
bmRpZGF0ZSBmb3IgZW1wdHkgYWxsb2NhdGlvbiAoYWxsb2NhdGluZyBpbiBlbXB0eSBibG9ja3Mp
LgorICAgIHNpemVfdCBtX3NuYXBzaG90Q3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5l
eHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgaW5jcmVtZW50YWwgc3dlZXBpbmcuCisg
ICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9jdXJyZW50QmxvY2s7CiAgICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogbV9uZXh0QmxvY2tUb1N3ZWVwOwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxNYXJrZWRCbG9j
azo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4gbV9i
bG9ja0xpc3Q7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJh
c2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBtX3JldGlyZWRCbG9ja3M7
CisKICAgICBMb2NrIG1fbG9jazsKICAgICB1bnNpZ25lZCBtX2NlbGxTaXplOwogICAgIEFsbG9j
YXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIEhlYXAqIG1faGVhcDsKICAgICBNYXJr
ZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fbmV4dEFsbG9j
YXRvcjsKIH07CiAKIGlubGluZSBwdHJkaWZmX3QgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZy
ZWVMaXN0KCkKQEAgLTE0OSwyMCArMzM3LDEyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCogTWFya2Vk
QWxsb2NhdG9yOjphbGwKICAgICByZXR1cm4gaGVhZDsKIH0KIAotaW5saW5lIHZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKLXsKLSAgICBpZiAoIW1fbGFzdEFjdGl2ZUJs
b2NrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxv
Y2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKLSAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2
ZUJsb2NrOwotICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKLX0KLQogdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2NrKGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9ibG9ja0xpc3QuZm9yRWFjaChmdW5jdG9y
KTsKLSAgICBtX3JldGlyZWRCbG9ja3MuZm9yRWFjaChmdW5jdG9yKTsKKyAgICBtX2xpdmUuZm9y
RWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIGZ1
bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAko
cmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
c3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBmYWxzZTsKIHN0YXRpYyBzaXplX3Qg
YmFsYW5jZTsKIAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShI
ZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBj
b25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorTWFya2VkQmxvY2s6OkhhbmRs
ZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGNv
bnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgaWYgKGNvbXB1dGVC
YWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4LDI0ICs0OCwyMCBAQCBNYXJrZWRC
bG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQogICAgICAgICBzY3JpYmJsZShibG9ja1Nw
YWNlLCBibG9ja1NpemUpOwotICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGFsbG9jYXRvciwg
Y2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOworICAgIHJldHVybiBuZXcgSGFuZGxl
KGhlYXAsIGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBibG9ja1NwYWNlKTsKIH0KIAotTWFya2VkQmxv
Y2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
LCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMs
IHZvaWQqIGJsb2NrU3BhY2UpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVh
cCwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsgYXRv
bVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKGF0b21zUGVyQmxvY2sgLSBt
X2F0b21zUGVyQ2VsbCArIDEpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKLSAgICAs
IG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgotICAgICwgbV9h
bGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+aGVhcCgpLT52
bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX3dlYWtTZXQoaGVhcC52bSgpLCBDZWxsQ29u
dGFpbmVyKCkpCiB7CiAgICAgbV9ibG9jayA9IG5ldyAoTm90TnVsbCwgYmxvY2tTcGFjZSkgTWFy
a2VkQmxvY2soKmhlYXAudm0oKSwgKnRoaXMpOwogICAgIAogICAgIG1fd2Vha1NldC5zZXRDb250
YWluZXIoKm1fYmxvY2spOwogICAgIAogICAgIGhlYXAuZGlkQWxsb2NhdGVCbG9jayhibG9ja1Np
emUpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgQVNT
RVJUKGFsbG9jYXRvcik7CiAgICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFwQ2Vs
bDo6SlNDZWxsKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rp
b24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CiB9CkBAIC03OCw2ICs3NCw3IEBAIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQogICAgICAgICBpZiAoIShiYWxhbmNlICUgMTApKQog
ICAgICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFsYW5jZTogIiwgYmFsYW5jZSwgIlxu
Iik7CiAgICAgfQorICAgIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKICAgICBtX2Jsb2NrLT5+TWFy
a2VkQmxvY2soKTsKICAgICBmYXN0QWxpZ25lZEZyZWUobV9ibG9jayk7CiAgICAgaGVhcC5kaWRG
cmVlQmxvY2soYmxvY2tTaXplKTsKQEAgLTg1LDcgKzgyLDcgQEAgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6fkhhbmRsZSgpCiAKIE1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhWTSYgdm0sIEhhbmRsZSYg
aGFuZGxlKQogICAgIDogbV9uZWVkc0Rlc3RydWN0aW9uKGhhbmRsZS5uZWVkc0Rlc3RydWN0aW9u
KCkpCi0gICAgLCBtX3ZlcnNpb24odm0uaGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSkKKyAg
ICAsIG1fdmVyc2lvbihNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb24pCiAgICAgLCBtX2hhbmRsZSho
YW5kbGUpCiAgICAgLCBtX3ZtKCZ2bSkKIHsKQEAgLTEwMSwyMiArOTgsMjEgQEAgTWFya2VkQmxv
Y2s6Ok1hcmtlZEJsb2NrKFZNJiB2bSwgSGFuZGxlJgogICAgIG1fYmlhc2VkTWFya0NvdW50ID0g
bV9tYXJrQ291bnRCaWFzOyAvLyBUaGlzIG1lYW5zIHdlIGhhdmVuJ3QgbWFya2VkIGFueXRoaW5n
IHlldC4KIH0KIAotdGVtcGxhdGU8TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSwg
TWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2Rl
IGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmli
YmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxs
b2NhdGVkTW9kZT4KK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0
eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0
aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9k
ZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBu
ZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkZsaXBNb2RlIGZsaXBNb2Rl
PgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcCgpCiB7Ci0g
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIEFTU0VS
VChibG9ja1N0YXRlID09IE5ldyB8fCBibG9ja1N0YXRlID09IE1hcmtlZCk7Ci0gICAgQVNTRVJU
KCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2Rl
ID09IFN3ZWVwT25seSkpOworICAgIFJFTEVBU0VfQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09
IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSkpOwogICAg
IAotICAgIGFzc2VydEZsaXBwZWQoKTsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7CisKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygp
OwogICAgIAotICAgIGJvb2wgaXNOZXdCbG9jayA9IGJsb2NrU3RhdGUgPT0gTmV3OwotICAgIGJv
b2wgaXNFbXB0eUJsb2NrID0gIWJsb2NrLmhhc0FueU1hcmtlZCgpCi0gICAgICAgICYmIG5ld2x5
QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkCi0gICAgICAgICYmIGRl
c3RydWN0aW9uTW9kZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uOwotICAgIGlmIChPcHRpb25z
Ojp1c2VCdW1wQWxsb2NhdG9yKCkgJiYgKGlzTmV3QmxvY2sgfHwgaXNFbXB0eUJsb2NrKSkgewot
ICAgICAgICBBU1NFUlQoYmxvY2subV9tYXJrcy5pc0VtcHR5KCkpOworICAgIG1fYWxsb2NhdG9y
LT5zZXRJc1NuYXBzaG90KHRoaXMsIGZhbHNlKTsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6dXNl
QnVtcEFsbG9jYXRvcigpCisgICAgICAgICYmIGVtcHR5TW9kZSA9PSBJc0VtcHR5CisgICAgICAg
ICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkKSB7Cisg
ICAgICAgIEFTU0VSVChmbGlwTW9kZSA9PSBOZWVkc0ZsaXApOwogICAgICAgICAKICAgICAgICAg
Y2hhciogc3RhcnRPZkxhc3RDZWxsID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9j
ay5hdG9tcygpICsgbV9lbmRBdG9tIC0gMSkpOwogICAgICAgICBjaGFyKiBwYXlsb2FkRW5kID0g
c3RhcnRPZkxhc3RDZWxsICsgY2VsbFNpemUoKTsKQEAgLTEyNCw3ICsxMjAsMTAgQEAgRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgICAgICBjaGFyKiBwYXlsb2Fk
QmVnaW4gPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGJsb2NrLmF0b21zKCkgKyBmaXJzdEF0b20oKSk7
CiAgICAgICAgIGlmIChzY3JpYmJsZU1vZGUgPT0gU2NyaWJibGUpCiAgICAgICAgICAgICBzY3Jp
YmJsZShwYXlsb2FkQmVnaW4sIHBheWxvYWRFbmQgLSBwYXlsb2FkQmVnaW4pOwotICAgICAgICBt
X3N0YXRlID0gKChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSA/IEZyZWVMaXN0ZWQgOiBN
YXJrZWQpOworICAgICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAg
ICAgICAgIHNldElzRnJlZUxpc3RlZCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fs
bG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVlKTsKICAgICAgICAgRnJlZUxpc3QgcmVzdWx0
ID0gRnJlZUxpc3Q6OmJ1bXAocGF5bG9hZEVuZCwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7
CiAgICAgICAgIGlmIChmYWxzZSkKICAgICAgICAgICAgIGRhdGFMb2coIlF1aWNrbHkgc3dlcHQg
YmxvY2sgIiwgUmF3UG9pbnRlcih0aGlzKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSgp
LCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcmVzdWx0LCAiXG4iKTsK
QEAgLTEzNywxNCArMTM2LDE0IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNp
YWxpemUKICAgICBGcmVlQ2VsbCogaGVhZCA9IDA7CiAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAg
ICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9t
c1BlckNlbGwpIHsKLSAgICAgICAgaWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkCi0gICAgICAgICAg
ICAmJiAoYmxvY2subV9tYXJrcy5nZXQoaSkKKyAgICAgICAgaWYgKGVtcHR5TW9kZSA9PSBOb3RF
bXB0eQorICAgICAgICAgICAgJiYgKChmbGlwTW9kZSA9PSBEb2VzTm90TmVlZEZsaXAgJiYgYmxv
Y2subV9tYXJrcy5nZXQoaSkpCiAgICAgICAgICAgICAgICAgfHwgKG5ld2x5QWxsb2NhdGVkTW9k
ZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5QWxsb2NhdGVkLT5nZXQoaSkpKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgIAogICAgICAgICBIZWFwQ2VsbCogY2VsbCA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmJsb2NrLmF0b21zKClbaV0pOwogCi0g
ICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNEZXN0cnVjdGlvbiAmJiBibG9ja1N0
YXRlICE9IE5ldykKKyAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0
aW9uICYmIGVtcHR5TW9kZSA9PSBOb3RFbXB0eSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEpT
Q2VsbCo+KGNlbGwpLT5jYWxsRGVzdHJ1Y3Rvcigqdm0oKSk7CiAKICAgICAgICAgaWYgKHN3ZWVw
TW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKQEAgLTE2Myw3ICsxNjIsMTMgQEAgRnJlZUxpc3Qg
TWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgICAgICBtX25ld2x5QWxsb2NhdGVk
ID0gbnVsbHB0cjsKIAogICAgIEZyZWVMaXN0IHJlc3VsdCA9IEZyZWVMaXN0OjpsaXN0KGhlYWQs
IGNvdW50ICogY2VsbFNpemUoKSk7Ci0gICAgbV9zdGF0ZSA9IChzd2VlcE1vZGUgPT0gU3dlZXBU
b0ZyZWVMaXN0ID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7CisgICAgaWYgKHN3ZWVwTW9kZSA9PSBT
d2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHNldElzRnJlZUxpc3RlZCgpOworICAgIGVsc2Ugewor
ICAgICAgICB1bnNpZ25lZCBjZWxsc1BlckJsb2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9h
ZCAvIGNlbGxTaXplKCk7CisgICAgICAgIGlmIChjb3VudCA9PSBjZWxsc1BlckJsb2NrKQorICAg
ICAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgdHJ1ZSk7CisgICAgfQogICAg
IGlmIChmYWxzZSkKICAgICAgICAgZGF0YUxvZygiU2xvd2x5IHN3ZXB0IGJsb2NrICIsIFJhd1Bv
aW50ZXIoJmJsb2NrKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSgpLCAiIGFuZCBhdHRy
aWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcmVzdWx0LCAiXG4iKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMTcxLDE1ICsxNzYsMTggQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3BlY2lhbGl6ZQogCiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcChTd2Vl
cE1vZGUgc3dlZXBNb2RlKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIAotICAgIEhF
QVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0KICAgICBtX3dlYWtTZXQuc3dl
ZXAoKTsKIAogICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmIG1fYXR0cmlidXRlcy5k
ZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gRnJl
ZUxpc3QoKTsKIAorICAgIGlmIChVTkxJS0VMWShtX2lzRnJlZUxpc3RlZCkpIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7CisgICAgICAgIHJl
dHVybiBGcmVlTGlzdCgpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yLT5p
c0FsbG9jYXRlZCh0aGlzKSk7CisgICAgCiAgICAgaWYgKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlv
biA9PSBOZWVkc0Rlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RT
Y3JpYmJsZU1vZGU8TmVlZHNEZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsKICAgICByZXR1cm4gc3dl
ZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8RG9lc05vdE5lZWREZXN0cnVjdGlvbj4oc3dlZXBN
b2RlKTsKQEAgLTE4OSw0NyArMTk3LDUyIEBAIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0
cnVjdGlvbk1vZGUKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2Vs
ZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7CiAgICAgaWYgKHNjcmliYmxl
RnJlZUNlbGxzKCkpCi0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dl
ZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7Ci0gICAgcmV0dXJu
IHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250
U2NyaWJibGU+KHN3ZWVwTW9kZSk7CisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVt
cHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIERvbnRTY3JpYmJs
ZT4oc3dlZXBNb2RlKTsKIH0KIAogdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9u
TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KLUZy
ZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2Vl
cE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAg
c3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBOZXc6Ci0gICAgICAgIEFTU0VSVChzd2VlcE1v
ZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8
TmV3LCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAg
Ly8gSGFwcGVucyB3aGVuIGEgYmxvY2sgdHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxsb2NhdGVkLgot
ICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJl
dHVybiBGcmVlTGlzdCgpOwotICAgIGNhc2UgQWxsb2NhdGVkOgotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNl
IE1hcmtlZDoKLSAgICAgICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgICAgIHJl
dHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBzcGVj
aWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNj
cmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAgICAgICA6IHNwZWNp
YWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVN
b2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBz
cGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUs
IHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKQotICAgICAgICAgICAg
ICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2Rl
LCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRnJl
ZUxpc3QoKTsKKyAgICBpZiAobV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcykpCisgICAgICAgIHJl
dHVybiBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPElzRW1wdHksIGRlc3RydWN0
aW9uTW9kZSwgc2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBl
clNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPE5vdEVtcHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmli
YmxlTW9kZT4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6
RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KK0ZyZWVMaXN0IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dl
ZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAg
cmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25N
b2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworICAgIHJl
dHVybiBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOwor
fQorCit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBE
ZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3Jp
YmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRl
ZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBp
ZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVs
cGVyU2VsZWN0RmxpcE1vZGU8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9u
TW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHN3
ZWVwSGVscGVyU2VsZWN0RmxpcE1vZGU8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9u
TW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7Cit9CisKK3RlbXBsYXRl
PE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1v
ZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitG
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCkK
K3sKKyAgICBpZiAobmVlZHNGbGlwKCkpCisgICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVw
PGVtcHR5TW9kZSwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9k
ZSwgbmV3bHlBbGxvY2F0ZWRNb2RlLCBOZWVkc0ZsaXA+KCk7CisgICAgcmV0dXJuIHNwZWNpYWxp
emVkU3dlZXA8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2Ny
aWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGUsIERvZXNOb3ROZWVkRmxpcD4oKTsKIH0KIAog
dm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjp1bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKQog
ewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRF
X1RSQU5TSVRJT04odGhpcyk7Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSA9PSBG
cmVlTGlzdGVkKTsKLSAgICBtX3N0YXRlID0gTWFya2VkOworICAgIFJFTEVBU0VfQVNTRVJUKG1f
aXNGcmVlTGlzdGVkKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOworfQorCit2b2lkIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OnNldElzRnJlZUxpc3RlZCgpCit7CisgICAgbV9hbGxvY2F0b3It
PnNldElzRW1wdHkodGhpcywgZmFsc2UpOworICAgIG1faXNGcmVlTGlzdGVkID0gdHJ1ZTsKIH0K
IAogY2xhc3MgU2V0TmV3bHlBbGxvY2F0ZWRGdW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpW
b2lkRnVuY3RvciB7CkBAIC0yNTIsMjYgKzI2NSwxNSBAQCBwcml2YXRlOgogCiB2b2lkIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkK
IHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFO
U0lUSU9OKHRoaXMpOworICAgIEFTU0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMp
KTsKIAotICAgIGlmIChtX3N0YXRlID09IE1hcmtlZCkgewotICAgICAgICAvLyBJZiB0aGUgYmxv
Y2sgaXMgaW4gdGhlIE1hcmtlZCBzdGF0ZSB0aGVuIHdlIGtub3cgdGhhdCBvbmUgb2YgdGhlc2UK
LSAgICAgICAgLy8gY29uZGl0aW9ucyBob2xkczoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBJ
dCB3YXMgbm90IHVzZWQgZm9yIGFsbG9jYXRpb24gZHVyaW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0
aW9uIGN5Y2xlLgotICAgICAgICAvLyAgIEl0IG1heSBoYXZlIGRlYWQgb2JqZWN0cywgYW5kIHdl
IG9ubHkga25vdyB0aGVtIHRvIGJlIGRlYWQgYnkgdGhlCi0gICAgICAgIC8vICAgZmFjdCB0aGF0
IHRoZWlyIG1hcmsgYml0cyBhcmUgdW5zZXQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIC0gU29t
ZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCksIGZvciBleGFtcGxlIGJlY2F1
c2Ugb2YKLSAgICAgICAgLy8gICBoZWFwIGl0ZXJhdGlvbiwgYW5kIHRoZXkgaGFkIGFscmVhZHkg
Ci0gICAgICAgIC8vIEhlbmNlIGlmIHRoZSBibG9jayBpcyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2
ZSBpdCBNYXJrZWQuCisgICAgaWYgKCFpc0ZyZWVMaXN0ZWQoKSkgeworICAgICAgICAvLyBUaGlz
IG1lYW5zIHRoYXQgd2UgZWl0aGVyIGRpZG4ndCB1c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFs
bG9jYXRpb24gc2luY2UgbGFzdCBHQywKKyAgICAgICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFk
eSBkb25lIHN0b3BBbGxvY2F0aW5nKCkgYmVmb3JlLgogICAgICAgICBBU1NFUlQoZnJlZUxpc3Qu
YWxsb2NhdGlvbldpbGxGYWlsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOwotICAgIAogICAgIC8vIFJvbGwgYmFjayB0
byBhIGNvaGVyZW50IHN0YXRlIGZvciBIZWFwIGludHJvc3BlY3Rpb24uIENlbGxzIG5ld2x5CiAg
ICAgLy8gYWxsb2NhdGVkIGZyb20gb3VyIGZyZWUgbGlzdCBhcmUgbm90IGN1cnJlbnRseSBtYXJr
ZWQsIHNvIHdlIG5lZWQgYW5vdGhlcgogICAgIC8vIHdheSB0byB0ZWxsIHdoYXQncyBsaXZlIHZz
IGRlYWQuIApAQCAtMjkwLDcgKzI5Miw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Rv
cEFsbG9jYXRpbmcKICAgICAgICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAg
ICAgIH0pOwogICAgIAotICAgIG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgbV9pc0ZyZWVMaXN0ZWQg
PSBmYWxzZTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5h
bGl6ZSgpCkBAIC0zMDQsMTQgKzMwNiwxMSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxh
c3RDaGFuY2VUb0ZpCiAKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9j
YXRpbmcoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NU
QVRFX1RSQU5TSVRJT04odGhpcyk7Ci0KLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOwor
ICAgIEFTU0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICBBU1NFUlQo
IWlzRnJlZUxpc3RlZCgpKTsKIAogICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkgewotICAgICAg
ICAvLyBXZSBkaWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAu
IFRoYXQgbWVhbnMgd2Ugd2VyZSBhbHJlYWR5IE1hcmtlZAotICAgICAgICAvLyB3aGVuIHdlIGxh
c3Qgc3RvcHBlZCBhbGxvY2F0aW9uLCBzbyByZXR1cm4gYW4gZW1wdHkgZnJlZSBsaXN0IGFuZCBz
dGF5IGluIHRoZSBNYXJrZWQgc3RhdGUuCisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFs
cmVhZHkgZXhoYXVzdGVkIHRoZSBibG9jayB3aGVuIHdlIHN0b3BwZWQgYWxsb2NhdGlvbi4KICAg
ICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAgICAgfQogCkBAIC0zNDUsNDAgKzM0NCwyOCBAQCB2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hGcmVlQ2VsCiAgICAgfQogfQogCi12b2lk
IE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnkoKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSh2
bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnkoKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNz
YXJ5KCk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3coKQotewot
ICAgIEFTU0VSVChuZWVkc0ZsaXAoKSk7Ci0gICAgQVNTRVJUKCF2bSgpLT5oZWFwLm9iamVjdFNw
YWNlKCkuaXNNYXJraW5nKCkpOwotICAgIGNsZWFyTWFya3MoKTsKLX0KLQotdm9pZCBNYXJrZWRC
bG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3coKQordm9pZCBNYXJrZWRCbG9j
azo6YWJvdXRUb01hcmtTbG93KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIEFTU0VS
VCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7Ci0gICAgaWYgKG5lZWRzRmxpcCgpKQotICAgICAgICBjbGVhck1hcmtz
KCk7CisgICAgaWYgKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpIHsKKyAgICAgICAgY2xlYXJNYXJr
cyhoZWFwVmVyc2lvbik7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9u
ZXMgdG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFs
bG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwg
dHJ1ZSk7CisgICAgfQogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKKyAg
ICBjbGVhck1hcmtzKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpOworfQorCit2
b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQorewog
ICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIC8v
IFRoaXMgd2lsbCBiZWNvbWUgdHJ1ZSBhdCB0aGUgZW5kIG9mIHRoZSBtYXJrIHBoYXNlLiBXZSBz
ZXQgaXQgbm93IHRvCi0gICAgLy8gYXZvaWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4K
LSAgICBoYW5kbGUoKS5tX3N0YXRlID0gTWFya2VkOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNl
KCk7Ci0gICAgbV92ZXJzaW9uID0gdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsK
KyAgICBtX3ZlcnNpb24gPSBoZWFwVmVyc2lvbjsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQK
QEAgLTM5OCwzMSArMzg1LDM2IEBAIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlw
KCkKICAgICByZXR1cm4gbV9ibG9jay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6d2lsbFJlbW92ZUJsb2NrKCkKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2Vk
KGNvbnN0IHZvaWQqIHApCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgcmV0dXJuIGlz
TWFya2VkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIHApOwogfQogCi12b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCgpCitib29sIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2Vs
bCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9U
UkFOU0lUSU9OKHRoaXMpOwotICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQp
OworICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQodm0oKS0+aGVhcC5vYmplY3RT
cGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7Cit9CisKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gaXNN
YXJrZWRPck5ld2x5QWxsb2NhdGVkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCks
IGNlbGwpOworfQogCi0gICAgbV9zdGF0ZSA9IEFsbG9jYXRlZDsKK3ZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0KCkKK3sKKyAgICBBU1NFUlQoaXNGcmVlTGlzdGVk
KCkpOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7CisgICAgYWxsb2NhdG9yKCktPnNldElz
QWxsb2NhdGVkKHRoaXMsIHRydWUpOwogfQogCiBzaXplX3QgTWFya2VkQmxvY2s6Om1hcmtDb3Vu
dCgpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fbWFya3MuY291bnQo
KTsKKyAgICByZXR1cm4gbmVlZHNGbGlwKCkgPyAwIDogbV9tYXJrcy5jb3VudCgpOwogfQogCiBi
b29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkoKQogewotICAgIGZsaXBJZk5lY2Vzc2Fy
eSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZCAmJiAhYmxvY2soKS5oYXNBbnlNYXJr
ZWQoKSAmJiBtX3dlYWtTZXQuaXNFbXB0eSgpICYmICghbV9uZXdseUFsbG9jYXRlZCB8fCBtX25l
d2x5QWxsb2NhdGVkLT5pc0VtcHR5KCkpOworICAgIHJldHVybiBtX2FsbG9jYXRvci0+aXNFbXB0
eSh0aGlzKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJIYXNBbnlNYXJrZWQoKQpAQCAt
NDMyLDMzICs0MjQsMzQgQEAgdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJIYXNBbnlNYXJrZWQoKQog
CiB2b2lkIE1hcmtlZEJsb2NrOjpub3RlTWFya2VkU2xvdygpCiB7Ci0gICAgaGFuZGxlKCkubV9h
bGxvY2F0b3ItPnJldGlyZSgmaGFuZGxlKCkpOworICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5h
dG9taWNTZXRBbmRDaGVja0lzTWFya2luZ1JldGlyZWQoJmhhbmRsZSgpLCB0cnVlKTsKIH0KIAot
fSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewordm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpyZW1vdmVGcm9tQWxsb2NhdG9yKCkKK3sKKyAgICBpZiAoIW1fYWxsb2NhdG9yKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9hbGxvY2F0b3ItPnJlbW92ZUJsb2NrKHRoaXMp
OworfQogCi11c2luZyBuYW1lc3BhY2UgSlNDOwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpk
aWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGluZGV4
KQoreworICAgIEFTU0VSVChtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkpOworICAgIEFTU0VSVCghbV9hbGxvY2F0b3IpOworICAgIAorICAgIG1faW5kZXggPSBp
bmRleDsKKyAgICBtX2FsbG9jYXRvciA9IGFsbG9jYXRvcjsKK30KIAotdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUp
Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKQogewot
ICAgIHN3aXRjaCAoYmxvY2tTdGF0ZSkgewotICAgIGNhc2UgTWFya2VkQmxvY2s6Ok5ldzoKLSAg
ICAgICAgb3V0LnByaW50KCJOZXciKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2Vk
QmxvY2s6OkZyZWVMaXN0ZWQ6Ci0gICAgICAgIG91dC5wcmludCgiRnJlZUxpc3RlZCIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6QWxsb2NhdGVkOgotICAgICAgICBv
dXQucHJpbnQoIkFsbG9jYXRlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRC
bG9jazo6TWFya2VkOgotICAgICAgICBvdXQucHJpbnQoIk1hcmtlZCIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgQVNTRVJU
KG1faW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNT
RVJUKG1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKTsKKyAgICBtX2FsbG9jYXRvciA9IG51bGxwdHI7CiB9CiAKLX0gLy8g
bmFtZXNwYWNlIFdURgorfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjAg
KzQ0LDYgQEAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogdHlwZWRlZiB1aW50cHRyX3QgQml0czsK
IHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKLS8vIFNldCB0byBsb2cgc3RhdGUgdHJh
bnNpdGlvbnMgb2YgYmxvY2tzLgotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lU
SU9OUyAwCi0KLSNpZiBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwotI2RlZmluZSBI
RUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgZG8geyAgICAgICAgICAgIFwK
LSAgICAgICAgZGF0YUxvZ0YoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICAiJXM6JWQgJXM6IGJsb2NrICVzID0gJXAsICVkXG4iLCAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZV
TkNUSU9OX18sICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICNoYW5kbGUsICYoaGFu
ZGxlKS0+YmxvY2soKSwgKGhhbmRsZSktPm1fc3RhdGUpOyAgICBcCi0gICAgfSB3aGlsZSAoZmFs
c2UpCi0jZWxzZQotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRs
ZSkgKCh2b2lkKTApCi0jZW5kaWYKLQogLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFsaWdu
ZWQgY29udGFpbmVyIGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgogLy8gT2JqZWN0cyBhcmUg
YWxsb2NhdGVkIHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgog
Ly8gbWFya2VkIGJsb2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXplLiBPYmplY3RzIHNt
YWxsZXIgdGhhbiB0aGUKQEAgLTc2LDggKzYyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgSGFuZGxlOwogcHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0ZSA6IHVpbnQ4
X3QgeyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAgIAogICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBibG9ja01hc2sgPSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVzdCBiZSBhIHBv
d2VyIG9mIHR3by4KQEAgLTg2LDEyICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWNfYXNz
ZXJ0KCEoTWFya2VkQmxvY2s6OmF0b21TaXplICYgKE1hcmtlZEJsb2NrOjphdG9tU2l6ZSAtIDEp
KSwgIk1hcmtlZEJsb2NrOjphdG9tU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwogICAg
IHN0YXRpY19hc3NlcnQoIShNYXJrZWRCbG9jazo6YmxvY2tTaXplICYgKE1hcmtlZEJsb2NrOjpi
bG9ja1NpemUgLSAxKSksICJNYXJrZWRCbG9jazo6YmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBv
ZiB0d28uIik7Ci0KKyAgICAKICAgICBzdHJ1Y3QgVm9pZEZ1bmN0b3IgewogICAgICAgICB0eXBl
ZGVmIHZvaWQgUmV0dXJuVHlwZTsKICAgICAgICAgdm9pZCByZXR1cm5WYWx1ZSgpIHsgfQogICAg
IH07Ci0KKyAgICAKICAgICBjbGFzcyBDb3VudEZ1bmN0b3IgewogICAgIHB1YmxpYzoKICAgICAg
ICAgdHlwZWRlZiBzaXplX3QgUmV0dXJuVHlwZTsKQEAgLTEzMCw2ICsxMTQsMTQgQEAgcHVibGlj
OgogICAgICAgICBWTSogdm0oKSBjb25zdDsKICAgICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwog
ICAgICAgICAgICAgCisgICAgICAgIC8vIFN3ZWVwaW5nIGVuc3VyZXMgdGhhdCBkZXN0cnVjdG9y
cyBnZXQgY2FsbGVkIGFuZCByZW1vdmVzIHRoZSBibG9jayBmcm9tIHRoZSBzbmFwc2hvdC4KKyAg
ICAgICAgLy8gU3dlZXBpbmcgdG8gZnJlZSBsaXN0IGFsc28gcmVtb3ZlcyB0aGUgYmxvY2sgZnJv
bSB0aGUgZW1wdHkgc2V0LCBpZiBpdCB3YXMgaW4gdGhhdCBzZXQuCisgICAgICAgIC8vIFN3ZWVw
aW5nIG9ubHkgbWF5IGFkZCB0aGlzIGJsb2NrIHRvIHRoZSBlbXB0eSBzZXQsIGlmIHRoZSBibG9j
ayBpcyBmb3VuZCB0byBiZSBlbXB0eS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gTm90ZSB0aGF0
IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBlbXB0eSBiaXQgcmVmbGVjdHMgcmVhbGl0
eS4gSWYgaXQncyBub3Qgc2V0CisgICAgICAgIC8vIGFuZCB0aGUgYmxvY2sgaXMgZnJlc2hseSBj
cmVhdGVkLCB0aGVuIHdlJ2xsIG1ha2UgdGhlIG1pc3Rha2Ugb2YgcnVubmluZyBkZXN0cnVjdG9y
cyBpbgorICAgICAgICAvLyB0aGUgYmxvY2suIElmIGl0J3Mgbm90IHNldCBhbmQgdGhlIGJsb2Nr
IGhhcyBub3RoaW5nIG1hcmtlZCwgdGhlbiB3ZSdsbCBtYWtlIHRoZQorICAgICAgICAvLyBtaXN0
YWtlIG9mIG1ha2luZyBhIHBvcCBmcmVlbGlzdCByYXRoZXIgdGhhbiBhIGJ1bXAgZnJlZWxpc3Qu
CiAgICAgICAgIGVudW0gU3dlZXBNb2RlIHsgU3dlZXBPbmx5LCBTd2VlcFRvRnJlZUxpc3QgfTsK
ICAgICAgICAgRnJlZUxpc3Qgc3dlZXAoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAg
CkBAIC0xNTMsOCArMTQ1LDYgQEAgcHVibGljOgogICAgICAgICAvLyBhbmQgd2FzIHN1Y2Nlc3Nm
dWxseSBjbGVhcmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgICAgICAgIGJvb2wgY2xlYXJOZXds
eUFsbG9jYXRlZCgpOwogICAgICAgICAgICAgCi0gICAgICAgIHZvaWQgZmxpcEZvckVkZW5Db2xs
ZWN0aW9uKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAg
ICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAg
ICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7CkBAIC0xNjQsOSArMTU0LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogICAgICAgICBzaXplX3Qg
c2l6ZSgpOwogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxs
Kik7Ci0gICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CisgICAgICAgIGlubGlu
ZSBib29sIGlzTGl2ZShjb25zdCBIZWFwQ2VsbCopOworICAgICAgICBpbmxpbmUgYm9vbCBpc0xp
dmVDZWxsKGNvbnN0IHZvaWQqKTsKICAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQoY29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CisgICAgICAgIGJvb2wgaXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCop
OwogICAgICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNOZXdseUFsbG9jYXRlZChjb25zdCB2b2lk
Kik7CiAgICAgICAgIHZvaWQgc2V0TmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwpAQCAtMTc0
LDMxICsxNjYsMjUgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgYm9vbCBoYXNBbnlOZXds
eUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9uZXdseUFsbG9jYXRlZDsgfQogICAgICAg
ICAgICAgCi0gICAgICAgIGJvb2wgaXNBbGxvY2F0ZWQoKSBjb25zdDsKLSAgICAgICAgYm9vbCBp
c01hcmtlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgpIGNvbnN0OwotICAg
ICAgICBib29sIG5lZWRzU3dlZXBpbmcoKSBjb25zdDsKLSAgICAgICAgdm9pZCB3aWxsUmVtb3Zl
QmxvY2soKTsKLQogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9u
U3RhdHVzIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVu
Y3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3Rh
dHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChj
b25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAg
ICAgICAgICAKICAgICAgICAgYm9vbCBuZWVkc0ZsaXAoKTsKLSAgICAgICAgICAgIAotICAgICAg
ICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24pOwotICAgICAg
ICB2b2lkIGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgICAgIHZvaWQgZmxpcElm
TmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICAKKyAgICAgICAgCiAgICAgICAgIHZvaWQgYXNzZXJ0
RmxpcHBlZCgpOwogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNPbkJsb2Nrc1RvU3dlZXAo
KSBjb25zdCB7IHJldHVybiBtX2lzT25CbG9ja3NUb1N3ZWVwOyB9Ci0gICAgICAgIHZvaWQgc2V0
SXNPbkJsb2Nrc1RvU3dlZXAoYm9vbCB2YWx1ZSkgeyBtX2lzT25CbG9ja3NUb1N3ZWVwID0gdmFs
dWU7IH0KKyAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnJl
ZUxpc3RlZDsgfQorICAgICAgICAKKyAgICAgICAgc2l6ZV90IGluZGV4KCkgY29uc3QgeyByZXR1
cm4gbV9pbmRleDsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCByZW1vdmVGcm9tQWxsb2NhdG9y
KCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9j
YXRvciosIHNpemVfdCBpbmRleCk7CisgICAgICAgIHZvaWQgZGlkUmVtb3ZlRnJvbUFsbG9jYXRv
cigpOwogICAgICAgICAKLSAgICAgICAgQmxvY2tTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGU7IH0KLSAgICAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEhhbmRsZShI
ZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JB
dHRyaWJ1dGVzJiwgdm9pZCopOworICAgICAgICBIYW5kbGUoSGVhcCYsIHNpemVfdCBjZWxsU2l6
ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYsIHZvaWQqKTsKICAgICAgICAgICAgIAogICAg
ICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVs
cGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CkBAIC0yMDYsMTYg
KzE5MiwzMSBAQCBwdWJsaWM6CiAgICAgICAgIGVudW0gU2NyaWJibGVNb2RlIHsgRG9udFNjcmli
YmxlLCBTY3JpYmJsZSB9OwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERlc3RydWN0
aW9uTW9kZSwgU2NyaWJibGVNb2RlPgotICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVj
dFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIEZyZWVM
aXN0IHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAg
ICAgICAgICAgICAKKyAgICAgICAgZW51bSBFbXB0eU1vZGUgeyBJc0VtcHR5LCBOb3RFbXB0eSB9
OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUs
IFNjcmliYmxlTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXds
eUFsbG9jYXRlZChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICAKICAgICAgICAgZW51
bSBOZXdseUFsbG9jYXRlZE1vZGUgeyBIYXNOZXdseUFsbG9jYXRlZCwgRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZCB9OwotICAgICAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUs
IFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVk
TW9kZT4KKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25N
b2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qg
c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAg
ICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1v
ZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICBGcmVlTGlzdCBz
d2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCk7CisgICAgICAgIAorICAgICAgICBlbnVtIEZsaXBN
b2RlIHsgTmVlZHNGbGlwLCBEb2VzTm90TmVlZEZsaXAgfTsKKyAgICAgICAgCisgICAgICAgIHRl
bXBsYXRlPEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9k
ZSwgTmV3bHlBbGxvY2F0ZWRNb2RlLCBGbGlwTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3BlY2lh
bGl6ZWRTd2VlcCgpOwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgICAgIHZvaWQgZm9yRWFjaEZyZWVDZWxsKGNvbnN0IEZyZWVMaXN0JiwgY29uc3Qg
RnVuYyYpOwotICAgICAgICAgICAgCisgICAgICAgIAorICAgICAgICB2b2lkIHNldElzRnJlZUxp
c3RlZCgpOworICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9wcmV2Owog
ICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHQ7CiAgICAgICAgICAgICAKQEAgLTIy
NSwxNiArMjI2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6Qml0
bWFwPGF0b21zUGVyQmxvY2s+PiBtX25ld2x5QWxsb2NhdGVkOwogICAgICAgICAgICAgCiAgICAg
ICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwotICAgICAgICBCbG9ja1N0YXRl
IG1fc3RhdGU7Ci0gICAgICAgIGJvb2wgbV9pc09uQmxvY2tzVG9Td2VlcCB7IGZhbHNlIH07Cisg
ICAgICAgIGJvb2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxzZSB9OwogICAgICAgICAgICAgCi0gICAg
ICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgICAgIE1hcmtlZEFsbG9jYXRv
ciogbV9hbGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsgc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1fd2Vh
a1NldDsKICAgICAgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jazsKICAgICB9
OwogICAgICAgICAKLSAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhl
YXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0
dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhl
YXAmLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKICAgICAg
ICAgCiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBAIC0yNDgsMzQgKzI0OSwzNyBA
QCBwdWJsaWM6CiAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogCiAgICAgYm9vbCBpc01hcmtlZChj
b25zdCB2b2lkKik7CisgICAgYm9vbCBpc01hcmtlZChIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCop
OworICAgIGJvb2wgaXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQq
KTsKICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICAKICAg
ICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOwotICAgIGJv
b2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkRHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9u
LCBjb25zdCBIZWFwQ2VsbCopOwotCisgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQo
SGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CisgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlB
bGxvY2F0ZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CisgICAg
CiAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0
IHZvaWQqKTsKICAgICB2b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgCisg
ICAgCiAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRl
cyYgYXR0cmlidXRlcygpIGNvbnN0OwotCisgICAgCiAgICAgYm9vbCBoYXNBbnlNYXJrZWQoKSBj
b25zdDsKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKICAgICAgICAgCiAgICAgV2Vha1NldCYgd2Vh
a1NldCgpOwotCisgICAgCiAgICAgYm9vbCBuZWVkc0ZsaXAoSGVhcFZlcnNpb24pOwogICAgIGJv
b2wgbmVlZHNGbGlwKCk7Ci0gICAgICAgIAotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5n
TWFya2luZyhIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNp
b24pOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgCisgICAgdm9pZCBhYm91dFRv
TWFyayhIZWFwVmVyc2lvbik7CiAgICAgICAgIAogICAgIHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwog
ICAgICAgICAKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25l
ZWRzRGVzdHJ1Y3Rpb247IH0KLSAgICAgICAgCisgICAgCisgICAgaW5saW5lIHZvaWQgcmVzZXRW
ZXJzaW9uKCk7CisgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFs
aWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CiAKQEAgLTI4NCw5ICsyODgsOSBAQCBwcml2YXRl
OgogICAgIE1hcmtlZEJsb2NrKFZNJiwgSGFuZGxlJik7CiAgICAgQXRvbSogYXRvbXMoKTsKICAg
ICAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdygpOwotICAg
IHZvaWQgZmxpcElmTmVjZXNzYXJ5U2xvdygpOworICAgIHZvaWQgYWJvdXRUb01hcmtTbG93KEhl
YXBWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFyTWFya3MoKTsKKyAgICB2b2lkIGNsZWFyTWFya3Mo
SGVhcFZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJIYXNBbnlNYXJrZWQoKTsKICAgICAKICAgICB2
b2lkIG5vdGVNYXJrZWRTbG93KCk7CkBAIC00NjksNDAgKzQ3MywxMyBAQCBpbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6bmVlZHNGbGlwKEhlYXBWCiAgICAgcmV0dXJuIGhlYXBWZXJzaW9uICE9IG1f
dmVyc2lvbjsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeShI
ZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBpZiAoVU5MSUtFTFkobmVlZHNGbGlwKGhl
YXBWZXJzaW9uKSkpCi0gICAgICAgIGZsaXBJZk5lY2Vzc2FyeVNsb3coKTsKLX0KLQotaW5saW5l
IHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNp
b24gaGVhcFZlcnNpb24pCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmsoSGVh
cFZlcnNpb24gaGVhcFZlcnNpb24pCiB7CiAgICAgaWYgKFVOTElLRUxZKG5lZWRzRmxpcChoZWFw
VmVyc2lvbikpKQotICAgICAgICBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdygpOwor
ICAgICAgICBhYm91dFRvTWFya1Nsb3coaGVhcFZlcnNpb24pOwogICAgIFdURjo6bG9hZExvYWRG
ZW5jZSgpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNl
c3NhcnkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2soKS5mbGlwSWZOZWNl
c3NhcnkoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQot
ewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhoZWFwVmVyc2lvbik7
Ci19Ci0KLWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBGb3JFZGVuQ29sbGVj
dGlvbigpCi17Ci0gICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgICAgICAKLSAgICBIRUFQX0xPR19C
TE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAotICAgIEFTU0VSVChtX3N0YXRlICE9
IE5ldyAmJiBtX3N0YXRlICE9IEZyZWVMaXN0ZWQpOwotICAgIAotICAgIG1fc3RhdGUgPSBNYXJr
ZWQ7Ci19Ci0KICNpZiBBU1NFUlRfRElTQUJMRUQKIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjph
c3NlcnRGbGlwcGVkKCkKIHsKQEAgLTUxNCw5ICs0OTEsMTYgQEAgaW5saW5lIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6YXNzZXJ0RgogICAgIGJsb2NrKCkuYXNzZXJ0RmxpcHBlZCgpOwogfQog
Ci1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkKK2lubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29u
c3Qgdm9pZCogcCkKIHsKLSAgICBhc3NlcnRGbGlwcGVkKCk7CisgICAgcmV0dXJuIG5lZWRzRmxp
cChoZWFwVmVyc2lvbikgPyBmYWxzZSA6IG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkpOworfQor
CitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNp
b24gaGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKG5lZWRzRmxpcChoZWFw
VmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBXVEY6OmxvYWRMb2FkRmVuY2Uo
KTsKICAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7CiB9CiAKQEAgLTU1MCw0
MyArNTM0LDI0IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmUKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omlz
TWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKK2lubGluZSBib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lv
biB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBBU1NFUlQobV9zdGF0ZSA9
PSBNYXJrZWQpOwotICAgIHJldHVybiBtX2Jsb2NrLT5pc01hcmtlZChjZWxsKSB8fCAobV9uZXds
eUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKKyAgICByZXR1cm4gbV9ibG9j
ay0+aXNNYXJrZWQodmVyc2lvbiwgY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNOZXds
eUFsbG9jYXRlZChjZWxsKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtl
ZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWRDb25jdXJyZW50bHkoSGVh
cFZlcnNpb24gdmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgQVNTRVJUKG1f
aGFuZGxlLm1fc3RhdGUgPT0gTWFya2VkKTsKLSAgICByZXR1cm4gaXNNYXJrZWQoY2VsbCkgfHwg
KG1faGFuZGxlLm1fbmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXdseUFsbG9jYXRlZChj
ZWxsKSk7CisgICAgcmV0dXJuIG1fYmxvY2stPmlzTWFya2VkQ29uY3VycmVudGx5KHZlcnNpb24s
IGNlbGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwog
fQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkRHVy
aW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCog
Y2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQo
SGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgaWYgKG5l
ZWRzRmxpcChoZWFwVmVyc2lvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOworICAgIHJldHVybiBpc01hcmtlZCh2ZXJz
aW9uLCBjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBtX2hhbmRsZS5pc05l
d2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiB2ZXJzaW9u
LCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBhc3NlcnRGbGlwcGVkKCk7Ci0gICAgc3dp
dGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBBbGxvY2F0ZWQ6Ci0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxv
Y2F0ZWQoY2VsbCk7Ci0KLSAgICBjYXNlIE5ldzoKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gaXNNYXJrZWRDb25jdXJyZW50bHkodmVyc2lvbiwgY2VsbCkgfHwg
KG1faGFuZGxlLm1fbmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXdseUFsbG9jYXRlZChj
ZWxsKSk7CiB9CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCog
cCkKQEAgLTYwMywxMyArNTY4LDYgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShj
b25zdCB2bwogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCi17Ci0gICAgaWYgKCFtX2Jsb2NrLT5p
c0F0b20ocCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNMaXZlKHN0YXRp
Y19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4KIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFj
aENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKQEAgLTYyMiw2MiArNTgwLDYgQEAgaW5s
aW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZAogICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkNvbnRpbnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLWlu
bGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExpdmVDZWxs
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAg
SGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKLSAgICBmb3IgKHNp
emVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwp
IHsKLSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2Vs
bCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9
PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lOwotICAgIH0KLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQg
PSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgp
OyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIEhlYXBDZWxs
KiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMo
KVtpXSk7Ci0gICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRv
bmUpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAgIH0KLSAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLX0KLQotaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNTd2VlcGluZygpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2Fz
dDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJl
dHVybiBtX3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Okhh
bmRsZTo6aXNBbGxvY2F0ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6
OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9
PSBBbGxvY2F0ZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFy
a2VkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlz
KS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwotfQot
Ci1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0ZWQoKSBjb25zdAot
ewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBGcmVlTGlzdGVkOwotfQotCiBpbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6aGFzQW55TWFya2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9i
aWFzZWRNYXJrQ291bnQgIT0gbV9tYXJrQ291bnRCaWFzOwpAQCAtNzExLDggKzYxMyw2IEBAIHRl
bXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6TWFya2UKICAgICB0eXBlZGVmIE1hcmtl
ZEJsb2NrSGFzaCBIYXNoOwogfTsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEpTQzo6TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUpOwotCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAogI2VuZGlmIC8vIE1hcmtlZEJsb2NrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKKyNpbmNs
dWRlICJNYXJrZWRCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoreworICAgIEFT
U0VSVCghaXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIGlmIChuZWVkc0ZsaXAoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlz
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIGlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZChjZWxsKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6
aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQoreworICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHAp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxj
b25zdCBIZWFwQ2VsbCo+KHApKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Citp
bmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2Vs
bChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBt
X2F0dHJpYnV0ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBp
IDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CisgICAgICAgIEhlYXBDZWxsKiBj
ZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtp
XSk7CisgICAgICAgIGlmICghaXNMaXZlKGNlbGwpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25l
KQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKKyAgICB9CisgICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPgoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpm
b3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBIZWFwQ2VsbDo6
S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOworICAgIGZvciAoc2l6ZV90IGkgPSBm
aXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgeworICAgICAg
ICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxv
Y2stPmF0b21zKClbaV0pOworICAgICAgICBpZiAoaXNMaXZlKGNlbGwpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsK
KyAgICB9CisgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisKK2lubGlu
ZSB2b2lkIE1hcmtlZEJsb2NrOjpyZXNldFZlcnNpb24oKQoreworICAgIG1fdmVyc2lvbiA9IE1h
cmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIw
NTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBl
ci5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgog
I2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCkBAIC0xOTUsNiArMTk2LDE5IEBAIE1hcmtlZFNw
YWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CisgICAgCisgICAg
TWFya2VkQWxsb2NhdG9yKiBwcmV2aW91cyA9IG51bGxwdHI7CisgICAgZm9yRWFjaEFsbG9jYXRv
cigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9u
U3RhdHVzIHsKKyAgICAgICAgICAgIC8vIFdlIGNhbiBzZXQgdGhpcyBpbiBhbnkgb3JkZXIuIFRo
ZSBwb2ludCBpcyBqdXN0IHRoYXQgd2Ugd2FudCB0byBiZSBhYmxlIHRvCisgICAgICAgICAgICAv
LyBjdXJzb3Igb3ZlciBhbGxvY2F0b3JzLgorICAgICAgICAgICAgYWxsb2NhdG9yLnNldE5leHRB
bGxvY2F0b3IocHJldmlvdXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBwcmV2aW91cyA9
ICZhbGxvY2F0b3I7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51
ZTsKKyAgICAgICAgfSk7CisgICAgbV9maXJzdEFsbG9jYXRvciA9IHByZXZpb3VzOworICAgIG1f
YWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gcHJldmlvdXM7CiB9CiAKIE1hcmtlZFNwYWNl
Ojp+TWFya2VkU3BhY2UoKQpAQCAtMjU3LDkgKzI3MSwxMCBAQCB2b2lkKiBNYXJrZWRTcGFjZTo6
dHJ5QWxsb2NhdGVMYXJnZShTdWJzCiB2b2lkIE1hcmtlZFNwYWNlOjpzd2VlcCgpCiB7CiAgICAg
bV9oZWFwLT5zd2VlcGVyKCktPndpbGxGaW5pc2hTd2VlcGluZygpOwotICAgIGZvckVhY2hCbG9j
aygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAg
ICAgYmxvY2stPnN3ZWVwKCk7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChN
YXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAg
ICAgIGFsbG9jYXRvci5zd2VlcCgpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1
czo6Q29udGludWU7CiAgICAgICAgIH0pOwogfQogCkBAIC0yODIsMjggKzI5NywxNiBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpzd2VlcExhcmdlQWxsb2NhdGlvbnMoCiAgICAgbV9sYXJnZUFsbG9jYXRp
b25zTnVyc2VyeU9mZnNldCA9IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7CiB9CiAKLXZvaWQg
TWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCgpCi17Ci0gICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkp
Ci0gICAgICAgIGRhdGFMb2coIlpvbWJpZnlpbmcgc3dlZXAuLi4iKTsKLSAgICBtX2hlYXAtPnN3
ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAg
ICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAoYmxv
Y2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAgICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKLSAg
ICAgICAgfSk7Ci19Ci0KLXZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCit2b2lk
IE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7CiAgICAgZm9yRWFjaEFsbG9j
YXRvcigKICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKLSAgICAgICAgICAgIGFsbG9jYXRvci5yZXNldCgpOworICAgICAgICAgICAg
YWxsb2NhdG9yLnByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CiAKLSAgICBtX2Jsb2Nrc1dpdGhO
ZXdPYmplY3RzLmNsZWFyKCk7CiAgICAgbV9hY3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0Fj
dGl2ZVdlYWtTZXRzKTsKKyAgICAKICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCkgPT0gRWRlbkNvbGxlY3Rpb24pCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlP
ZmZzZXRGb3JTd2VlcCA9IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7CiAgICAgZWxz
ZQpAQCAtNDA4LDExICs0MTEsMTEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZnJlZU9yU2hyaW5rQmxv
Y2soTWFyawogCiB2b2lkIE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogewotICAgIGZvckVhY2hCbG9j
aygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAg
ICAgZnJlZU9yU2hyaW5rQmxvY2soYmxvY2spOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAg
ICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7
CisgICAgICAgICAgICBhbGxvY2F0b3Iuc2hyaW5rKCk7CisgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7Ci0gICAgLy8gRm9yIExhcmdlQWxs
b2NhdGlvbnMsIHdlIGRvIHRoZSBtb3JhbCBlcXVpdmFsZW50IGluIHN3ZWVwTGFyZ2VBbGxvY2F0
aW9ucygpLgogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKQEAg
LTQyNyw1NyArNDMwLDYxIEBAIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQo
KQogICAgIGZvciAodW5zaWduZWQgaSA9IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXND
b2xsZWN0aW9uOyBpIDwgbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsgKytpKQogICAgICAgICBt
X2xhcmdlQWxsb2NhdGlvbnNbaV0tPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlB
bGxvY2F0ZWQoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFs
bG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCi0gICAgICAgIEFTU0VSVCghYWxsb2NhdGlv
bi0+aXNOZXdseUFsbG9jYXRlZCgpKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi19Ci0K
LSNpZm5kZWYgTkRFQlVHIAotc3RydWN0IFZlcmlmeU1hcmtlZCA6IE1hcmtlZEJsb2NrOjpWb2lk
RnVuY3RvciB7IAotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHN3aXRjaCAoYmxvY2stPm1fc3RhdGUpIHsKLSAgICAgICAg
Y2FzZSBNYXJrZWRCbG9jazo6TWFya2VkOgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgfQorICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygK
KyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoIWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIAorICAgICAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlv
biA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKKyAgICAgICAgICAgIEFTU0VSVCghYWxsb2NhdGlvbi0+
aXNOZXdseUFsbG9jYXRlZCgpKTsKICAgICB9Ci19OyAKLSNlbmRpZiAKK30KIAotdm9pZCBNYXJr
ZWRTcGFjZTo6ZmxpcCgpCit2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogewotICAg
IGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgewot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHNbaV0tPmZsaXBG
b3JFZGVuQ29sbGVjdGlvbigpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEhlYXBWZXJzaW9uIG5l
eHRWZXJzaW9uID0gbV92ZXJzaW9uICsgMTsKLSAgICAgICAgaWYgKFVOTElLRUxZKG5leHRWZXJz
aW9uID09IGluaXRpYWxWZXJzaW9uKSkgewotICAgICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24g
d3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5IGZsaXBwaW5nIGFsbCBibG9ja3MuIFRoaXMg
aGFwcGVucwotICAgICAgICAgICAgLy8gc3VwZXIgcmFyZWx5LCBwcm9iYWJseSBuZXZlciBmb3Ig
bW9zdCB1c2Vycy4KKyAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVs
bENvbGxlY3Rpb24pIHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgICAgIFsm
XSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAg
ICAgICAgICAgICAgYWxsb2NhdG9yLmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICBtX3ZlcnNpb24gPSBuZXh0VmVyc2lvbihtX3ZlcnNpb24pOwor
ICAgICAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fdmVyc2lvbiA9PSBpbml0aWFsVmVyc2lv
bikpIHsKKyAgICAgICAgICAgIC8vIE9oIG5vISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5k
bGUgdGhpcyBieSBzZXR0aW5nIGFsbCBibG9jayB2ZXJzaW9ucyB0byBudWxsLgogICAgICAgICAg
ICAgZm9yRWFjaEJsb2NrKAogICAgICAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRs
ZSogaGFuZGxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+ZmxpcElmTmVjZXNzYXJ5
KCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+YmxvY2soKS5yZXNldFZlcnNpb24oKTsK
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgfQotICAgICAgICBtX3ZlcnNpb24gPSBuZXh0
VmVyc2lvbjsgLy8gSGVuY2Vmb3J0aCwgZmxpcElmTmVjZXNzYXJ5KCkgd2lsbCB0cmlnZ2VyIG9u
IGFsbCBibG9ja3MuCisgICAgICAgIAogICAgICAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxs
b2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKICAgICAgICAgICAgIGFsbG9jYXRpb24tPmZs
aXAoKTsKICAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgVmVyaWZ5TWFya2VkIHZlcmlmeUZ1
bmN0b3I7Ci0gICAgZm9yRWFjaEJsb2NrKHZlcmlmeUZ1bmN0b3IpOwotI2VuZGlmCisgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAg
WyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgeworICAgICAgICAgICAgICAgIGlmIChi
bG9jay0+bmVlZHNGbGlwKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgICAgICAgICB9KTsK
KyAgICB9CisgICAgCisgICAgbV9pc01hcmtpbmcgPSB0cnVlOworfQorCit2b2lkIE1hcmtlZFNw
YWNlOjplbmRNYXJraW5nKCkKK3sKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0g
KE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAg
ICAgICAgYWxsb2NhdG9yLmVuZE1hcmtpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKKyAgICAKKyAgICBtX2lzTWFya2luZyA9
IGZhbHNlOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp3aWxsU3RhcnRJdGVyYXRpbmcoKQpAQCAt
NTQ0LDEzICs1NTEsNDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2soTWFya2VkQmxv
YwogCiB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2spCiB7Ci0gICAgYmxvY2stPmFzc2VydEZsaXBwZWQoKTsKLSAgICBtX2Jsb2Nr
c1dpdGhOZXdPYmplY3RzLmFwcGVuZChibG9jayk7Ci0gICAgCiAgICAgaWYgKGJsb2NrLT53ZWFr
U2V0KCkuaXNPbkxpc3QoKSkgewogICAgICAgICBibG9jay0+d2Vha1NldCgpLnJlbW92ZSgpOwog
ICAgICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmFwcGVuZCgmYmxvY2stPndlYWtTZXQoKSk7CiAg
ICAgfQogfQogCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRTcGFjZTo6ZmluZEVtcHR5Qmxv
Y2soKQoreworICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbjsgbV9hbGxv
Y2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+
bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
ayA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5maW5kRW1wdHlCbG9jaygpKQorICAg
ICAgICAgICAgcmV0dXJuIGJsb2NrOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
dm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3QoKQoreworICAgIGlmIChtX2hlYXAtPm9wZXJhdGlv
bkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2Nh
dG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRl
cmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RGb3JFZGVu
Q29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOworICAgICAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFjaEFs
bG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+
IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90Rm9y
RnVsbENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBNYXJrZWRTcGFj
ZTo6YXNzZXJ0U25hcHNob3RFbXB0eSgpCit7CisgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAg
ICAgICAgcmV0dXJuOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBh
bGxvY2F0b3IuYXNzZXJ0U25hcHNob3RFbXB0eSgpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNp
b24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsMTYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBudW1TaXplQ2xhc3NlcyA9IGxhcmdlQ3V0b2ZmIC8gc2l6ZVN0ZXA7CiAgICAg
Ci0gICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gNDI7ICAvLyBU
aGlzIGNhbiBiZSBhbnkgdmFsdWUsIGluY2x1ZGluZyByYW5kb20gZ2FyYmFnZSwgc28gbG9uZyBh
cyBpdCdzIGNvbnNpc3RlbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJvY2Vzcy4KKyAgICBz
dGF0aWMgY29uc3QgSGVhcFZlcnNpb24gbnVsbFZlcnNpb24gPSAwOyAvLyBUaGUgdmVyc2lvbiBv
ZiBmcmVzaGx5IGFsbG9jYXRlZCBibG9ja3MuCisgICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9u
IGluaXRpYWxWZXJzaW9uID0gMTsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUgaGVhcCBzdGFydHMg
b3V0IHdpdGguCisgICAgCisgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNpb24g
dmVyc2lvbikKKyAgICB7CisgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgaWYgKHZlcnNpb24g
PT0gbnVsbFZlcnNpb24pCisgICAgICAgICAgICB2ZXJzaW9uKys7CisgICAgICAgIHJldHVybiB2
ZXJzaW9uOworICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90IHNpemVDbGFzc1RvSW5kZXgo
c2l6ZV90IHNpemUpCiAgICAgewpAQCAtMTE0LDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBTdWJz
cGFjZSYgc3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBtX25v
cm1hbFNwYWNlOyB9CiAgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxpYXJ5RGF0YSgpIHsg
cmV0dXJuIG1fYXV4aWxpYXJ5U3BhY2U7IH0KICAgICAKLSAgICB2b2lkIHJlc2V0QWxsb2NhdG9y
cygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIAogICAgIHZvaWQgdmlzaXRX
ZWFrU2V0cyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lkIHJlYXBXZWFrU2V0cygpOwpAQCAt
MTQ0LDExICsxNTMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KE1h
cmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICB2b2lkIGRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRC
bG9jazo6SGFuZGxlKik7CiAKLSAgICB2b2lkIGZsaXAoKTsKKyAgICB2b2lkIGJlZ2luTWFya2lu
ZygpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNob3QoKTsKICAgICB2
b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgICB2b2lkIHN3ZWVwKCk7CiAgICAgdm9pZCBz
d2VlcExhcmdlQWxsb2NhdGlvbnMoKTsKLSAgICB2b2lkIHpvbWJpZnlTd2VlcCgpOworICAgIHZv
aWQgYXNzZXJ0U25hcHNob3RFbXB0eSgpOwogICAgIHNpemVfdCBvYmplY3RDb3VudCgpOwogICAg
IHNpemVfdCBzaXplKCk7CiAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CkBAIC0xNTcsOCArMTY4LDYg
QEAgcHVibGljOgogICAgIAogICAgIEhlYXBWZXJzaW9uIHZlcnNpb24oKSBjb25zdCB7IHJldHVy
biBtX3ZlcnNpb247IH0KIAotICAgIGNvbnN0IFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4m
IGJsb2Nrc1dpdGhOZXdPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja3NXaXRoTmV3T2Jq
ZWN0czsgfQotICAgIAogICAgIGNvbnN0IFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiYgbGFyZ2VB
bGxvY2F0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uczsgfQogICAgIHVu
c2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9s
YXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2Nh
dGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxv
Y2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyB9CkBAIC0xNjksMTMgKzE3OCwxNCBAQCBw
dWJsaWM6CiAgICAgTGFyZ2VBbGxvY2F0aW9uKiogbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xs
ZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxl
Y3Rpb25FbmQ7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rp
b25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rp
b25TaXplOyB9CiAgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBmaXJzdEFsbG9jYXRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fZmlyc3RBbGxvY2F0b3I7IH0KKyAgICBNYXJrZWRBbGxvY2F0b3IqIGFs
bG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb2NhdG9yRm9y
RW1wdHlBbGxvY2F0aW9uOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVt
cHR5QmxvY2soKTsKKyAgICAKICAgICAvLyBXaGVuIHRoaXMgaXMgdHJ1ZSBpdCBtZWFucyB0aGF0
IHdlIGhhdmUgZmxpcHBlZCBidXQgdGhlIG1hcmsgYml0cyBoYXZlbid0IGNvbnZlcmdlZCB5ZXQu
CiAgICAgYm9vbCBpc01hcmtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzTWFya2luZzsgfQogICAg
IAotICAgIC8vIEZJWE1FOiBBZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYxNTgxLCBNYXJrZWRTcGFjZSB3aWxsIGNvbnRyb2wgdGhpcwotICAgIC8vIGZsYWcg
ZGlyZWN0bHkuCi0gICAgdm9pZCBzZXRJc01hcmtpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzTWFya2lu
ZyA9IHZhbHVlOyB9Ci0KIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMTkwLDggKzIwMCw4IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplU3Vic3BhY2UoU3Vic3BhY2UmKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFsbG9jYXRvcihjb25zdCBG
dW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Vi
c3BhY2UoY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlu
bGluZSB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZvckVhY2hTdWJzcGFjZShjb25zdCBGdW5j
dG9yJik7CiAgICAgCiAgICAgdm9pZCBhZGRBY3RpdmVXZWFrU2V0KFdlYWtTZXQqKTsKIApAQCAt
MjA1LDcgKzIxNSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJv
b2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9OwogICAgIE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOwot
ICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsK
ICAgICBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4gbV9sYXJnZUFsbG9jYXRpb25zOwogICAgIHVu
c2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24geyAwIH07CkBAIC0y
MTUsNDAgKzIyNCwxMSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9u
c0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSB7IDAgfTsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8V2Vh
a1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+IG1fYWN0aXZlV2Vha1NldHM7CiAg
ICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdlYWtT
ZXQ+PiBtX25ld0FjdGl2ZVdlYWtTZXRzOworICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogbV9m
aXJzdEFsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2Nh
dG9yRm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFw
SXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIEFTU0VSVChp
c0l0ZXJhdGluZygpKTsKLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVu
ZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hM
aXZlQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9s
YXJnZUFsbG9jYXRpb25zKSB7Ci0gICAgICAgIGlmIChhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewot
ICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5h
dHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0
ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBBU1NFUlQoaXNJ
dGVyYXRpbmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQo
KTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoRGVh
ZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFy
Z2VBbGxvY2F0aW9ucykgewotICAgICAgICBpZiAoIWFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7Ci0g
ICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0
dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQogaW5saW5lIE1hcmtlZEFsbG9j
YXRvciogTWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihTdWJzcGFjZSYgc3BhY2UsIHNpemVfdCBi
eXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgor
I2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxs
KEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgQVNT
RVJUKGlzSXRlcmF0aW5nKCkpOworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0
KCkuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9y
RWFjaExpdmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24g
OiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKKyAgICAgICAgaWYgKGFsbG9jYXRpb24tPmlzTGl2ZSgp
KSB7CisgICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRp
b24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbChI
ZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEFTU0VS
VChpc0l0ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgp
LmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVh
Y2hEZWFkQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDog
bV9sYXJnZUFsbG9jYXRpb25zKSB7CisgICAgICAgIGlmICghYWxsb2NhdGlvbi0+aXNMaXZlKCkp
IHsKKyAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlv
bi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNw
cAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZp
c2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBTbG90Vmlz
aXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogdGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVy
VHlwZT4KIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5k
VG9NYXJrU3RhY2soQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBKU0NlbGwqIGNlbGwpCiB7Ci0g
ICAgY29udGFpbmVyLmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcobV92ZXJzaW9uKTsKKyAg
ICBjb250YWluZXIuYWJvdXRUb01hcmsobV92ZXJzaW9uKTsKICAgICAKICAgICBpZiAoY29udGFp
bmVyLnRlc3RBbmRTZXRNYXJrZWQoY2VsbCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0NiwxMCAr
MjQ2LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6bWFya0F1eGlsaWFyeShjb25zdCB2bwogICAgIAog
ICAgIEFTU0VSVChjZWxsLT5oZWFwKCkgPT0gaGVhcCgpKTsKICAgICAKLSAgICBpZiAoSGVhcDo6
dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwpKTsKKyAgICBpZiAoSGVhcDo6dGVz
dEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
ICAgIAogICAgIG5vdGVMaXZlQXV4aWxpYXJ5Q2VsbChjZWxsKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWsuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjgsNyArMjgsOSBAQAogCiAjaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKICNpbmNsdWRlIDxj
c3RkZGVmPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtOTMsNCArOTUsMjMgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
K25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJh
aXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiB7CisgICAgdHlwZWRlZiBKU0M6OldlYWs8VD4gU3Rv
cmFnZVR5cGU7CisKKyAgICB0eXBlZGVmIHN0ZDo6bnVsbHB0cl90IEVtcHR5VmFsdWVUeXBlOwor
ICAgIHN0YXRpYyBFbXB0eVZhbHVlVHlwZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQorCisgICAgdHlwZWRlZiBUKiBQZWVrVHlwZTsKKyAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhj
b25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CisgICAgc3Rh
dGljIFBlZWtUeXBlIHBlZWsoRW1wdHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0K
K307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFdlYWtCbG9jazo6c3BlY2lhbGl6ZWRWaXNpdChDb250
YWluCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBKU1ZhbHVlJiBqc1Zh
bHVlID0gd2Vha0ltcGwtPmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKGNvbnRhaW5lci5pc01hcmtl
ZE9yTmV3bHlBbGxvY2F0ZWREdXJpbmdXZWFrVmlzaXRpbmcodmVyc2lvbiwganNWYWx1ZS5hc0Nl
bGwoKSkpCisgICAgICAgIGlmIChjb250YWluZXIuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkQ29u
Y3VycmVudGx5KHZlcnNpb24sIGpzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIAogICAgICAgICBpZiAoIXdlYWtIYW5kbGVPd25lci0+aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+Ojp3cmFwU2xvdCgmY29uc3RfY2FzdDxKU1Zh
bHVlJj4oanNWYWx1ZSkpLCB3ZWFrSW1wbC0+Y29udGV4dCgpLCB2aXNpdG9yKSkKQEAgLTE0Nywx
NyArMTQ3LDE0IEBAIHZvaWQgV2Vha0Jsb2NrOjpyZWFwKCkKICAgICAvLyBJZiB0aGlzIFdlYWtC
bG9jayBkb2Vzbid0IGJlbG9uZyB0byBhIENlbGxDb250YWluZXIsIHdlIHdvbid0IGV2ZW4gYmUg
aGVyZS4KICAgICBBU1NFUlQobV9jb250YWluZXIpOwogICAgIAotICAgIG1fY29udGFpbmVyLmZs
aXBJZk5lY2Vzc2FyeSgpOwotCi0gICAgLy8gV2Ugb25seSByZWFwIGFmdGVyIG1hcmtpbmcuCi0g
ICAgQVNTRVJUKG1fY29udGFpbmVyLmlzTWFya2VkKCkpOworICAgIEhlYXBWZXJzaW9uIHZlcnNp
b24gPSBtX2NvbnRhaW5lci5oZWFwKCktPm9iamVjdFNwYWNlKCkudmVyc2lvbigpOwogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWFrSW1wbENvdW50KCk7ICsraSkgewogICAgICAgICBX
ZWFrSW1wbCogd2Vha0ltcGwgPSAmd2Vha0ltcGxzKClbaV07CiAgICAgICAgIGlmICh3ZWFrSW1w
bC0+c3RhdGUoKSA+IFdlYWtJbXBsOjpEZWFkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgaWYgKG1fY29udGFpbmVyLmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh3ZWFrSW1wbC0+
anNWYWx1ZSgpLmFzQ2VsbCgpKSkgeworICAgICAgICBpZiAobV9jb250YWluZXIuaXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKHZlcnNpb24sIHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpKSB7
CiAgICAgICAgICAgICBBU1NFUlQod2Vha0ltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIldlYWtTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNs
dWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ5LDIzICsx
NDgsNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xlCiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IFZlY3RvclRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFp
dHMgewotICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gZmFsc2U7
Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OldlYWs8
VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gewotICAgIHR5cGVkZWYg
SlNDOjpXZWFrPFQ+IFN0b3JhZ2VUeXBlOwotCi0gICAgdHlwZWRlZiBzdGQ6Om51bGxwdHJfdCBF
bXB0eVZhbHVlVHlwZTsKLSAgICBzdGF0aWMgRW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHR5cGVkZWYgVCogUGVla1R5cGU7Ci0gICAgc3RhdGlj
IFBlZWtUeXBlIHBlZWsoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5n
ZXQoKTsgfQotICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKEVtcHR5VmFsdWVUeXBlKSB7IHJldHVy
biBQZWVrVHlwZSgpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQogI2VuZGlmIC8vIFdl
YWtJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAkocmV2
aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgiCi0j
aW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2
aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAKICNpbmNsdWRlICJN
YXBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1hcEl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiTWFwUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTWF0aE9iamVjdC5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgogI2luY2x1ZGUg
Ik1vZHVsZUxvYWRlclByb3RvdHlwZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvdG90eXBlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvdG90eXBlTWFwLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw4IEBACiAjaWZuZGVmIFByb3RvdHlwZU1hcF9oCiAjZGVmaW5lIFByb3RvdHlwZU1hcF9o
CiAKKyNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAj
aW5jbHVkZSAiV2Vha0dDTWFwLmgiCiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
Y3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgIkxMSW50UENSYW5nZXMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1
ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUENUb0NvZGVPcmlnaW5NYXAuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgog
I2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw2IEBACiAjZGVmaW5lIFdlYWtHQ01hcF9oCiAKICNpbmNsdWRlICJXZWFrLmgiCi0jaW5jbHVk
ZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFya2VkU3Bh
Y2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0Rh
dGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KSW5kZXg6IFNvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA1ODU5KQorKysg
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCQkwRjQ1NzA0MzFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9y
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcw
NDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLzsgfTsKIAkJMEY0NTcwNDUxQkU4
MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0
LmggKi87IH07CiAJCTBGNzI1Q0FDMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MjVDQUIxQzUwNDYx
NjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggKi87IH07CisJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVF
MiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNw
cCAqLzsgfTsKIAkJMEY4MjRBNjgxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MjRBNjQxQjc0
NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwICovOyB9OwogCQkwRjgyNEE2OTFCNzQ0M0Ew
MDAyRTM0NUQgLyogUGFya2luZ0xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAq
LzsgfTsKIAkJMEY4NzEwNUExNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODcxMDU5MTY2NDNGMTkw
MDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi87IH07CkBAIC0zNjYsNiArMzY3LDcgQEAKIAkJMEY0
NTcwNDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCdWJibGVTb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGYXN0Qml0VmVjdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjQxQjc0NDNBMDAwMkUzNDVEIC8qIFBh
cmtpbmdMb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFya2lu
Z0xvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY1MUI3NDQzQTAw
MDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhcmtpbmdMb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NzEwNTkxNjY0
M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmF3UG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODgwLDYg
Kzg4Miw3IEBACiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EuaCAqLywKIAkJ
CQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5oICovLAogCQkJCUE4QTQ3
MjlGMTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQkwRjdDNUZCNTFE
ODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8sCiAJCQkJMEZEODFBQzQxNTRG
QjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJBMTE1MUE4MjVB
MDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcyQTIxNTFBODI1QTAwNDEy
M0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKQEAgLTE1OTQsNiArMTU5Nyw3IEBACiAJCQkJQ0Q1NDk3
QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEE0NzNGNDE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNzE1MUE4MjVCMDA0MTIzRkYgLyogT1NB
bGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGOTE1MUE4MjVCMDA0
MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MDIx
NTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBAIHNldChXVEZfU09V
UkNFUwogICAgIERhdGFMb2cuY3BwCiAgICAgRGF0ZU1hdGguY3BwCiAgICAgRGVjaW1hbE51bWJl
ci5jcHAKKyAgICBGYXN0Qml0VmVjdG9yLmNwcAogICAgIEZhc3RNYWxsb2MuY3BwCiAgICAgRmls
ZVByaW50U3RyZWFtLmNwcAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0Zhc3RCaXRWZWN0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RC
aXRWZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkZhc3RCaXRWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgRmFz
dEJpdFZlY3RvcldvcmRPd25lcjo6c2V0RXF1YWxzU2xvdyhjb25zdCBGYXN0Qml0VmVjdG9yV29y
ZE93bmVyJiBvdGhlcikKK3sKKyAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdCo+KAorICAgICAgICBmYXN0Q2FsbG9jKG90aGVyLmFycmF5TGVuZ3RoKCksIHNpemVv
Zih1aW50MzJfdCkpKTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG90aGVyLm1fd29yZHMsIG90aGVy
LmFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICBpZiAobV93b3JkcykKKyAg
ICAgICAgZmFzdEZyZWUobV93b3Jkcyk7CisgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAgIG1f
bnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKK30KKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93
bmVyOjpyZXNpemVTbG93KHNpemVfdCBudW1CaXRzKQoreworICAgIHNpemVfdCBuZXdMZW5ndGgg
PSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cyk7CisgICAgCisgICAgLy8gVXNlIGZh
c3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29t
bW9uCisgICAgLy8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0
aGUgc2l6ZSBvZiB0aGUgYml0dmVjdG9yLgorICAgIAorICAgIHVpbnQzMl90KiBuZXdBcnJheSA9
IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50
MzJfdCkpKTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBz
aXplb2YodWludDMyX3QpKTsKKyAgICBpZiAobV93b3JkcykKKyAgICAgICAgZmFzdEZyZWUobV93
b3Jkcyk7CisgICAgbV93b3JkcyA9IG5ld0FycmF5OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYK
KwpJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9t
aWNzLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC05MSwxNyArOTIsMTIg
QEAgcHVibGljOgogICAgIAogICAgIEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG9wZXJhdG9yPShj
b25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHNpemVf
dCBsZW5ndGggPSBvdGhlci5hcnJheUxlbmd0aCgpOwotICAgICAgICBpZiAobGVuZ3RoID09IGFy
cmF5TGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dvcmRz
LCBsZW5ndGggKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICAgICAgaWYgKGFycmF5TGVuZ3RoKCkgIT0gb3RoZXIuYXJyYXlMZW5ndGgoKSkKKyAgICAg
ICAgICAgIHNldEVxdWFsc1Nsb3cob3RoZXIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVp
bnQzMl90KSk7CisgICAgICAgICAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7CiAgICAg
ICAgIH0KLSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Qq
PihmYXN0Q2FsbG9jKGxlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwotICAgICAgICBtZW1jcHko
bmV3QXJyYXksIG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJfdCkpOwotICAg
ICAgICBpZiAobV93b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOwotICAgICAg
ICBtX3dvcmRzID0gbmV3QXJyYXk7Ci0gICAgICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0
czsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICAgICAKQEAgLTE0MCwxOCArMTM2LDgg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVzaXplKHNpemVfdCBudW1CaXRzKQogICAgIHsK
LSAgICAgICAgaWYgKG51bUJpdHMgPT0gbV9udW1CaXRzKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKLSAgICAgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxv
YyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCi0gICAgICAgIC8vIHVzZSBjYXNlIGZvciB0
aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rvci4K
LSAgICAgICAgCi0gICAgICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0Qml0VmVjdG9yQXJyYXlM
ZW5ndGgobnVtQml0cyk7Ci0gICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0
PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKLSAg
ICAgICAgbWVtY3B5KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVp
bnQzMl90KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAgICAgICAgICAgZmFzdEZyZWUobV93
b3Jkcyk7Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsKKyAgICAgICAgaWYgKGFycmF5TGVu
Z3RoKCkgIT0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpKQorICAgICAgICAgICAg
cmVzaXplU2xvdyhudW1CaXRzKTsKICAgICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKICAgICB9
CiAgICAgCkBAIC0xNzEsNiArMTU3LDkgQEAgcHVibGljOgogICAgIHVpbnQzMl90KiB3b3Jkcygp
IHsgcmV0dXJuIG1fd29yZHM7IH0KIAogcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXRFcXVhbHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNpemVTbG93KHNpemVfdCBudW1CaXRzKTsK
KyAgICAKICAgICB1aW50MzJfdCogbV93b3JkcyB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9u
dW1CaXRzIHsgMCB9OwogfTsKQEAgLTMyMCw2ICszMDksMTUgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdAorICAg
IHsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSBhcnJheUxlbmd0aCgpOyBpbmRleC0tOykg
eworICAgICAgICAgICAgaWYgKG1fd29yZHMud29yZChpbmRleCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIEZhc3RCaXRWZWN0b3JJ
bXBsPEZhc3RCaXRWZWN0b3JBbmRXb3Jkczx0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUsIHR5cGVu
YW1lIE90aGVyV29yZHM6OlZpZXdUeXBlPj4gb3BlcmF0b3ImKGNvbnN0IEZhc3RCaXRWZWN0b3JJ
bXBsPE90aGVyV29yZHM+JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC00NzEsNiArNDY5LDcgQEAg
cHVibGljOgogICAgICAgICBtX3dvcmRzLmNsZWFyQWxsKCk7CiAgICAgfQogCisgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBvZiB0aGlzIGJpdHZlY3RvciBjaGFuZ2VkLgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAgYm9vbCBzZXRBbmRDaGVjayhjb25z
dCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpCiAgICAgewpAQCAtNTUwLDYg
KzU0OSwyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwogICAg
IH0KKyAgICAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnRzIGNoYW5nZWQuCisg
ICAgQUxXQVlTX0lOTElORSBib29sIGF0b21pY1NldEFuZENoZWNrKHNpemVfdCBpbmRleCwgYm9v
bCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHVpbnQzMl90KiBwb2ludGVyID0gJm1fd29yZHMud29y
ZChpbmRleCA+PiA1KTsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKGluZGV4ICYgMzEp
OworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICB1aW50MzJfdCBvbGRWYWx1ZSA9ICpw
b2ludGVyOworICAgICAgICAgICAgdWludDMyX3QgbmV3VmFsdWU7CisgICAgICAgICAgICBpZiAo
dmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiAob2xkVmFsdWUgJiBtYXNrKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGRW
YWx1ZSB8IG1hc2s7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICgh
KG9sZFZhbHVlICYgbWFzaykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlICYgfm1hc2s7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAod2Vha0NvbXBhcmVBbmRTd2FwKHBvaW50ZXIsIG9sZFZhbHVlLCBu
ZXdWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288976</attachid>
            <date>2016-09-15 11:19:20 -0700</date>
            <delta_ts>2016-09-16 10:13:47 -0700</delta_ts>
            <desc>it ran splay</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>123606</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTBGN0MzOUZCMUM4RjYy
OTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5s
aW5lcy5oICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsK
IAkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFy
a2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmgg
Ki87IH07CisJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI5
MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLzsgfTsKIAkJMEY4MDIz
RUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4
MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI3MzEsNiArMjczMyw4IEBACiAJCTBGN0Mz
OUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyog
REZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5o
OyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3Bh
Y2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIz
MDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMz
OCw5ICs1MzQyLDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFs
bG9jYXRvci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9j
ay5jcHAgKi8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmgg
Ki8sCisJCQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5o
ICovLAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICov
LAogCQkJCTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJ
CQkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMEY3
QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0
MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBG
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlBRERCMUY2MjE4RDc3REI3
MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNzM5NCw2ICs3NDAwLDcgQEAKIAkJ
CQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50
UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAv
KiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4
QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJp
dGhNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkxOCw3IEBACiAJCQkJQTUwM0ZB
MkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0lu
amVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQkExRDg4OTUwNzAw
NDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1
QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0MgLyogSlNJbnB1dHMuanNv
biBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2
QXJyYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJW
TUVudHJ5U2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29u
dGFpbmVyLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NlbGxDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBIZWFwOwogY2xhc3MgSGVhcENlbGw7CiBjbGFzcyBMYXJn
ZUFsbG9jYXRpb247CiBjbGFzcyBNYXJrZWRCbG9jazsKIGNsYXNzIFdlYWtTZXQ7CitjbGFzcyBW
TTsKIAogdHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKIApAQCAtNTYsNiArNTgsOSBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KICAgICAKKyAgICBWTSogdm0oKSBjb25zdDsKKyAgICBIZWFw
KiBoZWFwKCkgY29uc3Q7CisgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9lbmNvZGVkUG9pbnRlcjsgfQogICAgIAogICAgIGJvb2wgaXNNYXJrZWRC
bG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZFBvaW50ZXIgJiYgIShtX2VuY29kZWRQb2lu
dGVyICYgaXNMYXJnZUFsbG9jYXRpb25CaXQpOyB9CkBAIC03MywxMyArNzgsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxMYXJnZUFsbG9jYXRpb24qPihtX2VuY29k
ZWRQb2ludGVyIC0gaXNMYXJnZUFsbG9jYXRpb25CaXQpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3Nhcnko
KTsKKyAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxp
cCgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKICAgICBib29sIGlz
TWFya2VkKEhlYXBDZWxsKikgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQoSGVhcENlbGwqKSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChI
ZWFwVmVyc2lvbiwgSGVhcENlbGwqKSBjb25zdDsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWQo
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXJJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENv
bnRhaW5lcklubGluZXMuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQg
KzI5LDIwIEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJWTS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoKSBjb25zdAor
aW5saW5lIFZNKiBDZWxsQ29udGFpbmVyOjp2bSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGFyZ2VB
bGxvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtYXJrZWRCbG9j
aygpLmhhbmRsZSgpLmlzTWFya2VkKCk7CisgICAgICAgIHJldHVybiBsYXJnZUFsbG9jYXRpb24o
KS52bSgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLnZtKCk7Cit9CisKK2lubGluZSBIZWFw
KiBDZWxsQ29udGFpbmVyOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJnZtKCktPmhlYXA7
CiB9CiAKIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXBDZWxsKiBjZWxs
KSBjb25zdApAQCAtNTMsNiArNTksMTMgQEAgaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNN
YXJrZWRPck5ldwogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChjZWxsKTsKIH0KIAoraW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIEhlYXBDZWxsKiBjZWxsKSBjb25zdAor
eworICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAgICByZXR1cm4gbGFyZ2VBbGxv
Y2F0aW9uKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7CisgICAgcmV0dXJuIG1hcmtlZEJs
b2NrKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHZlcnNpb24sIGNlbGwpOworfQorCiBpbmxp
bmUgdm9pZCBDZWxsQ29udGFpbmVyOjpub3RlTWFya2VkKCkKIHsKICAgICBpZiAoIWlzTGFyZ2VB
bGxvY2F0aW9uKCkpCkBAIC03MywxNiArODYsMTAgQEAgaW5saW5lIFdlYWtTZXQmIENlbGxDb250
YWluZXI6OndlYWtTZXQoKQogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLndlYWtTZXQoKTsKIH0K
IAotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9u
IGhlYXBWZXJzaW9uKQotewotICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24oKSkKLSAgICAgICAg
bWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUg
dm9pZCBDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkoKQoraW5saW5lIHZvaWQgQ2VsbENv
bnRhaW5lcjo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiB7CiAgICAgaWYg
KCFpc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICBtYXJrZWRCbG9jaygpLmZsaXBJZk5lY2Vz
c2FyeSgpOworICAgICAgICBtYXJrZWRCbG9jaygpLmFib3V0VG9NYXJrKGhlYXBWZXJzaW9uKTsK
IH0KIAogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6bmVlZHNGbGlwKCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJ
KHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZh
dGl2ZVJvb3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTVmly
dHVhbE1hY2hpbmVJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgi
CiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCkBAIC01MjYsMTEgKzUyNyw5IEBAIHZvaWQgSGVh
cDo6YmVnaW5NYXJraW5nKCkKICAgICB9CiAgICAgCiAgICAgewotICAgICAgICBUaW1pbmdTY29w
ZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmNsZWFyTWFya3Mi
KTsKLSAgICAgICAgbV9vYmplY3RTcGFjZS5mbGlwKCk7CisgICAgICAgIFRpbWluZ1Njb3BlIGNs
ZWFyTWFya3NUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3BhY2UuYmVnaW5NYXJraW5nIik7
CisgICAgICAgIG1fb2JqZWN0U3BhY2UuYmVnaW5NYXJraW5nKCk7CiAgICAgfQotICAgIAotICAg
IG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKHRydWUpOwogfQogCiB2b2lkIEhlYXA6OnZpc2l0
RXh0ZXJuYWxSZW1lbWJlcmVkU2V0KCkKQEAgLTc3OSw3ICs3NzgsNyBAQCB2b2lkIEhlYXA6OmVu
ZE1hcmtpbmcoKQogICAgIEFTU0VSVChtX3NoYXJlZE1hcmtTdGFjay5pc0VtcHR5KCkpOwogICAg
IG1fd2Vha1JlZmVyZW5jZUhhcnZlc3RlcnMucmVtb3ZlQWxsKCk7CiAgICAgCi0gICAgbV9vYmpl
Y3RTcGFjZS5zZXRJc01hcmtpbmcoZmFsc2UpOworICAgIG1fb2JqZWN0U3BhY2UuZW5kTWFya2lu
ZygpOwogfQogCiBzaXplX3QgSGVhcDo6b2JqZWN0Q291bnQoKQpAQCAtOTM5LDcgKzkzOCw3IEBA
IHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgICAgICBtX29iamVjdFNwYWNlLnN3
ZWVwKCk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc2hyaW5rKCk7CiAgICAgfQotICAgIEFTU0VS
VChtX2Jsb2NrU25hcHNob3QuaXNFbXB0eSgpKTsKKyAgICBtX29iamVjdFNwYWNlLmFzc2VydFNu
YXBzaG90RW1wdHkoKTsKIAogICAgIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7
CiB9CkBAIC0xMDQ4LDcgKzEwNDcsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0
SW1wbChIZWFwCiAgICAgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAgd3JpdGVCYXJy
aWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOwogCi0gICAgcmVzZXRBbGxvY2F0b3Jz
KCk7CisgICAgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB1cGRhdGVBbGxvY2F0aW9uTGlt
aXRzKCk7CiAgICAgZGlkRmluaXNoQ29sbGVjdGlvbihnY1N0YXJ0VGltZSk7CiAgICAgcmVzdW1l
Q29tcGlsZXJUaHJlYWRzKCk7CkBAIC0xMTYyLDQ0ICsxMTYxLDEwIEBAIHZvaWQgSGVhcDo6c3dl
ZXBBcnJheUJ1ZmZlcnMoKQogICAgIG1fYXJyYXlCdWZmZXJzLnN3ZWVwKCk7CiB9CiAKLXN0cnVj
dCBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1
bmN0b3IgewotICAgIE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yKFZlY3RvcjxNYXJrZWRCbG9j
azo6SGFuZGxlKj4mIGJsb2NrcykgCi0gICAgICAgIDogbV9pbmRleCgwKSAKLSAgICAgICAgLCBt
X2Jsb2NrcyhibG9ja3MpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QKLSAgICB7Ci0gICAgICAgIGJsb2NrLT5zZXRJ
c09uQmxvY2tzVG9Td2VlcCh0cnVlKTsKLSAgICAgICAgbV9ibG9ja3NbbV9pbmRleCsrXSA9IGJs
b2NrOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbXV0YWJsZSBmaWVsZCBiZWNh
dWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAotICAgIG11dGFibGUgc2l6ZV90IG1faW5kZXg7Ci0g
ICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgbV9ibG9ja3M7Ci19OwotCiB2b2lkIEhl
YXA6OnNuYXBzaG90TWFya2VkU3BhY2UoKQogewogICAgIFRpbWluZ1Njb3BlIHRpbWluZ1Njb3Bl
KCp0aGlzLCAiSGVhcDo6c25hcHNob3RNYXJrZWRTcGFjZSIpOwotICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBwcm9iYWJseSBiZSByZW5hbWVkLiBJdCdzIG5vdCBhY3R1YWxseSBzbmFwc2hvdHRp
bmcgYWxsIG9mIE1hcmtlZFNwYWNlLgotICAgIC8vIFRoaXMgaXMgdXNlZCBieSBJbmNyZW1lbnRh
bFN3ZWVwZXIsIHNvIGl0IG9ubHkgbmVlZHMgdG8gc25hcHNob3QgYmxvY2tzLiBIb3dldmVyLCBp
ZiB3ZSBldmVyCi0gICAgLy8gd2FudGVkIHRvIGFkZCBvdGhlciBzbmFwc2hvdHRpbmcgbG9naW4s
IHdlJ2QgcHJvYmFibHkgcHV0IGl0IGhlcmUuCi0gICAgCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbikgewotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGhhbmRsZSA6IG1fb2JqZWN0U3BhY2UuYmxvY2tzV2l0aE5ld09iamVjdHMoKSkgewot
ICAgICAgICAgICAgaWYgKGhhbmRsZS0+aXNPbkJsb2Nrc1RvU3dlZXAoKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1fYmxvY2tTbmFwc2hvdC5hcHBlbmQoaGFuZGxl
KTsKLSAgICAgICAgICAgIGhhbmRsZS0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAg
ICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBtX2Jsb2NrU25hcHNob3QucmVzaXplVG9GaXQo
bV9vYmplY3RTcGFjZS5ibG9ja3MoKS5zZXQoKS5zaXplKCkpOwotICAgICAgICBNYXJrZWRCbG9j
a1NuYXBzaG90RnVuY3RvciBmdW5jdG9yKG1fYmxvY2tTbmFwc2hvdCk7Ci0gICAgICAgIG1fb2Jq
ZWN0U3BhY2UuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KKyAgICBtX29iamVjdFNwYWNl
LnNuYXBzaG90KCk7CiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMo
KQpAQCAtMTIyMiw5ICsxMTg3LDkgQEAgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXJDdXJyZW50bHlF
eGVjdXRpbgogICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5n
Q29kZUJsb2Nrcyh0aGlzKTsKIH0KIAotdm9pZCBIZWFwOjpyZXNldEFsbG9jYXRvcnMoKQordm9p
ZCBIZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9vYmplY3RTcGFjZS5yZXNl
dEFsbG9jYXRvcnMoKTsKKyAgICBtX29iamVjdFNwYWNlLnByZXBhcmVGb3JBbGxvY2F0aW9uKCk7
CiB9CiAKIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCkBAIC0xNDczLDcgKzE0
MzgsNyBAQCBwdWJsaWM6CiB2b2lkIEhlYXA6OnpvbWJpZnlEZWFkT2JqZWN0cygpCiB7CiAgICAg
Ly8gU3dlZXAgbm93IGJlY2F1c2UgZGVzdHJ1Y3RvcnMgd2lsbCBjcmFzaCBvbmNlIHdlJ3JlIHpv
bWJpZmllZC4KLSAgICBtX29iamVjdFNwYWNlLnpvbWJpZnlTd2VlcCgpOworICAgIG1fb2JqZWN0
U3BhY2Uuc3dlZXAoKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRo
aXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsKGl0ZXJhdGlvblNjb3BlLCBa
b21iaWZ5KCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24g
MjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NywxMSArOTcsOSBAQCBwdWJsaWM6CiAgICAgLy8gb3VyIHNjYW4gdG8gcnVuIGZh
c3Rlci4gCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfdGltZUNoZWNrUmVzb2x1dGlvbiA9
IDE2OwogCi0gICAgc3RhdGljIGJvb2wgaXNMaXZlKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMg
Ym9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIGJvb2wgaXNNYXJrZWRDb25j
dXJyZW50bHkoY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBib29sIHRlc3RBbmRTZXRNYXJrZWQo
SGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRNYXJrZWQoY29u
c3Qgdm9pZCopOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgY2VsbFNpemUoY29uc3Qgdm9pZCop
OwogCkBAIC0zMzMsNyArMzMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZVNvdXJjZVBy
b3ZpZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAg
ICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKLSAgICB2
b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsK
ICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAgIHZvaWQgZmluYWxpemVVbmNv
bmRpdGlvbmFsRmluYWxpemVycygpOwogICAgIHZvaWQgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVz
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlz
aW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDE3ICs3NCw2IEBAIGlubGluZSBIZWFwKiBIZWFwOjpoZWFw
KGNvbnN0IEpTVmFsdWUgdikKICAgICByZXR1cm4gaGVhcCh2LmFzQ2VsbCgpKTsKIH0KIAotaW5s
aW5lIGJvb2wgSGVhcDo6aXNMaXZlKGNvbnN0IHZvaWQqIHJhd0NlbGwpCi17Ci0gICAgQVNTRVJU
KCFtYXlCZUdDVGhyZWFkKCkpOwotICAgIEhlYXBDZWxsKiBjZWxsID0gYml0d2lzZV9jYXN0PEhl
YXBDZWxsKj4ocmF3Q2VsbCk7Ci0gICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0g
ICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc0xpdmUoKTsKLSAgICBNYXJr
ZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGJsb2NrLmZsaXBJZk5l
Y2Vzc2FyeShibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKTsKLSAgICBy
ZXR1cm4gYmxvY2suaGFuZGxlKCkuaXNMaXZlQ2VsbChjZWxsKTsKLX0KLQogQUxXQVlTX0lOTElO
RSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwpCiB7CiAgICAgQVNTRVJU
KCFtYXlCZUdDVGhyZWFkKCkpOwpAQCAtOTIsOSArODEsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SGVhcDo6aXNNYXJrZWQoY29uc3QgCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkp
CiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwogICAg
IE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgaWYgKGJsb2Nr
Lm5lZWRzRmxpcChibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKKyAg
ICByZXR1cm4gYmxvY2suaXNNYXJrZWQoCisgICAgICAgIGJsb2NrLnZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6
aXNNYXJrZWRDb25jdXJyZW50bHkoY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTEwMywxMCArOTEs
OCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWRDb25jdXJyCiAgICAgaWYgKGNl
bGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9j
YXRpb24oKS5pc01hcmtlZCgpOwogICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtl
ZEJsb2NrKCk7Ci0gICAgaWYgKGJsb2NrLm5lZWRzRmxpcChibG9jay52bSgpLT5oZWFwLm9iamVj
dFNwYWNlKCkudmVyc2lvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdURjo6bG9h
ZExvYWRGZW5jZSgpOwotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKKyAgICByZXR1
cm4gYmxvY2suaXNNYXJrZWRDb25jdXJyZW50bHkoCisgICAgICAgIGJsb2NrLnZtKCktPmhlYXAu
b2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wg
SGVhcDo6dGVzdEFuZFNldE1hcmtlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCB2b2lkKiBy
YXdDZWxsKQpAQCAtMTE1LDIyICsxMDEsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRl
c3RBbmRTZXRNYXJrZQogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAg
ICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkudGVzdEFuZFNldE1hcmtlZCgpOwogICAg
IE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgYmxvY2suZmxp
cElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyh2ZXJzaW9uKTsKKyAgICBibG9jay5hYm91dFRvTWFy
ayh2ZXJzaW9uKTsKICAgICByZXR1cm4gYmxvY2sudGVzdEFuZFNldE1hcmtlZChjZWxsKTsKIH0K
IAotaW5saW5lIHZvaWQgSGVhcDo6c2V0TWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwpCi17Ci0g
ICAgSGVhcENlbGwqIGNlbGwgPSBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKTsKLSAg
ICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkgewotICAgICAgICBjZWxsLT5sYXJnZUFs
bG9jYXRpb24oKS5zZXRNYXJrZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBNYXJr
ZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGJsb2NrLmZsaXBJZk5l
Y2Vzc2FyeShibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKTsKLSAgICBi
bG9jay5zZXRNYXJrZWQoY2VsbCk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgc2l6ZV90IEhlYXA6OmNl
bGxTaXplKGNvbnN0IHZvaWQqIHJhd0NlbGwpCiB7CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxI
ZWFwQ2VsbCo+KHJhd0NlbGwpLT5jZWxsU2l6ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTWFy
a2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFV0aWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwVXRpbC5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwVXRpbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw5ICs4NCw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGlmICghZmlsdGVyLnJ1bGVPdXQoYml0d2lzZV9jYXN0PEJpdHM+
KHByZXZpb3VzQ2FuZGlkYXRlKSkKICAgICAgICAgICAgICAgICAmJiBzZXQuY29udGFpbnMocHJl
dmlvdXNDYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgJiYgcHJldmlvdXNDYW5kaWRhdGUtPmhh
bmRsZSgpLmNlbGxLaW5kKCkgPT0gSGVhcENlbGw6OkF1eGlsaWFyeSkgewotICAgICAgICAgICAg
ICAgIHByZXZpb3VzQ2FuZGlkYXRlLT5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwogICAg
ICAgICAgICAgICAgIHByZXZpb3VzUG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihwcmV2aW91
c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEFsaWduKHByZXZpb3VzUG9pbnRlcikpOwotICAgICAg
ICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChwcmV2
aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFu
ZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcHJldmlvdXNQb2ludGVyKSkKICAgICAgICAg
ICAgICAgICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC05OSwxMCArOTgsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghc2V0LmNvbnRhaW5z
KGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBjYW5k
aWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7Ci0KICAgICAgICAgYXV0byB0cnlQ
b2ludGVyID0gWyZdICh2b2lkKiBwb2ludGVyKSB7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRl
LT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQorICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcG9pbnRlcikpCiAgICAgICAgICAg
ICAgICAgZnVuYyhwb2ludGVyKTsKICAgICAgICAgfTsKICAgICAKQEAgLTE3MCw3ICsxNjcsNiBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgIT0g
SGVhcENlbGw6OkpTQ2VsbCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0g
ICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5KCk7CiAgICAgICAgIGlmICghY2FuZGlk
YXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJp
Zmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZl
cmlmaWVyLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50
YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw3ICs1MCw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgc3dlZXBUaW1lTXVsdGlwbGllciAKICNp
ZiBVU0UoQ0YpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBo
ZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpLCBy
dW5Mb29wKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKIHsK
IH0KIApAQCAtNjYsNyArNjUsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGlt
ZXIoKQogI2VsaWYgUExBVEZPUk0oRUZMKQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRh
bFN3ZWVwZXIoSGVhcCogaGVhcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpKQotICAgICwg
bV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKIHsKIH0KIApAQCAtODYsNyAr
ODQsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogI2VsaWYgVVNF
KEdMSUIpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFw
KQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVh
cC0+bV9ibG9ja1NuYXBzaG90KQogewogfQogCkBAIC0xMjEsMTkgKzExOCwyMCBAQCB2b2lkIElu
Y3JlbWVudGFsU3dlZXBlcjo6ZG9Td2VlcChkb3VibGUgCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsKICAgICBjYW5jZWxUaW1lcigpOwogfQog
CiBib29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soKQogewotICAgIHdoaWxl
ICghbV9ibG9ja3NUb1N3ZWVwLmlzRW1wdHkoKSkgewotICAgICAgICBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcC50YWtlTGFzdCgpOwotICAgICAgICBibG9jay0+
c2V0SXNPbkJsb2Nrc1RvU3dlZXAoZmFsc2UpOwotCi0gICAgICAgIGlmICghYmxvY2stPm5lZWRz
U3dlZXBpbmcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAoOyBtX2N1cnJlbnRBbGxvY2F0
b3I7IG1fY3VycmVudEFsbG9jYXRvciA9IG1fY3VycmVudEFsbG9jYXRvci0+bmV4dEFsbG9jYXRv
cigpKSB7CisgICAgICAgIGJsb2NrID0gbV9jdXJyZW50QWxsb2NhdG9yLT5maW5kQmxvY2tUb1N3
ZWVwKCk7CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAKKyAgICBpZiAoYmxvY2spIHsKICAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKG1f
dm0tPmhlYXApOwogICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgICAgICAgbV92bS0+aGVhcC5v
YmplY3RTcGFjZSgpLmZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKQEAgLTE0NiwxMSArMTQ0LDEy
IEBAIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygKIHZvaWQgSW5jcmVt
ZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKCkKIHsKICAgICBzY2hlZHVsZVRpbWVyKCk7Cisg
ICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZpcnN0QWxs
b2NhdG9yKCk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dlZXBp
bmcoKQogewotICAgIG1fYmxvY2tzVG9Td2VlcC5jbGVhcigpOworICAgIG1fY3VycmVudEFsbG9j
YXRvciA9IG51bGxwdHI7CiAgICAgaWYgKG1fdm0pCiAgICAgICAgIGNhbmNlbFRpbWVyKCk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVw
ZXIuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5j
cmVtZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMiBAQAogI2Rl
ZmluZSBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogCiAjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCi0jaW5j
bHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBIZWFwOwotY2xhc3MgTWFya2VkQmxvY2s7CitjbGFzcyBNYXJrZWRB
bGxvY2F0b3I7CiAKIGNsYXNzIEluY3JlbWVudGFsU3dlZXBlciA6IHB1YmxpYyBIZWFwVGltZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2NoZWR1bGVUaW1lcigpOwogICAgIHZvaWQgY2FuY2VsVGltZXIoKTsKICAg
ICAKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBtX2Jsb2Nrc1RvU3dlZXA7Cisg
ICAgTWFya2VkQWxsb2NhdG9yKiBtX2N1cnJlbnRBbGxvY2F0b3I7CiAjZW5kaWYKIH07CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCShyZXZp
c2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlT
X0lOTElORSBib29sIGlzTWFya2VkKCkgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGF4ZWQpOyB9CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQo
KSB7IHJldHVybiBpc01hcmtlZCgpIHx8IGlzTmV3bHlBbGxvY2F0ZWQoKTsgfQogICAgIGJvb2wg
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKCk7IH0KLSAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZER1cmlu
Z1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVybiBpc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQoKTsgfQorICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhl
YXBWZXJzaW9uLCBIZWFwQ2VsbCopIHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgp
OyB9CisgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWRDb25jdXJyZW50bHkoSGVhcFZl
cnNpb24sIEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7IH0K
ICAgICBib29sIGlzTGl2ZSgpIHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOyB9
CiAgICAgCiAgICAgYm9vbCBoYXNWYWxpZENlbGwoKSBjb25zdCB7IHJldHVybiBtX2hhc1ZhbGlk
Q2VsbDsgfQpAQCAtMTA2LDggKzEwNyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBjb25zdCBBbGxv
Y2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
OyB9CiAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkodWludDY0X3QpIHsgfQotICAgIHZv
aWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyh1aW50NjRfdCkgeyB9CisgICAgdm9pZCBh
Ym91dFRvTWFyayhIZWFwVmVyc2lvbikgeyB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29s
IHRlc3RBbmRTZXRNYXJrZWQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRh
bFN3ZWVwZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxv
Y2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIK
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTM5LDcgKzQwLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoZWFwLCBNYXJr
ZWRTcGFjZSogbWFya2VkU3BhY2UsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0
cmlidXRlcyYgYXR0cmlidXRlcykKICAgICA6IG1fY3VycmVudEJsb2NrKDApCiAgICAgLCBtX2xh
c3RBY3RpdmVCbG9jaygwKQotICAgICwgbV9uZXh0QmxvY2tUb1N3ZWVwKG51bGxwdHIpCiAgICAg
LCBtX2NlbGxTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjZWxsU2l6ZSkpCiAgICAgLCBtX2F0
dHJpYnV0ZXMoYXR0cmlidXRlcykKICAgICAsIG1faGVhcChoZWFwKQpAQCAtNTAsMTEgKzUwLDEz
IEBAIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKEhlYXAqIGgKIGJvb2wgTWFya2Vk
QWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSkKIHsKICAgICB1bnNpZ25lZCBp
dGVyc1NpbmNlTGFzdFRpbWVDaGVjayA9IDA7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2sgPSBtX2Jsb2NrTGlzdC5iZWdpbigpOwotICAgIHdoaWxlIChibG9jaykgewotICAgICAgICBi
bG9jayA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLSAgICAgICAgaWYgKGJsb2Nr
KQotICAgICAgICAgICAgYmxvY2stPmZsaXBJZk5lY2Vzc2FyeSgpOyAvLyBGb3JjZXMgdXMgdG8g
dG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50aWMgZWZmZWN0
LgorICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2Jsb2Nrcy5zaXplKCk7ICsr
aW5kZXgpIHsKKyAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tp
bmRleF07CisgICAgICAgIGlmIChibG9jaykgeworICAgICAgICAgICAgLy8gRm9yY2VzIHVzIHRv
IHRvdWNoIHRoZSBtZW1vcnkgb2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVj
dC4KKyAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCisgICAgICAgICAgICAgICAg
YmxvY2stPmJsb2NrKCkucmVzZXRWZXJzaW9uKCk7CisgICAgICAgIH0KICAgICAgICAgKytpdGVy
c1NpbmNlTGFzdFRpbWVDaGVjazsKICAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNoZWNr
ID49IEhlYXA6OnNfdGltZUNoZWNrUmVzb2x1dGlvbikgewogICAgICAgICAgICAgZG91YmxlIGN1
cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAgLTY2LDg0
ICs2OCw3NyBAQCBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3VibGUgCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmV0aXJlKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKQorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9y
OjpmaW5kRW1wdHlCbG9jaygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsgLy8g
VGhpcyB3aWxsIGJlIGNhbGxlZCBpbiBwYXJhbGxlbCBkdXJpbmcgR0MuCi0gICAgaWYgKGJsb2Nr
ID09IG1fY3VycmVudEJsb2NrKSB7Ci0gICAgICAgIC8vIFRoaXMgaGFwcGVucyB3aGVuIHRoZSBt
dXRhdG9yIGlzIHJ1bm5pbmcuIFdlIGZpbmlzaGVkIGEgZnVsbCBHQyBhbmQgbWFya2VkIHRvbyBm
ZXcgdGhpbmdzCi0gICAgICAgIC8vIHRvIHJldGlyZS4gVGhlbiB3ZSBzdGFydGVkIGFsbG9jYXRp
bmcgaW4gdGhpcyBibG9jay4gVGhlbiBhIGJhcnJpZXIgcmFuLCB3aGljaCBtYXJrZWQgYW4KLSAg
ICAgICAgLy8gb2JqZWN0IGluIHRoaXMgYmxvY2ssIHdoaWNoIHB1dCBpdCBvdmVyIHRoZSByZXRp
cmVtZW50IHRocmVzaG9sZC4gSXQncyBPSyB0byBzaW1wbHkgZG8KLSAgICAgICAgLy8gbm90aGlu
ZyBpbiB0aGF0IGNhc2UuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGJsb2NrID09
IG1fbGFzdEFjdGl2ZUJsb2NrKSB7Ci0gICAgICAgIC8vIFRoaXMgY2FuIGVhc2lseSBoYXBwZW4g
ZHVyaW5nIG1hcmtpbmcuIEl0IHdvdWxkIGJlIGVhc3kgdG8gaGFuZGxlIHRoaXMgY2FzZSwgYnV0
IGl0J3MKLSAgICAgICAgLy8ganVzdCBhcyBlYXN5IHRvIGlnbm9yZSBpdC4KLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+aXNPbkxpc3QoKSk7Ci0gICAg
aWYgKGJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCkKLSAgICAgICAgbV9uZXh0QmxvY2tUb1N3
ZWVwID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotICAgIGJsb2NrLT5yZW1vdmUo
KTsKLSAgICBtX3JldGlyZWRCbG9ja3MucHVzaChibG9jayk7Ci19Ci0KLU1hcmtlZEJsb2NrOjpI
YW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmlsdGVyTmV4dEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGJsb2NrKQotewotICAgIGlmIChibG9jayA9PSBtX2Jsb2NrTGlzdC5lbmQoKSkKKyAgICBt
X2VtcHR5Q3Vyc29yID0gbV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJzb3IsIHRydWUpOworICAg
IGlmIChtX2VtcHR5Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIGJsb2NrOwotfQotCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0
TmV4dEJsb2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKLXsKLSAgICBtX25l
eHRCbG9ja1RvU3dlZXAgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2spOworICAgIHJldHVybiBtX2Js
b2Nrc1ttX2VtcHR5Q3Vyc29yXTsKIH0KIAogdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxv
Y2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlmIChtX2N1cnJlbnRCbG9jaykgewot
ICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVwKTsKKyAg
ICBpZiAobV9jdXJyZW50QmxvY2spCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1l
RnJlZUxpc3QoKTsKLSAgICAgICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2N1cnJlbnRCbG9jay0+
bmV4dCgpKTsKLSAgICB9CiAgICAgCiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0KLSAg
ICBSRUxFQVNFX0FTU0VSVChtX25leHRCbG9ja1RvU3dlZXAgIT0gbV9ibG9ja0xpc3QuZW5kKCkp
OwotCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqJiBibG9jayA9IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4
dCkgewotICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0g
ICAgICAgIC8vIEl0IHdvdWxkIGJlIHN1cGVyIHdlaXJkIGlmIHRoZSBibG9ja3Mgd2UgYXJlIHN3
ZWVwaW5nIGhhdmUgYW55dGhpbmcgYWxsb2NhdGVkIGR1cmluZyB0aGlzCi0gICAgICAgIC8vIGN5
Y2xlLgotICAgICAgICBBU1NFUlQoIWJsb2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKLSAg
ICAgICAgCi0gICAgICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJs
b2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxs
cHRyOworICAgIAorICAgIGZvciAoOzspIHsKKyAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0g
bV9jYW5BbGxvY2F0ZS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAg
IGlmIChtX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24g
YSBjb21wbGV0ZS1mdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0
Ci0gICAgICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8g
aXQgc29tZXRpbWVzLgotICAgICAgICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOwotICAgICAgICAg
ICAgYmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLT5pc01hcmtlZCgpKTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKG1f
YWxsb2NhdGlvbkN1cnNvciwgZmFsc2UpOwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxv
Y2s7Ci0gICAgICAgIHNldEZyZWVMaXN0KGZyZWVMaXN0KTsKLSAgICAgICAgYnJlYWs7CisgICAg
ICAgIGlmICh2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZUluKG1fYmxvY2tzW21fYWxsb2NhdGlv
bkN1cnNvcl0pKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAg
aWYgKCFtX2ZyZWVMaXN0KSB7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZmluZEVtcHR5
QmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlSW4oYmxvY2spOworICAgIAorICAgIGlm
IChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fbWFya2VkU3BhY2UtPmZpbmRFbXB0eUJs
b2NrKCkpIHsKKyAgICAgICAgYmxvY2stPnN3ZWVwKCk7CisgICAgICAgIGJsb2NrLT5yZW1vdmVG
cm9tQWxsb2NhdG9yKCk7CisgICAgICAgIGFkZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcmV0dXJu
IGFsbG9jYXRlSW4oYmxvY2spOwogICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
IAordm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKQoreworICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4oYmxvY2spOworICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCog
TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KQoreworICAgIEFTU0VSVChibG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlB
bGxvY2F0ZWQoKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgIAor
ICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6
OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgCisgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxl
IG9uIGEgY29tcGxldGVseSBmdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVz
ZSwgYnV0CisgICAgLy8gdGhhdCBhbGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBk
byBpdCBzb21ldGltZXMuCisgICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7
CisgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBibG9jay0+
dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlz
RnJlZUxpc3RlZCgpKTsKKyAgICAgICAgQVNTRVJUKCFpc0VtcHR5KGJsb2NrKSk7CisgICAgICAg
IEFTU0VSVCghaXNDYW5BbGxvY2F0ZShibG9jaykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgCisgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jazsKKyAgICBzZXRGcmVlTGlz
dChmcmVlTGlzdCk7CisgICAgCiAgICAgdm9pZCogcmVzdWx0OwogICAgIGlmIChtX2ZyZWVMaXN0
LnJlbWFpbmluZykgewogICAgICAgICB1bnNpZ25lZCBjZWxsU2l6ZSA9IG1fY2VsbFNpemU7CkBA
IC0xNTUsNiArMTUwLDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhv
dQogICAgICAgICByZXN1bHQgPSBoZWFkOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQpOworICAgIHNldElzRWRlbihtX2N1cnJlbnRCbG9jaywgdHJ1ZSk7CiAgICAgbV9tYXJrZWRT
cGFjZS0+ZGlkQWxsb2NhdGVJbkJsb2NrKG1fY3VycmVudEJsb2NrKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMjI3LDggKzIyMyw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2Nh
dGVTbG93Q2FzZUkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBhZGRC
bG9jayhibG9jayk7Ci0gICAgICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENv
bGxlY3RpbmcoKTsKKyAgICByZXN1bHQgPSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBBU1NFUlQo
cmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ5LDM3ICsyNDQsNzIgQEAgc2l6
ZV90IE1hcmtlZEFsbG9jYXRvcjo6YmxvY2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6OkhhbmRs
ZSogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2Nr
Ojp0cnlDcmVhdGUoKm1faGVhcCwgdGhpcywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAg
ICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3Jl
YXRlKCptX2hlYXAsIG1fY2VsbFNpemUsIG1fYXR0cmlidXRlcyk7CisgICAgaWYgKCFoYW5kbGUp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFk
ZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAg
IEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAg
c2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBh
Y2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChibG9j
ayk7CisgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9sZENhcGFjaXR5KSB7Cisg
ICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJp
dFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IubnVt
Qml0cygpID09IG9sZENhcGFjaXR5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAg
ICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAg
dmVjdG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRp
Y2VzLnRha2VMYXN0KCk7CisgICAgICAgIEFTU0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAg
ICAgbV9ibG9ja3NbaW5kZXhdID0gYmxvY2s7CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRW
ZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAg
ICBBU1NFUlQoIXZlY3RvcltpbmRleF0pOworICAgICAgICB9KTsKKworICAgIGJsb2NrLT5kaWRB
ZGRUb0FsbG9jYXRvcih0aGlzLCBpbmRleCk7CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBwZW5k
KGJsb2NrKTsKLSAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtlZFNw
YWNlLT5kaWRBZGRCbG9jayhibG9jayk7CisgICAgc2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKKyAg
ICBzZXRJc0VtcHR5KGluZGV4LCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJl
bW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlmIChtX2N1cnJl
bnRCbG9jayA9PSBibG9jaykgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZpbHRlck5leHRC
bG9jayhtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxpc3QoRnJlZUxp
c3QoKSk7Ci0gICAgfQotICAgIGlmIChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxvY2spCi0gICAg
ICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOworICAg
IEFTU0VSVChibG9jay0+YWxsb2NhdG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fYmxvY2tz
W2Jsb2NrLT5pbmRleCgpXSA9PSBibG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJlbW92ZUJsb2Nr
KCk7Ci0gICAgbV9ibG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9jay0+
aW5kZXgoKV0gPSBudWxscHRyOworICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2st
PmluZGV4KCkpOworICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFz
dEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCld
ID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIAorICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9tQWxs
b2NhdG9yKCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCiB7
Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9u
KQotICAgICAgICBtX2Jsb2NrTGlzdC50YWtlRnJvbShtX3JldGlyZWRCbG9ja3MpOwotCiAgICAg
QVNTRVJUKCFtX2xhc3RBY3RpdmVCbG9jayk7CiAgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykgewog
ICAgICAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOwpAQCAtMjkyLDI5ICszMjIsMjUgQEAgdm9pZCBN
YXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKICAgICBtX2ZyZWVMaXN0ID0gRnJlZUxp
c3QoKTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3ZvaWQgTWFya2VkQWxs
b2NhdG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sg
PSAwOwotICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51
bGxwdHI7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogICAgIHNldEZyZWVMaXN0KEZy
ZWVMaXN0KCkpOwogCi0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2Jsb2NrTGlzdC5iZWdpbigp
KTsKKyAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSAwOworICAgIG1fZW1wdHlDdXJzb3IgPSAwOwor
ICAgIG1fc25hcHNob3RDdXJzb3IgPSAwOworICAgIAorICAgIG1fZWRlbi5jbGVhckFsbCgpOwog
CiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUltbW9ydGFsT2JqZWN0cygpKSkgewotICAg
ICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBuZXh0OwotICAgICAgICBmb3IgKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqJiBibG9jayA9IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4
dCkgewotICAgICAgICAgICAgbmV4dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsK
LQotICAgICAgICAgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxv
Y2s6OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgICAgIGJsb2NrLT56YXAoZnJl
ZUxpc3QpOwotICAgICAgICAgICAgcmV0aXJlKGJsb2NrKTsKLSAgICAgICAgfQorICAgICAgICAv
LyBGSVhNRTogVGhpbmdzPwogICAgIH0KIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6Omxhc3RD
aGFuY2VUb0ZpbmFsaXplKCkKIHsKLSAgICBtX2Jsb2NrTGlzdC50YWtlRnJvbShtX3JldGlyZWRC
bG9ja3MpOwogICAgIGZvckVhY2hCbG9jaygKICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykgewogICAgICAgICAgICAgYmxvY2stPmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7
CkBAIC0zMjYsNCArMzUyLDEwOCBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0RnJlZUxpc3Qo
Y29uc3QgCiAgICAgbV9mcmVlTGlzdCA9IGZyZWVMaXN0OwogfQogCit2b2lkIE1hcmtlZEFsbG9j
YXRvcjo6cmVzdW1lQWxsb2NhdGluZygpCit7CisgICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9jaykK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5y
ZXN1bWVBbGxvY2F0aW5nKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVCbG9j
azsKKyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWFya2VkQWxs
b2NhdG9yOjpiZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpCit7CisgICAgLy8gTWFyayBi
aXRzIGFyZSBzdGlja3kgYW5kIHNvIGlzIG91ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25s
eSBjbGVhciB0aGVzZSBkdXJpbmcgZnVsbAorICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ug
c3Vydml2ZWQgdGhlIGxhc3QgY29sbGVjdGlvbiB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9u
ZSBzbyBsb25nCisgICAgLy8gYXMgdGhlIG5leHQgb25lIGlzIGVkZW4uCisgICAgbV9tYXJraW5n
Tm90RW1wdHkuY2xlYXJBbGwoKTsKKyAgICBtX21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7Cit9
CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjplbmRNYXJraW5nKCkKK3sKKyAgICBtX2FsbG9jYXRl
ZC5jbGVhckFsbCgpOworICAgIAorICAgIC8vIEl0J3Mgc3VycHJpc2luZyBhbmQgZnJ1c3RyYXRp
bmcgdG8gY29tcHJlaGVuZCwgYnV0IHRoZSBlbmQtb2YtbWFya2luZyBmbGlwIGRvZXMgbm90IG5l
ZWQgdG8KKyAgICAvLyBrbm93IHdoYXQga2luZCBvZiBjb2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtu
b3dsZWRnZSBpcyBhbHJlYWR5IGVuY29kZWQgaW4gdGhlIG1fbWFya2luZ1hZWgorICAgIC8vIHZl
Y3RvcnMuCisgICAgCisgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgeworICAgICAgICAvLyBJ
ZiBibG9ja3MgbmVlZCBkZXN0cnVjdGlvbiB0aGVuIG5vdGhpbmcgaXMgZW1wdHkhIFRoaXMgaXMg
YSBjb3JyZWN0IGFzc2VydGlvbiBidXQgbWF5CisgICAgICAgIC8vIGJlY29tZSB3cm9uZyBvbmNl
IHdlIGdvIGZ1bGwgY29uY3VycmVudDogd2hlbiB3ZSBjcmVhdGUgYSBuZXcgYmxvY2ssIGl0IHdp
bGwgZmxpY2tlcgorICAgICAgICAvLyBpbnRvIHRoZSBlbXB0eSBzZXQgZm9yIGEgdGlueSBtb21l
bnQuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGlzIGNvZGUgaXMgbGlrZWx5IHRvIGJlIHJ1bgorICAg
ICAgICAvLyBpbiBzdG9wVGhlV29ybGQuCisgICAgICAgIEFTU0VSVChtX2VtcHR5LmlzRW1wdHko
KSk7CisgICAgICAgIG1fY2FuQWxsb2NhdGUgPSBtX2xpdmUgJiB+bV9tYXJraW5nUmV0aXJlZDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2VtcHR5ID0gbV9saXZlICYgfm1f
bWFya2luZ05vdEVtcHR5OworICAgIG1fY2FuQWxsb2NhdGUgPSBtX2xpdmUgJiBtX21hcmtpbmdO
b3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgIAorICAgIGlmIChmYWxzZSkgeworICAg
ICAgICBkYXRhTG9nKCJCaXRzIGZvciAiLCBtX2NlbGxTaXplLCAiLCAiLCBtX2F0dHJpYnV0ZXMs
ICIgYWZ0ZXIgZW5kTWFya2luZzpcbiIpOworICAgICAgICBkdW1wQml0cyhXVEY6OmRhdGFGaWxl
KCkpOworICAgIH0KK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRWRlbkNv
bGxlY3Rpb24oKQoreworICAgIG1fc25hcHNob3QgfD0gbV9lZGVuOworfQorCit2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6c25hcHNob3RGb3JGdWxsQ29sbGVjdGlvbigpCit7CisgICAgbV9zbmFwc2hv
dCA9IG1fbGl2ZTsKK30KKworTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpm
aW5kQmxvY2tUb1N3ZWVwKCkKK3sKKyAgICBtX3NuYXBzaG90Q3Vyc29yID0gbV9zbmFwc2hvdC5m
aW5kQml0KG1fc25hcHNob3RDdXJzb3IsIHRydWUpOworICAgIGlmIChtX3NuYXBzaG90Q3Vyc29y
ID49IG1fYmxvY2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG1fYmxvY2tzW21fc25hcHNob3RDdXJzb3JdOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
c3dlZXAoKQoreworICAgIG1fc25hcHNob3QuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChz
aXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1fYmxvY2tzW2luZGV4XS0+c3dlZXAoKTsKKyAg
ICAgICAgfSk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzaHJpbmsoKQoreworICAgIG1f
ZW1wdHkuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAg
ICAgICAgIG1fbWFya2VkU3BhY2UtPmZyZWVCbG9jayhtX2Jsb2Nrc1tpbmRleF0pOworICAgICAg
ICB9KTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFzc2VydFNuYXBzaG90RW1wdHkoKQor
eworICAgIEFTU0VSVChtX3NuYXBzaG90LmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgTWFya2VkQWxs
b2NhdG9yOjpkdW1wQml0cyhQcmludFN0cmVhbSYgb3V0KQoreworICAgIHVuc2lnbmVkIG1heE5h
bWVMZW5ndGggPSAwOworICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKKyAgICAgICAgWyZd
IChGYXN0Qml0VmVjdG9yJiwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RybGVuKG5hbWUpOworICAgICAgICAgICAgbWF4TmFtZUxlbmd0aCA9IHN0
ZDo6bWF4KG1heE5hbWVMZW5ndGgsIGxlbmd0aCk7CisgICAgICAgIH0pOworICAgIAorICAgIGZv
ckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0
b3IsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIG91dC5wcmludCgiICAgICIsIG5h
bWUsICI6ICIpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF4TmFtZUxlbmd0aCAt
IHN0cmxlbihuYW1lKTsgaS0tOykKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludCh2ZWN0b3IsICJcbiIpOworICAgICAgICB9KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksOSBA
QAogI2luY2x1ZGUgIkFsbG9jYXRvckF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5o
IgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzcsNiArMzksMTM0IEBAIGNsYXNzIEhl
YXA7CiBjbGFzcyBNYXJrZWRTcGFjZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAor
I2RlZmluZSBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChtYWNybykgXAorICAgIG1hY3Jv
KGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFs
IGJsb2Nrcy4gKi9cCisgICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cyBhbmQgbm90aGluZyB0byBkZXN0cm95LiAq
LyBcCisgICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxsYmxv
Y2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAgICBtYWNybyhjYW5BbGxv
Y2F0ZSwgQ2FuQWxsb2NhdGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNhbiBiZSBh
bGxvY2F0ZWQgaW4gcmlnaHQgbm93LiAqLyBcCisgICAgbWFjcm8oZWRlbiwgRWRlbikgLyogVGhl
IHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUgbGFzdCBH
Qy4gKi9cCisgICAgbWFjcm8oc25hcHNob3QsIFNuYXBzaG90KSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9c
CisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCisg
ICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyhtYXJraW5nUmV0
aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBy
ZXRpcmVkLiAqLworCisvLyBOb3RlIHRoYXQgdGhpcyBjb2xsZWN0b3Igc3VwcG9ydHMgb3Zlcmxh
cHBpbmcgYWxsb2NhdG9yIHN0YXRlIHdpdGggbWFya2luZyBzdGF0ZSwgc2luY2UgaW4gYQorLy8g
Y29uY3VycmVudCBjb2xsZWN0b3IgeW91IGFsbG93IGFsbG9jYXRpb24gd2hpbGUgbWFya2luZyBp
cyBydW5uaW5nLiBTbyBpdCdzIGJlc3QgdG8gdmlzdWFsaXplIGEKKy8vIGZ1bGwgbXV0YWJsZS0+
ZWRlbiBjb2xsZWN0LT5tdXRhdGUtPmZ1bGwgY29sbGVjdCBjeWNsZSBhbmQgc2VlIGhvdyB0aGUg
Yml0cyBhYm92ZSBnZXQgYWZmZWN0ZWQuCisvLyBUaGUgZXhhbXBsZSBiZWxvdyB0cmllcyB0byBi
ZSBleGhhdXN0aXZlIGFib3V0IHdoYXQgaGFwcGVucyB0byB0aGUgYml0cywgYnV0IG9taXRzIGEg
bG90IG9mCisvLyB0aGluZ3MgdGhhdCBoYXBwZW4gdG8gb3RoZXIgc3RhdGUuCisvLworLy8gQ3Jl
YXRlIGFsbG9jYXRvcgorLy8gLSBhbGwgYml0cyBhcmUgZW1wdHkKKy8vIFN0YXJ0IGFsbG9jYXRp
bmcgaW4gc29tZSBibG9jaworLy8gLSBhbGxvY2F0ZSB0aGUgYmxvY2sgYW5kIHNldCB0aGUgbGl2
ZSBiaXQuCisvLyAtIHRoZSBlbXB0eSBiaXQgZm9yIHRoZSBibG9jayBmbGlja2VycyBvbiBhbmQg
dGhlbiBnZXRzIGltbWVkaWF0ZWx5IGNsZWFyZWQgYnkgc3dlZXBpbmcuCisvLyAtIHNldCB0aGUg
ZWRlbiBiaXQuCisvLyBGaW5pc2ggYWxsb2NhdGluZyBpbiB0aGF0IGJsb2NrCisvLyAtIHNldCB0
aGUgYWxsb2NhdGVkIGJpdC4KKy8vIERvIHRoYXQgdG8gYSBsb3Qgb2YgYmxvY2tzIGFuZCB0aGVu
IHN0YXJ0IGFuIGVkZW4gY29sbGVjdGlvbi4KKy8vIC0gYmVnaW5NYXJraW5nKCkgaGFzIG5vdGhp
bmcgdG8gZG8uCisvLyAtIGJ5IGRlZmF1bHQgd2UgaGF2ZSBjbGVhciBtYXJraW5nTm90RW1wdHkv
bWFya2luZ1JldGlyZWQgYml0cy4KKy8vIC0gbWFya2luZyBidWlsZHMgdXAgbWFya2luZ05vdEVt
cHR5L21hcmtpbmdSZXRpcmVkIGJpdHMuCisvLyBXZSBkbyBlbmRNYXJraW5nKCkKKy8vIC0gY2xl
YXIgYWxsIGFsbG9jYXRlZCBiaXRzLgorLy8gLSBmb3IgZGVzdHJ1Y3RvciBibG9ja3M6IGNhbkFs
bG9jYXRlID0gbGl2ZSAmIH5tYXJraW5nUmV0aXJlZAorLy8gLSBmb3Igbm9uLWRlc3RydWN0b3Ig
YmxvY2tzOgorLy8gICAgICAgZW1wdHkgPSBsaXZlICYgfm1hcmtpbmdOb3RFbXB0eQorLy8gICAg
ICAgY2FuQWxsb2NhdGUgPSBsaXZlICYgbWFya2luZ05vdEVtcHR5ICYgfm1hcmtpbmdSZXRpcmVk
CisvLyBTbmFwc2hvdHRpbmcuCisvLyAtIHNuYXBzaG90IHw9IGVkZW4KKy8vIFByZXBhcmUgZm9y
IGFsbG9jYXRpb24uCisvLyAtIGNsZWFyIGVkZW4KKy8vIEZpbmlzaCBjb2xsZWN0aW9uLgorLy8g
QWxsb2NhdGUgaW4gc29tZSBibG9jayB0aGF0IGhhZCBzb21lIGZyZWUgYW5kIHNvbWUgbGl2ZSBv
YmplY3RzLgorLy8gLSBjbGVhciB0aGUgY2FuQWxsb2NhdGUgYml0CisvLyAtIGNsZWFyIHRoZSBz
bmFwc2hvdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdAorLy8gRmluaXNoIGFsbG9jYXRpbmcg
KHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBBbGxvY2F0ZSBpbiBzb21lIGJsb2NrIHRoYXQg
d2FzIGNvbXBsZXRlbHkgZW1wdHkuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSBiaXQKKy8vIC0gY2xl
YXIgdGhlIHNuYXBzaG90IGJpdAorLy8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFs
bG9jYXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBBbGxvY2F0ZSBpbiBzb21lIGJs
b2NrIHRoYXQgd2FzIGNvbXBsZXRlbHkgZW1wdHkgaW4gYW5vdGhlciBhbGxvY2F0b3IuCisvLyAt
IGNsZWFyIHRoZSBlbXB0eSBiaXQKKy8vIC0gY2xlYXIgYWxsIGJpdHMgaW4gdGhhdCBhbGxvY2F0
b3IKKy8vIC0gc2V0IHRoZSBsaXZlIGJpdCBpbiBhbm90aGVyIGFsbG9jYXRvciBhbmQgdGhlIGVt
cHR5IGJpdC4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5LCBzbmFwc2hvdCBiaXRzLgorLy8gLSBzZXQg
dGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJp
dCkuCisvLyBTdGFydCBhIGZ1bGwgY29sbGVjdGlvbi4KKy8vIC0gYmVnaW5NYXJraW5nKCkgY2xl
YXJzIG1hcmtpbmdOb3RFbXB0eSwgbWFya2luZ1JldGlyZWQKKy8vIC0gdGhlIGhlYXAgdmVyc2lv
biBpcyBpbmNyZW1lbnRlZAorLy8gLSBtYXJraW5nIHJlYnVpbGRzIG1hcmtpbmdOb3RFbXB0eS9t
YXJraW5ncmV0aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFs
bCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gc2V0IGNhbkFsbG9jYXRlL2VtcHR5IHRoZSBzYW1lIHdh
eSBhcyBpbiBlZGVuIGNvbGxlY3Rpb24uCisvLyBTbmFwc2hvdHRpbmcuCisvLyAtIHNuYXBzaG90
IHw9IGxpdmUKKy8vIHByZXBhcmUgZm9yIGFsbG9jYXRpb24uCisvLyAtIGNsZWFyIGVkZW4uCisv
LyBGaW5pc2ggY29sbGVjdGlvbi4KKy8vCisvLyBOb3RpY2UgaG93IGluIHRoaXMgc2NoZW1lLCB0
aGUgZW1wdHkvY2FuQWxsb2NhdGUgc3RhdGUgc3RheXMgc2VwYXJhdGUgZnJvbSB0aGUgbWFya2lu
Z05vdEVtcHR5LworLy8gbWFya2luZ1JldGlyZWQgc3RhdGUuIFRoaXMgaXMgb25lIHN0ZXAgdG93
YXJkcyBoYXZpbmcgc2VwYXJhdGVkIGFsbG9jYXRpb24gYW5kIG1hcmtpbmcgc3RhdGUuCisvLwor
Ly8gQWZ0ZXIgdGhpcywgd2UganVzdCBuZWVkIHRvIGFuc3dlciB0aGUgcXVlc3Rpb246IHdoYXQg
ZG9lcyBhbiBvYmplY3QgYWxsb2NhdGVkIGR1cmluZyBlZGVuIEdDCisvLyBsb29rIGxpa2UgdG8g
dGhlIEdDPworLy8KKy8vIEkndmUgY29tZSB1cCB3aXRoIHR3byBjb21wZWxsaW5nIGFuc3dlcnMu
CisvLworLy8gMS4gQUxMT0NBVEUgQkxBQ0sKKy8vCisvLyBJIHRoaW5rIHRoYXQgdGhlIGVhc2ll
c3QgYW5zd2VyIGlzIHRvIGFsbG9jYXRlIHRoZSBvYmplY3Qgd2hpdGUgYW5kIHRoZW4KKy8vIGlt
bWVkaWF0ZWx5IG1hcmsgaXQuIFRoaXMgbWFrZXMgdGhlIG9iamVjdCBiZWhhdmUgYXMgaWYgaXQg
d2FzIGFsbG9jYXRlZCBqdXN0IGJlZm9yZSB0aGUgc3RhcnQKKy8vIG9mIEdDIGFuZCBpdCB3YXMg
b24gdGhlIHN0YWNrIGF0IHRoZSBiZWdpbm5pbmcgb2YgR0MuIFdlIHdvdWxkbid0IGhhdmUgdG8g
ZG8gYW55dGhpbmcgZGlmZmVyZW50CisvLyB3aXRoIHRoZSB2YXJpb3VzIGJsb2NrIGJpdHMgd2hl
biBhbGxvY2F0aW5nIGR1cmluZyBHQzogd2UgY291bGQgc3RpbGwgc2V0IGVkZW4gYW5kIGFsbG9j
YXRlZAorLy8gc2luY2UgdGhleSB3aWxsIGJlIGNsZWFyZWQgYW55d2F5LgorLy8KKy8vIEJ1dCB0
aGlzIG1lYW5zIHRoYXQgdGhlIG9iamVjdCB3b24ndCBiZSBlbGlnaWJsZSBmb3IgZnJlZWluZyB1
bnRpbCB0aGUgbmV4dCBmdWxsIEdDLiBJZGVhbGx5CisvLyB3ZSdkIG1ha2UgdGhlIG9iamVjdCBp
cyBlbGlnaWJsZSBmb3IgZnJlZWluZyBhdCB0aGUgbmV4dCBlZGVuIEdDLiBUaGVyZSdzIGEgYnVu
Y2ggb2YgdGhpbmdzIHdlCisvLyBjb3VsZCBkbyB0byBtYWtlIHRoaXMgaGFwcGVuLiBIZXJlIGFy
ZSBzb21lIGlkZWFzOgorLy8KKy8vIC0gSW50cm9kdWNlIGEgbmV3IENlbGxTdGF0ZSwgY2FsbGVk
IEZsb2F0LCB3aGljaCBtZWFucyB0aGF0IHRoZSBvYmplY3Qgd2FzIGFsbG9jYXRlZCBkdXJpbmcg
dGhlCisvLyAgIEdDLiBXZSB3b3VsZCBtYWtlIHN1cmUgdGhhdCBtYXJraW5nIGRvZXMgbm90aGlu
ZyBmb3IgRmxvYXRzLiBUaGlzIHdvdWxkIG1ha2UgbWFya2luZyBhIHRpbnkKKy8vICAgYml0IG1v
cmUgZXhwZW5zaXZlLiBXZSB3b3VsZCBtYWtlIHN1cmUgdGhhdCB0aGUgYmFycmllciByZWNvZ25p
emVzIHN0b3JlcyB0byBhIEZsb2F0IHRoZSBzYW1lCisvLyAgIHdheSB0aGF0IGl0IHNlZXMgYSBz
dG9yZSB0byBPbGRCbGFjazogaXQgcHV0cyB0aGUgb2JqZWN0IG9uIHRoZSBtYXJrIHN0YWNrLiBG
bG9hdHMgd291bGQgYmUKKy8vICAgcHV0IG9uIHRoZSBtYXJrIHN0YWNrIGFzIEZsb2F0R3JleSB0
byBpbmRpY2F0ZSB0aGF0IHRoZXkgd2lsbCBiZSBzY2FubmVkIGJ5IHRoZSBHQyBidXQgdGhhdAor
Ly8gICB0aGV5IGFyZW4ndCBhY3R1YWxseSBtYXJrZWQuCisvLworLy8gICBOb3RlIHRoYXQgdGhp
cyBpbXBsaWVzIGhhdmluZyB0byBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRob3NlIGNlbGxzIGZyb20g
RmxvYXQgdG8gc29tZXRoaW5nIGVsc2UKKy8vICAgYXQgdGhlIGVuZCBvZiBHQy4gIEknbSBub3Qg
c3VyZSB0aGF0IHRoaXMgaXMgc28gZ3JlYXQuCisvLworLy8gLSBNYXJrIHRoZSBvYmplY3RzIGFm
dGVyIGFsbG9jYXRpb24sIGJ1dCBhbHNvIHNldCBzb21lIG90aGVyIGJpdHMgdG8gaW5kaWNhdGUg
dGhhdCB0aGUgdGhvc2UKKy8vICAgb2JqZWN0cyBzaG91bGQgYmUgdW5tYXJrZWQgYXQgdGhlIGVu
ZCBvZiB0aGUgR0MuCisvLworLy8gRWl0aGVyIG9mIHRoZXNlIGFwcHJvYWNoZXMgd291bGQgbWFr
ZSBjb2xsZWN0aW9ucyBtb3JlIGV4cGVuc2l2ZSwgYnV0IGl0IGZlZWxzIGxpa2UgdGhlIGxhdHRl
cgorLy8gYXBwcm9hY2ggd291bGQgYmUgYSBwcm9maXRhYmxlIG9wdGltaXphdGlvbi4gSSdtIGFs
c28gcmVhbGx5IGdldHRpbmcgd29ycmllZCBhYm91dCBob3cgdGhpcyBHQworLy8gZXhwZXJpZW5j
ZXMgYmFja3dhcmRzIHRpbWUgdHJhdmVsLCB3aXRoIGFsbCB0aGUgcmVtYXJraW5nIG9mIHRoaW5n
cyBsaWtlIG5ldyBvYmplY3RzIGFuZAorLy8gd2hhdG5vdC4KKy8vCisvLyAyLiBBTExPQ0FURSBX
SElURQorLy8KKy8vIEkgZG9uJ3Qga25vdyBpZiB0aGlzIGlzIHNvdW5kLCBidXQgaWYgaXQgd2Fz
IHRoZW4gaXQgd291bGQgYmUgdGhlIG9wdGltYWwgc29sdXRpb24uIEFsbG9jYXRpb24KKy8vIHdv
dWxkIHdvcmsgYXMgbm93IGFuZCBjb25zZXF1ZW50bHksIGV2ZXJ5dGhpbmcgd2Uga25vdyBhYm91
dCB3aGF0IHdhcyBhbGxvY2F0ZWQgZHVyaW5nIGEgR0MgaXMKKy8vIGZvcmdvdHRlbiBhdCB0aGUg
ZW5kIG9mIEdDLiBCdXQgdGhhdCdzIGZpbmUuIEVuZCBvZiBHQyBtdXN0IHJlc2NhbiBhbnkgaGVh
cCBsb2NhdGlvbnMgdGhhdCBnb3QKKy8vIHN0b3JlZCBpbnRvIGFuZCBpdCBtdXN0IHJlc2NhbiB0
aGUgc3RhY2suIFNvLCB3aGl0ZSBvYmplY3RzIGFsbG9jYXRlZCBkdXJpbmcgR0Mgd291bGQgZ2V0
CisvLyBtYXJrZWQgaWYgdGhleSBzb21laG93IHN1cnZpdmVkLgorLy8KKy8vIFRoaXMgbWVhbnMg
dGhhdCBmb3IgZXhhbXBsZSBpZiB0aGVyZSBpcyBhIGZpZWxkIHRoYXQgb2Z0ZW4gZ2V0cyBzdG9y
ZWQgdG8gd2l0aCBuZXcgb2JqZWN0cywgdGhlCisvLyBHQyB3aWxsIG5vdCBzZWUgYWxsIG9mIHRo
ZSB2YWx1ZXMgaW4gdGhhdCBmaWVsZCBidXQgaW5zdGVhZCBpdCB3b3VsZCBwb2xsIHRoYXQgZmll
bGQsIGhvcGVmdWxseQorLy8gc29tZXdoYXQgcmFyZWx5LiBXZSBjYW4gbWFrZSBpdCB2ZXJ5IHJh
cmUgYnkgb25seSBpbmZyZXF1ZW50bHkgZG9uYXRpbmcgZnJvbSB0aGUgbWFpbiB0aHJlYWQncwor
Ly8gc2xvdCB2aXNpdG9yIHRvIGFueSBvZiB0aGUgb3RoZXJzLiBTbywgd2Ugd291bGQgb25seSBt
YXJrIHNvbWUgb2YgdGhlIG5ldyBvYmplY3RzIHRoYXQgZ290CisvLyBzdG9yZWQgaW50byB0aGF0
IGZpZWxkLiBJdCBhbHNvIG1lYW5zIHRoYXQgYW55IG9iamVjdCBhbGxvY2F0ZWQgZHVyaW5nIHRo
ZSBHQyB0aGF0IGRpZG4ndCBnZXQKKy8vIHN0b3JlZCBpbnRvIGFueSBvYmplY3QgdGhhdCB3YXMg
bGl2ZSBzaW5jZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIEdDIHdvdWxkIHNpbXBseSBkaXNhcHBlYXIu
IFRoaXMKKy8vIG1lYW5zIG11Y2ggbGVzcyByZXNjYW5uaW5nIHRoYW4gYW55IG9mIHRoZSBvdGhl
ciBwcm9wb3NhbHMuCisvLworLy8gSSByZWFsbHkgd2FudCB0byBnbyB3aXRoIHRoZSBhbGxvY2F0
ZS13aGl0ZSBhcHByb2FjaCwgYnV0IEkgbmVlZCB0byB0aGluayBtb3JlIGRlZXBseSBhYm91dCBp
dAorLy8gYmVmb3JlIEkgY29tbWl0IHRvIGl0LgorCiBjbGFzcyBNYXJrZWRBbGxvY2F0b3Igewog
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKQEAgLTQ2LDkgKzE3Niwx
NiBAQCBwdWJsaWM6CiAKICAgICBNYXJrZWRBbGxvY2F0b3IoSGVhcCosIE1hcmtlZFNwYWNlKiwg
c2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7CiAgICAgdm9pZCBs
YXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwotICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHByZXBh
cmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBzdG9wQWxsb2NhdGluZygpOwogICAgIHZvaWQg
cmVzdW1lQWxsb2NhdGluZygpOworICAgIHZvaWQgYmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rp
b24oKTsKKyAgICB2b2lkIGVuZE1hcmtpbmcoKTsKKyAgICB2b2lkIHNuYXBzaG90Rm9yRWRlbkNv
bGxlY3Rpb24oKTsKKyAgICB2b2lkIHNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICB2
b2lkIHN3ZWVwKCk7CisgICAgdm9pZCBzaHJpbmsoKTsKKyAgICB2b2lkIGFzc2VydFNuYXBzaG90
RW1wdHkoKTsKICAgICBzaXplX3QgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NlbGxTaXpl
OyB9CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uOyB9
CkBAIC03Miw2ICsyMDksNDUgQEAgcHVibGljOgogICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUg
ZGVhZGxpbmUpOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYmxvY2tTaXplRm9yQnl0ZXMoc2l6
ZV90KTsKKyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKGxvd2Vy
Qml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAgICBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0
TmFtZShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZVtpbmRl
eF07IH0gXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0YWxCaXROYW1lKGJsb2NrLT5pbmRl
eCgpKTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgs
IGJvb2wgdmFsdWUpIHsgbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4XSA9IHZhbHVlOyB9IFwKKyAg
ICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
LCBib29sIHZhbHVlKSB7IHNldElzICMjIGNhcGl0YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpLCB2
YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFsQml0TmFt
ZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5h
dG9taWNTZXRBbmRDaGVjayhpbmRleCwgdmFsdWUpOyB9IFwKKyAgICBib29sIGF0b21pY1NldEFu
ZENoZWNrSXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJv
b2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhi
bG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9C
SVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIE1BUktFRF9BTExPQ0FU
T1JfQklUX0FDQ0VTU09SUworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lk
IGZvckVhY2hCaXRWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktF
RF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwK
KyAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBGT1JfRUFDSF9NQVJL
RURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyk7CisjdW5kZWYg
TUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZShjb25zdCBG
dW5jJiBmdW5jKQorICAgIHsKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0so
bG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAgICBmdW5jKG1fICMjIGxvd2Vy
Qml0TmFtZSwgI2NhcGl0YWxCaXROYW1lKTsKKyAgICAgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9D
QVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0spOworI3VuZGVmIE1BUktFRF9B
TExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciog
bmV4dEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEFsbG9jYXRvcjsgfQorICAgIAor
ICAgIC8vIE1hcmtlZFNwYWNlIGNhbGxzIHRoaXMgZHVyaW5nIGluaXQuCisgICAgdm9pZCBzZXRO
ZXh0QWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKSB7IG1fbmV4dEFsbG9jYXRv
ciA9IGFsbG9jYXRvcjsgfQorICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRFbXB0
eUJsb2NrKCk7CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEJsb2NrVG9Td2Vl
cCgpOworICAgIAorICAgIHZvaWQgZHVtcEJpdHMoUHJpbnRTdHJlYW0mKTsKICAgIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CkBAIC04MiwyNSArMjU4LDM3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOwogICAgIHZv
aWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCk7CiAgICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogdHJ5QWxsb2NhdGVCbG9jaygpOworICAgIHZvaWQqIHRyeUFsbG9jYXRlSW4oTWFy
a2VkQmxvY2s6OkhhbmRsZSopOworICAgIHZvaWQqIGFsbG9jYXRlSW4oTWFya2VkQmxvY2s6Okhh
bmRsZSopOwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVk
KCk7Ci0gICAgdm9pZCByZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIAogICAgIHZv
aWQgc2V0RnJlZUxpc3QoY29uc3QgRnJlZUxpc3QmKTsKICAgICAKLSAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBmaWx0ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSopOwotICAgIHZvaWQg
c2V0TmV4dEJsb2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKik7Ci0gICAgCiAgICAgRnJl
ZUxpc3QgbV9mcmVlTGlzdDsKKyAgICAKKyAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+
IG1fYmxvY2tzOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mcmVlQmxvY2tJbmRpY2VzOworICAg
IAorI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTihsb3dlckJpdE5hbWUs
IGNhcGl0YWxCaXROYW1lKSBcCisgICAgRmFzdEJpdFZlY3RvciBtXyAjIyBsb3dlckJpdE5hbWU7
CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRf
REVDTEFSQVRJT04pCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04KKyAg
ICAKKyAgICAvLyBBZnRlciB5b3UgZG8gc29tZXRoaW5nIHRvIGEgYmxvY2sgYmFzZWQgb24gb25l
IG9mIHRoZXNlIGN1cnNvcnMsIHlvdSBjbGVhciB0aGUgYml0IGluIHRoZQorICAgIC8vIGNvcnJl
c3BvbmRpbmcgYml0dmVjdG9yIGFuZCBsZWF2ZSB0aGUgY3Vyc29yIHdoZXJlIGl0IHdhcy4KKyAg
ICBzaXplX3QgbV9hbGxvY2F0aW9uQ3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQg
YmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgYWxsb2NhdGlvbi4KKyAgICBzaXplX3QgbV9l
bXB0eUN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBj
YW5kaWRhdGUgZm9yIGVtcHR5IGFsbG9jYXRpb24gKGFsbG9jYXRpbmcgaW4gZW1wdHkgYmxvY2tz
KS4KKyAgICBzaXplX3QgbV9zbmFwc2hvdEN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBu
ZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGluY3JlbWVudGFsIHN3ZWVwaW5nLgor
ICAgIAogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fY3VycmVudEJsb2NrOwogICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIG1fbGFzdEFjdGl2ZUJsb2NrOwotICAgIE1hcmtlZEJsb2NrOjpIYW5k
bGUqIG1fbmV4dEJsb2NrVG9Td2VlcDsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxv
Y2s6OkhhbmRsZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1f
YmxvY2tMaXN0OwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBC
YXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4gbV9yZXRpcmVkQmxvY2tz
OworCiAgICAgTG9jayBtX2xvY2s7CiAgICAgdW5zaWduZWQgbV9jZWxsU2l6ZTsKICAgICBBbGxv
Y2F0b3JBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKICAgICBIZWFwKiBtX2hlYXA7CiAgICAgTWFy
a2VkU3BhY2UqIG1fbWFya2VkU3BhY2U7CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX25leHRBbGxv
Y2F0b3I7CiB9OwogCiBpbmxpbmUgcHRyZGlmZl90IE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZG
cmVlTGlzdCgpCkBAIC0xNDksMjAgKzMzNywxMiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIE1hcmtl
ZEFsbG9jYXRvcjo6YWxsCiAgICAgcmV0dXJuIGhlYWQ7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZygpCi17Ci0gICAgaWYgKCFtX2xhc3RBY3RpdmVC
bG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJs
b2NrLT5yZXN1bWVBbGxvY2F0aW5nKCk7Ci0gICAgbV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3Rp
dmVCbG9jazsKLSAgICBtX2xhc3RBY3RpdmVCbG9jayA9IDA7Ci19Ci0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCbG9jayhj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIG1fYmxvY2tMaXN0LmZvckVhY2goZnVuY3Rv
cik7Ci0gICAgbV9yZXRpcmVkQmxvY2tzLmZvckVhY2goZnVuY3Rvcik7CisgICAgbV9saXZlLmZv
ckVhY2hTZXRCaXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBm
dW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJ
KHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVy
U2FtcGxlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2LDcgKzM3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBzdGF0aWMgY29uc3QgYm9vbCBjb21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGlj
IHNpemVfdCBiYWxhbmNlOwogCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5
Q3JlYXRlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2Vs
bFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCitNYXJrZWRCbG9j
azo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIHNpemVfdCBjZWxs
U2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcykKIHsKICAgICBpZiAo
Y29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFsYW5jZSsrOwpAQCAtNDgsMjQgKzQ5LDIwIEBA
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmUKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCiAgICAgICAgIHNjcmliYmxl
KGJsb2NrU3BhY2UsIGJsb2NrU2l6ZSk7Ci0gICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYWxs
b2NhdG9yLCBjZWxsU2l6ZSwgYXR0cmlidXRlcywgYmxvY2tTcGFjZSk7CisgICAgcmV0dXJuIG5l
dyBIYW5kbGUoaGVhcCwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOwogfQogCi1N
YXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0
cmlidXRlcywgdm9pZCogYmxvY2tTcGFjZSkKK01hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShI
ZWFwJiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIHZvaWQqIGJsb2NrU3BhY2UpCiAgICAgOiBtX2F0b21zUGVyQ2VsbCgoY2VsbFNp
emUgKyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemUpCiAgICAgLCBtX2VuZEF0b20oYXRvbXNQZXJC
bG9jayAtIG1fYXRvbXNQZXJDZWxsICsgMSkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVz
KQotICAgICwgbV9zdGF0ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCi0g
ICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX3dlYWtTZXQoYWxsb2NhdG9yLT5o
ZWFwKCktPnZtKCksIENlbGxDb250YWluZXIoKSkKKyAgICAsIG1fd2Vha1NldChoZWFwLnZtKCks
IENlbGxDb250YWluZXIoKSkKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1Nw
YWNlKSBNYXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCiAgICAgbV93ZWFrU2V0
LnNldENvbnRhaW5lcigqbV9ibG9jayk7CiAgICAgCiAgICAgaGVhcC5kaWRBbGxvY2F0ZUJsb2Nr
KGJsb2NrU2l6ZSk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsK
LSAgICBBU1NFUlQoYWxsb2NhdG9yKTsKICAgICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxLaW5kICE9
IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0cmlidXRlcy5k
ZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKIH0KQEAgLTc4LDYgKzc1LDcg
QEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgICAgIGlmICghKGJhbGFuY2Ug
JSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxh
bmNlLCAiXG4iKTsKICAgICB9CisgICAgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgIG1fYmxv
Y2stPn5NYXJrZWRCbG9jaygpOwogICAgIGZhc3RBbGlnbmVkRnJlZShtX2Jsb2NrKTsKICAgICBo
ZWFwLmRpZEZyZWVCbG9jayhibG9ja1NpemUpOwpAQCAtODUsNyArODMsNyBAQCBNYXJrZWRCbG9j
azo6SGFuZGxlOjp+SGFuZGxlKCkKIAogTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKFZNJiB2bSwg
SGFuZGxlJiBoYW5kbGUpCiAgICAgOiBtX25lZWRzRGVzdHJ1Y3Rpb24oaGFuZGxlLm5lZWRzRGVz
dHJ1Y3Rpb24oKSkKLSAgICAsIG1fdmVyc2lvbih2bS5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lv
bigpKQorICAgICwgbV92ZXJzaW9uKE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbikKICAgICAsIG1f
aGFuZGxlKGhhbmRsZSkKICAgICAsIG1fdm0oJnZtKQogewpAQCAtMTAxLDIyICs5OSwyMSBAQCBN
YXJrZWRCbG9jazo6TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmCiAgICAgbV9iaWFzZWRNYXJr
Q291bnQgPSBtX21hcmtDb3VudEJpYXM7IC8vIFRoaXMgbWVhbnMgd2UgaGF2ZW4ndCBtYXJrZWQg
YW55dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9j
a1N0YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVj
dGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1v
ZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUg
bmV3bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlN
b2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwg
RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2Ny
aWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0
ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6RmxpcE1vZGUg
ZmxpcE1vZGU+CiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVw
KCkKIHsKLSAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0g
ICAgQVNTRVJUKGJsb2NrU3RhdGUgPT0gTmV3IHx8IGJsb2NrU3RhdGUgPT0gTWFya2VkKTsKLSAg
ICBBU1NFUlQoIShkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBz
d2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIShkZXN0cnVjdGlv
bk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5
KSk7CiAgICAgCi0gICAgYXNzZXJ0RmxpcHBlZCgpOworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKwogICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMt
PmJsb2NrKCk7CiAgICAgCi0gICAgYm9vbCBpc05ld0Jsb2NrID0gYmxvY2tTdGF0ZSA9PSBOZXc7
Ci0gICAgYm9vbCBpc0VtcHR5QmxvY2sgPSAhYmxvY2suaGFzQW55TWFya2VkKCkKLSAgICAgICAg
JiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQKLSAgICAg
ICAgJiYgZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb247Ci0gICAgaWYg
KE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKSAmJiAoaXNOZXdCbG9jayB8fCBpc0VtcHR5Qmxv
Y2spKSB7Ci0gICAgICAgIEFTU0VSVChibG9jay5tX21hcmtzLmlzRW1wdHkoKSk7CisgICAgbV9h
bGxvY2F0b3ItPnNldElzU25hcHNob3QodGhpcywgZmFsc2UpOworICAgIAorICAgIGlmIChPcHRp
b25zOjp1c2VCdW1wQWxsb2NhdG9yKCkKKyAgICAgICAgJiYgZW1wdHlNb2RlID09IElzRW1wdHkK
KyAgICAgICAgJiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0
ZWQpIHsKKyAgICAgICAgQVNTRVJUKGZsaXBNb2RlID09IE5lZWRzRmxpcCk7CiAgICAgICAgIAog
ICAgICAgICBjaGFyKiBzdGFydE9mTGFzdENlbGwgPSBzdGF0aWNfY2FzdDxjaGFyKj4oY2VsbEFs
aWduKGJsb2NrLmF0b21zKCkgKyBtX2VuZEF0b20gLSAxKSk7CiAgICAgICAgIGNoYXIqIHBheWxv
YWRFbmQgPSBzdGFydE9mTGFzdENlbGwgKyBjZWxsU2l6ZSgpOwpAQCAtMTI0LDcgKzEyMSwxMCBA
QCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIGNoYXIq
IHBheWxvYWRCZWdpbiA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oYmxvY2suYXRvbXMoKSArIGZpcnN0
QXRvbSgpKTsKICAgICAgICAgaWYgKHNjcmliYmxlTW9kZSA9PSBTY3JpYmJsZSkKICAgICAgICAg
ICAgIHNjcmliYmxlKHBheWxvYWRCZWdpbiwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7Ci0g
ICAgICAgIG1fc3RhdGUgPSAoKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpID8gRnJlZUxp
c3RlZCA6IE1hcmtlZCk7CisgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0
KQorICAgICAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIHRydWUpOwogICAgICAgICBGcmVlTGlz
dCByZXN1bHQgPSBGcmVlTGlzdDo6YnVtcChwYXlsb2FkRW5kLCBwYXlsb2FkRW5kIC0gcGF5bG9h
ZEJlZ2luKTsKICAgICAgICAgaWYgKGZhbHNlKQogICAgICAgICAgICAgZGF0YUxvZygiUXVpY2ts
eSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKHRoaXMpLCAiIHdpdGggY2VsbCBzaXplICIsIGNl
bGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQs
ICJcbiIpOwpAQCAtMTM3LDE0ICsxMzcsMTQgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3BlY2lhbGl6ZQogICAgIEZyZWVDZWxsKiBoZWFkID0gMDsKICAgICBzaXplX3QgY291bnQg
PSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSAr
PSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBpZiAoYmxvY2tTdGF0ZSA9PSBNYXJrZWQKLSAg
ICAgICAgICAgICYmIChibG9jay5tX21hcmtzLmdldChpKQorICAgICAgICBpZiAoZW1wdHlNb2Rl
ID09IE5vdEVtcHR5CisgICAgICAgICAgICAmJiAoKGZsaXBNb2RlID09IERvZXNOb3ROZWVkRmxp
cCAmJiBibG9jay5tX21hcmtzLmdldChpKSkKICAgICAgICAgICAgICAgICB8fCAobmV3bHlBbGxv
Y2F0ZWRNb2RlID09IEhhc05ld2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChp
KSkpKQogICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAgICAgCiAgICAgICAgIEhlYXBDZWxs
KiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYmxvY2suYXRvbXMoKVtp
XSk7CiAKLSAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYm
IGJsb2NrU3RhdGUgIT0gTmV3KQorICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRz
RGVzdHJ1Y3Rpb24gJiYgZW1wdHlNb2RlID09IE5vdEVtcHR5KQogICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8SlNDZWxsKj4oY2VsbCktPmNhbGxEZXN0cnVjdG9yKCp2bSgpKTsKIAogICAgICAgICBp
ZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkgewpAQCAtMTYzLDIzICsxNjMsMzYgQEAg
RnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgICAgICBtX25ld2x5
QWxsb2NhdGVkID0gbnVsbHB0cjsKIAogICAgIEZyZWVMaXN0IHJlc3VsdCA9IEZyZWVMaXN0Ojps
aXN0KGhlYWQsIGNvdW50ICogY2VsbFNpemUoKSk7Ci0gICAgbV9zdGF0ZSA9IChzd2VlcE1vZGUg
PT0gU3dlZXBUb0ZyZWVMaXN0ID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7Ci0gICAgaWYgKGZhbHNl
KQorICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICBzZXRJc0Zy
ZWVMaXN0ZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9
IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBjZWxsU2l6ZSgpOworICAgICAgICBpZiAoY291
bnQgPT0gY2VsbHNQZXJCbG9jaykKKyAgICAgICAgICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5
KHRoaXMsIHRydWUpOworICAgIH0KKyAgICBpZiAoZmFsc2UpIHsKICAgICAgICAgZGF0YUxvZygi
U2xvd2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIoJmJsb2NrKSwgIiB3aXRoIGNlbGwgc2l6
ZSAiLCBjZWxsU2l6ZSgpLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwg
cmVzdWx0LCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgIEFsbG9jYXRvcjogIiwgUmF3UG9p
bnRlcihtX2FsbG9jYXRvciksICJcbiIpOworICAgICAgICBmb3IgKEZyZWVDZWxsKiBjZWxsID0g
cmVzdWx0LmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorICAgICAgICAgICAgZGF0YUxv
ZygiICAgIENlbGw6ICIsIFJhd1BvaW50ZXIoY2VsbCksICIsIG5leHQ6ICIsIFJhd1BvaW50ZXIo
Y2VsbC0+bmV4dCksICJcbiIpOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBGcmVl
TGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcChTd2VlcE1vZGUgc3dlZXBNb2RlKQogewot
ICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RS
QU5TSVRJT04odGhpcyk7Ci0KICAgICBtX3dlYWtTZXQuc3dlZXAoKTsKIAogICAgIGlmIChzd2Vl
cE1vZGUgPT0gU3dlZXBPbmx5ICYmIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90
TmVlZERlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKIAorICAgIGlmIChV
TkxJS0VMWShtX2lzRnJlZUxpc3RlZCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7CisgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOworICAg
IH0KKyAgICAKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yLT5pc0FsbG9jYXRlZCh0aGlzKSk7Cisg
ICAgCiAgICAgaWYgKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9u
KQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8TmVlZHNEZXN0
cnVjdGlvbj4oc3dlZXBNb2RlKTsKICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJs
ZU1vZGU8RG9lc05vdE5lZWREZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsKQEAgLTE4OSw0NyArMjAy
LDUyIEBAIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUKIEZyZWVMaXN0
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVw
TW9kZSBzd2VlcE1vZGUpCiB7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCi0gICAgICAg
IHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9k
ZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7Ci0gICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3Rh
dGVBbmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9kZSk7
CisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1v
ZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVt
cHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIERvbnRTY3JpYmJsZT4oc3dlZXBNb2RlKTsKIH0KIAog
dGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KLUZyZWVMaXN0IE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVw
TW9kZSkKK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1w
dHlNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0g
ICAgY2FzZSBOZXc6Ci0gICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0
KTsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3Qs
IGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
PigpOwotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAgLy8gSGFwcGVucyB3aGVuIGEgYmxv
Y2sgdHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxsb2NhdGVkLgotICAgICAgICBBU1NFUlQoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAg
IGNhc2UgQWxsb2NhdGVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNlIE1hcmtlZDoKLSAgICAgICAgaWYg
KG1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwg
U3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlB
bGxvY2F0ZWQ+KCkKLSAgICAgICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBT
d2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRl
ZD4oKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0g
U3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtl
ZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05v
dEhhdmVOZXdseUFsbG9jYXRlZD4oKQotICAgICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2Vl
cDxNYXJrZWQsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNO
b3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRnJlZUxpc3QoKTsKKyAgICBpZiAobV9h
bGxvY2F0b3ItPmlzRW1wdHkodGhpcykpCisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVj
dEhhc05ld2x5QWxsb2NhdGVkPElzRW1wdHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2Rl
Pihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2Nh
dGVkPE5vdEVtcHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZT4oc3dlZXBNb2RlKTsK
K30KKwordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwg
RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2Ny
aWJibGVNb2RlIHNjcmliYmxlTW9kZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3
ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sK
KyAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2Vs
ZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhh
c05ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVj
dFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworfQorCit0ZW1wbGF0ZTxNYXJrZWRC
bG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1
Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2Rl
LCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRN
b2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTd2Vl
cE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVw
VG9GcmVlTGlzdCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0RmxpcE1vZGU8ZW1w
dHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBu
ZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0RmxpcE1v
ZGU8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBu
ZXdseUFsbG9jYXRlZE1vZGU+KCk7Cit9CisKK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6
OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2Vl
cE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5
QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCkKK3sKKyAgICBpZiAobmVlZHNGbGlw
KCkpCisgICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPGVtcHR5TW9kZSwgU3dlZXBUb0Zy
ZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2Rl
LCBOZWVkc0ZsaXA+KCk7CisgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBT
d2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9j
YXRlZE1vZGUsIERvZXNOb3ROZWVkRmxpcD4oKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjp1bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKQogewotICAgIGZsaXBJZk5lY2Vzc2Fy
eSgpOwotICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0g
ICAgCi0gICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAgICBtX3N0
YXRlID0gTWFya2VkOworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNGcmVlTGlzdGVkKTsKKyAgICBt
X2lzRnJlZUxpc3RlZCA9IGZhbHNlOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNl
dElzRnJlZUxpc3RlZCgpCit7CisgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgZmFs
c2UpOworICAgIG1faXNGcmVlTGlzdGVkID0gdHJ1ZTsKIH0KIAogY2xhc3MgU2V0TmV3bHlBbGxv
Y2F0ZWRGdW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7CkBAIC0yNTIs
MjYgKzI3MCwxNSBAQCBwcml2YXRlOgogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BB
bGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKIHsKLSAgICBmbGlwSWZOZWNlc3Nh
cnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOworICAgIEFT
U0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAgIGlmIChtX3N0YXRl
ID09IE1hcmtlZCkgewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4gdGhlIE1hcmtlZCBz
dGF0ZSB0aGVuIHdlIGtub3cgdGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAgLy8gY29uZGl0aW9u
cyBob2xkczoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90IHVzZWQgZm9yIGFs
bG9jYXRpb24gZHVyaW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xlLgotICAgICAgICAv
LyAgIEl0IG1heSBoYXZlIGRlYWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25vdyB0aGVtIHRvIGJl
IGRlYWQgYnkgdGhlCi0gICAgICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1hcmsgYml0cyBhcmUg
dW5zZXQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQgYWxyZWFkeSBkb25l
IHN0b3BBbGxvY2F0aW5nKCksIGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAgICAgICAgLy8gICBo
ZWFwIGl0ZXJhdGlvbiwgYW5kIHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAgIC8vIEhlbmNlIGlm
IHRoZSBibG9jayBpcyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJrZWQuCisgICAgaWYg
KCFpc0ZyZWVMaXN0ZWQoKSkgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgZWl0aGVy
IGRpZG4ndCB1c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24gc2luY2UgbGFzdCBH
QywKKyAgICAgICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5n
KCkgYmVmb3JlLgogICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZy
ZWVMaXN0ZWQpOwotICAgIAogICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVyZW50IHN0YXRlIGZv
ciBIZWFwIGludHJvc3BlY3Rpb24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxsb2NhdGVkIGZyb20g
b3VyIGZyZWUgbGlzdCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQgYW5vdGhl
cgogICAgIC8vIHdheSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApAQCAtMjkwLDcgKzI5
Nyw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAgICAg
ICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAgICAgIH0pOwogICAgIAotICAgIG1f
c3RhdGUgPSBNYXJrZWQ7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCkBAIC0zMDQsMTQgKzMx
MSwxMSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpCiAKIEZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcoKQogewotICAgIGZsaXBJ
Zk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7
Ci0KLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOworICAgIEFTU0VSVCghYWxsb2NhdG9y
KCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKIAog
ICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAvLyBXZSBkaWRuJ3QgaGF2ZSB0
byBjcmVhdGUgYSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAuIFRoYXQgbWVhbnMgd2Ugd2VyZSBh
bHJlYWR5IE1hcmtlZAotICAgICAgICAvLyB3aGVuIHdlIGxhc3Qgc3RvcHBlZCBhbGxvY2F0aW9u
LCBzbyByZXR1cm4gYW4gZW1wdHkgZnJlZSBsaXN0IGFuZCBzdGF5IGluIHRoZSBNYXJrZWQgc3Rh
dGUuCisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVkIHRoZSBi
bG9jayB3aGVuIHdlIHN0b3BwZWQgYWxsb2NhdGlvbi4KICAgICAgICAgcmV0dXJuIEZyZWVMaXN0
KCk7CiAgICAgfQogCkBAIC0zNDUsNDAgKzM0OSwyOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmZvckVhY2hGcmVlQ2VsCiAgICAgfQogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZO
ZWNlc3NhcnkoKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSh2bSgpLT5oZWFwLm9iamVjdFNwYWNl
KCkudmVyc2lvbigpKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNl
c3NhcnkoKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KCk7Ci19Ci0KLXZvaWQgTWFy
a2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3coKQotewotICAgIEFTU0VSVChuZWVkc0ZsaXAo
KSk7Ci0gICAgQVNTRVJUKCF2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOwot
ICAgIGNsZWFyTWFya3MoKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5
RHVyaW5nTWFya2luZ1Nsb3coKQordm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KEhl
YXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVjdFNw
YWNlKCkuaXNNYXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAg
aWYgKG5lZWRzRmxpcCgpKQotICAgICAgICBjbGVhck1hcmtzKCk7CisgICAgaWYgKG5lZWRzRmxp
cChoZWFwVmVyc2lvbikpIHsKKyAgICAgICAgY2xlYXJNYXJrcyhoZWFwVmVyc2lvbik7CisgICAg
ICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0
IGluIHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRB
bmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgfQogfQogCiB2
b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKKyAgICBjbGVhck1hcmtzKHZtKCktPmhl
YXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpjbGVh
ck1hcmtzKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQorewogICAgIG1fbWFya3MuY2xlYXJBbGwo
KTsKICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgdHJ1
ZSBhdCB0aGUgZW5kIG9mIHRoZSBtYXJrIHBoYXNlLiBXZSBzZXQgaXQgbm93IHRvCi0gICAgLy8g
YXZvaWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4KLSAgICBoYW5kbGUoKS5tX3N0YXRl
ID0gTWFya2VkOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgbV92ZXJzaW9uID0g
dm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKKyAgICBtX3ZlcnNpb24gPSBoZWFw
VmVyc2lvbjsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTM5OCwzMSArMzkwLDM2IEBA
IGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkKICAgICByZXR1cm4gbV9ibG9j
ay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6d2lsbFJlbW92
ZUJsb2NrKCkKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHApCiB7Ci0g
ICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgcmV0dXJuIGlzTWFya2VkKHZtKCktPmhlYXAub2Jq
ZWN0U3BhY2UoKS52ZXJzaW9uKCksIHApOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmRpZENvbnN1bWVGcmVlTGlzdCgpCitib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAg
IAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOworICAgIHJldHVybiBpc01hcmtl
ZE9yTmV3bHlBbGxvY2F0ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2Vs
bCk7Cit9CiAKLSAgICBtX3N0YXRlID0gQWxsb2NhdGVkOworYm9vbCBNYXJrZWRCbG9jazo6aXNN
YXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoreworICAgIHJldHVy
biBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNp
b24oKSwgY2VsbCk7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZy
ZWVMaXN0KCkKK3sKKyAgICBBU1NFUlQoaXNGcmVlTGlzdGVkKCkpOworICAgIG1faXNGcmVlTGlz
dGVkID0gZmFsc2U7CisgICAgYWxsb2NhdG9yKCktPnNldElzQWxsb2NhdGVkKHRoaXMsIHRydWUp
OwogfQogCiBzaXplX3QgTWFya2VkQmxvY2s6Om1hcmtDb3VudCgpCiB7Ci0gICAgZmxpcElmTmVj
ZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fbWFya3MuY291bnQoKTsKKyAgICByZXR1cm4gbmVlZHNG
bGlwKCkgPyAwIDogbV9tYXJrcy5jb3VudCgpOwogfQogCiBib29sIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzRW1wdHkoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0
YXRlID09IE1hcmtlZCAmJiAhYmxvY2soKS5oYXNBbnlNYXJrZWQoKSAmJiBtX3dlYWtTZXQuaXNF
bXB0eSgpICYmICghbV9uZXdseUFsbG9jYXRlZCB8fCBtX25ld2x5QWxsb2NhdGVkLT5pc0VtcHR5
KCkpOworICAgIHJldHVybiBtX2FsbG9jYXRvci0+aXNFbXB0eSh0aGlzKTsKIH0KIAogdm9pZCBN
YXJrZWRCbG9jazo6Y2xlYXJIYXNBbnlNYXJrZWQoKQpAQCAtNDMyLDMzICs0MjksNDQgQEAgdm9p
ZCBNYXJrZWRCbG9jazo6Y2xlYXJIYXNBbnlNYXJrZWQoKQogCiB2b2lkIE1hcmtlZEJsb2NrOjpu
b3RlTWFya2VkU2xvdygpCiB7Ci0gICAgaGFuZGxlKCkubV9hbGxvY2F0b3ItPnJldGlyZSgmaGFu
ZGxlKCkpOworICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFy
a2luZ1JldGlyZWQoJmhhbmRsZSgpLCB0cnVlKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgSlNDCit2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21BbGxvY2F0b3IoKQoreworICAgIGlm
ICghbV9hbGxvY2F0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2FsbG9jYXRvci0+
cmVtb3ZlQmxvY2sodGhpcyk7Cit9CiAKLW5hbWVzcGFjZSBXVEYgewordm9pZCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwg
c2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVCghbV9hbGxvY2F0b3IpOworICAgIAorICAg
IG1faW5kZXggPSBpbmRleDsKKyAgICBtX2FsbG9jYXRvciA9IGFsbG9jYXRvcjsKK30KIAotdXNp
bmcgbmFtZXNwYWNlIEpTQzsKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJv
bUFsbG9jYXRvcigpCit7CisgICAgQVNTRVJUKG1faW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBt
X2luZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKyAgICBtX2FsbG9j
YXRvciA9IG51bGxwdHI7Cit9CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRlKQorYm9vbCBNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgc3dpdGNoIChibG9j
a1N0YXRlKSB7Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TmV3OgotICAgICAgICBvdXQucHJpbnQo
Ik5ldyIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6RnJlZUxpc3Rl
ZDoKLSAgICAgICAgb3V0LnByaW50KCJGcmVlTGlzdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIE1hcmtlZEJsb2NrOjpBbGxvY2F0ZWQ6Ci0gICAgICAgIG91dC5wcmludCgiQWxsb2Nh
dGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6Ci0g
ICAgICAgIG91dC5wcmludCgiTWFya2VkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gaXNMaXZlKHZtKCktPmhl
YXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwogfQogCi19IC8vIG5hbWVzcGFjZSBX
VEYKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQor
eworICAgIHJldHVybiBpc0xpdmVDZWxsKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9u
KCksIHApOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwyMCAr
NDQsNiBAQCBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwog
dHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKIAotLy8gU2V0IHRvIGxvZyBzdGF0ZSB0cmFu
c2l0aW9ucyBvZiBibG9ja3MuCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJ
T05TIDAKLQotI2lmIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05TCi0jZGVmaW5lIEhF
QVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oaGFuZGxlKSBkbyB7ICAgICAgICAgICAgXAot
ICAgICAgICBkYXRhTG9nRiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgICAgICIlczolZCAlczogYmxvY2sgJXMgPSAlcCwgJWRcbiIsICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVO
Q1RJT05fXywgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgI2hhbmRsZSwgJihoYW5k
bGUpLT5ibG9jaygpLCAoaGFuZGxlKS0+bV9zdGF0ZSk7ICAgIFwKLSAgICB9IHdoaWxlIChmYWxz
ZSkKLSNlbHNlCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oaGFuZGxl
KSAoKHZvaWQpMCkKLSNlbmRpZgotCiAvLyBBIG1hcmtlZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25l
ZCBjb250YWluZXIgZm9yIGhlYXAtYWxsb2NhdGVkIG9iamVjdHMuCiAvLyBPYmplY3RzIGFyZSBh
bGxvY2F0ZWQgd2l0aGluIGNlbGxzIG9mIHRoZSBtYXJrZWQgYmxvY2suIEZvciBhIGdpdmVuCiAv
LyBtYXJrZWQgYmxvY2ssIGFsbCBjZWxscyBoYXZlIHRoZSBzYW1lIHNpemUuIE9iamVjdHMgc21h
bGxlciB0aGFuIHRoZQpAQCAtNzYsOCArNjIsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBIYW5kbGU7CiBwdWJsaWM6Ci0gICAgZW51bSBCbG9ja1N0YXRlIDogdWludDhf
dCB7IE5ldywgRnJlZUxpc3RlZCwgQWxsb2NhdGVkLCBNYXJrZWQgfTsKLSAgICAgICAgCiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBhdG9tU2l6ZSA9IDE2OyAvLyBieXRlcwogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgYmxvY2tTaXplID0gMTYgKiBLQjsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IGJsb2NrTWFzayA9IH4oYmxvY2tTaXplIC0gMSk7IC8vIGJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93
ZXIgb2YgdHdvLgpAQCAtODYsMTIgKzcwLDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpY19hc3Nl
cnQoIShNYXJrZWRCbG9jazo6YXRvbVNpemUgJiAoTWFya2VkQmxvY2s6OmF0b21TaXplIC0gMSkp
LCAiTWFya2VkQmxvY2s6OmF0b21TaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7CiAgICAg
c3RhdGljX2Fzc2VydCghKE1hcmtlZEJsb2NrOjpibG9ja1NpemUgJiAoTWFya2VkQmxvY2s6OmJs
b2NrU2l6ZSAtIDEpKSwgIk1hcmtlZEJsb2NrOjpibG9ja1NpemUgbXVzdCBiZSBhIHBvd2VyIG9m
IHR3by4iKTsKLQorICAgIAogICAgIHN0cnVjdCBWb2lkRnVuY3RvciB7CiAgICAgICAgIHR5cGVk
ZWYgdm9pZCBSZXR1cm5UeXBlOwogICAgICAgICB2b2lkIHJldHVyblZhbHVlKCkgeyB9CiAgICAg
fTsKLQorICAgIAogICAgIGNsYXNzIENvdW50RnVuY3RvciB7CiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIHNpemVfdCBSZXR1cm5UeXBlOwpAQCAtMTMwLDYgKzExNCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIFZNKiB2bSgpIGNvbnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAg
ICAgICAgICAgICAKKyAgICAgICAgLy8gU3dlZXBpbmcgZW5zdXJlcyB0aGF0IGRlc3RydWN0b3Jz
IGdldCBjYWxsZWQgYW5kIHJlbW92ZXMgdGhlIGJsb2NrIGZyb20gdGhlIHNuYXBzaG90LgorICAg
ICAgICAvLyBTd2VlcGluZyB0byBmcmVlIGxpc3QgYWxzbyByZW1vdmVzIHRoZSBibG9jayBmcm9t
IHRoZSBlbXB0eSBzZXQsIGlmIGl0IHdhcyBpbiB0aGF0IHNldC4KKyAgICAgICAgLy8gU3dlZXBp
bmcgb25seSBtYXkgYWRkIHRoaXMgYmxvY2sgdG8gdGhlIGVtcHR5IHNldCwgaWYgdGhlIGJsb2Nr
IGlzIGZvdW5kIHRvIGJlIGVtcHR5LgorICAgICAgICAvLworICAgICAgICAvLyBOb3RlIHRoYXQg
eW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGVtcHR5IGJpdCByZWZsZWN0cyByZWFsaXR5
LiBJZiBpdCdzIG5vdCBzZXQKKyAgICAgICAgLy8gYW5kIHRoZSBibG9jayBpcyBmcmVzaGx5IGNy
ZWF0ZWQsIHRoZW4gd2UnbGwgbWFrZSB0aGUgbWlzdGFrZSBvZiBydW5uaW5nIGRlc3RydWN0b3Jz
IGluCisgICAgICAgIC8vIHRoZSBibG9jay4gSWYgaXQncyBub3Qgc2V0IGFuZCB0aGUgYmxvY2sg
aGFzIG5vdGhpbmcgbWFya2VkLCB0aGVuIHdlJ2xsIG1ha2UgdGhlCisgICAgICAgIC8vIG1pc3Rh
a2Ugb2YgbWFraW5nIGEgcG9wIGZyZWVsaXN0IHJhdGhlciB0aGFuIGEgYnVtcCBmcmVlbGlzdC4K
ICAgICAgICAgZW51bSBTd2VlcE1vZGUgeyBTd2VlcE9ubHksIFN3ZWVwVG9GcmVlTGlzdCB9Owog
ICAgICAgICBGcmVlTGlzdCBzd2VlcChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAK
QEAgLTE1Myw4ICsxNDUsNiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFuZCB3YXMgc3VjY2Vzc2Z1
bGx5IGNsZWFyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAgICAgICAgYm9vbCBjbGVhck5ld2x5
QWxsb2NhdGVkKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgdm9pZCBmbGlwRm9yRWRlbkNvbGxl
Y3Rpb24oKTsKLSAgICAgICAgICAgIAogICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAgICAg
ICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OwogICAgICAg
ICBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb24oKSBjb25zdDsKQEAgLTE2NCw5ICsxNTQsMTUg
QEAgcHVibGljOgogICAgICAgICBzaXplX3QgbWFya0NvdW50KCk7CiAgICAgICAgIHNpemVfdCBz
aXplKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlKEhlYXBWZXJz
aW9uLCBjb25zdCBIZWFwQ2VsbCopOworICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhl
YXBWZXJzaW9uLCBjb25zdCB2b2lkKik7CisKICAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSGVh
cENlbGwqKTsKICAgICAgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKKwogICAgICAg
ICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOworICAgICAg
ICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENl
bGwqKTsKKyAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWRDb25jdXJyZW50bHko
SGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgICAgICAKICAgICAgICAgYm9v
bCBpc05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBzZXROZXdseUFs
bG9jYXRlZChjb25zdCB2b2lkKik7CkBAIC0xNzQsMzEgKzE3MCwyNSBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgICAgICBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4g
ISFtX25ld2x5QWxsb2NhdGVkOyB9CiAgICAgICAgICAgICAKLSAgICAgICAgYm9vbCBpc0FsbG9j
YXRlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7Ci0gICAgICAgIGJv
b2wgaXNGcmVlTGlzdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgbmVlZHNTd2VlcGluZygpIGNv
bnN0OwotICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwotCiAgICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVu
Y3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3Rh
dHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1
bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVy
YXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERl
YWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgICAgIAogICAgICAgICBib29sIG5lZWRz
RmxpcCgpOwotICAgICAgICAgICAgCi0gICAgICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5n
TWFya2luZyhIZWFwVmVyc2lvbik7Ci0gICAgICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KEhlYXBW
ZXJzaW9uKTsKLSAgICAgICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIAor
ICAgICAgICAKICAgICAgICAgdm9pZCBhc3NlcnRGbGlwcGVkKCk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgYm9vbCBpc09uQmxvY2tzVG9Td2VlcCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPbkJsb2Nr
c1RvU3dlZXA7IH0KLSAgICAgICAgdm9pZCBzZXRJc09uQmxvY2tzVG9Td2VlcChib29sIHZhbHVl
KSB7IG1faXNPbkJsb2Nrc1RvU3dlZXAgPSB2YWx1ZTsgfQorICAgICAgICBib29sIGlzRnJlZUxp
c3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGcmVlTGlzdGVkOyB9CisgICAgICAgIAorICAgICAg
ICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAgIAorICAg
ICAgICB2b2lkIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQg
ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGluZGV4KTsKKyAgICAg
ICAgdm9pZCBkaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAgICAgICAgIAotICAgICAgICBCbG9j
a1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQotICAgICAgICAgICAgCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgSGFuZGxlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXpl
X3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmLCB2b2lkKik7CisgICAgICAg
IEhhbmRsZShIZWFwJiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVz
Jiwgdm9pZCopOwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERlc3RydWN0aW9uTW9k
ZT4KICAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGUoU3dlZXBN
b2RlID0gU3dlZXBPbmx5KTsKQEAgLTIwNiwxNiArMTk2LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
ZW51bSBTY3JpYmJsZU1vZGUgeyBEb250U2NyaWJibGUsIFNjcmliYmxlIH07CiAgICAgICAgICAg
ICAKICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGU+Ci0gICAg
ICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGUoU3dlZXBNb2Rl
ID0gU3dlZXBPbmx5KTsKKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1v
ZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgICAgIAorICAgICAgICBlbnVtIEVt
cHR5TW9kZSB7IElzRW1wdHksIE5vdEVtcHR5IH07CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0
ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgorICAgICAgICBGcmVl
TGlzdCBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSA9IFN3ZWVw
T25seSk7CisgICAgICAgIAogICAgICAgICBlbnVtIE5ld2x5QWxsb2NhdGVkTW9kZSB7IEhhc05l
d2x5QWxsb2NhdGVkLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkIH07Ci0gICAgICAgICAgICAK
LSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUs
IFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICAKKyAgICAgICAgdGVt
cGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxv
Y2F0ZWRNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZShT
d2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlN
b2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9j
YXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0RmxpcE1vZGUoKTsK
KyAgICAgICAgCisgICAgICAgIGVudW0gRmxpcE1vZGUgeyBOZWVkc0ZsaXAsIERvZXNOb3ROZWVk
RmxpcCB9OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBTd2VlcE1vZGUs
IERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGUsIEZsaXBN
b2RlPgogICAgICAgICBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVwKCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICAgICAgdm9pZCBmb3JFYWNoRnJl
ZUNlbGwoY29uc3QgRnJlZUxpc3QmLCBjb25zdCBGdW5jJik7Ci0gICAgICAgICAgICAKKyAgICAg
ICAgCisgICAgICAgIHZvaWQgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIAogICAgICAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBtX3ByZXY7CiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IG1fbmV4dDsKICAgICAgICAgICAgIApAQCAtMjI1LDE2ICsyMzAsMTYgQEAgcHVibGljOgogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+IG1fbmV3bHlB
bGxvY2F0ZWQ7CiAgICAgICAgICAgICAKICAgICAgICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0
dHJpYnV0ZXM7Ci0gICAgICAgIEJsb2NrU3RhdGUgbV9zdGF0ZTsKLSAgICAgICAgYm9vbCBtX2lz
T25CbG9ja3NUb1N3ZWVwIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2lzRnJlZUxpc3RlZCB7
IGZhbHNlIH07CiAgICAgICAgICAgICAKLSAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9j
YXRvcjsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvciB7IG51bGxwdHIgfTsK
KyAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OwogICAgICAgICAgICAgCiAgICAgICAg
IE1hcmtlZEJsb2NrKiBtX2Jsb2NrOwogICAgIH07CiAgICAgICAgIAotICAgIHN0YXRpYyBNYXJr
ZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVf
dCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOworICAgIHN0YXRpYyBNYXJr
ZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3Qg
QWxsb2NhdG9yQXR0cmlidXRlcyYpOwogICAgICAgICAKICAgICBIYW5kbGUmIGhhbmRsZSgpOwog
ICAgICAgICAKQEAgLTI0OCwzNCArMjUzLDM3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbWFya0Nv
dW50KCk7CiAKICAgICBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKKyAgICBib29sIGlzTWFy
a2VkKEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7CisgICAgYm9vbCBpc01hcmtlZENvbmN1cnJl
bnRseShIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOwogICAgIGJvb2wgdGVzdEFuZFNldE1hcmtl
ZChjb25zdCB2b2lkKik7CiAgICAgICAgIAogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2Nh
dGVkKGNvbnN0IEhlYXBDZWxsKik7Ci0gICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWRE
dXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7Ci0KKyAgICBi
b29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwq
KTsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZENvbmN1cnJlbnRseShIZWFwVmVy
c2lvbiwgY29uc3QgSGVhcENlbGwqKTsKKyAgICAKICAgICBib29sIGlzQXRvbShjb25zdCB2b2lk
Kik7CiAgICAgdm9pZCBzZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgIHZvaWQgY2xlYXJNYXJr
ZWQoY29uc3Qgdm9pZCopOwotICAgICAgICAKKyAgICAKICAgICBzaXplX3QgY2VsbFNpemUoKTsK
ICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7Ci0KKyAg
ICAKICAgICBib29sIGhhc0FueU1hcmtlZCgpIGNvbnN0OwogICAgIHZvaWQgbm90ZU1hcmtlZCgp
OwogICAgICAgICAKICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7Ci0KKyAgICAKICAgICBib29sIG5l
ZWRzRmxpcChIZWFwVmVyc2lvbik7CiAgICAgYm9vbCBuZWVkc0ZsaXAoKTsKLSAgICAgICAgCi0g
ICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uKTsKLSAgICB2
b2lkIGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3Nh
cnkoKTsKKyAgICAKKyAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKTsKICAgICAgICAg
CiAgICAgdm9pZCBhc3NlcnRGbGlwcGVkKCk7CiAgICAgICAgIAogICAgIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNEZXN0cnVjdGlvbjsgfQotICAgICAgICAK
KyAgICAKKyAgICBpbmxpbmUgdm9pZCByZXNldFZlcnNpb24oKTsKKyAgICAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsK
IApAQCAtMjg0LDkgKzI5Miw5IEBAIHByaXZhdGU6CiAgICAgTWFya2VkQmxvY2soVk0mLCBIYW5k
bGUmKTsKICAgICBBdG9tKiBhdG9tcygpOwogICAgICAgICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vz
c2FyeUR1cmluZ01hcmtpbmdTbG93KCk7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlTbG93KCk7
CisgICAgdm9pZCBhYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJN
YXJrcygpOworICAgIHZvaWQgY2xlYXJNYXJrcyhIZWFwVmVyc2lvbik7CiAgICAgdm9pZCBjbGVh
ckhhc0FueU1hcmtlZCgpOwogICAgIAogICAgIHZvaWQgbm90ZU1hcmtlZFNsb3coKTsKQEAgLTQ2
OSw0MCArNDc3LDEzIEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpuZWVkc0ZsaXAoSGVhcFYK
ICAgICByZXR1cm4gaGVhcFZlcnNpb24gIT0gbV92ZXJzaW9uOwogfQogCi1pbmxpbmUgdm9pZCBN
YXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQoraW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9u
KQogewogICAgIGlmIChVTkxJS0VMWShuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKSkKLSAgICAgICAg
ZmxpcElmTmVjZXNzYXJ5U2xvdygpOwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Zmxp
cElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAg
ICBpZiAoVU5MSUtFTFkobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkpCi0gICAgICAgIGZsaXBJZk5l
Y2Vzc2FyeUR1cmluZ01hcmtpbmdTbG93KCk7CisgICAgICAgIGFib3V0VG9NYXJrU2xvdyhoZWFw
VmVyc2lvbik7CiAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiB9CiAKLWlubGluZSB2b2lkIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lv
bikKLXsKLSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7Ci19Ci0KLWlu
bGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtp
bmcoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2soKS5mbGlwSWZOZWNlc3Nh
cnlEdXJpbmdNYXJraW5nKGhlYXBWZXJzaW9uKTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZmxpcEZvckVkZW5Db2xsZWN0aW9uKCkKLXsKLSAgICBhc3NlcnRGbGlwcGVk
KCk7Ci0gICAgICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7
Ci0gICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgIT0gTmV3ICYmIG1fc3RhdGUgIT0gRnJlZUxpc3Rl
ZCk7Ci0gICAgCi0gICAgbV9zdGF0ZSA9IE1hcmtlZDsKLX0KLQogI2lmIEFTU0VSVF9ESVNBQkxF
RAogaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmFzc2VydEZsaXBwZWQoKQogewpAQCAtNTE0LDkg
KzQ5NSwxNiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjphc3NlcnRGCiAgICAg
YmxvY2soKS5hc3NlcnRGbGlwcGVkKCk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpp
c01hcmtlZChjb25zdCB2b2lkKiBwKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2Vk
KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKiBwKQogewotICAgIGFzc2VydEZs
aXBwZWQoKTsKKyAgICByZXR1cm4gbmVlZHNGbGlwKGhlYXBWZXJzaW9uKSA/IGZhbHNlIDogbV9t
YXJrcy5nZXQoYXRvbU51bWJlcihwKSk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpp
c01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCog
cCkKK3sKKyAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAgIHJldHVybiBtX21hcmtzLmdldChh
dG9tTnVtYmVyKHApKTsKIH0KIApAQCAtNTUwLDQzICs1MzgsMjQgQEAgaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5l
IGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0
IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBj
ZWxsKQogewotICAgIEFTU0VSVChtX3N0YXRlID09IE1hcmtlZCk7Ci0gICAgcmV0dXJuIG1fYmxv
Y2stPmlzTWFya2VkKGNlbGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0
ZWQoY2VsbCkpOworICAgIHJldHVybiBtX2Jsb2NrLT5pc01hcmtlZCh2ZXJzaW9uLCBjZWxsKSB8
fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAotaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFw
Q2VsbCogY2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFw
Q2VsbCogY2VsbCkKIHsKLSAgICBBU1NFUlQobV9oYW5kbGUubV9zdGF0ZSA9PSBNYXJrZWQpOwot
ICAgIHJldHVybiBpc01hcmtlZChjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAm
JiBtX2hhbmRsZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKKyAgICByZXR1cm4gbV9ibG9jay0+
aXNNYXJrZWRDb25jdXJyZW50bHkodmVyc2lvbiwgY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQg
JiYgaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2Nr
Ojppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24g
aGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBI
ZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2Vs
bCk7CisgICAgcmV0dXJuIGlzTWFya2VkKHZlcnNpb24sIGNlbGwpIHx8IChtX2hhbmRsZS5tX25l
d2x5QWxsb2NhdGVkICYmIG1faGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQogCi1p
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENlbGwqIGNl
bGwpCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkQ29u
Y3VycmVudGx5KEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewot
ICAgIGFzc2VydEZsaXBwZWQoKTsKLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBjYXNlIEFs
bG9jYXRlZDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIE1hcmtlZDoKLSAgICAg
ICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKLQotICAgIGNhc2UgTmV3
OgotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc01hcmtlZENv
bmN1cnJlbnRseSh2ZXJzaW9uLCBjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAm
JiBtX2hhbmRsZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAogaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQpAQCAtNjAzLDEzICs1NzIsNiBAQCBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9p
ZCogcCkKLXsKLSAgICBpZiAoIW1fYmxvY2stPmlzQXRvbShwKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7
Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEl0ZXJhdGlvblN0YXR1
cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewpAQCAtNjIyLDYyICs1ODQsNiBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJs
b2NrOjpIYW5kCiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRC
bG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsK
LSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRy
aWJ1dGVzLmNlbGxLaW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1f
ZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBIZWFwQ2VsbCogY2VsbCA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOwot
ICAgICAgICBpZiAoIWlzTGl2ZShjZWxsKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJldHVy
biBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4KLWlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFj
aERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5
KCk7Ci0gICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKLSAg
ICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9t
c1BlckNlbGwpIHsKLSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0
cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKGlzTGl2ZShj
ZWxsKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmdW5jdG9yKGNlbGws
IGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc1N3ZWVw
aW5nKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlz
KS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwotfQot
Ci1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0FsbG9jYXRlZCgpIGNvbnN0Ci17
Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vz
c2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IEFsbG9jYXRlZDsKLX0KLQotaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nh
c3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBy
ZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmlzRnJlZUxpc3RlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9j
azo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRl
ID09IEZyZWVMaXN0ZWQ7Ci19Ci0KIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpoYXNBbnlNYXJr
ZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2JpYXNlZE1hcmtDb3VudCAhPSBtX21hcmtDb3Vu
dEJpYXM7CkBAIC03MTEsOCArNjE3LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
SlNDOjpNYXJrZQogICAgIHR5cGVkZWYgTWFya2VkQmxvY2tIYXNoIEhhc2g7CiB9OwogCi12b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6QmxvY2tT
dGF0ZSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gTWFya2VkQmxvY2tfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVz
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVh
cFZlcnNpb24gdmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCit7CisgICAgQVNTRVJUKCFp
c0ZyZWVMaXN0ZWQoKSk7CisgICAgCisgICAgaWYgKFVOTElLRUxZKGhhc0FueU5ld2x5QWxsb2Nh
dGVkKCkpKSB7CisgICAgICAgIGlmIChpc05ld2x5QWxsb2NhdGVkKGNlbGwpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRo
aXMtPmJsb2NrKCk7CisgICAgCisgICAgaWYgKGFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlz
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgaWYgKGJsb2NrLm5lZWRzRmxpcCh2
ZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGJsb2NrLmlzTWFy
a2VkKGNlbGwpOworfQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVD
ZWxsKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKCFtX2Js
b2NrLT5pc0F0b20ocCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNMaXZl
KHZlcnNpb24sIHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KK2lubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6
OkhhbmRsZTo6Zm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAg
SGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAgICBmb3IgKHNp
emVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwp
IHsKKyAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2Vs
bCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKKyAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9
PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lOworICAgIH0KKyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CitpbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQoreworICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7
CisgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1f
YXRvbXNQZXJDZWxsKSB7CisgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2Fz
dF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7CisgICAgICAgIGlmIChpc0xp
dmUoY2VsbCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZnVuY3Rvcihj
ZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpEb25lOworICAgIH0KKyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKK30KKworaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OnJlc2V0VmVyc2lvbigp
Cit7CisgICAgbV92ZXJzaW9uID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5j
bHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKQEAgLTE5
NSw2ICsxOTYsMTkgQEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwog
ICAgICAgICB9KTsKKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIHByZXZpb3VzID0gbnVsbHB0
cjsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYg
YWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgLy8gV2UgY2FuIHNl
dCB0aGlzIGluIGFueSBvcmRlci4gVGhlIHBvaW50IGlzIGp1c3QgdGhhdCB3ZSB3YW50IHRvIGJl
IGFibGUgdG8KKyAgICAgICAgICAgIC8vIGN1cnNvciBvdmVyIGFsbG9jYXRvcnMuCisgICAgICAg
ICAgICBhbGxvY2F0b3Iuc2V0TmV4dEFsbG9jYXRvcihwcmV2aW91cyk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHByZXZpb3VzID0gJmFsbG9jYXRvcjsKKyAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKKyAgICBtX2ZpcnN0QWxsb2Nh
dG9yID0gcHJldmlvdXM7CisgICAgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBwcmV2
aW91czsKIH0KIAogTWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSgpCkBAIC0yMjAsMTUgKzIzNCwy
MSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAKIHZvaWQqIE1h
cmtlZFNwYWNlOjphbGxvY2F0ZShTdWJzcGFjZSYgc3Vic3BhY2UsIHNpemVfdCBieXRlcykKIHsK
LSAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3Bh
Y2UsIGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAgICBp
ZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5
dGVzKSkgeworICAgICAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7Cisg
ICAgICAgIC8vZGF0YUxvZygiQWxsb2NhdGVkICIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIHJldHVybiBhbGxvY2F0ZUxhcmdl
KHN1YnNwYWNlLCBieXRlcyk7CiB9CiAKIHZvaWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZShT
dWJzcGFjZSYgc3Vic3BhY2UsIHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAoTWFya2VkQWxsb2Nh
dG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkKLSAgICAgICAg
cmV0dXJuIGFsbG9jYXRvci0+dHJ5QWxsb2NhdGUoKTsKKyAgICBpZiAoTWFya2VkQWxsb2NhdG9y
KiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkgeworICAgICAgICB2
b2lkKiByZXN1bHQgPSBhbGxvY2F0b3ItPnRyeUFsbG9jYXRlKCk7CisgICAgICAgIC8vZGF0YUxv
ZygiVHJ5LWFsbG9jYXRlZCAiLCBSYXdQb2ludGVyKHJlc3VsdCksICJcbiIpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KICAgICByZXR1cm4gdHJ5QWxsb2NhdGVMYXJnZShzdWJzcGFj
ZSwgYnl0ZXMpOwogfQogCkBAIC0yNTcsOSArMjc3LDEwIEBAIHZvaWQqIE1hcmtlZFNwYWNlOjp0
cnlBbGxvY2F0ZUxhcmdlKFN1YnMKIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwKCkKIHsKICAgICBt
X2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJsb2Nr
KAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAg
ICBibG9jay0+c3dlZXAoKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1h
cmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAg
ICAgYWxsb2NhdG9yLnN3ZWVwKCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTI4MiwyOCArMzAzLDE2IEBAIHZvaWQg
TWFya2VkU3BhY2U6OnN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygKICAgICBtX2xhcmdlQWxsb2NhdGlv
bnNOdXJzZXJ5T2Zmc2V0ID0gbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsKIH0KIAotdm9pZCBN
YXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKLXsKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkK
LSAgICAgICAgZGF0YUxvZygiWm9tYmlmeWluZyBzd2VlcC4uLiIpOwotICAgIG1faGVhcC0+c3dl
ZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAgICBmb3JFYWNoQmxvY2soCi0gICAgICAg
IFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIGlmIChibG9j
ay0+bmVlZHNTd2VlcGluZygpKQotICAgICAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwotICAg
ICAgICB9KTsKLX0KLQotdm9pZCBNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQg
TWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKICAgICBmb3JFYWNoQWxsb2Nh
dG9yKAogICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRp
b25TdGF0dXMgewotICAgICAgICAgICAgYWxsb2NhdG9yLnJlc2V0KCk7CisgICAgICAgICAgICBh
bGxvY2F0b3IucHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICAgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKIAotICAgIG1fYmxvY2tzV2l0aE5l
d09iamVjdHMuY2xlYXIoKTsKICAgICBtX2FjdGl2ZVdlYWtTZXRzLnRha2VGcm9tKG1fbmV3QWN0
aXZlV2Vha1NldHMpOworICAgIAogICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3Mo
KSA9PSBFZGVuQ29sbGVjdGlvbikKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9m
ZnNldEZvclN3ZWVwID0gbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNl
CkBAIC00MDgsMTEgKzQxNywxMSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpmcmVlT3JTaHJpbmtCbG9j
ayhNYXJrCiAKIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiB7Ci0gICAgZm9yRWFjaEJsb2Nr
KAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAg
ICBmcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAg
ICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsK
KyAgICAgICAgICAgIGFsbG9jYXRvci5zaHJpbmsoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKLSAgICAvLyBGb3IgTGFyZ2VBbGxv
Y2F0aW9ucywgd2UgZG8gdGhlIG1vcmFsIGVxdWl2YWxlbnQgaW4gc3dlZXBMYXJnZUFsbG9jYXRp
b25zKCkuCiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQpAQCAt
NDI3LDU3ICs0MzYsNjEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgp
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0Nv
bGxlY3Rpb247IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1f
bGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6
SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+Y2xlYXJOZXdseUFs
bG9jYXRlZCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxs
b2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKLSAgICAgICAgQVNTRVJUKCFhbGxvY2F0aW9u
LT5pc05ld2x5QWxsb2NhdGVkKCkpOwotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKLX0KLQot
I2lmbmRlZiBOREVCVUcgCi1zdHJ1Y3QgVmVyaWZ5TWFya2VkIDogTWFya2VkQmxvY2s6OlZvaWRG
dW5jdG9yIHsgCi0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChibG9jay0+bV9zdGF0ZSkgewotICAgICAgICBj
YXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICB9CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAor
ICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgeworICAgICAgICAg
ICAgICAgIEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgCisgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9u
IDogbV9sYXJnZUFsbG9jYXRpb25zKQorICAgICAgICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT5p
c05ld2x5QWxsb2NhdGVkKCkpOwogICAgIH0KLX07IAotI2VuZGlmIAorfQogCi12b2lkIE1hcmtl
ZFNwYWNlOjpmbGlwKCkKK3ZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAg
aWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+ZmxpcEZv
ckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSGVhcFZlcnNpb24gbmV4
dFZlcnNpb24gPSBtX3ZlcnNpb24gKyAxOwotICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNp
b24gPT0gaW5pdGlhbFZlcnNpb24pKSB7Ci0gICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3
cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgZmxpcHBpbmcgYWxsIGJsb2Nrcy4gVGhpcyBo
YXBwZW5zCi0gICAgICAgICAgICAvLyBzdXBlciByYXJlbHksIHByb2JhYmx5IG5ldmVyIGZvciBt
b3N0IHVzZXJzLgorICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxs
Q29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZd
IChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAg
ICAgICAgICAgICBhbGxvY2F0b3IuYmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgIG1fdmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fdmVyc2lvbik7Cisg
ICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkobV92ZXJzaW9uID09IGluaXRpYWxWZXJzaW9u
KSkgeworICAgICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRs
ZSB0aGlzIGJ5IHNldHRpbmcgYWxsIGJsb2NrIHZlcnNpb25zIHRvIG51bGwuCiAgICAgICAgICAg
ICBmb3JFYWNoQmxvY2soCiAgICAgICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxl
KiBoYW5kbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5mbGlwSWZOZWNlc3Nhcnko
KTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0VmVyc2lvbigpOwog
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIG1fdmVyc2lvbiA9IG5leHRW
ZXJzaW9uOyAvLyBIZW5jZWZvcnRoLCBmbGlwSWZOZWNlc3NhcnkoKSB3aWxsIHRyaWdnZXIgb24g
YWxsIGJsb2Nrcy4KKyAgICAgICAgCiAgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxv
Y2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+Zmxp
cCgpOwogICAgIH0KIAotI2lmbmRlZiBOREVCVUcKLSAgICBWZXJpZnlNYXJrZWQgdmVyaWZ5RnVu
Y3RvcjsKLSAgICBmb3JFYWNoQmxvY2sodmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBpZiAo
IUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBb
Jl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJs
b2NrLT5uZWVkc0ZsaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgICAgIH0pOwor
ICAgIH0KKyAgICAKKyAgICBtX2lzTWFya2luZyA9IHRydWU7Cit9CisKK3ZvaWQgTWFya2VkU3Bh
Y2U6OmVuZE1hcmtpbmcoKQoreworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAo
TWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAg
ICAgICBhbGxvY2F0b3IuZW5kTWFya2luZygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAgIAorICAgIG1faXNNYXJraW5nID0g
ZmFsc2U7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OndpbGxTdGFydEl0ZXJhdGluZygpCkBAIC01
NDQsMTMgKzU1Nyw0NyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBZGRCbG9jayhNYXJrZWRCbG9j
CiAKIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykKIHsKLSAgICBibG9jay0+YXNzZXJ0RmxpcHBlZCgpOwotICAgIG1fYmxvY2tz
V2l0aE5ld09iamVjdHMuYXBwZW5kKGJsb2NrKTsKLSAgICAKICAgICBpZiAoYmxvY2stPndlYWtT
ZXQoKS5pc09uTGlzdCgpKSB7CiAgICAgICAgIGJsb2NrLT53ZWFrU2V0KCkucmVtb3ZlKCk7CiAg
ICAgICAgIG1fbmV3QWN0aXZlV2Vha1NldHMuYXBwZW5kKCZibG9jay0+d2Vha1NldCgpKTsKICAg
ICB9CiB9CiAKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZFNwYWNlOjpmaW5kRW1wdHlCbG9j
aygpCit7CisgICAgZm9yICg7IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyBtX2FsbG9j
YXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5u
ZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
ID0gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPmZpbmRFbXB0eUJsb2NrKCkpCisgICAg
ICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2
b2lkIE1hcmtlZFNwYWNlOjpzbmFwc2hvdCgpCit7CisgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9u
SW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0
b3IoCisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVy
YXRpb25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFwc2hvdEZvckVkZW5D
b2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7CisgICAgICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JFYWNoQWxs
b2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4g
SXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RGb3JG
dWxsQ29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOworICAgICAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIE1hcmtlZFNwYWNl
Ojphc3NlcnRTbmFwc2hvdEVtcHR5KCkKK3sKKyAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAg
ICAgICByZXR1cm47CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRB
bGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFs
bG9jYXRvci5hc3NlcnRTbmFwc2hvdEVtcHR5KCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lv
biAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSwxNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IG51bVNpemVDbGFzc2VzID0gbGFyZ2VDdXRvZmYgLyBzaXplU3RlcDsKICAgICAK
LSAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSA0MjsgIC8vIFRo
aXMgY2FuIGJlIGFueSB2YWx1ZSwgaW5jbHVkaW5nIHJhbmRvbSBnYXJiYWdlLCBzbyBsb25nIGFz
IGl0J3MgY29uc2lzdGVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLgorICAgIHN0
YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBudWxsVmVyc2lvbiA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9m
IGZyZXNobHkgYWxsb2NhdGVkIGJsb2Nrcy4KKyAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24g
aW5pdGlhbFZlcnNpb24gPSAxOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBv
dXQgd2l0aC4KKyAgICAKKyAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2
ZXJzaW9uKQorICAgIHsKKyAgICAgICAgdmVyc2lvbisrOworICAgICAgICBpZiAodmVyc2lvbiA9
PSBudWxsVmVyc2lvbikKKyAgICAgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgcmV0dXJuIHZl
cnNpb247CisgICAgfQogICAgIAogICAgIHN0YXRpYyBzaXplX3Qgc2l6ZUNsYXNzVG9JbmRleChz
aXplX3Qgc2l6ZSkKICAgICB7CkBAIC0xMTQsNyArMTIzLDcgQEAgcHVibGljOgogICAgIFN1YnNw
YWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbm9y
bWFsU3BhY2U7IH0KICAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCkgeyBy
ZXR1cm4gbV9hdXhpbGlhcnlTcGFjZTsgfQogICAgIAotICAgIHZvaWQgcmVzZXRBbGxvY2F0b3Jz
KCk7CisgICAgdm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogCiAgICAgdm9pZCB2aXNpdFdl
YWtTZXRzKEhlYXBSb290VmlzaXRvciYpOwogICAgIHZvaWQgcmVhcFdlYWtTZXRzKCk7CkBAIC0x
NDQsMTEgKzE1MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFy
a2VkQmxvY2s6OkhhbmRsZSopOwogICAgIHZvaWQgZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJs
b2NrOjpIYW5kbGUqKTsKIAotICAgIHZvaWQgZmxpcCgpOworICAgIHZvaWQgYmVnaW5NYXJraW5n
KCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdCgpOwogICAgIHZv
aWQgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwogICAgIHZvaWQgc3dlZXAoKTsKICAgICB2b2lkIHN3
ZWVwTGFyZ2VBbGxvY2F0aW9ucygpOwotICAgIHZvaWQgem9tYmlmeVN3ZWVwKCk7CisgICAgdm9p
ZCBhc3NlcnRTbmFwc2hvdEVtcHR5KCk7CiAgICAgc2l6ZV90IG9iamVjdENvdW50KCk7CiAgICAg
c2l6ZV90IHNpemUoKTsKICAgICBzaXplX3QgY2FwYWNpdHkoKTsKQEAgLTE1Nyw4ICsxNjgsNiBA
QCBwdWJsaWM6CiAgICAgCiAgICAgSGVhcFZlcnNpb24gdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdmVyc2lvbjsgfQogCi0gICAgY29uc3QgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYg
YmxvY2tzV2l0aE5ld09iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nrc1dpdGhOZXdPYmpl
Y3RzOyB9Ci0gICAgCiAgICAgY29uc3QgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+JiBsYXJnZUFs
bG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zOyB9CiAgICAgdW5z
aWduZWQgbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xh
cmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0
aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9j
YXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IH0KQEAgLTE2OSwxMyArMTc4LDE0IEBAIHB1
YmxpYzoKICAgICBMYXJnZUFsbG9jYXRpb24qKiBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxl
Y3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVj
dGlvbkVuZDsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlv
blNpemUoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlv
blNpemU7IH0KICAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIGZpcnN0QWxsb2NhdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdEFsbG9jYXRvcjsgfQorICAgIE1hcmtlZEFsbG9jYXRvciogYWxs
b2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0b3JGb3JF
bXB0eUFsbG9jYXRpb247IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1w
dHlCbG9jaygpOworICAgIAogICAgIC8vIFdoZW4gdGhpcyBpcyB0cnVlIGl0IG1lYW5zIHRoYXQg
d2UgaGF2ZSBmbGlwcGVkIGJ1dCB0aGUgbWFyayBiaXRzIGhhdmVuJ3QgY29udmVyZ2VkIHlldC4K
ICAgICBib29sIGlzTWFya2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNNYXJraW5nOyB9CiAgICAg
Ci0gICAgLy8gRklYTUU6IEFmdGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjE1ODEsIE1hcmtlZFNwYWNlIHdpbGwgY29udHJvbCB0aGlzCi0gICAgLy8gZmxhZyBk
aXJlY3RseS4KLSAgICB2b2lkIHNldElzTWFya2luZyhib29sIHZhbHVlKSB7IG1faXNNYXJraW5n
ID0gdmFsdWU7IH0KLQogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0xOTAsOCArMjAwLDggQEAgcHJpdmF0
ZToKICAgICAKICAgICB2b2lkIGluaXRpYWxpemVTdWJzcGFjZShTdWJzcGFjZSYpOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1
bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hTdWJz
cGFjZShjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHZvaWQgZm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgZm9yRWFjaFN1YnNwYWNlKGNvbnN0IEZ1bmN0
b3ImKTsKICAgICAKICAgICB2b2lkIGFkZEFjdGl2ZVdlYWtTZXQoV2Vha1NldCopOwogCkBAIC0y
MDUsNyArMjE1LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJdGVyYXRpbmc7CiAgICAgYm9v
bCBtX2lzTWFya2luZyB7IGZhbHNlIH07CiAgICAgTWFya2VkQmxvY2tTZXQgbV9ibG9ja3M7Ci0g
ICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOwog
ICAgIFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiBtX2xhcmdlQWxsb2NhdGlvbnM7CiAgICAgdW5z
aWduZWQgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCB7IDAgfTsKICAgICB1bnNpZ25l
ZCBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiB7IDAgfTsKQEAgLTIx
NSw0MCArMjI0LDExIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25z
Rm9yVGhpc0NvbGxlY3Rpb25TaXplIHsgMCB9OwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFr
U2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9hY3RpdmVXZWFrU2V0czsKICAg
ICBTZW50aW5lbExpbmtlZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1Nl
dD4+IG1fbmV3QWN0aXZlV2Vha1NldHM7CisgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2Zp
cnN0QWxsb2NhdG9yIHsgbnVsbHB0ciB9OworICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0
b3JGb3JFbXB0eUFsbG9jYXRpb24geyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJ
dGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgQVNTRVJUKGlz
SXRlcmF0aW5nKCkpOwotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5k
KCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaExp
dmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xh
cmdlQWxsb2NhdGlvbnMpIHsKLSAgICAgICAgaWYgKGFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7Ci0g
ICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0
dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbChIZWFwSXRl
cmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIEFTU0VSVChpc0l0
ZXJhdGluZygpKTsKLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgp
OwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hEZWFk
Q2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJn
ZUFsbG9jYXRpb25zKSB7Ci0gICAgICAgIGlmICghYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKLSAg
ICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0
cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCiBpbmxpbmUgTWFya2VkQWxsb2Nh
dG9yKiBNYXJrZWRTcGFjZTo6YWxsb2NhdG9yRm9yKFN1YnNwYWNlJiBzcGFjZSwgc2l6ZV90IGJ5
dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCisj
aW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwo
SGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBBU1NF
UlQoaXNJdGVyYXRpbmcoKSk7CisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQo
KS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JF
YWNoTGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6
IG1fbGFyZ2VBbGxvY2F0aW9ucykgeworICAgICAgICBpZiAoYWxsb2NhdGlvbi0+aXNMaXZlKCkp
IHsKKyAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlv
bi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhl
YXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgQVNTRVJU
KGlzSXRlcmF0aW5nKCkpOworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCku
ZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFj
aERlYWRDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBt
X2xhcmdlQWxsb2NhdGlvbnMpIHsKKyAgICAgICAgaWYgKCFhbGxvY2F0aW9uLT5pc0xpdmUoKSkg
eworICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9u
LT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3Bw
CShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksOCBAQCB2b2lkIFNsb3RWaXNp
dG9yOjpzZXRNYXJrZWRBbmRBcHBlbmRUb01hCiAgICAgdmFsaWRhdGUoY2VsbCk7CiAjZW5kaWYK
ICAgICAKKyAgICAvL2RhdGFMb2coIiAgICBNYXJraW5nICIsIFJhd1BvaW50ZXIoY2VsbCksICJc
biIpOworICAgIAogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICBz
ZXRNYXJrZWRBbmRBcHBlbmRUb01hcmtTdGFjayhjZWxsLT5sYXJnZUFsbG9jYXRpb24oKSwgY2Vs
bCk7CiAgICAgZWxzZQpAQCAtMTk4LDcgKzIwMCw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OnNldE1h
cmtlZEFuZEFwcGVuZFRvTWEKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lclR5cGU+CiBBTFdB
WVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNr
KENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwgSlNDZWxsKiBjZWxsKQogewotICAgIGNvbnRhaW5l
ci5mbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKG1fdmVyc2lvbik7CisgICAgY29udGFpbmVy
LmFib3V0VG9NYXJrKG1fdmVyc2lvbik7CiAgICAgCiAgICAgaWYgKGNvbnRhaW5lci50ZXN0QW5k
U2V0TWFya2VkKGNlbGwpKQogICAgICAgICByZXR1cm47CkBAIC0yNDYsMTAgKzI0OCw4IEBAIHZv
aWQgU2xvdFZpc2l0b3I6Om1hcmtBdXhpbGlhcnkoY29uc3Qgdm8KICAgICAKICAgICBBU1NFUlQo
Y2VsbC0+aGVhcCgpID09IGhlYXAoKSk7CiAgICAgCi0gICAgaWYgKEhlYXA6OnRlc3RBbmRTZXRN
YXJrZWQobV92ZXJzaW9uLCBjZWxsKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChIZWFwOjpp
c01hcmtlZENvbmN1cnJlbnRseShjZWxsKSk7CisgICAgaWYgKEhlYXA6OnRlc3RBbmRTZXRNYXJr
ZWQobV92ZXJzaW9uLCBjZWxsKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICAKICAgICBu
b3RlTGl2ZUF1eGlsaWFyeUNlbGwoY2VsbCk7CiB9CkBAIC0yOTQsNiArMjk0LDggQEAgQUxXQVlT
X0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaQogewogICAgIEFTU0VSVChIZWFwOjpp
c01hcmtlZENvbmN1cnJlbnRseShjZWxsKSk7CiAgICAgCisgICAgLy9kYXRhTG9nKCJWaXNpdGlu
ZyAiLCBSYXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKKwogICAgIFNldEN1cnJlbnRDZWxsU2NvcGUg
Y3VycmVudENlbGxTY29wZSgqdGhpcywgY2VsbCk7CiAgICAgCiAgICAgbV9jdXJyZW50T2JqZWN0
Q2VsbFN0YXRlQmVmb3JlVmlzaXRpbmcgPSBjZWxsLT5jZWxsU3RhdGUoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWsuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsNyArMjgsOSBAQAogCiAjaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKICNpbmNsdWRl
IDxjc3RkZGVmPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtOTMsNCArOTUsMjMgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9y
VHJhaXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVD
bGFzc0hhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiB7CisgICAgdHlwZWRlZiBKU0M6OldlYWs8VD4g
U3RvcmFnZVR5cGU7CisKKyAgICB0eXBlZGVmIHN0ZDo6bnVsbHB0cl90IEVtcHR5VmFsdWVUeXBl
OworICAgIHN0YXRpYyBFbXB0eVZhbHVlVHlwZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gbnVsbHB0
cjsgfQorCisgICAgdHlwZWRlZiBUKiBQZWVrVHlwZTsKKyAgICBzdGF0aWMgUGVla1R5cGUgcGVl
ayhjb25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CisgICAg
c3RhdGljIFBlZWtUeXBlIHBlZWsoRW1wdHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAJKHJldmlzaW9uIDIwNTg1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFdlYWtCbG9jazo6c3BlY2lhbGl6ZWRWaXNpdChD
b250YWluCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBKU1ZhbHVlJiBq
c1ZhbHVlID0gd2Vha0ltcGwtPmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKGNvbnRhaW5lci5pc01h
cmtlZE9yTmV3bHlBbGxvY2F0ZWREdXJpbmdXZWFrVmlzaXRpbmcodmVyc2lvbiwganNWYWx1ZS5h
c0NlbGwoKSkpCisgICAgICAgIGlmIChjb250YWluZXIuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVk
Q29uY3VycmVudGx5KHZlcnNpb24sIGpzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIAogICAgICAgICBpZiAoIXdlYWtIYW5kbGVPd25lci0+aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+Ojp3cmFwU2xvdCgmY29uc3RfY2FzdDxK
U1ZhbHVlJj4oanNWYWx1ZSkpLCB3ZWFrSW1wbC0+Y29udGV4dCgpLCB2aXNpdG9yKSkKQEAgLTE0
NywxNyArMTQ3LDE0IEBAIHZvaWQgV2Vha0Jsb2NrOjpyZWFwKCkKICAgICAvLyBJZiB0aGlzIFdl
YWtCbG9jayBkb2Vzbid0IGJlbG9uZyB0byBhIENlbGxDb250YWluZXIsIHdlIHdvbid0IGV2ZW4g
YmUgaGVyZS4KICAgICBBU1NFUlQobV9jb250YWluZXIpOwogICAgIAotICAgIG1fY29udGFpbmVy
LmZsaXBJZk5lY2Vzc2FyeSgpOwotCi0gICAgLy8gV2Ugb25seSByZWFwIGFmdGVyIG1hcmtpbmcu
Ci0gICAgQVNTRVJUKG1fY29udGFpbmVyLmlzTWFya2VkKCkpOworICAgIEhlYXBWZXJzaW9uIHZl
cnNpb24gPSBtX2NvbnRhaW5lci5oZWFwKCktPm9iamVjdFNwYWNlKCkudmVyc2lvbigpOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWFrSW1wbENvdW50KCk7ICsraSkgewogICAgICAg
ICBXZWFrSW1wbCogd2Vha0ltcGwgPSAmd2Vha0ltcGxzKClbaV07CiAgICAgICAgIGlmICh3ZWFr
SW1wbC0+c3RhdGUoKSA+IFdlYWtJbXBsOjpEZWFkKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgaWYgKG1fY29udGFpbmVyLmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh3ZWFrSW1w
bC0+anNWYWx1ZSgpLmFzQ2VsbCgpKSkgeworICAgICAgICBpZiAobV9jb250YWluZXIuaXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKHZlcnNpb24sIHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkp
KSB7CiAgICAgICAgICAgICBBU1NFUlQod2Vha0ltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6Okxp
dmUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEz
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2lu
Y2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ5LDIz
ICsxNDgsNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xlCiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IFZlY3RvclRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JU
cmFpdHMgewotICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gZmFs
c2U7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6Oldl
YWs8VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gewotICAgIHR5cGVk
ZWYgSlNDOjpXZWFrPFQ+IFN0b3JhZ2VUeXBlOwotCi0gICAgdHlwZWRlZiBzdGQ6Om51bGxwdHJf
dCBFbXB0eVZhbHVlVHlwZTsKLSAgICBzdGF0aWMgRW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1ZSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHR5cGVkZWYgVCogUGVla1R5cGU7Ci0gICAgc3Rh
dGljIFBlZWtUeXBlIHBlZWsoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1
ZS5nZXQoKTsgfQotICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKEVtcHR5VmFsdWVUeXBlKSB7IHJl
dHVybiBQZWVrVHlwZSgpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQogI2VuZGlmIC8v
IFdlYWtJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAko
cmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiVGh1bmtHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgi
Ci0jaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAko
cmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAKICNpbmNsdWRl
ICJNYXBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1hcEl0ZXJhdG9yUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiTWF0aE9iamVjdC5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgogI2luY2x1
ZGUgIk1vZHVsZUxvYWRlclByb3RvdHlwZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvdG90eXBlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw4IEBACiAjaWZuZGVmIFByb3RvdHlwZU1hcF9oCiAjZGVmaW5lIFByb3RvdHlwZU1h
cF9oCiAKKyNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgi
CiAjaW5jbHVkZSAiV2Vha0dDTWFwLmgiCiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAog
I2luY2x1ZGUgIkxMSW50UENSYW5nZXMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUENUb0NvZGVPcmlnaW5NYXAuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvci5o
IgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw2IEBACiAjZGVmaW5lIFdlYWtHQ01hcF9oCiAKICNpbmNsdWRlICJXZWFrLmgiCi0jaW5j
bHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFya2Vk
U3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KSW5kZXg6IFNv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA1ODU5KQor
KysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogCQkwRjQ1NzA0MzFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5h
dG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NTcwNDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLzsgfTsKIAkJMEY0NTcwNDUx
QkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVT
b3J0LmggKi87IH07CiAJCTBGNzI1Q0FDMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MjVDQUIxQzUw
NDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggKi87IH07CisJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0
RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9y
LmNwcCAqLzsgfTsKIAkJMEY4MjRBNjgxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MjRBNjQx
Qjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwICovOyB9OwogCQkwRjgyNEE2OTFCNzQ0
M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3Qu
aCAqLzsgfTsKIAkJMEY4NzEwNUExNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODcxMDU5MTY2NDNG
MTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi87IH07CkBAIC0zNjYsNiArMzY3LDcgQEAKIAkJ
MEY0NTcwNDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCdWJibGVTb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGYXN0Qml0VmVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjQxQjc0NDNBMDAwMkUzNDVEIC8q
IFBhcmtpbmdMb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFy
a2luZ0xvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY1MUI3NDQz
QTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhcmtpbmdMb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NzEwNTkx
NjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmF3UG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODgw
LDYgKzg4Miw3IEBACiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EuaCAqLywK
IAkJCQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5oICovLAogCQkJCUE4
QTQ3MjlGMTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQkwRjdDNUZC
NTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8sCiAJCQkJMEZEODFBQzQx
NTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJBMTE1MUE4
MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcyQTIxNTFBODI1QTAw
NDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKQEAgLTE1OTQsNiArMTU5Nyw3IEBACiAJCQkJQ0Q1
NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzNGNDE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZl
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNzE1MUE4MjVCMDA0MTIzRkYgLyog
T1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGOTE1MUE4MjVC
MDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0
MDIxNTFBODI1QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBAIHNldChXVEZf
U09VUkNFUwogICAgIERhdGFMb2cuY3BwCiAgICAgRGF0ZU1hdGguY3BwCiAgICAgRGVjaW1hbE51
bWJlci5jcHAKKyAgICBGYXN0Qml0VmVjdG9yLmNwcAogICAgIEZhc3RNYWxsb2MuY3BwCiAgICAg
RmlsZVByaW50U3RyZWFtLmNwcAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0Zhc3RCaXRWZWN0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL0Zh
c3RCaXRWZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkZhc3RCaXRWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQg
RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6c2V0RXF1YWxzU2xvdyhjb25zdCBGYXN0Qml0VmVjdG9y
V29yZE93bmVyJiBvdGhlcikKK3sKKyAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2Fz
dDx1aW50MzJfdCo+KAorICAgICAgICBmYXN0Q2FsbG9jKG90aGVyLmFycmF5TGVuZ3RoKCksIHNp
emVvZih1aW50MzJfdCkpKTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG90aGVyLm1fd29yZHMsIG90
aGVyLmFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICBpZiAobV93b3JkcykK
KyAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7CisgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAg
IG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKK30KKwordm9pZCBGYXN0Qml0VmVjdG9yV29y
ZE93bmVyOjpyZXNpemVTbG93KHNpemVfdCBudW1CaXRzKQoreworICAgIHNpemVfdCBuZXdMZW5n
dGggPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cyk7CisgICAgCisgICAgLy8gVXNl
IGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUg
Y29tbW9uCisgICAgLy8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemlu
ZyB0aGUgc2l6ZSBvZiB0aGUgYml0dmVjdG9yLgorICAgIAorICAgIHVpbnQzMl90KiBuZXdBcnJh
eSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1
aW50MzJfdCkpKTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkg
KiBzaXplb2YodWludDMyX3QpKTsKKyAgICBpZiAobV93b3JkcykKKyAgICAgICAgZmFzdEZyZWUo
bV93b3Jkcyk7CisgICAgbV93b3JkcyA9IG5ld0FycmF5OworfQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwpJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9B
dG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC05MSwxNyArOTIs
MTIgQEAgcHVibGljOgogICAgIAogICAgIEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG9wZXJhdG9y
PShjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHNp
emVfdCBsZW5ndGggPSBvdGhlci5hcnJheUxlbmd0aCgpOwotICAgICAgICBpZiAobGVuZ3RoID09
IGFycmF5TGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dv
cmRzLCBsZW5ndGggKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICAgICAgaWYgKGFycmF5TGVuZ3RoKCkgIT0gb3RoZXIuYXJyYXlMZW5ndGgoKSkKKyAg
ICAgICAgICAgIHNldEVxdWFsc1Nsb3cob3RoZXIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9m
KHVpbnQzMl90KSk7CisgICAgICAgICAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7CiAg
ICAgICAgIH0KLSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMy
X3QqPihmYXN0Q2FsbG9jKGxlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwotICAgICAgICBtZW1j
cHkobmV3QXJyYXksIG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJfdCkpOwot
ICAgICAgICBpZiAobV93b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOwotICAg
ICAgICBtX3dvcmRzID0gbmV3QXJyYXk7Ci0gICAgICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVt
Qml0czsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICAgICAKQEAgLTE0MCwxOCArMTM2
LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVzaXplKHNpemVfdCBudW1CaXRzKQogICAg
IHsKLSAgICAgICAgaWYgKG51bUJpdHMgPT0gbV9udW1CaXRzKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKLSAgICAgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVh
bGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCi0gICAgICAgIC8vIHVzZSBjYXNlIGZv
ciB0aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rv
ci4KLSAgICAgICAgCi0gICAgICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0Qml0VmVjdG9yQXJy
YXlMZW5ndGgobnVtQml0cyk7Ci0gICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsK
LSAgICAgICAgbWVtY3B5KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9m
KHVpbnQzMl90KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAgICAgICAgICAgZmFzdEZyZWUo
bV93b3Jkcyk7Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsKKyAgICAgICAgaWYgKGFycmF5
TGVuZ3RoKCkgIT0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpKQorICAgICAgICAg
ICAgcmVzaXplU2xvdyhudW1CaXRzKTsKICAgICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKICAg
ICB9CiAgICAgCkBAIC0xNzEsNiArMTU3LDkgQEAgcHVibGljOgogICAgIHVpbnQzMl90KiB3b3Jk
cygpIHsgcmV0dXJuIG1fd29yZHM7IH0KIAogcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRFcXVhbHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVy
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNpemVTbG93KHNpemVfdCBudW1CaXRz
KTsKKyAgICAKICAgICB1aW50MzJfdCogbV93b3JkcyB7IG51bGxwdHIgfTsKICAgICBzaXplX3Qg
bV9udW1CaXRzIHsgMCB9OwogfTsKQEAgLTMyMCw2ICszMDksMTUgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSBhcnJheUxlbmd0aCgpOyBpbmRleC0t
OykgeworICAgICAgICAgICAgaWYgKG1fd29yZHMud29yZChpbmRleCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIEZhc3RCaXRWZWN0
b3JJbXBsPEZhc3RCaXRWZWN0b3JBbmRXb3Jkczx0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUsIHR5
cGVuYW1lIE90aGVyV29yZHM6OlZpZXdUeXBlPj4gb3BlcmF0b3ImKGNvbnN0IEZhc3RCaXRWZWN0
b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC00NzEsNiArNDY5LDcg
QEAgcHVibGljOgogICAgICAgICBtX3dvcmRzLmNsZWFyQWxsKCk7CiAgICAgfQogCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBvZiB0aGlzIGJpdHZlY3RvciBjaGFuZ2VkLgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAgYm9vbCBzZXRBbmRDaGVjayhj
b25zdCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpCiAgICAgewpAQCAtNTUw
LDYgKzU0OSwyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwog
ICAgIH0KKyAgICAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnRzIGNoYW5nZWQu
CisgICAgQUxXQVlTX0lOTElORSBib29sIGF0b21pY1NldEFuZENoZWNrKHNpemVfdCBpbmRleCwg
Ym9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHVpbnQzMl90KiBwb2ludGVyID0gJm1fd29yZHMu
d29yZChpbmRleCA+PiA1KTsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKGluZGV4ICYg
MzEpOworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICB1aW50MzJfdCBvbGRWYWx1ZSA9
ICpwb2ludGVyOworICAgICAgICAgICAgdWludDMyX3QgbmV3VmFsdWU7CisgICAgICAgICAgICBp
ZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiAob2xkVmFsdWUgJiBtYXNrKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBv
bGRWYWx1ZSB8IG1hc2s7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
ICghKG9sZFZhbHVlICYgbWFzaykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlICYgfm1hc2s7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAod2Vha0NvbXBhcmVBbmRTd2FwKHBvaW50ZXIsIG9sZFZhbHVl
LCBuZXdWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289068</attachid>
            <date>2016-09-16 10:13:47 -0700</date>
            <delta_ts>2016-09-16 11:09:44 -0700</delta_ts>
            <desc>it passed testapi in debug mode</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>126323</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDU4NTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTBGN0MzOUZCMUM4RjYy
OTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5s
aW5lcy5oICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsK
IAkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFy
a2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmgg
Ki87IH07CisJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI5
MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLzsgfTsKIAkJMEY4MDIz
RUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4
MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI3MzEsNiArMjczMyw4IEBACiAJCTBGN0Mz
OUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyog
REZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5o
OyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3Bh
Y2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIz
MDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMz
OCw5ICs1MzQyLDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFs
bG9jYXRvci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9j
ay5jcHAgKi8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmgg
Ki8sCisJCQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5o
ICovLAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICov
LAogCQkJCTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJ
CQkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMEY3
QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0
MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBG
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlBRERCMUY2MjE4RDc3REI3
MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNzM5NCw2ICs3NDAwLDcgQEAKIAkJ
CQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50
UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAv
KiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4
QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJp
dGhNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkxOCw3IEBACiAJCQkJQTUwM0ZB
MkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0lu
amVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQkExRDg4OTUwNzAw
NDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1
QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0MgLyogSlNJbnB1dHMuanNv
biBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2
QXJyYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJW
TUVudHJ5U2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29u
dGFpbmVyLmgJKHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NlbGxDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBIZWFwOwogY2xhc3MgSGVhcENlbGw7CiBjbGFzcyBMYXJn
ZUFsbG9jYXRpb247CiBjbGFzcyBNYXJrZWRCbG9jazsKIGNsYXNzIFdlYWtTZXQ7CitjbGFzcyBW
TTsKIAogdHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKIApAQCAtNTYsNiArNTgsOSBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KICAgICAKKyAgICBWTSogdm0oKSBjb25zdDsKKyAgICBIZWFw
KiBoZWFwKCkgY29uc3Q7CisgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9lbmNvZGVkUG9pbnRlcjsgfQogICAgIAogICAgIGJvb2wgaXNNYXJrZWRC
bG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZFBvaW50ZXIgJiYgIShtX2VuY29kZWRQb2lu
dGVyICYgaXNMYXJnZUFsbG9jYXRpb25CaXQpOyB9CkBAIC03MywxMyArNzgsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxMYXJnZUFsbG9jYXRpb24qPihtX2VuY29k
ZWRQb2ludGVyIC0gaXNMYXJnZUFsbG9jYXRpb25CaXQpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3Nhcnko
KTsKKyAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxp
cCgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKICAgICBib29sIGlz
TWFya2VkKEhlYXBDZWxsKikgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQoSGVhcENlbGwqKSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChI
ZWFwVmVyc2lvbiwgSGVhcENlbGwqKSBjb25zdDsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWQo
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXJJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENv
bnRhaW5lcklubGluZXMuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQg
KzI5LDIwIEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJWTS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoKSBjb25zdAor
aW5saW5lIFZNKiBDZWxsQ29udGFpbmVyOjp2bSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGFyZ2VB
bGxvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtYXJrZWRCbG9j
aygpLmhhbmRsZSgpLmlzTWFya2VkKCk7CisgICAgICAgIHJldHVybiBsYXJnZUFsbG9jYXRpb24o
KS52bSgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLnZtKCk7Cit9CisKK2lubGluZSBIZWFw
KiBDZWxsQ29udGFpbmVyOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJnZtKCktPmhlYXA7
CiB9CiAKIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXBDZWxsKiBjZWxs
KSBjb25zdApAQCAtNTMsNiArNTksMTMgQEAgaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNN
YXJrZWRPck5ldwogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChjZWxsKTsKIH0KIAoraW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIEhlYXBDZWxsKiBjZWxsKSBjb25zdAor
eworICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAgICByZXR1cm4gbGFyZ2VBbGxv
Y2F0aW9uKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7CisgICAgcmV0dXJuIG1hcmtlZEJs
b2NrKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHZlcnNpb24sIGNlbGwpOworfQorCiBpbmxp
bmUgdm9pZCBDZWxsQ29udGFpbmVyOjpub3RlTWFya2VkKCkKIHsKICAgICBpZiAoIWlzTGFyZ2VB
bGxvY2F0aW9uKCkpCkBAIC03MywxNiArODYsMTAgQEAgaW5saW5lIFdlYWtTZXQmIENlbGxDb250
YWluZXI6OndlYWtTZXQoKQogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLndlYWtTZXQoKTsKIH0K
IAotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9u
IGhlYXBWZXJzaW9uKQotewotICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24oKSkKLSAgICAgICAg
bWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUg
dm9pZCBDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkoKQoraW5saW5lIHZvaWQgQ2VsbENv
bnRhaW5lcjo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiB7CiAgICAgaWYg
KCFpc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICBtYXJrZWRCbG9jaygpLmZsaXBJZk5lY2Vz
c2FyeSgpOworICAgICAgICBtYXJrZWRCbG9jaygpLmFib3V0VG9NYXJrKGhlYXBWZXJzaW9uKTsK
IH0KIAogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6bmVlZHNGbGlwKCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJ
KHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZh
dGl2ZVJvb3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTVmly
dHVhbE1hY2hpbmVJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgi
CiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCkBAIC01MjYsMTEgKzUyNyw5IEBAIHZvaWQgSGVh
cDo6YmVnaW5NYXJraW5nKCkKICAgICB9CiAgICAgCiAgICAgewotICAgICAgICBUaW1pbmdTY29w
ZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmNsZWFyTWFya3Mi
KTsKLSAgICAgICAgbV9vYmplY3RTcGFjZS5mbGlwKCk7CisgICAgICAgIFRpbWluZ1Njb3BlIGNs
ZWFyTWFya3NUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3BhY2UuYmVnaW5NYXJraW5nIik7
CisgICAgICAgIG1fb2JqZWN0U3BhY2UuYmVnaW5NYXJraW5nKCk7CiAgICAgfQotICAgIAotICAg
IG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKHRydWUpOwogfQogCiB2b2lkIEhlYXA6OnZpc2l0
RXh0ZXJuYWxSZW1lbWJlcmVkU2V0KCkKQEAgLTc3OSw3ICs3NzgsNyBAQCB2b2lkIEhlYXA6OmVu
ZE1hcmtpbmcoKQogICAgIEFTU0VSVChtX3NoYXJlZE1hcmtTdGFjay5pc0VtcHR5KCkpOwogICAg
IG1fd2Vha1JlZmVyZW5jZUhhcnZlc3RlcnMucmVtb3ZlQWxsKCk7CiAgICAgCi0gICAgbV9vYmpl
Y3RTcGFjZS5zZXRJc01hcmtpbmcoZmFsc2UpOworICAgIG1fb2JqZWN0U3BhY2UuZW5kTWFya2lu
ZygpOwogfQogCiBzaXplX3QgSGVhcDo6b2JqZWN0Q291bnQoKQpAQCAtOTM5LDcgKzkzOCw3IEBA
IHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgICAgICBtX29iamVjdFNwYWNlLnN3
ZWVwKCk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc2hyaW5rKCk7CiAgICAgfQotICAgIEFTU0VS
VChtX2Jsb2NrU25hcHNob3QuaXNFbXB0eSgpKTsKKyAgICBtX29iamVjdFNwYWNlLmFzc2VydFNu
YXBzaG90RW1wdHkoKTsKIAogICAgIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7
CiB9CkBAIC0xMDQ4LDcgKzEwNDcsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0
SW1wbChIZWFwCiAgICAgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAgd3JpdGVCYXJy
aWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOwogCi0gICAgcmVzZXRBbGxvY2F0b3Jz
KCk7CisgICAgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB1cGRhdGVBbGxvY2F0aW9uTGlt
aXRzKCk7CiAgICAgZGlkRmluaXNoQ29sbGVjdGlvbihnY1N0YXJ0VGltZSk7CiAgICAgcmVzdW1l
Q29tcGlsZXJUaHJlYWRzKCk7CkBAIC0xMTYyLDQ0ICsxMTYxLDEwIEBAIHZvaWQgSGVhcDo6c3dl
ZXBBcnJheUJ1ZmZlcnMoKQogICAgIG1fYXJyYXlCdWZmZXJzLnN3ZWVwKCk7CiB9CiAKLXN0cnVj
dCBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1
bmN0b3IgewotICAgIE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yKFZlY3RvcjxNYXJrZWRCbG9j
azo6SGFuZGxlKj4mIGJsb2NrcykgCi0gICAgICAgIDogbV9pbmRleCgwKSAKLSAgICAgICAgLCBt
X2Jsb2NrcyhibG9ja3MpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QKLSAgICB7Ci0gICAgICAgIGJsb2NrLT5zZXRJ
c09uQmxvY2tzVG9Td2VlcCh0cnVlKTsKLSAgICAgICAgbV9ibG9ja3NbbV9pbmRleCsrXSA9IGJs
b2NrOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbXV0YWJsZSBmaWVsZCBiZWNh
dWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAotICAgIG11dGFibGUgc2l6ZV90IG1faW5kZXg7Ci0g
ICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgbV9ibG9ja3M7Ci19OwotCiB2b2lkIEhl
YXA6OnNuYXBzaG90TWFya2VkU3BhY2UoKQogewogICAgIFRpbWluZ1Njb3BlIHRpbWluZ1Njb3Bl
KCp0aGlzLCAiSGVhcDo6c25hcHNob3RNYXJrZWRTcGFjZSIpOwotICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBwcm9iYWJseSBiZSByZW5hbWVkLiBJdCdzIG5vdCBhY3R1YWxseSBzbmFwc2hvdHRp
bmcgYWxsIG9mIE1hcmtlZFNwYWNlLgotICAgIC8vIFRoaXMgaXMgdXNlZCBieSBJbmNyZW1lbnRh
bFN3ZWVwZXIsIHNvIGl0IG9ubHkgbmVlZHMgdG8gc25hcHNob3QgYmxvY2tzLiBIb3dldmVyLCBp
ZiB3ZSBldmVyCi0gICAgLy8gd2FudGVkIHRvIGFkZCBvdGhlciBzbmFwc2hvdHRpbmcgbG9naW4s
IHdlJ2QgcHJvYmFibHkgcHV0IGl0IGhlcmUuCi0gICAgCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbikgewotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGhhbmRsZSA6IG1fb2JqZWN0U3BhY2UuYmxvY2tzV2l0aE5ld09iamVjdHMoKSkgewot
ICAgICAgICAgICAgaWYgKGhhbmRsZS0+aXNPbkJsb2Nrc1RvU3dlZXAoKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1fYmxvY2tTbmFwc2hvdC5hcHBlbmQoaGFuZGxl
KTsKLSAgICAgICAgICAgIGhhbmRsZS0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAg
ICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBtX2Jsb2NrU25hcHNob3QucmVzaXplVG9GaXQo
bV9vYmplY3RTcGFjZS5ibG9ja3MoKS5zZXQoKS5zaXplKCkpOwotICAgICAgICBNYXJrZWRCbG9j
a1NuYXBzaG90RnVuY3RvciBmdW5jdG9yKG1fYmxvY2tTbmFwc2hvdCk7Ci0gICAgICAgIG1fb2Jq
ZWN0U3BhY2UuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KKyAgICBtX29iamVjdFNwYWNl
LnNuYXBzaG90KCk7CiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMo
KQpAQCAtMTIyMiw5ICsxMTg3LDkgQEAgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXJDdXJyZW50bHlF
eGVjdXRpbgogICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5n
Q29kZUJsb2Nrcyh0aGlzKTsKIH0KIAotdm9pZCBIZWFwOjpyZXNldEFsbG9jYXRvcnMoKQordm9p
ZCBIZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9vYmplY3RTcGFjZS5yZXNl
dEFsbG9jYXRvcnMoKTsKKyAgICBtX29iamVjdFNwYWNlLnByZXBhcmVGb3JBbGxvY2F0aW9uKCk7
CiB9CiAKIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCkBAIC0xNDczLDcgKzE0
MzgsNyBAQCBwdWJsaWM6CiB2b2lkIEhlYXA6OnpvbWJpZnlEZWFkT2JqZWN0cygpCiB7CiAgICAg
Ly8gU3dlZXAgbm93IGJlY2F1c2UgZGVzdHJ1Y3RvcnMgd2lsbCBjcmFzaCBvbmNlIHdlJ3JlIHpv
bWJpZmllZC4KLSAgICBtX29iamVjdFNwYWNlLnpvbWJpZnlTd2VlcCgpOworICAgIG1fb2JqZWN0
U3BhY2Uuc3dlZXAoKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRo
aXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsKGl0ZXJhdGlvblNjb3BlLCBa
b21iaWZ5KCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24g
MjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NywxMSArOTcsOSBAQCBwdWJsaWM6CiAgICAgLy8gb3VyIHNjYW4gdG8gcnVuIGZh
c3Rlci4gCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfdGltZUNoZWNrUmVzb2x1dGlvbiA9
IDE2OwogCi0gICAgc3RhdGljIGJvb2wgaXNMaXZlKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMg
Ym9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIGJvb2wgaXNNYXJrZWRDb25j
dXJyZW50bHkoY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBib29sIHRlc3RBbmRTZXRNYXJrZWQo
SGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRNYXJrZWQoY29u
c3Qgdm9pZCopOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgY2VsbFNpemUoY29uc3Qgdm9pZCop
OwogCkBAIC0zMzMsNyArMzMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZVNvdXJjZVBy
b3ZpZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAg
ICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKLSAgICB2
b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsK
ICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAgIHZvaWQgZmluYWxpemVVbmNv
bmRpdGlvbmFsRmluYWxpemVycygpOwogICAgIHZvaWQgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVz
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlz
aW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDE3ICs3NCw2IEBAIGlubGluZSBIZWFwKiBIZWFwOjpoZWFw
KGNvbnN0IEpTVmFsdWUgdikKICAgICByZXR1cm4gaGVhcCh2LmFzQ2VsbCgpKTsKIH0KIAotaW5s
aW5lIGJvb2wgSGVhcDo6aXNMaXZlKGNvbnN0IHZvaWQqIHJhd0NlbGwpCi17Ci0gICAgQVNTRVJU
KCFtYXlCZUdDVGhyZWFkKCkpOwotICAgIEhlYXBDZWxsKiBjZWxsID0gYml0d2lzZV9jYXN0PEhl
YXBDZWxsKj4ocmF3Q2VsbCk7Ci0gICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0g
ICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc0xpdmUoKTsKLSAgICBNYXJr
ZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGJsb2NrLmZsaXBJZk5l
Y2Vzc2FyeShibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKTsKLSAgICBy
ZXR1cm4gYmxvY2suaGFuZGxlKCkuaXNMaXZlQ2VsbChjZWxsKTsKLX0KLQogQUxXQVlTX0lOTElO
RSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwpCiB7CiAgICAgQVNTRVJU
KCFtYXlCZUdDVGhyZWFkKCkpOwpAQCAtOTIsOSArODEsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SGVhcDo6aXNNYXJrZWQoY29uc3QgCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkp
CiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwogICAg
IE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgaWYgKGJsb2Nr
Lm5lZWRzRmxpcChibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKKyAg
ICByZXR1cm4gYmxvY2suaXNNYXJrZWQoCisgICAgICAgIGJsb2NrLnZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6
aXNNYXJrZWRDb25jdXJyZW50bHkoY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTEwMywxMCArOTEs
OCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWRDb25jdXJyCiAgICAgaWYgKGNl
bGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9j
YXRpb24oKS5pc01hcmtlZCgpOwogICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtl
ZEJsb2NrKCk7Ci0gICAgaWYgKGJsb2NrLm5lZWRzRmxpcChibG9jay52bSgpLT5oZWFwLm9iamVj
dFNwYWNlKCkudmVyc2lvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdURjo6bG9h
ZExvYWRGZW5jZSgpOwotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKKyAgICByZXR1
cm4gYmxvY2suaXNNYXJrZWRDb25jdXJyZW50bHkoCisgICAgICAgIGJsb2NrLnZtKCktPmhlYXAu
b2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wg
SGVhcDo6dGVzdEFuZFNldE1hcmtlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCB2b2lkKiBy
YXdDZWxsKQpAQCAtMTE1LDIyICsxMDEsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRl
c3RBbmRTZXRNYXJrZQogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAg
ICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkudGVzdEFuZFNldE1hcmtlZCgpOwogICAg
IE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgYmxvY2suZmxp
cElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyh2ZXJzaW9uKTsKKyAgICBibG9jay5hYm91dFRvTWFy
ayh2ZXJzaW9uKTsKICAgICByZXR1cm4gYmxvY2sudGVzdEFuZFNldE1hcmtlZChjZWxsKTsKIH0K
IAotaW5saW5lIHZvaWQgSGVhcDo6c2V0TWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwpCi17Ci0g
ICAgSGVhcENlbGwqIGNlbGwgPSBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKTsKLSAg
ICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkgewotICAgICAgICBjZWxsLT5sYXJnZUFs
bG9jYXRpb24oKS5zZXRNYXJrZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBNYXJr
ZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGJsb2NrLmZsaXBJZk5l
Y2Vzc2FyeShibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKTsKLSAgICBi
bG9jay5zZXRNYXJrZWQoY2VsbCk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgc2l6ZV90IEhlYXA6OmNl
bGxTaXplKGNvbnN0IHZvaWQqIHJhd0NlbGwpCiB7CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxI
ZWFwQ2VsbCo+KHJhd0NlbGwpLT5jZWxsU2l6ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTWFy
a2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFV0aWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwVXRpbC5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwVXRpbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw5ICs4NCw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGlmICghZmlsdGVyLnJ1bGVPdXQoYml0d2lzZV9jYXN0PEJpdHM+
KHByZXZpb3VzQ2FuZGlkYXRlKSkKICAgICAgICAgICAgICAgICAmJiBzZXQuY29udGFpbnMocHJl
dmlvdXNDYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgJiYgcHJldmlvdXNDYW5kaWRhdGUtPmhh
bmRsZSgpLmNlbGxLaW5kKCkgPT0gSGVhcENlbGw6OkF1eGlsaWFyeSkgewotICAgICAgICAgICAg
ICAgIHByZXZpb3VzQ2FuZGlkYXRlLT5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwogICAg
ICAgICAgICAgICAgIHByZXZpb3VzUG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihwcmV2aW91
c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEFsaWduKHByZXZpb3VzUG9pbnRlcikpOwotICAgICAg
ICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChwcmV2
aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFu
ZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcHJldmlvdXNQb2ludGVyKSkKICAgICAgICAg
ICAgICAgICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC05OSwxMCArOTgsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghc2V0LmNvbnRhaW5z
KGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBjYW5k
aWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7Ci0KICAgICAgICAgYXV0byB0cnlQ
b2ludGVyID0gWyZdICh2b2lkKiBwb2ludGVyKSB7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRl
LT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQorICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcG9pbnRlcikpCiAgICAgICAgICAg
ICAgICAgZnVuYyhwb2ludGVyKTsKICAgICAgICAgfTsKICAgICAKQEAgLTE3MCw3ICsxNjcsNiBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgIT0g
SGVhcENlbGw6OkpTQ2VsbCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0g
ICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5KCk7CiAgICAgICAgIGlmICghY2FuZGlk
YXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJp
Zmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZl
cmlmaWVyLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50
YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw3ICs1MCw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgc3dlZXBUaW1lTXVsdGlwbGllciAKICNp
ZiBVU0UoQ0YpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBo
ZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpLCBy
dW5Mb29wKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKIHsK
IH0KIApAQCAtNjYsNyArNjUsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGlt
ZXIoKQogI2VsaWYgUExBVEZPUk0oRUZMKQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRh
bFN3ZWVwZXIoSGVhcCogaGVhcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpKQotICAgICwg
bV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKIHsKIH0KIApAQCAtODYsNyAr
ODQsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogI2VsaWYgVVNF
KEdMSUIpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFw
KQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVh
cC0+bV9ibG9ja1NuYXBzaG90KQogewogfQogCkBAIC0xMjEsMTkgKzExOCwyMCBAQCB2b2lkIElu
Y3JlbWVudGFsU3dlZXBlcjo6ZG9Td2VlcChkb3VibGUgCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsKICAgICBjYW5jZWxUaW1lcigpOwogfQog
CiBib29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soKQogewotICAgIHdoaWxl
ICghbV9ibG9ja3NUb1N3ZWVwLmlzRW1wdHkoKSkgewotICAgICAgICBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcC50YWtlTGFzdCgpOwotICAgICAgICBibG9jay0+
c2V0SXNPbkJsb2Nrc1RvU3dlZXAoZmFsc2UpOwotCi0gICAgICAgIGlmICghYmxvY2stPm5lZWRz
U3dlZXBpbmcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAoOyBtX2N1cnJlbnRBbGxvY2F0
b3I7IG1fY3VycmVudEFsbG9jYXRvciA9IG1fY3VycmVudEFsbG9jYXRvci0+bmV4dEFsbG9jYXRv
cigpKSB7CisgICAgICAgIGJsb2NrID0gbV9jdXJyZW50QWxsb2NhdG9yLT5maW5kQmxvY2tUb1N3
ZWVwKCk7CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAKKyAgICBpZiAoYmxvY2spIHsKICAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKG1f
dm0tPmhlYXApOwogICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgICAgICAgbV92bS0+aGVhcC5v
YmplY3RTcGFjZSgpLmZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKQEAgLTE0NiwxMSArMTQ0LDEy
IEBAIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygKIHZvaWQgSW5jcmVt
ZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKCkKIHsKICAgICBzY2hlZHVsZVRpbWVyKCk7Cisg
ICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZpcnN0QWxs
b2NhdG9yKCk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dlZXBp
bmcoKQogewotICAgIG1fYmxvY2tzVG9Td2VlcC5jbGVhcigpOworICAgIG1fY3VycmVudEFsbG9j
YXRvciA9IG51bGxwdHI7CiAgICAgaWYgKG1fdm0pCiAgICAgICAgIGNhbmNlbFRpbWVyKCk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVw
ZXIuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5j
cmVtZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMiBAQAogI2Rl
ZmluZSBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogCiAjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCi0jaW5j
bHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBIZWFwOwotY2xhc3MgTWFya2VkQmxvY2s7CitjbGFzcyBNYXJrZWRB
bGxvY2F0b3I7CiAKIGNsYXNzIEluY3JlbWVudGFsU3dlZXBlciA6IHB1YmxpYyBIZWFwVGltZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2NoZWR1bGVUaW1lcigpOwogICAgIHZvaWQgY2FuY2VsVGltZXIoKTsKICAg
ICAKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBtX2Jsb2Nrc1RvU3dlZXA7Cisg
ICAgTWFya2VkQWxsb2NhdG9yKiBtX2N1cnJlbnRBbGxvY2F0b3I7CiAjZW5kaWYKIH07CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCShyZXZp
c2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlT
X0lOTElORSBib29sIGlzTWFya2VkKCkgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGF4ZWQpOyB9CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQo
KSB7IHJldHVybiBpc01hcmtlZCgpIHx8IGlzTmV3bHlBbGxvY2F0ZWQoKTsgfQogICAgIGJvb2wg
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKCk7IH0KLSAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZER1cmlu
Z1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVybiBpc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQoKTsgfQorICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhl
YXBWZXJzaW9uLCBIZWFwQ2VsbCopIHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgp
OyB9CisgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWRDb25jdXJyZW50bHkoSGVhcFZl
cnNpb24sIEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7IH0K
ICAgICBib29sIGlzTGl2ZSgpIHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOyB9
CiAgICAgCiAgICAgYm9vbCBoYXNWYWxpZENlbGwoKSBjb25zdCB7IHJldHVybiBtX2hhc1ZhbGlk
Q2VsbDsgfQpAQCAtMTA2LDggKzEwNyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBjb25zdCBBbGxv
Y2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
OyB9CiAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkodWludDY0X3QpIHsgfQotICAgIHZv
aWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyh1aW50NjRfdCkgeyB9CisgICAgdm9pZCBh
Ym91dFRvTWFyayhIZWFwVmVyc2lvbikgeyB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29s
IHRlc3RBbmRTZXRNYXJrZWQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRh
bFN3ZWVwZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxv
Y2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIK
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTM5LDcgKzQwLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoZWFwLCBNYXJr
ZWRTcGFjZSogbWFya2VkU3BhY2UsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0
cmlidXRlcyYgYXR0cmlidXRlcykKICAgICA6IG1fY3VycmVudEJsb2NrKDApCiAgICAgLCBtX2xh
c3RBY3RpdmVCbG9jaygwKQotICAgICwgbV9uZXh0QmxvY2tUb1N3ZWVwKG51bGxwdHIpCiAgICAg
LCBtX2NlbGxTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjZWxsU2l6ZSkpCiAgICAgLCBtX2F0
dHJpYnV0ZXMoYXR0cmlidXRlcykKICAgICAsIG1faGVhcChoZWFwKQpAQCAtNTAsMTEgKzUwLDEz
IEBAIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKEhlYXAqIGgKIGJvb2wgTWFya2Vk
QWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSkKIHsKICAgICB1bnNpZ25lZCBp
dGVyc1NpbmNlTGFzdFRpbWVDaGVjayA9IDA7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2sgPSBtX2Jsb2NrTGlzdC5iZWdpbigpOwotICAgIHdoaWxlIChibG9jaykgewotICAgICAgICBi
bG9jayA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLSAgICAgICAgaWYgKGJsb2Nr
KQotICAgICAgICAgICAgYmxvY2stPmZsaXBJZk5lY2Vzc2FyeSgpOyAvLyBGb3JjZXMgdXMgdG8g
dG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50aWMgZWZmZWN0
LgorICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2Jsb2Nrcy5zaXplKCk7ICsr
aW5kZXgpIHsKKyAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tp
bmRleF07CisgICAgICAgIGlmIChibG9jaykgeworICAgICAgICAgICAgLy8gRm9yY2VzIHVzIHRv
IHRvdWNoIHRoZSBtZW1vcnkgb2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVj
dC4KKyAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCisgICAgICAgICAgICAgICAg
YmxvY2stPmJsb2NrKCkucmVzZXRWZXJzaW9uKCk7CisgICAgICAgIH0KICAgICAgICAgKytpdGVy
c1NpbmNlTGFzdFRpbWVDaGVjazsKICAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNoZWNr
ID49IEhlYXA6OnNfdGltZUNoZWNrUmVzb2x1dGlvbikgewogICAgICAgICAgICAgZG91YmxlIGN1
cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAgLTY2LDg0
ICs2OCw3NyBAQCBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3VibGUgCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmV0aXJlKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKQotewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7IC8v
IFRoaXMgd2lsbCBiZSBjYWxsZWQgaW4gcGFyYWxsZWwgZHVyaW5nIEdDLgotICAgIGlmIChibG9j
ayA9PSBtX2N1cnJlbnRCbG9jaykgewotICAgICAgICAvLyBUaGlzIGhhcHBlbnMgd2hlbiB0aGUg
bXV0YXRvciBpcyBydW5uaW5nLiBXZSBmaW5pc2hlZCBhIGZ1bGwgR0MgYW5kIG1hcmtlZCB0b28g
ZmV3IHRoaW5ncwotICAgICAgICAvLyB0byByZXRpcmUuIFRoZW4gd2Ugc3RhcnRlZCBhbGxvY2F0
aW5nIGluIHRoaXMgYmxvY2suIFRoZW4gYSBiYXJyaWVyIHJhbiwgd2hpY2ggbWFya2VkIGFuCi0g
ICAgICAgIC8vIG9iamVjdCBpbiB0aGlzIGJsb2NrLCB3aGljaCBwdXQgaXQgb3ZlciB0aGUgcmV0
aXJlbWVudCB0aHJlc2hvbGQuIEl0J3MgT0sgdG8gc2ltcGx5IGRvCi0gICAgICAgIC8vIG5vdGhp
bmcgaW4gdGhhdCBjYXNlLgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChibG9jayA9
PSBtX2xhc3RBY3RpdmVCbG9jaykgewotICAgICAgICAvLyBUaGlzIGNhbiBlYXNpbHkgaGFwcGVu
IGR1cmluZyBtYXJraW5nLiBJdCB3b3VsZCBiZSBlYXN5IHRvIGhhbmRsZSB0aGlzIGNhc2UsIGJ1
dCBpdCdzCi0gICAgICAgIC8vIGp1c3QgYXMgZWFzeSB0byBpZ25vcmUgaXQuCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPmlzT25MaXN0KCkpOwotICAg
IGlmIChibG9jayA9PSBtX25leHRCbG9ja1RvU3dlZXApCi0gICAgICAgIG1fbmV4dEJsb2NrVG9T
d2VlcCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLSAgICBibG9jay0+cmVtb3Zl
KCk7Ci0gICAgbV9yZXRpcmVkQmxvY2tzLnB1c2goYmxvY2spOwotfQotCi1NYXJrZWRCbG9jazo6
SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbHRlck5leHRCbG9jayhNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmluZEVt
cHR5QmxvY2soKQogewotICAgIGlmIChibG9jayA9PSBtX2Jsb2NrTGlzdC5lbmQoKSkKKyAgICBt
X2VtcHR5Q3Vyc29yID0gbV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJzb3IsIHRydWUpOworICAg
IGlmIChtX2VtcHR5Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIGJsb2NrOwotfQotCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0
TmV4dEJsb2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKLXsKLSAgICBtX25l
eHRCbG9ja1RvU3dlZXAgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2spOworICAgIHJldHVybiBtX2Js
b2Nrc1ttX2VtcHR5Q3Vyc29yXTsKIH0KIAogdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxv
Y2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlmIChtX2N1cnJlbnRCbG9jaykgewot
ICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVwKTsKKyAg
ICBpZiAobV9jdXJyZW50QmxvY2spCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1l
RnJlZUxpc3QoKTsKLSAgICAgICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2N1cnJlbnRCbG9jay0+
bmV4dCgpKTsKLSAgICB9CiAgICAgCiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0KLSAg
ICBSRUxFQVNFX0FTU0VSVChtX25leHRCbG9ja1RvU3dlZXAgIT0gbV9ibG9ja0xpc3QuZW5kKCkp
OwotCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqJiBibG9jayA9IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4
dCkgewotICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0g
ICAgICAgIC8vIEl0IHdvdWxkIGJlIHN1cGVyIHdlaXJkIGlmIHRoZSBibG9ja3Mgd2UgYXJlIHN3
ZWVwaW5nIGhhdmUgYW55dGhpbmcgYWxsb2NhdGVkIGR1cmluZyB0aGlzCi0gICAgICAgIC8vIGN5
Y2xlLgotICAgICAgICBBU1NFUlQoIWJsb2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKLSAg
ICAgICAgCi0gICAgICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJs
b2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxs
cHRyOworICAgIAorICAgIGZvciAoOzspIHsKKyAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0g
bV9jYW5BbGxvY2F0ZS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAg
IGlmIChtX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24g
YSBjb21wbGV0ZS1mdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0
Ci0gICAgICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8g
aXQgc29tZXRpbWVzLgotICAgICAgICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOwotICAgICAgICAg
ICAgYmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLT5pc01hcmtlZCgpKTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKG1f
YWxsb2NhdGlvbkN1cnNvciwgZmFsc2UpOwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxv
Y2s7Ci0gICAgICAgIHNldEZyZWVMaXN0KGZyZWVMaXN0KTsKLSAgICAgICAgYnJlYWs7CisgICAg
ICAgIGlmICh2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZUluKG1fYmxvY2tzW21fYWxsb2NhdGlv
bkN1cnNvcl0pKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAg
aWYgKCFtX2ZyZWVMaXN0KSB7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZmluZEVtcHR5
QmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlSW4oYmxvY2spOworICAgIAorICAgIGlm
IChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fbWFya2VkU3BhY2UtPmZpbmRFbXB0eUJs
b2NrKCkpIHsKKyAgICAgICAgYmxvY2stPnN3ZWVwKCk7CisgICAgICAgIGJsb2NrLT5yZW1vdmVG
cm9tQWxsb2NhdG9yKCk7CisgICAgICAgIGFkZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcmV0dXJu
IGFsbG9jYXRlSW4oYmxvY2spOwogICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
IAordm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKQoreworICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4oYmxvY2spOworICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCog
TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KQoreworICAgIEFTU0VSVChibG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlB
bGxvY2F0ZWQoKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgIAor
ICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6
OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgCisgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxl
IG9uIGEgY29tcGxldGVseSBmdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVz
ZSwgYnV0CisgICAgLy8gdGhhdCBhbGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBk
byBpdCBzb21ldGltZXMuCisgICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7
CisgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBibG9jay0+
dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlz
RnJlZUxpc3RlZCgpKTsKKyAgICAgICAgQVNTRVJUKCFpc0VtcHR5KGJsb2NrKSk7CisgICAgICAg
IEFTU0VSVCghaXNDYW5BbGxvY2F0ZShibG9jaykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgCisgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jazsKKyAgICBzZXRGcmVlTGlz
dChmcmVlTGlzdCk7CisgICAgCiAgICAgdm9pZCogcmVzdWx0OwogICAgIGlmIChtX2ZyZWVMaXN0
LnJlbWFpbmluZykgewogICAgICAgICB1bnNpZ25lZCBjZWxsU2l6ZSA9IG1fY2VsbFNpemU7CkBA
IC0xNTUsNiArMTUwLDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhv
dQogICAgICAgICByZXN1bHQgPSBoZWFkOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQpOworICAgIHNldElzRWRlbihtX2N1cnJlbnRCbG9jaywgdHJ1ZSk7CiAgICAgbV9tYXJrZWRT
cGFjZS0+ZGlkQWxsb2NhdGVJbkJsb2NrKG1fY3VycmVudEJsb2NrKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMjI3LDggKzIyMyw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2Nh
dGVTbG93Q2FzZUkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBhZGRC
bG9jayhibG9jayk7Ci0gICAgICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENv
bGxlY3RpbmcoKTsKKyAgICByZXN1bHQgPSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBBU1NFUlQo
cmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ5LDM3ICsyNDQsNzQgQEAgc2l6
ZV90IE1hcmtlZEFsbG9jYXRvcjo6YmxvY2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6OkhhbmRs
ZSogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2Nr
Ojp0cnlDcmVhdGUoKm1faGVhcCwgdGhpcywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAg
ICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3Jl
YXRlKCptX2hlYXAsIG1fY2VsbFNpemUsIG1fYXR0cmlidXRlcyk7CisgICAgaWYgKCFoYW5kbGUp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFk
ZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAg
IEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAg
c2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBh
Y2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChibG9j
ayk7CisgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9sZENhcGFjaXR5KSB7Cisg
ICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJp
dFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IubnVt
Qml0cygpID09IG9sZENhcGFjaXR5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAg
ICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAg
dmVjdG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRp
Y2VzLnRha2VMYXN0KCk7CisgICAgICAgIEFTU0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAg
ICAgbV9ibG9ja3NbaW5kZXhdID0gYmxvY2s7CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRW
ZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAg
ICBBU1NFUlQoIXZlY3RvcltpbmRleF0pOworICAgICAgICB9KTsKKworICAgIGJsb2NrLT5kaWRB
ZGRUb0FsbG9jYXRvcih0aGlzLCBpbmRleCk7CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBwZW5k
KGJsb2NrKTsKLSAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtlZFNw
YWNlLT5kaWRBZGRCbG9jayhibG9jayk7CisgICAgc2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKKyAg
ICBzZXRJc0VtcHR5KGluZGV4LCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJl
bW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlmIChtX2N1cnJl
bnRCbG9jayA9PSBibG9jaykgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZpbHRlck5leHRC
bG9jayhtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxpc3QoRnJlZUxp
c3QoKSk7Ci0gICAgfQotICAgIGlmIChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxvY2spCi0gICAg
ICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOworICAg
IEFTU0VSVChibG9jay0+YWxsb2NhdG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fYmxvY2tz
W2Jsb2NrLT5pbmRleCgpXSA9PSBibG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJlbW92ZUJsb2Nr
KCk7Ci0gICAgbV9ibG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9jay0+
aW5kZXgoKV0gPSBudWxscHRyOworICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2st
PmluZGV4KCkpOworICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFz
dEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCld
ID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIAorICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9tQWxs
b2NhdG9yKCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCiB7
Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9u
KQotICAgICAgICBtX2Jsb2NrTGlzdC50YWtlRnJvbShtX3JldGlyZWRCbG9ja3MpOwotCisgICAg
aWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1hcmtlZEFs
bG9jYXRvcjo6c3RvcEFsbG9jYXRpbmchXG4iKTsKICAgICBBU1NFUlQoIW1fbGFzdEFjdGl2ZUJs
b2NrKTsKICAgICBpZiAoIW1fY3VycmVudEJsb2NrKSB7CiAgICAgICAgIEFTU0VSVCghbV9mcmVl
TGlzdCk7CkBAIC0yOTIsMjkgKzMyNCwyNSBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3RvcEFs
bG9jYXRpbmcoKQogICAgIG1fZnJlZUxpc3QgPSBGcmVlTGlzdCgpOwogfQogCi12b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6cmVzZXQoKQordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnByZXBhcmVGb3JBbGxv
Y2F0aW9uKCkKIHsKLSAgICBtX2xhc3RBY3RpdmVCbG9jayA9IDA7Ci0gICAgbV9jdXJyZW50Qmxv
Y2sgPSAwOworICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKKyAgICBtX2N1cnJlbnRC
bG9jayA9IG51bGxwdHI7CiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7CiAKLSAgICBzZXRO
ZXh0QmxvY2tUb1N3ZWVwKG1fYmxvY2tMaXN0LmJlZ2luKCkpOworICAgIG1fYWxsb2NhdGlvbkN1
cnNvciA9IDA7CisgICAgbV9lbXB0eUN1cnNvciA9IDA7CisgICAgbV9zbmFwc2hvdEN1cnNvciA9
IDA7CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpIYW5k
bGUqIG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6OkhhbmRsZSomIGJsb2NrID0gbV9u
ZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgICAgICBuZXh0
ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgICAgICBGcmVlTGlz
dCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJl
ZUxpc3QpOwotICAgICAgICAgICAgYmxvY2stPnphcChmcmVlTGlzdCk7Ci0gICAgICAgICAgICBy
ZXRpcmUoYmxvY2spOwotICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBUaGluZ3M/CiAgICAg
fQogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewot
ICAgIG1fYmxvY2tMaXN0LnRha2VGcm9tKG1fcmV0aXJlZEJsb2Nrcyk7CiAgICAgZm9yRWFjaEJs
b2NrKAogICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CiAgICAgICAg
ICAgICBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTMyNiw0ICszNTQsMTIxIEBA
IHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzZXRGcmVlTGlzdChjb25zdCAKICAgICBtX2ZyZWVMaXN0
ID0gZnJlZUxpc3Q7CiB9CiAKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5n
KCkKK3sKKyAgICBpZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKKyAg
ICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOworICAgIG1fbGFzdEFjdGl2ZUJs
b2NrID0gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmJlZ2luTWFya2luZ0Zv
ckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28g
aXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBm
dWxsCisgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xs
ZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKKyAgICAvLyBhcyB0
aGUgbmV4dCBvbmUgaXMgZWRlbi4KKyAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVhckFsbCgpOwor
ICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0
b3I6OmVuZE1hcmtpbmcoKQoreworICAgIG1fYWxsb2NhdGVkLmNsZWFyQWxsKCk7CisgICAgCisg
ICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBjb21wcmVoZW5kLCBidXQg
dGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bworICAgIC8vIGtub3cgd2hh
dCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdlIGlzIGFscmVhZHkgZW5j
b2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCisgICAgLy8gdmVjdG9ycy4KKyAgICAKKyAgICBpZiAo
bmVlZHNEZXN0cnVjdGlvbigpKSB7CisgICAgICAgIC8vIElmIGJsb2NrcyBuZWVkIGRlc3RydWN0
aW9uIHRoZW4gbm90aGluZyBpcyBlbXB0eSEgVGhpcyBpcyBhIGNvcnJlY3QgYXNzZXJ0aW9uIGJ1
dCBtYXkKKyAgICAgICAgLy8gYmVjb21lIHdyb25nIG9uY2Ugd2UgZ28gZnVsbCBjb25jdXJyZW50
OiB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBibG9jaywgaXQgd2lsbCBmbGlja2VyCisgICAgICAgIC8v
IGludG8gdGhlIGVtcHR5IHNldCBmb3IgYSB0aW55IG1vbWVudC4gT24gdGhlIG90aGVyIGhhbmQs
IHRoaXMgY29kZSBpcyBsaWtlbHkgdG8gYmUgcnVuCisgICAgICAgIC8vIGluIHN0b3BUaGVXb3Js
ZC4KKyAgICAgICAgQVNTRVJUKG1fZW1wdHkuaXNFbXB0eSgpKTsKKyAgICAgICAgbV9jYW5BbGxv
Y2F0ZSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIG1fZW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHk7CisgICAg
bV9jYW5BbGxvY2F0ZSA9IG1fbGl2ZSAmIG1fbWFya2luZ05vdEVtcHR5ICYgfm1fbWFya2luZ1Jl
dGlyZWQ7CisgICAgCisgICAgaWYgKGZhbHNlKSB7CisgICAgICAgIGRhdGFMb2coIkJpdHMgZm9y
ICIsIG1fY2VsbFNpemUsICIsICIsIG1fYXR0cmlidXRlcywgIiBhZnRlciBlbmRNYXJraW5nOlxu
Iik7CisgICAgICAgIGR1bXBCaXRzKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgfQorfQorCit2b2lk
IE1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RGb3JFZGVuQ29sbGVjdGlvbigpCit7CisgICAgbV9z
bmFwc2hvdCB8PSBtX2VkZW47Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZv
ckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICBtX3NuYXBzaG90ID0gbV9saXZlOworfQorCitNYXJr
ZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1RvU3dlZXAoKQorewor
ICAgIG1fc25hcHNob3RDdXJzb3IgPSBtX3NuYXBzaG90LmZpbmRCaXQobV9zbmFwc2hvdEN1cnNv
ciwgdHJ1ZSk7CisgICAgaWYgKG1fc25hcHNob3RDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV9zbmFwc2hvdEN1
cnNvcl07Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzd2VlcCgpCit7CisgICAgbV9zbmFw
c2hvdC5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAg
ICAgICAgbV9ibG9ja3NbaW5kZXhdLT5zd2VlcCgpOworICAgICAgICB9KTsKK30KKwordm9pZCBN
YXJrZWRBbGxvY2F0b3I6OnNocmluaygpCit7CisgICAgbV9lbXB0eS5mb3JFYWNoU2V0Qml0KAor
ICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgbV9tYXJrZWRTcGFjZS0+
ZnJlZUJsb2NrKG1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIH0pOworfQorCit2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6YXNzZXJ0U25hcHNob3RFbXB0eSgpCit7CisgICAgaWYgKEFTU0VSVF9ESVNB
QkxFRCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChtX3NuYXBzaG90LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGRhdGFMb2coIkFzc2VydGlvbiBmYWlsZWQ6
IHNuYXBzaG90IG5vdCBlbXB0eSBpbiAiLCAqdGhpcywgIi5cbiIpOworICAgIGR1bXBCaXRzKCk7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KFJhd1BvaW50ZXIo
dGhpcyksICI6IiwgbV9jZWxsU2l6ZSwgIi8iLCBtX2F0dHJpYnV0ZXMpOworfQorCit2b2lkIE1h
cmtlZEFsbG9jYXRvcjo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICB1bnNpZ25l
ZCBtYXhOYW1lTGVuZ3RoID0gMDsKKyAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCisgICAg
ICAgIFsmXSAoRmFzdEJpdFZlY3RvciYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihuYW1lKTsKKyAgICAgICAgICAgIG1heE5hbWVMZW5n
dGggPSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBsZW5ndGgpOworICAgICAgICB9KTsKKyAgICAK
KyAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3Rv
ciYgdmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAg
ICAiLCBuYW1lLCAiOiAiKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1heE5hbWVM
ZW5ndGggLSBzdHJsZW4obmFtZSk7IGktLTspCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIg
Iik7CisgICAgICAgICAgICBvdXQucHJpbnQodmVjdG9yLCAiXG4iKTsKKyAgICAgICAgfSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDkgQEAKICNpbmNsdWRlICJBbGxvY2F0b3JBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRnJl
ZUxpc3QuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM5LDEzNCBAQCBj
bGFzcyBIZWFwOwogY2xhc3MgTWFya2VkU3BhY2U7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAKKyNkZWZpbmUgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQobWFjcm8pIFwKKyAg
ICBtYWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBoYXZl
IGFjdHVhbCBibG9ja3MuICovXAorICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNldCBv
ZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVjdHMgYW5kIG5vdGhpbmcgdG8gZGVz
dHJveS4gKi8gXAorICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9m
IGFsbGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCisgICAgbWFjcm8o
Y2FuQWxsb2NhdGUsIENhbkFsbG9jYXRlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBj
YW4gYmUgYWxsb2NhdGVkIGluIHJpZ2h0IG5vdy4gKi8gXAorICAgIG1hY3JvKGVkZW4sIEVkZW4p
IC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhl
IGxhc3QgR0MuICovXAorICAgIG1hY3JvKHNuYXBzaG90LCBTbmFwc2hvdCkgLyogVGhlIHNldCBv
ZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVw
ZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcu
ICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUg
c2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisgICAgbWFjcm8obWFy
a2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhh
dCBhcmUgcmV0aXJlZC4gKi8KKworLy8gTm90ZSB0aGF0IHRoaXMgY29sbGVjdG9yIHN1cHBvcnRz
IG92ZXJsYXBwaW5nIGFsbG9jYXRvciBzdGF0ZSB3aXRoIG1hcmtpbmcgc3RhdGUsIHNpbmNlIGlu
IGEKKy8vIGNvbmN1cnJlbnQgY29sbGVjdG9yIHlvdSBhbGxvdyBhbGxvY2F0aW9uIHdoaWxlIG1h
cmtpbmcgaXMgcnVubmluZy4gU28gaXQncyBiZXN0IHRvIHZpc3VhbGl6ZSBhCisvLyBmdWxsIG11
dGFibGUtPmVkZW4gY29sbGVjdC0+bXV0YXRlLT5mdWxsIGNvbGxlY3QgY3ljbGUgYW5kIHNlZSBo
b3cgdGhlIGJpdHMgYWJvdmUgZ2V0IGFmZmVjdGVkLgorLy8gVGhlIGV4YW1wbGUgYmVsb3cgdHJp
ZXMgdG8gYmUgZXhoYXVzdGl2ZSBhYm91dCB3aGF0IGhhcHBlbnMgdG8gdGhlIGJpdHMsIGJ1dCBv
bWl0cyBhIGxvdCBvZgorLy8gdGhpbmdzIHRoYXQgaGFwcGVuIHRvIG90aGVyIHN0YXRlLgorLy8K
Ky8vIENyZWF0ZSBhbGxvY2F0b3IKKy8vIC0gYWxsIGJpdHMgYXJlIGVtcHR5CisvLyBTdGFydCBh
bGxvY2F0aW5nIGluIHNvbWUgYmxvY2sKKy8vIC0gYWxsb2NhdGUgdGhlIGJsb2NrIGFuZCBzZXQg
dGhlIGxpdmUgYml0LgorLy8gLSB0aGUgZW1wdHkgYml0IGZvciB0aGUgYmxvY2sgZmxpY2tlcnMg
b24gYW5kIHRoZW4gZ2V0cyBpbW1lZGlhdGVseSBjbGVhcmVkIGJ5IHN3ZWVwaW5nLgorLy8gLSBz
ZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgaW4gdGhhdCBibG9jaworLy8g
LSBzZXQgdGhlIGFsbG9jYXRlZCBiaXQuCisvLyBEbyB0aGF0IHRvIGEgbG90IG9mIGJsb2NrcyBh
bmQgdGhlbiBzdGFydCBhbiBlZGVuIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygpIGhh
cyBub3RoaW5nIHRvIGRvLgorLy8gLSBieSBkZWZhdWx0IHdlIGhhdmUgY2xlYXIgbWFya2luZ05v
dEVtcHR5L21hcmtpbmdSZXRpcmVkIGJpdHMuCisvLyAtIG1hcmtpbmcgYnVpbGRzIHVwIG1hcmtp
bmdOb3RFbXB0eS9tYXJraW5nUmV0aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisv
LyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gZm9yIGRlc3RydWN0b3IgYmxvY2tz
OiBjYW5BbGxvY2F0ZSA9IGxpdmUgJiB+bWFya2luZ1JldGlyZWQKKy8vIC0gZm9yIG5vbi1kZXN0
cnVjdG9yIGJsb2NrczoKKy8vICAgICAgIGVtcHR5ID0gbGl2ZSAmIH5tYXJraW5nTm90RW1wdHkK
Ky8vICAgICAgIGNhbkFsbG9jYXRlID0gbGl2ZSAmIG1hcmtpbmdOb3RFbXB0eSAmIH5tYXJraW5n
UmV0aXJlZAorLy8gU25hcHNob3R0aW5nLgorLy8gLSBzbmFwc2hvdCB8PSBlZGVuCisvLyBQcmVw
YXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBlZGVuCisvLyBGaW5pc2ggY29sbGVjdGlv
bi4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCBoYWQgc29tZSBmcmVlIGFuZCBzb21l
IGxpdmUgb2JqZWN0cy4KKy8vIC0gY2xlYXIgdGhlIGNhbkFsbG9jYXRlIGJpdAorLy8gLSBjbGVh
ciB0aGUgc25hcHNob3QgYml0CisvLyAtIHNldCB0aGUgZWRlbiBiaXQKKy8vIEZpbmlzaCBhbGxv
Y2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9j
ayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5LgorLy8gLSBjbGVhciB0aGUgZW1wdHkgYml0Cisv
LyAtIGNsZWFyIHRoZSBzbmFwc2hvdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZp
bmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4g
c29tZSBibG9jayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5IGluIGFub3RoZXIgYWxsb2NhdG9y
LgorLy8gLSBjbGVhciB0aGUgZW1wdHkgYml0CisvLyAtIGNsZWFyIGFsbCBiaXRzIGluIHRoYXQg
YWxsb2NhdG9yCisvLyAtIHNldCB0aGUgbGl2ZSBiaXQgaW4gYW5vdGhlciBhbGxvY2F0b3IgYW5k
IHRoZSBlbXB0eSBiaXQuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSwgc25hcHNob3QgYml0cy4KKy8v
IC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9j
YXRlZCBiaXQpLgorLy8gU3RhcnQgYSBmdWxsIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2lu
ZygpIGNsZWFycyBtYXJraW5nTm90RW1wdHksIG1hcmtpbmdSZXRpcmVkCisvLyAtIHRoZSBoZWFw
IHZlcnNpb24gaXMgaW5jcmVtZW50ZWQKKy8vIC0gbWFya2luZyByZWJ1aWxkcyBtYXJraW5nTm90
RW1wdHkvbWFya2luZ3JldGlyZWQgYml0cy4KKy8vIFdlIGRvIGVuZE1hcmtpbmcoKQorLy8gLSBj
bGVhciBhbGwgYWxsb2NhdGVkIGJpdHMuCisvLyAtIHNldCBjYW5BbGxvY2F0ZS9lbXB0eSB0aGUg
c2FtZSB3YXkgYXMgaW4gZWRlbiBjb2xsZWN0aW9uLgorLy8gU25hcHNob3R0aW5nLgorLy8gLSBz
bmFwc2hvdCB8PSBsaXZlCisvLyBwcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBl
ZGVuLgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLworLy8gTm90aWNlIGhvdyBpbiB0aGlzIHNj
aGVtZSwgdGhlIGVtcHR5L2NhbkFsbG9jYXRlIHN0YXRlIHN0YXlzIHNlcGFyYXRlIGZyb20gdGhl
IG1hcmtpbmdOb3RFbXB0eS8KKy8vIG1hcmtpbmdSZXRpcmVkIHN0YXRlLiBUaGlzIGlzIG9uZSBz
dGVwIHRvd2FyZHMgaGF2aW5nIHNlcGFyYXRlZCBhbGxvY2F0aW9uIGFuZCBtYXJraW5nIHN0YXRl
LgorLy8KKy8vIEFmdGVyIHRoaXMsIHdlIGp1c3QgbmVlZCB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9u
OiB3aGF0IGRvZXMgYW4gb2JqZWN0IGFsbG9jYXRlZCBkdXJpbmcgZWRlbiBHQworLy8gbG9vayBs
aWtlIHRvIHRoZSBHQz8KKy8vCisvLyBJJ3ZlIGNvbWUgdXAgd2l0aCB0d28gY29tcGVsbGluZyBh
bnN3ZXJzLgorLy8KKy8vIDEuIEFMTE9DQVRFIEJMQUNLCisvLworLy8gSSB0aGluayB0aGF0IHRo
ZSBlYXNpZXN0IGFuc3dlciBpcyB0byBhbGxvY2F0ZSB0aGUgb2JqZWN0IHdoaXRlIGFuZCB0aGVu
CisvLyBpbW1lZGlhdGVseSBtYXJrIGl0LiBUaGlzIG1ha2VzIHRoZSBvYmplY3QgYmVoYXZlIGFz
IGlmIGl0IHdhcyBhbGxvY2F0ZWQganVzdCBiZWZvcmUgdGhlIHN0YXJ0CisvLyBvZiBHQyBhbmQg
aXQgd2FzIG9uIHRoZSBzdGFjayBhdCB0aGUgYmVnaW5uaW5nIG9mIEdDLiBXZSB3b3VsZG4ndCBo
YXZlIHRvIGRvIGFueXRoaW5nIGRpZmZlcmVudAorLy8gd2l0aCB0aGUgdmFyaW91cyBibG9jayBi
aXRzIHdoZW4gYWxsb2NhdGluZyBkdXJpbmcgR0M6IHdlIGNvdWxkIHN0aWxsIHNldCBlZGVuIGFu
ZCBhbGxvY2F0ZWQKKy8vIHNpbmNlIHRoZXkgd2lsbCBiZSBjbGVhcmVkIGFueXdheS4KKy8vCisv
LyBCdXQgdGhpcyBtZWFucyB0aGF0IHRoZSBvYmplY3Qgd29uJ3QgYmUgZWxpZ2libGUgZm9yIGZy
ZWVpbmcgdW50aWwgdGhlIG5leHQgZnVsbCBHQy4gSWRlYWxseQorLy8gd2UnZCBtYWtlIHRoZSBv
YmplY3QgaXMgZWxpZ2libGUgZm9yIGZyZWVpbmcgYXQgdGhlIG5leHQgZWRlbiBHQy4gVGhlcmUn
cyBhIGJ1bmNoIG9mIHRoaW5ncyB3ZQorLy8gY291bGQgZG8gdG8gbWFrZSB0aGlzIGhhcHBlbi4g
SGVyZSBhcmUgc29tZSBpZGVhczoKKy8vCisvLyAtIEludHJvZHVjZSBhIG5ldyBDZWxsU3RhdGUs
IGNhbGxlZCBGbG9hdCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdhcyBhbGxvY2F0ZWQg
ZHVyaW5nIHRoZQorLy8gICBHQy4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgbWFya2luZyBkb2Vz
IG5vdGhpbmcgZm9yIEZsb2F0cy4gVGhpcyB3b3VsZCBtYWtlIG1hcmtpbmcgYSB0aW55CisvLyAg
IGJpdCBtb3JlIGV4cGVuc2l2ZS4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgdGhlIGJhcnJpZXIg
cmVjb2duaXplcyBzdG9yZXMgdG8gYSBGbG9hdCB0aGUgc2FtZQorLy8gICB3YXkgdGhhdCBpdCBz
ZWVzIGEgc3RvcmUgdG8gT2xkQmxhY2s6IGl0IHB1dHMgdGhlIG9iamVjdCBvbiB0aGUgbWFyayBz
dGFjay4gRmxvYXRzIHdvdWxkIGJlCisvLyAgIHB1dCBvbiB0aGUgbWFyayBzdGFjayBhcyBGbG9h
dEdyZXkgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IHdpbGwgYmUgc2Nhbm5lZCBieSB0aGUgR0MgYnV0
IHRoYXQKKy8vICAgdGhleSBhcmVuJ3QgYWN0dWFsbHkgbWFya2VkLgorLy8KKy8vICAgTm90ZSB0
aGF0IHRoaXMgaW1wbGllcyBoYXZpbmcgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aG9zZSBjZWxs
cyBmcm9tIEZsb2F0IHRvIHNvbWV0aGluZyBlbHNlCisvLyAgIGF0IHRoZSBlbmQgb2YgR0MuICBJ
J20gbm90IHN1cmUgdGhhdCB0aGlzIGlzIHNvIGdyZWF0LgorLy8KKy8vIC0gTWFyayB0aGUgb2Jq
ZWN0cyBhZnRlciBhbGxvY2F0aW9uLCBidXQgYWxzbyBzZXQgc29tZSBvdGhlciBiaXRzIHRvIGlu
ZGljYXRlIHRoYXQgdGhlIHRob3NlCisvLyAgIG9iamVjdHMgc2hvdWxkIGJlIHVubWFya2VkIGF0
IHRoZSBlbmQgb2YgdGhlIEdDLgorLy8KKy8vIEVpdGhlciBvZiB0aGVzZSBhcHByb2FjaGVzIHdv
dWxkIG1ha2UgY29sbGVjdGlvbnMgbW9yZSBleHBlbnNpdmUsIGJ1dCBpdCBmZWVscyBsaWtlIHRo
ZSBsYXR0ZXIKKy8vIGFwcHJvYWNoIHdvdWxkIGJlIGEgcHJvZml0YWJsZSBvcHRpbWl6YXRpb24u
IEknbSBhbHNvIHJlYWxseSBnZXR0aW5nIHdvcnJpZWQgYWJvdXQgaG93IHRoaXMgR0MKKy8vIGV4
cGVyaWVuY2VzIGJhY2t3YXJkcyB0aW1lIHRyYXZlbCwgd2l0aCBhbGwgdGhlIHJlbWFya2luZyBv
ZiB0aGluZ3MgbGlrZSBuZXcgb2JqZWN0cyBhbmQKKy8vIHdoYXRub3QuCisvLworLy8gMi4gQUxM
T0NBVEUgV0hJVEUKKy8vCisvLyBJIGRvbid0IGtub3cgaWYgdGhpcyBpcyBzb3VuZCwgYnV0IGlm
IGl0IHdhcyB0aGVuIGl0IHdvdWxkIGJlIHRoZSBvcHRpbWFsIHNvbHV0aW9uLiBBbGxvY2F0aW9u
CisvLyB3b3VsZCB3b3JrIGFzIG5vdyBhbmQgY29uc2VxdWVudGx5LCBldmVyeXRoaW5nIHdlIGtu
b3cgYWJvdXQgd2hhdCB3YXMgYWxsb2NhdGVkIGR1cmluZyBhIEdDIGlzCisvLyBmb3Jnb3R0ZW4g
YXQgdGhlIGVuZCBvZiBHQy4gQnV0IHRoYXQncyBmaW5lLiBFbmQgb2YgR0MgbXVzdCByZXNjYW4g
YW55IGhlYXAgbG9jYXRpb25zIHRoYXQgZ290CisvLyBzdG9yZWQgaW50byBhbmQgaXQgbXVzdCBy
ZXNjYW4gdGhlIHN0YWNrLiBTbywgd2hpdGUgb2JqZWN0cyBhbGxvY2F0ZWQgZHVyaW5nIEdDIHdv
dWxkIGdldAorLy8gbWFya2VkIGlmIHRoZXkgc29tZWhvdyBzdXJ2aXZlZC4KKy8vCisvLyBUaGlz
IG1lYW5zIHRoYXQgZm9yIGV4YW1wbGUgaWYgdGhlcmUgaXMgYSBmaWVsZCB0aGF0IG9mdGVuIGdl
dHMgc3RvcmVkIHRvIHdpdGggbmV3IG9iamVjdHMsIHRoZQorLy8gR0Mgd2lsbCBub3Qgc2VlIGFs
bCBvZiB0aGUgdmFsdWVzIGluIHRoYXQgZmllbGQgYnV0IGluc3RlYWQgaXQgd291bGQgcG9sbCB0
aGF0IGZpZWxkLCBob3BlZnVsbHkKKy8vIHNvbWV3aGF0IHJhcmVseS4gV2UgY2FuIG1ha2UgaXQg
dmVyeSByYXJlIGJ5IG9ubHkgaW5mcmVxdWVudGx5IGRvbmF0aW5nIGZyb20gdGhlIG1haW4gdGhy
ZWFkJ3MKKy8vIHNsb3QgdmlzaXRvciB0byBhbnkgb2YgdGhlIG90aGVycy4gU28sIHdlIHdvdWxk
IG9ubHkgbWFyayBzb21lIG9mIHRoZSBuZXcgb2JqZWN0cyB0aGF0IGdvdAorLy8gc3RvcmVkIGlu
dG8gdGhhdCBmaWVsZC4gSXQgYWxzbyBtZWFucyB0aGF0IGFueSBvYmplY3QgYWxsb2NhdGVkIGR1
cmluZyB0aGUgR0MgdGhhdCBkaWRuJ3QgZ2V0CisvLyBzdG9yZWQgaW50byBhbnkgb2JqZWN0IHRo
YXQgd2FzIGxpdmUgc2luY2UgYmVmb3JlIHRoZSBzdGFydCBvZiBHQyB3b3VsZCBzaW1wbHkgZGlz
YXBwZWFyLiBUaGlzCisvLyBtZWFucyBtdWNoIGxlc3MgcmVzY2FubmluZyB0aGFuIGFueSBvZiB0
aGUgb3RoZXIgcHJvcG9zYWxzLgorLy8KKy8vIEkgcmVhbGx5IHdhbnQgdG8gZ28gd2l0aCB0aGUg
YWxsb2NhdGUtd2hpdGUgYXBwcm9hY2gsIGJ1dCBJIG5lZWQgdG8gdGhpbmsgbW9yZSBkZWVwbHkg
YWJvdXQgaXQKKy8vIGJlZm9yZSBJIGNvbW1pdCB0byBpdC4KKwogY2xhc3MgTWFya2VkQWxsb2Nh
dG9yIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCkBAIC00Niw5
ICsxNzYsMTYgQEAgcHVibGljOgogCiAgICAgTWFya2VkQWxsb2NhdG9yKEhlYXAqLCBNYXJrZWRT
cGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwogICAg
IHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKLSAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9p
ZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKICAg
ICB2b2lkIHJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZ0ZvckZ1bGxD
b2xsZWN0aW9uKCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdEZv
ckVkZW5Db2xsZWN0aW9uKCk7CisgICAgdm9pZCBzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKCk7
CisgICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc2hyaW5rKCk7CisgICAgdm9pZCBhc3NlcnRT
bmFwc2hvdEVtcHR5KCk7CiAgICAgc2l6ZV90IGNlbGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9j
ZWxsU2l6ZTsgfQogICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBj
b25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVj
dGlvbjsgfQpAQCAtNzIsNiArMjA5LDQ2IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQo
ZG91YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJsb2NrU2l6ZUZvckJ5
dGVzKHNpemVfdCk7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09S
Uyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5h
bWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShibG9j
ay0+aW5kZXgoKSk7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90
IGluZGV4LCBib29sIHZhbHVlKSB7IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1ZTsg
fSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+aW5k
ZXgoKSwgdmFsdWUpOyB9IFwKKyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMgIyMgY2FwaXRh
bEJpdE5hbWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IHJldHVybiBtXyAjIyBsb3dlckJp
dE5hbWUuYXRvbWljU2V0QW5kQ2hlY2soaW5kZXgsIHZhbHVlKTsgfSBcCisgICAgYm9vbCBhdG9t
aWNTZXRBbmRDaGVja0lzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrLCBib29sIHZhbHVlKSB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWUuYXRvbWljU2V0QW5k
Q2hlY2soYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQorICAgIEZPUl9FQUNIX01BUktFRF9BTExP
Q0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUykKKyN1bmRlZiBNQVJLRURf
QUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Cisg
ICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworI2RlZmlu
ZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXRO
YW1lKSBcCisgICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAgICAgRk9SX0VB
Q0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0spOwor
I3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUo
Y29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0NB
TExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgZnVuYyhtXyAj
IyBsb3dlckJpdE5hbWUsICNjYXBpdGFsQml0TmFtZSk7CisgICAgICAgIEZPUl9FQUNIX01BUktF
RF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKTsKKyN1bmRlZiBN
QVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAgICBNYXJrZWRBbGxv
Y2F0b3IqIG5leHRBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25leHRBbGxvY2F0b3I7IH0K
KyAgICAKKyAgICAvLyBNYXJrZWRTcGFjZSBjYWxscyB0aGlzIGR1cmluZyBpbml0LgorICAgIHZv
aWQgc2V0TmV4dEFsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcikgeyBtX25leHRB
bGxvY2F0b3IgPSBhbGxvY2F0b3I7IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBm
aW5kRW1wdHlCbG9jaygpOworICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9j
a1RvU3dlZXAoKTsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAg
ICB2b2lkIGR1bXBCaXRzKFByaW50U3RyZWFtJiA9IFdURjo6ZGF0YUZpbGUoKSk7CiAgICAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwpAQCAtODIsMjUgKzI1OSwzNyBA
QCBwcml2YXRlOgogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAg
ICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpOwogICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUlu
KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkKiBhbGxvY2F0ZUluKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5l
ZWRlZCgpOwotICAgIHZvaWQgcmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKICAg
ICB2b2lkIHNldEZyZWVMaXN0KGNvbnN0IEZyZWVMaXN0Jik7CiAgICAgCi0gICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogZmlsdGVyTmV4dEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKLSAgICB2
b2lkIHNldE5leHRCbG9ja1RvU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSopOwotICAgIAogICAg
IEZyZWVMaXN0IG1fZnJlZUxpc3Q7CisgICAgCisgICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5k
bGUqPiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsK
KyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04obG93ZXJCaXRO
YW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMgbG93ZXJCaXRO
YW1lOworICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1Jf
QklUX0RFQ0xBUkFUSU9OKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9O
CisgICAgCisgICAgLy8gQWZ0ZXIgeW91IGRvIHNvbWV0aGluZyB0byBhIGJsb2NrIGJhc2VkIG9u
IG9uZSBvZiB0aGVzZSBjdXJzb3JzLCB5b3UgY2xlYXIgdGhlIGJpdCBpbiB0aGUKKyAgICAvLyBj
b3JyZXNwb25kaW5nIGJpdHZlY3RvciBhbmQgbGVhdmUgdGhlIGN1cnNvciB3aGVyZSBpdCB3YXMu
CisgICAgc2l6ZV90IG1fYWxsb2NhdGlvbkN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBu
ZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGFsbG9jYXRpb24uCisgICAgc2l6ZV90
IG1fZW1wdHlDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlz
IGEgY2FuZGlkYXRlIGZvciBlbXB0eSBhbGxvY2F0aW9uIChhbGxvY2F0aW5nIGluIGVtcHR5IGJs
b2NrcykuCisgICAgc2l6ZV90IG1fc25hcHNob3RDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0
aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBpbmNyZW1lbnRhbCBzd2VlcGlu
Zy4KKyAgICAKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2N1cnJlbnRCbG9jazsKICAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBtX25leHRCbG9ja1RvU3dlZXA7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtl
ZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+
PiBtX2Jsb2NrTGlzdDsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRs
ZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fcmV0aXJlZEJs
b2NrczsKKwogICAgIExvY2sgbV9sb2NrOwogICAgIHVuc2lnbmVkIG1fY2VsbFNpemU7CiAgICAg
QWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAgICAgSGVhcCogbV9oZWFwOwogICAg
IE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9uZXh0
QWxsb2NhdG9yOwogfTsKIAogaW5saW5lIHB0cmRpZmZfdCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNl
dE9mRnJlZUxpc3QoKQpAQCAtMTQ5LDIwICszMzgsMTIgQEAgQUxXQVlTX0lOTElORSB2b2lkKiBN
YXJrZWRBbGxvY2F0b3I6OmFsbAogICAgIHJldHVybiBoZWFkOwogfQogCi1pbmxpbmUgdm9pZCBN
YXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcoKQotewotICAgIGlmICghbV9sYXN0QWN0
aXZlQmxvY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZnJlZUxpc3QgPSBtX2xhc3RBY3Rp
dmVCbG9jay0+cmVzdW1lQWxsb2NhdGluZygpOwotICAgIG1fY3VycmVudEJsb2NrID0gbV9sYXN0
QWN0aXZlQmxvY2s7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotfQotCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQmxv
Y2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX2Jsb2NrTGlzdC5mb3JFYWNoKGZ1
bmN0b3IpOwotICAgIG1fcmV0aXJlZEJsb2Nrcy5mb3JFYWNoKGZ1bmN0b3IpOworICAgIG1fbGl2
ZS5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAg
ICAgZnVuY3RvcihtX2Jsb2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
Y3BwCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJK
U0NlbGwuaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJT
dXBlclNhbXBsZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNiw3ICszNyw3IEBAIG5hbWVz
cGFjZSBKU0Mgewogc3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBmYWxzZTsKIHN0
YXRpYyBzaXplX3QgYmFsYW5jZTsKIAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6
OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90
IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorTWFya2Vk
QmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3Qg
Y2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAg
aWYgKGNvbXB1dGVCYWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4LDI0ICs0OSwy
MCBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQogICAgICAgICBzY3Jp
YmJsZShibG9ja1NwYWNlLCBibG9ja1NpemUpOwotICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAs
IGFsbG9jYXRvciwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOworICAgIHJldHVy
biBuZXcgSGFuZGxlKGhlYXAsIGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBibG9ja1NwYWNlKTsKIH0K
IAotTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRv
ciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsIHZvaWQqIGJsb2NrU3BhY2UpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5k
bGUoSGVhcCYgaGVhcCwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV9hdG9tc1BlckNlbGwoKGNl
bGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKGF0b21z
UGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDEpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmli
dXRlcykKLSAgICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2Vk
LgotICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRv
ci0+aGVhcCgpLT52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX3dlYWtTZXQoaGVhcC52
bSgpLCBDZWxsQ29udGFpbmVyKCkpCiB7CiAgICAgbV9ibG9jayA9IG5ldyAoTm90TnVsbCwgYmxv
Y2tTcGFjZSkgTWFya2VkQmxvY2soKmhlYXAudm0oKSwgKnRoaXMpOwogICAgIAogICAgIG1fd2Vh
a1NldC5zZXRDb250YWluZXIoKm1fYmxvY2spOwogICAgIAogICAgIGhlYXAuZGlkQWxsb2NhdGVC
bG9jayhibG9ja1NpemUpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhp
cyk7Ci0gICAgQVNTRVJUKGFsbG9jYXRvcik7CiAgICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2lu
ZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0
ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CiB9CkBAIC03OCw2ICs3
NSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQogICAgICAgICBpZiAoIShiYWxh
bmNlICUgMTApKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFsYW5jZTogIiwg
YmFsYW5jZSwgIlxuIik7CiAgICAgfQorICAgIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKICAgICBt
X2Jsb2NrLT5+TWFya2VkQmxvY2soKTsKICAgICBmYXN0QWxpZ25lZEZyZWUobV9ibG9jayk7CiAg
ICAgaGVhcC5kaWRGcmVlQmxvY2soYmxvY2tTaXplKTsKQEAgLTg1LDcgKzgzLDcgQEAgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAKIE1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhWTSYg
dm0sIEhhbmRsZSYgaGFuZGxlKQogICAgIDogbV9uZWVkc0Rlc3RydWN0aW9uKGhhbmRsZS5uZWVk
c0Rlc3RydWN0aW9uKCkpCi0gICAgLCBtX3ZlcnNpb24odm0uaGVhcC5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKSkKKyAgICAsIG1fdmVyc2lvbihNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb24pCiAgICAg
LCBtX2hhbmRsZShoYW5kbGUpCiAgICAgLCBtX3ZtKCZ2bSkKIHsKQEAgLTEwMSwyMiArOTksMjIg
QEAgTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKFZNJiB2bSwgSGFuZGxlJgogICAgIG1fYmlhc2Vk
TWFya0NvdW50ID0gbV9tYXJrQ291bnRCaWFzOyAvLyBUaGlzIG1lYW5zIHdlIGhhdmVuJ3QgbWFy
a2VkIGFueXRoaW5nIHlldC4KIH0KIAotdGVtcGxhdGU8TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUg
YmxvY2tTdGF0ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVz
dHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJi
bGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRN
b2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVt
cHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1v
ZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxs
b2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkZsaXBN
b2RlIGZsaXBNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRT
d2VlcCgpCiB7Ci0gICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwotICAgIEFTU0VSVChibG9ja1N0YXRlID09IE5ldyB8fCBibG9ja1N0YXRlID09IE1hcmtlZCk7
Ci0gICAgQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24g
JiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSkpOworICAgIFJFTEVBU0VfQVNTRVJUKCEoZGVzdHJ1
Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2RlID09IFN3ZWVw
T25seSkpOwogICAgIAotICAgIGFzc2VydEZsaXBwZWQoKTsKKyAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0
aGlzLT5ibG9jaygpOwogICAgIAotICAgIGJvb2wgaXNOZXdCbG9jayA9IGJsb2NrU3RhdGUgPT0g
TmV3OwotICAgIGJvb2wgaXNFbXB0eUJsb2NrID0gIWJsb2NrLmhhc0FueU1hcmtlZCgpCi0gICAg
ICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkCi0g
ICAgICAgICYmIGRlc3RydWN0aW9uTW9kZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uOwotICAg
IGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2NhdG9yKCkgJiYgKGlzTmV3QmxvY2sgfHwgaXNFbXB0
eUJsb2NrKSkgewotICAgICAgICBBU1NFUlQoYmxvY2subV9tYXJrcy5pc0VtcHR5KCkpOworICAg
IGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJrZWRC
bG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVxuIik7CisgICAgCisgICAgaWYgKE9wdGlv
bnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQorICAgICAgICAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0eQor
ICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRl
ZCkgeworICAgICAgICBBU1NFUlQoZmxpcE1vZGUgPT0gTmVlZHNGbGlwKTsKICAgICAgICAgCiAg
ICAgICAgIGNoYXIqIHN0YXJ0T2ZMYXN0Q2VsbCA9IHN0YXRpY19jYXN0PGNoYXIqPihjZWxsQWxp
Z24oYmxvY2suYXRvbXMoKSArIG1fZW5kQXRvbSAtIDEpKTsKICAgICAgICAgY2hhciogcGF5bG9h
ZEVuZCA9IHN0YXJ0T2ZMYXN0Q2VsbCArIGNlbGxTaXplKCk7CkBAIC0xMjQsNyArMTIyLDEwIEBA
IEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgY2hhciog
cGF5bG9hZEJlZ2luID0gYml0d2lzZV9jYXN0PGNoYXIqPihibG9jay5hdG9tcygpICsgZmlyc3RB
dG9tKCkpOwogICAgICAgICBpZiAoc2NyaWJibGVNb2RlID09IFNjcmliYmxlKQogICAgICAgICAg
ICAgc2NyaWJibGUocGF5bG9hZEJlZ2luLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsKLSAg
ICAgICAgbV9zdGF0ZSA9ICgoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkgPyBGcmVlTGlz
dGVkIDogTWFya2VkKTsKKyAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3Qp
CisgICAgICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgdHJ1ZSk7CiAgICAgICAgIEZyZWVMaXN0
IHJlc3VsdCA9IEZyZWVMaXN0OjpidW1wKHBheWxvYWRFbmQsIHBheWxvYWRFbmQgLSBwYXlsb2Fk
QmVnaW4pOwogICAgICAgICBpZiAoZmFsc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJRdWlja2x5
IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIodGhpcyksICIgd2l0aCBjZWxsIHNpemUgIiwgY2Vs
bFNpemUoKSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHJlc3VsdCwg
IlxuIik7CkBAIC0xMzcsMTQgKzEzOCwxNCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpzcGVjaWFsaXplCiAgICAgRnJlZUNlbGwqIGhlYWQgPSAwOwogICAgIHNpemVfdCBjb3VudCA9
IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9
IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIGlmIChibG9ja1N0YXRlID09IE1hcmtlZAotICAg
ICAgICAgICAgJiYgKGJsb2NrLm1fbWFya3MuZ2V0KGkpCisgICAgICAgIGlmIChlbXB0eU1vZGUg
PT0gTm90RW1wdHkKKyAgICAgICAgICAgICYmICgoZmxpcE1vZGUgPT0gRG9lc05vdE5lZWRGbGlw
ICYmIGJsb2NrLm1fbWFya3MuZ2V0KGkpKQogICAgICAgICAgICAgICAgIHx8IChuZXdseUFsbG9j
YXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYgbV9uZXdseUFsbG9jYXRlZC0+Z2V0KGkp
KSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAKICAgICAgICAgSGVhcENlbGwq
IGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZibG9jay5hdG9tcygpW2ld
KTsKIAotICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVzdHJ1Y3Rpb24gJiYg
YmxvY2tTdGF0ZSAhPSBOZXcpCisgICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNE
ZXN0cnVjdGlvbiAmJiBlbXB0eU1vZGUgPT0gTm90RW1wdHkpCiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxKU0NlbGwqPihjZWxsKS0+Y2FsbERlc3RydWN0b3IoKnZtKCkpOwogCiAgICAgICAgIGlm
IChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CkBAIC0xNjMsMjMgKzE2NCwzOCBAQCBG
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIG1fbmV3bHlB
bGxvY2F0ZWQgPSBudWxscHRyOwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6Omxp
c3QoaGVhZCwgY291bnQgKiBjZWxsU2l6ZSgpKTsKLSAgICBtX3N0YXRlID0gKHN3ZWVwTW9kZSA9
PSBTd2VlcFRvRnJlZUxpc3QgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKLSAgICBpZiAoZmFsc2Up
CisgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHNldElzRnJl
ZUxpc3RlZCgpOworICAgIGVsc2UgeworICAgICAgICB1bnNpZ25lZCBjZWxsc1BlckJsb2NrID0g
TWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7CisgICAgICAgIGlmIChjb3Vu
dCA9PSBjZWxsc1BlckJsb2NrKQorICAgICAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHko
dGhpcywgdHJ1ZSk7CisgICAgfQorICAgIGlmIChmYWxzZSkgewogICAgICAgICBkYXRhTG9nKCJT
bG93bHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXpl
ICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCBy
ZXN1bHQsICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgQWxsb2NhdG9yOiAiLCBSYXdQb2lu
dGVyKG1fYWxsb2NhdG9yKSwgIlxuIik7CisgICAgICAgIGZvciAoRnJlZUNlbGwqIGNlbGwgPSBy
ZXN1bHQuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisgICAgICAgICAgICBkYXRhTG9n
KCIgICAgQ2VsbDogIiwgUmF3UG9pbnRlcihjZWxsKSwgIiwgbmV4dDogIiwgUmF3UG9pbnRlcihj
ZWxsLT5uZXh0KSwgIlxuIik7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0g
ICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgbV9hbGxvY2F0b3ItPnNldElzU25hcHNob3QodGhp
cywgZmFsc2UpOwogICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhp
cyk7Ci0KICAgICBtX3dlYWtTZXQuc3dlZXAoKTsKIAogICAgIGlmIChzd2VlcE1vZGUgPT0gU3dl
ZXBPbmx5ICYmIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0
aW9uKQogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKIAorICAgIGlmIChVTkxJS0VMWShtX2lz
RnJlZUxpc3RlZCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVw
VG9GcmVlTGlzdCk7CisgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOworICAgIH0KKyAgICAKKyAg
ICBBU1NFUlQoIW1fYWxsb2NhdG9yLT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAgCiAgICAgaWYg
KG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uKQogICAgICAgICBy
ZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8TmVlZHNEZXN0cnVjdGlvbj4oc3dl
ZXBNb2RlKTsKICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8RG9lc05v
dE5lZWREZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsKQEAgLTE4OSw0NyArMjA1LDU3IEBAIHRlbXBs
YXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUKIEZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSBzd2VlcE1v
ZGUpCiB7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCi0gICAgICAgIHJldHVybiBzd2Vl
cEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgU2NyaWJibGU+
KHN3ZWVwTW9kZSk7Ci0gICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1v
ZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9kZSk7CisgICAgICAgIHJl
dHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxl
Pihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0
cnVjdGlvbk1vZGUsIERvbnRTY3JpYmJsZT4oc3dlZXBNb2RlKTsKIH0KIAogdGVtcGxhdGU8RGVz
dHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJi
bGVNb2RlIHNjcmliYmxlTW9kZT4KLUZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVw
SGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK0ZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVw
TW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBOZXc6
Ci0gICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAg
cmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9u
TW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgIGNh
c2UgRnJlZUxpc3RlZDoKLSAgICAgICAgLy8gSGFwcGVucyB3aGVuIGEgYmxvY2sgdHJhbnNpdGlv
bnMgdG8gZnVsbHkgYWxsb2NhdGVkLgotICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVw
VG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAgIGNhc2UgQWxsb2Nh
dGVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNlIE1hcmtlZDoKLSAgICAgICAgaWYgKG1fbmV3bHlBbGxv
Y2F0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0
Ci0gICAgICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVM
aXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCkK
LSAgICAgICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRl
c3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVM
aXN0Ci0gICAgICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0Zy
ZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFs
bG9jYXRlZD4oKQotICAgICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3
ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlB
bGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gRnJlZUxpc3QoKTsKKyAgICAvLyBJdCdzIG5vdCBvYnZpb3Vz
LCBidXQgdGhpcyBpcyB0aGUgb25seSB3YXkgdG8ga25vdyBpZiB0aGUgYmxvY2sgaXMgZW1wdHku
IEl0J3MgdGhlIG9ubHkKKyAgICAvLyBiaXQgdGhhdCBjYXB0dXJlcyB0aGVzZSBjYXZlYXRzOgor
ICAgIC8vIC0gSXQncyB0cnVlIHdoZW4gdGhlIGJsb2NrIGlzIGZyZXNobHkgYWxsb2NhdGVkLgor
ICAgIC8vIC0gSXQncyBmYWxzZSBpZiB0aGVyZSBhcmUgYW55IGRlc3RydWN0b3JzIHRoYXQgbmVl
ZCB0byBiZSBjYWxsZWQsIGV2ZW4gaWYgdGhlIGJsb2NrIGhhcyBubworICAgIC8vICAgbGl2ZSBv
YmplY3RzLgorICAgIGlmIChtX2FsbG9jYXRvci0+aXNFbXB0eSh0aGlzKSkKKyAgICAgICAgcmV0
dXJuIHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQ8SXNFbXB0eSwgZGVzdHJ1Y3Rp
b25Nb2RlLCBzY3JpYmJsZU1vZGU+KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVy
U2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQ8Tm90RW1wdHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlPihzd2VlcE1vZGUpOworfQorCit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpF
bXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgorRnJlZUxpc3QgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2Vl
cE1vZGUgc3dlZXBNb2RlKQoreworICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKQorICAgICAgICBy
ZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1v
ZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7CisgICAgcmV0
dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2Rl
LCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7Cit9
CisKK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIERl
c3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmli
YmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVk
TW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
d2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQoreworICAgIGlm
IChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICByZXR1cm4gc3dlZXBIZWxw
ZXJTZWxlY3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25N
b2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKKyAgICByZXR1cm4gc3dl
ZXBIZWxwZXJTZWxlY3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25N
b2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKK30KKwordGVtcGxhdGU8
TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9k
ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KK0Zy
ZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RmxpcE1vZGUoKQor
eworICAgIGlmIChuZWVkc0ZsaXAoKSkKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8
ZW1wdHlNb2RlLCBzd2VlcE1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXds
eUFsbG9jYXRlZE1vZGUsIE5lZWRzRmxpcD4oKTsKKyAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2Vl
cDxlbXB0eU1vZGUsIHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5l
d2x5QWxsb2NhdGVkTW9kZSwgRG9lc05vdE5lZWRGbGlwPigpOwogfQogCiB2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpCiB7Ci0gICAgZmxpcElm
TmVjZXNzYXJ5KCk7Ci0gICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0
aGlzKTsKLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOwot
ICAgIG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pc0ZyZWVMaXN0ZWQp
OworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c2V0SXNGcmVlTGlzdGVkKCkKK3sKKyAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0
aGlzLCBmYWxzZSk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSB0cnVlOwogfQogCiBjbGFzcyBTZXRO
ZXdseUFsbG9jYXRlZEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsK
QEAgLTI1MiwyNiArMjc4LDE3IEBAIHByaXZhdGU6CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRnJlZUxpc3QmIGZyZWVMaXN0KQogewotICAgIGZsaXBJ
Zk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7
CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nIVxuIik7CisgICAgQVNTRVJUKCFhbGxv
Y2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOwogCi0gICAgaWYgKG1fc3RhdGUgPT0gTWFya2Vk
KSB7Ci0gICAgICAgIC8vIElmIHRoZSBibG9jayBpcyBpbiB0aGUgTWFya2VkIHN0YXRlIHRoZW4g
d2Uga25vdyB0aGF0IG9uZSBvZiB0aGVzZQotICAgICAgICAvLyBjb25kaXRpb25zIGhvbGRzOgot
ICAgICAgICAvLwotICAgICAgICAvLyAtIEl0IHdhcyBub3QgdXNlZCBmb3IgYWxsb2NhdGlvbiBk
dXJpbmcgdGhlIHByZXZpb3VzIGFsbG9jYXRpb24gY3ljbGUuCi0gICAgICAgIC8vICAgSXQgbWF5
IGhhdmUgZGVhZCBvYmplY3RzLCBhbmQgd2Ugb25seSBrbm93IHRoZW0gdG8gYmUgZGVhZCBieSB0
aGUKLSAgICAgICAgLy8gICBmYWN0IHRoYXQgdGhlaXIgbWFyayBiaXRzIGFyZSB1bnNldC4KLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gLSBTb21lb25lIGhhZCBhbHJlYWR5IGRvbmUgc3RvcEFsbG9j
YXRpbmcoKSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBvZgotICAgICAgICAvLyAgIGhlYXAgaXRlcmF0
aW9uLCBhbmQgdGhleSBoYWQgYWxyZWFkeSAKLSAgICAgICAgLy8gSGVuY2UgaWYgdGhlIGJsb2Nr
IGlzIE1hcmtlZCB3ZSBuZWVkIHRvIGxlYXZlIGl0IE1hcmtlZC4KKyAgICBpZiAoIWlzRnJlZUxp
c3RlZCgpKSB7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBlaXRoZXIgZGlkbid0IHVz
ZSB0aGlzIGJsb2NrIGF0IGFsbCBmb3IgYWxsb2NhdGlvbiBzaW5jZSBsYXN0IEdDLAorICAgICAg
ICAvLyBvciBzb21lb25lIGhhZCBhbHJlYWR5IGRvbmUgc3RvcEFsbG9jYXRpbmcoKSBiZWZvcmUu
CiAgICAgICAgIEFTU0VSVChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7
Ci0gICAgCiAgICAgLy8gUm9sbCBiYWNrIHRvIGEgY29oZXJlbnQgc3RhdGUgZm9yIEhlYXAgaW50
cm9zcGVjdGlvbi4gQ2VsbHMgbmV3bHkKICAgICAvLyBhbGxvY2F0ZWQgZnJvbSBvdXIgZnJlZSBs
aXN0IGFyZSBub3QgY3VycmVudGx5IG1hcmtlZCwgc28gd2UgbmVlZCBhbm90aGVyCiAgICAgLy8g
d2F5IHRvIHRlbGwgd2hhdCdzIGxpdmUgdnMgZGVhZC4gCkBAIC0yOTAsMTEgKzMwNywxMiBAQCB2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nCiAgICAgICAgICAgICBjbGVh
ck5ld2x5QWxsb2NhdGVkKGNlbGwpOwogICAgICAgICB9KTsKICAgICAKLSAgICBtX3N0YXRlID0g
TWFya2VkOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7CiB9CiAKIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogeworICAgIGFsbG9jYXRvcigpLT5z
ZXRJc0FsbG9jYXRlZCh0aGlzLCBmYWxzZSk7CiAgICAgbV9ibG9jay0+Y2xlYXJNYXJrcygpOwog
ICAgIG1fd2Vha1NldC5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCkBAIC0zMDQsMTQgKzMyMiwx
MSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpCiAKIEZyZWVMaXN0
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcoKQogewotICAgIGZsaXBJZk5l
Y2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0K
LSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOworICAgIEFTU0VSVCghYWxsb2NhdG9yKCkt
PmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKIAogICAg
IGlmICghbV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAvLyBXZSBkaWRuJ3QgaGF2ZSB0byBj
cmVhdGUgYSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAuIFRoYXQgbWVhbnMgd2Ugd2VyZSBhbHJl
YWR5IE1hcmtlZAotICAgICAgICAvLyB3aGVuIHdlIGxhc3Qgc3RvcHBlZCBhbGxvY2F0aW9uLCBz
byByZXR1cm4gYW4gZW1wdHkgZnJlZSBsaXN0IGFuZCBzdGF5IGluIHRoZSBNYXJrZWQgc3RhdGUu
CisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVkIHRoZSBibG9j
ayB3aGVuIHdlIHN0b3BwZWQgYWxsb2NhdGlvbi4KICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7
CiAgICAgfQogCkBAIC0zNDUsNDAgKzM2MCwyOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmZvckVhY2hGcmVlQ2VsCiAgICAgfQogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNl
c3NhcnkoKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCku
dmVyc2lvbigpKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3Nh
cnkoKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KCk7Ci19Ci0KLXZvaWQgTWFya2Vk
QmxvY2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3coKQotewotICAgIEFTU0VSVChuZWVkc0ZsaXAoKSk7
Ci0gICAgQVNTRVJUKCF2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOwotICAg
IGNsZWFyTWFya3MoKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVy
aW5nTWFya2luZ1Nsb3coKQordm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KEhlYXBW
ZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVjdFNwYWNl
KCkuaXNNYXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgaWYg
KG5lZWRzRmxpcCgpKQotICAgICAgICBjbGVhck1hcmtzKCk7CisgICAgaWYgKG5lZWRzRmxpcCho
ZWFwVmVyc2lvbikpIHsKKyAgICAgICAgY2xlYXJNYXJrcyhoZWFwVmVyc2lvbik7CisgICAgICAg
IC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGlu
IHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRD
aGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgfQogfQogCiB2b2lk
IE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKKyAgICBjbGVhck1hcmtzKHZtKCktPmhlYXAu
b2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1h
cmtzKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQorewogICAgIG1fbWFya3MuY2xlYXJBbGwoKTsK
ICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgdHJ1ZSBh
dCB0aGUgZW5kIG9mIHRoZSBtYXJrIHBoYXNlLiBXZSBzZXQgaXQgbm93IHRvCi0gICAgLy8gYXZv
aWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4KLSAgICBoYW5kbGUoKS5tX3N0YXRlID0g
TWFya2VkOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgbV92ZXJzaW9uID0gdm0o
KS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKKyAgICBtX3ZlcnNpb24gPSBoZWFwVmVy
c2lvbjsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTM5OCwzMSArNDAxLDM4IEBAIGJv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkKICAgICByZXR1cm4gbV9ibG9jay0+
bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6d2lsbFJlbW92ZUJs
b2NrKCkKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHApCiB7Ci0gICAg
ZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgcmV0dXJuIGlzTWFya2VkKHZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCksIHApOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRp
ZENvbnN1bWVGcmVlTGlzdCgpCitib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBmbGlwSWZOZWNlc3Nh
cnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAot
ICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOworICAgIHJldHVybiBpc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7
Cit9CisKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBI
ZWFwQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHZt
KCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOworfQogCi0gICAgbV9zdGF0
ZSA9IEFsbG9jYXRlZDsKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVM
aXN0KCkKK3sKKyAgICBpZiAoZmFsc2UpCisgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlz
KSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0IVxuIik7CisgICAg
QVNTRVJUKGlzRnJlZUxpc3RlZCgpKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOworICAg
IGFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlzLCB0cnVlKTsKIH0KIAogc2l6ZV90IE1h
cmtlZEJsb2NrOjptYXJrQ291bnQoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJl
dHVybiBtX21hcmtzLmNvdW50KCk7CisgICAgcmV0dXJuIG5lZWRzRmxpcCgpID8gMCA6IG1fbWFy
a3MuY291bnQoKTsKIH0KIAogYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0VtcHR5KCkKIHsK
LSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQgJiYg
IWJsb2NrKCkuaGFzQW55TWFya2VkKCkgJiYgbV93ZWFrU2V0LmlzRW1wdHkoKSAmJiAoIW1fbmV3
bHlBbGxvY2F0ZWQgfHwgbV9uZXdseUFsbG9jYXRlZC0+aXNFbXB0eSgpKTsKKyAgICByZXR1cm4g
bV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcyk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFy
SGFzQW55TWFya2VkKCkKQEAgLTQzMiwzMyArNDQyLDQ0IEBAIHZvaWQgTWFya2VkQmxvY2s6OmNs
ZWFySGFzQW55TWFya2VkKCkKIAogdm9pZCBNYXJrZWRCbG9jazo6bm90ZU1hcmtlZFNsb3coKQog
ewotICAgIGhhbmRsZSgpLm1fYWxsb2NhdG9yLT5yZXRpcmUoJmhhbmRsZSgpKTsKKyAgICBoYW5k
bGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hlY2tJc01hcmtpbmdSZXRpcmVkKCZoYW5k
bGUoKSwgdHJ1ZSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEpTQwordm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpyZW1vdmVGcm9tQWxsb2NhdG9yKCkKK3sKKyAgICBpZiAoIW1fYWxsb2NhdG9yKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9hbGxvY2F0b3ItPnJlbW92ZUJsb2NrKHRoaXMp
OworfQogCi1uYW1lc3BhY2UgV1RGIHsKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQWRk
VG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBpbmRleCkKK3sK
KyAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KTsKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4ID0gaW5kZXg7
CisgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAgQVNTRVJUKG1faW5kZXggIT0g
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKG1fYWxsb2Nh
dG9yKTsKKyAgICAKKyAgICBtX2luZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKTsKKyAgICBtX2FsbG9jYXRvciA9IG51bGxwdHI7Cit9CiAKLXVzaW5nIG5hbWVzcGFjZSBK
U0M7Citib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCogY2Vs
bCkKK3sKKyAgICByZXR1cm4gaXNMaXZlKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9u
KCksIGNlbGwpOworfQogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTWFy
a2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSkKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQogewotICAgIHN3aXRjaCAoYmxvY2tTdGF0ZSkg
ewotICAgIGNhc2UgTWFya2VkQmxvY2s6Ok5ldzoKLSAgICAgICAgb3V0LnByaW50KCJOZXciKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6OkZyZWVMaXN0ZWQ6Ci0gICAg
ICAgIG91dC5wcmludCgiRnJlZUxpc3RlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBN
YXJrZWRCbG9jazo6QWxsb2NhdGVkOgotICAgICAgICBvdXQucHJpbnQoIkFsbG9jYXRlZCIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TWFya2VkOgotICAgICAgICBv
dXQucHJpbnQoIk1hcmtlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGlzTGl2ZUNlbGwodm0oKS0+aGVhcC5v
YmplY3RTcGFjZSgpLnZlcnNpb24oKSwgcCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdURgorfSAv
LyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjAgKzQ0LDYgQEAgY2xhc3MgTWFy
a2VkQWxsb2NhdG9yOwogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5cGVkZWYgdWludDMyX3Qg
SGVhcFZlcnNpb247CiAKLS8vIFNldCB0byBsb2cgc3RhdGUgdHJhbnNpdGlvbnMgb2YgYmxvY2tz
LgotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUyAwCi0KLSNpZiBIRUFQ
X0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFU
RV9UUkFOU0lUSU9OKGhhbmRsZSkgZG8geyAgICAgICAgICAgIFwKLSAgICAgICAgZGF0YUxvZ0Yo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
ICAgICAiJXM6JWQgJXM6IGJsb2NrICVzID0gJXAsICVkXG4iLCAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18sICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgICAgICNoYW5kbGUsICYoaGFuZGxlKS0+YmxvY2soKSwgKGhh
bmRsZSktPm1fc3RhdGUpOyAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0jZWxzZQotI2RlZmlu
ZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgKCh2b2lkKTApCi0jZW5k
aWYKLQogLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFsaWduZWQgY29udGFpbmVyIGZvciBo
ZWFwLWFsbG9jYXRlZCBvYmplY3RzLgogLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVkIHdpdGhpbiBj
ZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogLy8gbWFya2VkIGJsb2NrLCBh
bGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXplLiBPYmplY3RzIHNtYWxsZXIgdGhhbiB0aGUKQEAg
LTc2LDggKzYyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSGFuZGxl
OwogcHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0ZSA6IHVpbnQ4X3QgeyBOZXcsIEZyZWVMaXN0
ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAgIAogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2Nr
U2l6ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja01hc2sgPSB+KGJs
b2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4KQEAgLTg2
LDEyICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkQmxvY2s6
OmF0b21TaXplICYgKE1hcmtlZEJsb2NrOjphdG9tU2l6ZSAtIDEpKSwgIk1hcmtlZEJsb2NrOjph
dG9tU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShN
YXJrZWRCbG9jazo6YmxvY2tTaXplICYgKE1hcmtlZEJsb2NrOjpibG9ja1NpemUgLSAxKSksICJN
YXJrZWRCbG9jazo6YmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7Ci0KKyAgICAK
ICAgICBzdHJ1Y3QgVm9pZEZ1bmN0b3IgewogICAgICAgICB0eXBlZGVmIHZvaWQgUmV0dXJuVHlw
ZTsKICAgICAgICAgdm9pZCByZXR1cm5WYWx1ZSgpIHsgfQogICAgIH07Ci0KKyAgICAKICAgICBj
bGFzcyBDb3VudEZ1bmN0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBzaXplX3Qg
UmV0dXJuVHlwZTsKQEAgLTEwNiw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbXV0YWJsZSBS
ZXR1cm5UeXBlIG1fY291bnQ7CiAgICAgfTsKICAgICAgICAgCi0gICAgY2xhc3MgSGFuZGxlIDog
cHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPEhhbmRsZT4geworICAgIGNsYXNzIEhhbmRsZSB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7CiAgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgRG91Ymx5TGlua2VkTGlzdE5v
ZGU8SGFuZGxlPjsKQEAgLTEzMCw2ICsxMTQsMTQgQEAgcHVibGljOgogICAgICAgICBWTSogdm0o
KSBjb25zdDsKICAgICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCisgICAg
ICAgIC8vIFN3ZWVwaW5nIGVuc3VyZXMgdGhhdCBkZXN0cnVjdG9ycyBnZXQgY2FsbGVkIGFuZCBy
ZW1vdmVzIHRoZSBibG9jayBmcm9tIHRoZSBzbmFwc2hvdC4KKyAgICAgICAgLy8gU3dlZXBpbmcg
dG8gZnJlZSBsaXN0IGFsc28gcmVtb3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgZW1wdHkgc2V0LCBp
ZiBpdCB3YXMgaW4gdGhhdCBzZXQuCisgICAgICAgIC8vIFN3ZWVwaW5nIG9ubHkgbWF5IGFkZCB0
aGlzIGJsb2NrIHRvIHRoZSBlbXB0eSBzZXQsIGlmIHRoZSBibG9jayBpcyBmb3VuZCB0byBiZSBl
bXB0eS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gTm90ZSB0aGF0IHlvdSBuZWVkIHRvIG1ha2Ug
c3VyZSB0aGF0IHRoZSBlbXB0eSBiaXQgcmVmbGVjdHMgcmVhbGl0eS4gSWYgaXQncyBub3Qgc2V0
CisgICAgICAgIC8vIGFuZCB0aGUgYmxvY2sgaXMgZnJlc2hseSBjcmVhdGVkLCB0aGVuIHdlJ2xs
IG1ha2UgdGhlIG1pc3Rha2Ugb2YgcnVubmluZyBkZXN0cnVjdG9ycyBpbgorICAgICAgICAvLyB0
aGUgYmxvY2suIElmIGl0J3Mgbm90IHNldCBhbmQgdGhlIGJsb2NrIGhhcyBub3RoaW5nIG1hcmtl
ZCwgdGhlbiB3ZSdsbCBtYWtlIHRoZQorICAgICAgICAvLyBtaXN0YWtlIG9mIG1ha2luZyBhIHBv
cCBmcmVlbGlzdCByYXRoZXIgdGhhbiBhIGJ1bXAgZnJlZWxpc3QuCiAgICAgICAgIGVudW0gU3dl
ZXBNb2RlIHsgU3dlZXBPbmx5LCBTd2VlcFRvRnJlZUxpc3QgfTsKICAgICAgICAgRnJlZUxpc3Qg
c3dlZXAoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgCkBAIC0xNTMsOCArMTQ1LDYg
QEAgcHVibGljOgogICAgICAgICAvLyBhbmQgd2FzIHN1Y2Nlc3NmdWxseSBjbGVhcmVkIGFuZCBm
YWxzZSBvdGhlcndpc2UuCiAgICAgICAgIGJvb2wgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwogICAg
ICAgICAgICAgCi0gICAgICAgIHZvaWQgZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgICAg
ICAgICAKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgICAgIGNvbnN0IEFsbG9jYXRv
ckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25Nb2Rl
IGRlc3RydWN0aW9uKCkgY29uc3Q7CkBAIC0xNjQsOSArMTU0LDE1IEBAIHB1YmxpYzoKICAgICAg
ICAgc2l6ZV90IG1hcmtDb3VudCgpOwogICAgICAgICBzaXplX3Qgc2l6ZSgpOwogICAgICAgICAg
ICAgCisgICAgICAgIGlubGluZSBib29sIGlzTGl2ZShIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENl
bGwqKTsKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lvbiwgY29uc3Qg
dm9pZCopOworCiAgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAg
IGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CisKICAgICAgICAgYm9vbCBpc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgYm9vbCBpc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CisgICAgICAgIGJv
b2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uLCBjb25z
dCBIZWFwQ2VsbCopOwogICAgICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNOZXdseUFsbG9jYXRl
ZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgc2V0TmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9p
ZCopOwpAQCAtMTc0LDMxICsxNzAsMjUgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgYm9v
bCBoYXNBbnlOZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9uZXdseUFsbG9jYXRl
ZDsgfQogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBbGxvY2F0ZWQoKSBjb25zdDsKLSAg
ICAgICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgp
IGNvbnN0OwotICAgICAgICBib29sIG5lZWRzU3dlZXBpbmcoKSBjb25zdDsKLSAgICAgICAgdm9p
ZCB3aWxsUmVtb3ZlQmxvY2soKTsKLQogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rv
cj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNl
bGwoY29uc3QgRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4g
SXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVh
Y2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5j
dG9yJik7CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBuZWVkc0ZsaXAoKTsKLSAgICAgICAg
ICAgIAotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNp
b24pOwotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgICAg
IHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICAKKyAgICAgICAgCiAgICAgICAg
IHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNPbkJs
b2Nrc1RvU3dlZXAoKSBjb25zdCB7IHJldHVybiBtX2lzT25CbG9ja3NUb1N3ZWVwOyB9Ci0gICAg
ICAgIHZvaWQgc2V0SXNPbkJsb2Nrc1RvU3dlZXAoYm9vbCB2YWx1ZSkgeyBtX2lzT25CbG9ja3NU
b1N3ZWVwID0gdmFsdWU7IH0KKyAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzRnJlZUxpc3RlZDsgfQorICAgICAgICAKKyAgICAgICAgc2l6ZV90IGluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCByZW1vdmVG
cm9tQWxsb2NhdG9yKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGRpZEFkZFRvQWxsb2NhdG9y
KE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBpbmRleCk7CisgICAgICAgIHZvaWQgZGlkUmVtb3Zl
RnJvbUFsbG9jYXRvcigpOwogICAgICAgICAKLSAgICAgICAgQmxvY2tTdGF0ZSBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEhhbmRsZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBjb25z
dCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiwgdm9pZCopOworICAgICAgICBIYW5kbGUoSGVhcCYsIHNp
emVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYsIHZvaWQqKTsKICAgICAg
ICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGU+CiAgICAgICAgIEZyZWVM
aXN0IHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7
CkBAIC0yMDYsMTYgKzE5NiwzMSBAQCBwdWJsaWM6CiAgICAgICAgIGVudW0gU2NyaWJibGVNb2Rl
IHsgRG9udFNjcmliYmxlLCBTY3JpYmJsZSB9OwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBs
YXRlPERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgotICAgICAgICBGcmVlTGlzdCBzd2Vl
cEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7Cisg
ICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVwTW9kZSA9IFN3
ZWVwT25seSk7CiAgICAgICAgICAgICAKKyAgICAgICAgZW51bSBFbXB0eU1vZGUgeyBJc0VtcHR5
LCBOb3RFbXB0eSB9OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBEZXN0
cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJT
ZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICAK
ICAgICAgICAgZW51bSBOZXdseUFsbG9jYXRlZE1vZGUgeyBIYXNOZXdseUFsbG9jYXRlZCwgRG9l
c05vdEhhdmVOZXdseUFsbG9jYXRlZCB9OwotICAgICAgICAgICAgCi0gICAgICAgIHRlbXBsYXRl
PEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5l
d2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwg
RGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAg
ICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlID0gU3dlZXBP
bmx5KTsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBE
ZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAg
ICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCk7CisgICAgICAgIAorICAgICAg
ICBlbnVtIEZsaXBNb2RlIHsgTmVlZHNGbGlwLCBEb2VzTm90TmVlZEZsaXAgfTsKKyAgICAgICAg
CisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUs
IFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlLCBGbGlwTW9kZT4KICAgICAgICAgRnJl
ZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmM+CiAgICAgICAgIHZvaWQgZm9yRWFjaEZyZWVDZWxsKGNvbnN0IEZyZWVM
aXN0JiwgY29uc3QgRnVuYyYpOwotICAgICAgICAgICAgCisgICAgICAgIAorICAgICAgICB2b2lk
IHNldElzRnJlZUxpc3RlZCgpOworICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogbV9wcmV2OwogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHQ7CiAgICAgICAg
ICAgICAKQEAgLTIyNSwxNiArMjMwLDE2IEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+PiBtX25ld2x5QWxsb2NhdGVkOwogICAgICAg
ICAgICAgCiAgICAgICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwotICAgICAg
ICBCbG9ja1N0YXRlIG1fc3RhdGU7Ci0gICAgICAgIGJvb2wgbV9pc09uQmxvY2tzVG9Td2VlcCB7
IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxzZSB9OwogICAgICAg
ICAgICAgCi0gICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgICAgIE1h
cmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBt
X2luZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBX
ZWFrU2V0IG1fd2Vha1NldDsKICAgICAgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jayogbV9i
bG9jazsKICAgICB9OwogICAgICAgICAKLSAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSog
dHJ5Q3JlYXRlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0
IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSog
dHJ5Q3JlYXRlKEhlYXAmLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0
ZXMmKTsKICAgICAgICAgCiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBAIC0yNDgs
MzQgKzI1MywzNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogCiAgICAgYm9v
bCBpc01hcmtlZChjb25zdCB2b2lkKik7CisgICAgYm9vbCBpc01hcmtlZChIZWFwVmVyc2lvbiwg
Y29uc3Qgdm9pZCopOworICAgIGJvb2wgaXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24s
IGNvbnN0IHZvaWQqKTsKICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwog
ICAgICAgICAKICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2Vs
bCopOwotICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkRHVyaW5nV2Vha1Zpc2l0aW5n
KEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwotCisgICAgYm9vbCBpc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CisgICAgYm9vbCBpc01h
cmtlZE9yTmV3bHlBbGxvY2F0ZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBD
ZWxsKik7CisgICAgCiAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgIHZvaWQgc2V0
TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsK
LSAgICAgICAgCisgICAgCiAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgY29uc3QgQWxsb2Nh
dG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OwotCisgICAgCiAgICAgYm9vbCBoYXNB
bnlNYXJrZWQoKSBjb25zdDsKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKICAgICAgICAgCiAgICAg
V2Vha1NldCYgd2Vha1NldCgpOwotCisgICAgCiAgICAgYm9vbCBuZWVkc0ZsaXAoSGVhcFZlcnNp
b24pOwogICAgIGJvb2wgbmVlZHNGbGlwKCk7Ci0gICAgICAgIAotICAgIHZvaWQgZmxpcElmTmVj
ZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3Nh
cnkoSGVhcFZlcnNpb24pOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgCisgICAg
dm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lvbik7CiAgICAgICAgIAogICAgIHZvaWQgYXNzZXJ0
RmxpcHBlZCgpOwogICAgICAgICAKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247IH0KLSAgICAgICAgCisgICAgCisgICAgaW5saW5l
IHZvaWQgcmVzZXRWZXJzaW9uKCk7CisgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CiAKQEAgLTI4NCw5ICsyOTIs
OSBAQCBwcml2YXRlOgogICAgIE1hcmtlZEJsb2NrKFZNJiwgSGFuZGxlJik7CiAgICAgQXRvbSog
YXRvbXMoKTsKICAgICAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5n
U2xvdygpOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5U2xvdygpOworICAgIHZvaWQgYWJvdXRU
b01hcmtTbG93KEhlYXBWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFyTWFya3MoKTsKKyAgICB2b2lk
IGNsZWFyTWFya3MoSGVhcFZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJIYXNBbnlNYXJrZWQoKTsK
ICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWRTbG93KCk7CkBAIC00NjksNDAgKzQ3NywxMyBAQCBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bmVlZHNGbGlwKEhlYXBWCiAgICAgcmV0dXJuIGhlYXBW
ZXJzaW9uICE9IG1fdmVyc2lvbjsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJ
Zk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKK2lubGluZSB2b2lkIE1hcmtlZEJs
b2NrOjphYm91dFRvTWFyayhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKIHsKICAgICBpZiAoVU5M
SUtFTFkobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkpCi0gICAgICAgIGZsaXBJZk5lY2Vzc2FyeVNs
b3coKTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmlu
Z01hcmtpbmcoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgaWYgKFVOTElLRUxZKG5l
ZWRzRmxpcChoZWFwVmVyc2lvbikpKQotICAgICAgICBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJr
aW5nU2xvdygpOworICAgICAgICBhYm91dFRvTWFya1Nsb3coaGVhcFZlcnNpb24pOwogICAgIFdU
Rjo6bG9hZExvYWRGZW5jZSgpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2so
KS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIGhl
YXBWZXJzaW9uKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyho
ZWFwVmVyc2lvbik7Ci19Ci0KLWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBG
b3JFZGVuQ29sbGVjdGlvbigpCi17Ci0gICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgICAgICAKLSAg
ICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAotICAgIEFTU0VS
VChtX3N0YXRlICE9IE5ldyAmJiBtX3N0YXRlICE9IEZyZWVMaXN0ZWQpOwotICAgIAotICAgIG1f
c3RhdGUgPSBNYXJrZWQ7Ci19Ci0KICNpZiBBU1NFUlRfRElTQUJMRUQKIGlubGluZSB2b2lkIE1h
cmtlZEJsb2NrOjphc3NlcnRGbGlwcGVkKCkKIHsKQEAgLTUxNCw5ICs0OTUsMTYgQEAgaW5saW5l
IHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6YXNzZXJ0RgogICAgIGJsb2NrKCkuYXNzZXJ0Rmxp
cHBlZCgpOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9p
ZCogcCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChIZWFwVmVyc2lvbiBoZWFw
VmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKIHsKLSAgICBhc3NlcnRGbGlwcGVkKCk7CisgICAgcmV0
dXJuIG5lZWRzRmxpcChoZWFwVmVyc2lvbikgPyBmYWxzZSA6IG1fbWFya3MuZ2V0KGF0b21OdW1i
ZXIocCkpOworfQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50
bHkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKG5l
ZWRzRmxpcChoZWFwVmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBXVEY6Omxv
YWRMb2FkRmVuY2UoKTsKICAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7CiB9
CiAKQEAgLTU1MCw0MyArNTM4LDI0IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmNsZWFyTmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkK
K2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRl
ZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBBU1NF
UlQobV9zdGF0ZSA9PSBNYXJrZWQpOwotICAgIHJldHVybiBtX2Jsb2NrLT5pc01hcmtlZChjZWxs
KSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKKyAgICBy
ZXR1cm4gbV9ibG9jay0+aXNNYXJrZWQodmVyc2lvbiwgY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0
ZWQgJiYgaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJs
b2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWRDb25j
dXJyZW50bHkoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0g
ICAgQVNTRVJUKG1faGFuZGxlLm1fc3RhdGUgPT0gTWFya2VkKTsKLSAgICByZXR1cm4gaXNNYXJr
ZWQoY2VsbCkgfHwgKG1faGFuZGxlLm1fbmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXds
eUFsbG9jYXRlZChjZWxsKSk7CisgICAgcmV0dXJuIG1fYmxvY2stPmlzTWFya2VkQ29uY3VycmVu
dGx5KHZlcnNpb24sIGNlbGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0
ZWQoY2VsbCkpOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5
QWxsb2NhdGVkRHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25z
dCBIZWFwQ2VsbCogY2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7
Ci0gICAgaWYgKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOworICAgIHJldHVybiBp
c01hcmtlZCh2ZXJzaW9uLCBjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBt
X2hhbmRsZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZENvbmN1cnJlbnRseShIZWFwVmVy
c2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBhc3NlcnRGbGlwcGVk
KCk7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBBbGxvY2F0ZWQ6Ci0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAgIHJldHVybiBpc01hcmtl
ZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7Ci0KLSAgICBjYXNlIE5ldzoKLSAgICBjYXNlIEZyZWVM
aXN0ZWQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNNYXJrZWRDb25jdXJyZW50bHkodmVyc2lv
biwgY2VsbCkgfHwgKG1faGFuZGxlLm1fbmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXds
eUFsbG9jYXRlZChjZWxsKSk7CiB9CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20o
Y29uc3Qgdm9pZCogcCkKQEAgLTYwMywxMyArNTcyLDYgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OmlzQXRvbShjb25zdCB2bwogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCi17Ci0gICAgaWYg
KCFtX2Jsb2NrLT5pc0F0b20ocCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
aXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwotfQotCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4KIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6Okhh
bmRsZTo6Zm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKQEAgLTYyMiw2MiAr
NTg0LDYgQEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZAogICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4KLWlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9y
RWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVjZXNz
YXJ5KCk7Ci0gICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsK
LSAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9h
dG9tc1BlckNlbGwpIHsKLSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0
X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKCFpc0xp
dmUoY2VsbCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZnVuY3Rvcihj
ZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAgIH0KLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgSXRl
cmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbChjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhlYXBDZWxs
OjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7Ci0gICAgZm9yIChzaXplX3QgaSA9
IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAg
ICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9i
bG9jay0+YXRvbXMoKVtpXSk7Ci0gICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRp
b25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25l
OwotICAgIH0KLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLX0KLQotaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNTd2VlcGluZygpIGNvbnN0Ci17Ci0g
ICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2Fy
eSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNBbGxvY2F0ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8
TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1
cm4gbV9zdGF0ZSA9PSBBbGxvY2F0ZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmlzTWFya2VkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpI
YW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0g
TWFya2VkOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0
ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMp
LT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBGcmVlTGlzdGVkOwot
fQotCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aGFzQW55TWFya2VkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9iaWFzZWRNYXJrQ291bnQgIT0gbV9tYXJrQ291bnRCaWFzOwpAQCAtNzExLDgg
KzYxNyw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6TWFya2UKICAgICB0
eXBlZGVmIE1hcmtlZEJsb2NrSGFzaCBIYXNoOwogfTsKIAotdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUpOwotCiB9IC8vIG5h
bWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vIE1hcmtlZEJsb2NrX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNYXJrZWRBbGxvY2F0
b3IuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKEhlYXBWZXJzaW9uIHZlcnNpb24s
IGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoreworICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwor
ICAgIAorICAgIGlmIChVTkxJS0VMWShoYXNBbnlOZXdseUFsbG9jYXRlZCgpKSkgeworICAgICAg
ICBpZiAoaXNOZXdseUFsbG9jYXRlZChjZWxsKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICAKKyAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOworICAg
IAorICAgIGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIAorICAgIGlmIChibG9jay5uZWVkc0ZsaXAodmVyc2lvbikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKK30KKwor
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiB2
ZXJzaW9uLCBjb25zdCB2b2lkKiBwKQoreworICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzTGl2ZSh2ZXJzaW9uLCBzdGF0aWNf
Y2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
b3I+CitpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hM
aXZlQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEhlYXBDZWxsOjpLaW5kIGtp
bmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRv
bSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CisgICAgICAgIEhlYXBD
ZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRv
bXMoKVtpXSk7CisgICAgICAgIGlmICghaXNMaXZlKGNlbGwpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVz
OjpEb25lKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKKyAgICB9
CisgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPgoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBIZWFw
Q2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOworICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewor
ICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4o
Jm1fYmxvY2stPmF0b21zKClbaV0pOworICAgICAgICBpZiAoaXNMaXZlKGNlbGwpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRl
cmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
RG9uZTsKKyAgICB9CisgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisK
K2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpyZXNldFZlcnNpb24oKQoreworICAgIG1fdmVyc2lv
biA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlz
aW9uIDIwNTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkluY3JlbWVudGFs
U3dlZXBlci5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxl
ci5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCkBAIC0xOTUsNiArMTk2LDIyIEBAIE1h
cmtlZFNwYWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CisgICAg
CisgICAgTWFya2VkQWxsb2NhdG9yKiBwcmV2aW91cyA9IG51bGxwdHI7CisgICAgZm9yRWFjaFN1
YnNwYWNlKAorICAgICAgICBbJl0gKFN1YnNwYWNlJiBzdWJzcGFjZSwgQWxsb2NhdG9yQXR0cmli
dXRlcykgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGZvciAoTWFya2VkQWxsb2Nh
dG9yKiBhbGxvY2F0b3IgOiBzdWJzcGFjZS5iYWdPZkFsbG9jYXRvcnMpIHsKKyAgICAgICAgICAg
ICAgICAvLyBXZSBjYW4gc2V0IHRoaXMgaW4gYW55IG9yZGVyLiBUaGUgcG9pbnQgaXMganVzdCB0
aGF0IHdlIHdhbnQgdG8gYmUgYWJsZSB0bworICAgICAgICAgICAgICAgIC8vIGN1cnNvciBvdmVy
IGFsbG9jYXRvcnMuCisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLT5zZXROZXh0QWxsb2NhdG9y
KHByZXZpb3VzKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9
IGFsbG9jYXRvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAgIG1fZmlyc3RB
bGxvY2F0b3IgPSBwcmV2aW91czsKKyAgICBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiA9
IHByZXZpb3VzOwogfQogCiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKCkKQEAgLTIyMCwxNSAr
MjM3LDIxIEBAIHZvaWQgTWFya2VkU3BhY2U6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIAogdm9p
ZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlKFN1YnNwYWNlJiBzdWJzcGFjZSwgc2l6ZV90IGJ5dGVz
KQogewotICAgIGlmIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihz
dWJzcGFjZSwgYnl0ZXMpKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwor
ICAgIGlmIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFj
ZSwgYnl0ZXMpKSB7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci0+YWxsb2NhdGUo
KTsKKyAgICAgICAgLy9kYXRhTG9nKCJBbGxvY2F0ZWQgIiwgUmF3UG9pbnRlcihyZXN1bHQpLCAi
XG4iKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgcmV0dXJuIGFsbG9jYXRl
TGFyZ2Uoc3Vic3BhY2UsIGJ5dGVzKTsKIH0KIAogdm9pZCogTWFya2VkU3BhY2U6OnRyeUFsbG9j
YXRlKFN1YnNwYWNlJiBzdWJzcGFjZSwgc2l6ZV90IGJ5dGVzKQogewotICAgIGlmIChNYXJrZWRB
bGxvY2F0b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0ZXMpKQotICAg
ICAgICByZXR1cm4gYWxsb2NhdG9yLT50cnlBbGxvY2F0ZSgpOworICAgIGlmIChNYXJrZWRBbGxv
Y2F0b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0ZXMpKSB7CisgICAg
ICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci0+dHJ5QWxsb2NhdGUoKTsKKyAgICAgICAgLy9k
YXRhTG9nKCJUcnktYWxsb2NhdGVkICIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIHJldHVybiB0cnlBbGxvY2F0ZUxhcmdlKHN1
YnNwYWNlLCBieXRlcyk7CiB9CiAKQEAgLTI1Nyw5ICsyODAsMTAgQEAgdm9pZCogTWFya2VkU3Bh
Y2U6OnRyeUFsbG9jYXRlTGFyZ2UoU3Vicwogdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXAoKQogewog
ICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAgICBmb3JFYWNo
QmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAg
ICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsm
XSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAg
ICAgICAgICBhbGxvY2F0b3Iuc3dlZXAoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKIH0KIApAQCAtMjgyLDI4ICszMDYsMTYgQEAg
dm9pZCBNYXJrZWRTcGFjZTo6c3dlZXBMYXJnZUFsbG9jYXRpb25zKAogICAgIG1fbGFyZ2VBbGxv
Y2F0aW9uc051cnNlcnlPZmZzZXQgPSBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOwogfQogCi12
b2lkIE1hcmtlZFNwYWNlOjp6b21iaWZ5U3dlZXAoKQotewotICAgIGlmIChPcHRpb25zOjpsb2dH
QygpKQotICAgICAgICBkYXRhTG9nKCJab21iaWZ5aW5nIHN3ZWVwLi4uIik7Ci0gICAgbV9oZWFw
LT5zd2VlcGVyKCktPndpbGxGaW5pc2hTd2VlcGluZygpOwotICAgIGZvckVhY2hCbG9jaygKLSAg
ICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgaWYg
KGJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkpCi0gICAgICAgICAgICAgICAgYmxvY2stPnN3ZWVwKCk7
Ci0gICAgICAgIH0pOwotfQotCi12b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMoKQor
dm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewogICAgIGZvckVhY2hB
bGxvY2F0b3IoCiAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0
ZXJhdGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBhbGxvY2F0b3IucmVzZXQoKTsKKyAgICAgICAg
ICAgIGFsbG9jYXRvci5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOwogCi0gICAgbV9ibG9ja3NX
aXRoTmV3T2JqZWN0cy5jbGVhcigpOwogICAgIG1fYWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9u
ZXdBY3RpdmVXZWFrU2V0cyk7CisgICAgCiAgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9n
cmVzcygpID09IEVkZW5Db2xsZWN0aW9uKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJz
ZXJ5T2Zmc2V0Rm9yU3dlZXAgPSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAg
IGVsc2UKQEAgLTQwOCwxMSArNDIwLDExIEBAIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVPclNocmlu
a0Jsb2NrKE1hcmsKIAogdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKIHsKLSAgICBmb3JFYWNo
QmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAg
ICAgICAgIGZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAor
ICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0
dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLnNocmluaygpOworICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOwotICAgIC8vIEZvciBMYXJn
ZUFsbG9jYXRpb25zLCB3ZSBkbyB0aGUgbW9yYWwgZXF1aXZhbGVudCBpbiBzd2VlcExhcmdlQWxs
b2NhdGlvbnMoKS4KIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgp
CkBAIC00MjcsNTcgKzQzOSw2MSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2Nh
dGVkKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JU
aGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7ICsraSkKICAgICAg
ICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWJsb2NrLT5jbGVhck5l
d2x5QWxsb2NhdGVkKCkpOwotICAgICAgICB9KTsKLQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQotICAgICAgICBBU1NFUlQoIWFsbG9j
YXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAot
fQotCi0jaWZuZGVmIE5ERUJVRyAKLXN0cnVjdCBWZXJpZnlNYXJrZWQgOiBNYXJrZWRCbG9jazo6
Vm9pZEZ1bmN0b3IgeyAKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2spIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBzd2l0Y2ggKGJsb2NrLT5tX3N0YXRlKSB7Ci0gICAg
ICAgIGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIH0KKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxv
Y2soCisgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9j
YXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCisgICAgICAgICAgICBBU1NFUlQoIWFsbG9jYXRp
b24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7CiAgICAgfQotfTsgCi0jZW5kaWYgCit9CiAKLXZvaWQg
TWFya2VkU3BhY2U6OmZsaXAoKQordm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsK
LSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24p
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVj
dHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT5m
bGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsKLSAgICB9IGVsc2UgewotICAgICAgICBIZWFwVmVyc2lv
biBuZXh0VmVyc2lvbiA9IG1fdmVyc2lvbiArIDE7Ci0gICAgICAgIGlmIChVTkxJS0VMWShuZXh0
VmVyc2lvbiA9PSBpbml0aWFsVmVyc2lvbikpIHsKLSAgICAgICAgICAgIC8vIE9oIG5vISBWZXJz
aW9uIHdyYXAtYXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBmbGlwcGluZyBhbGwgYmxvY2tzLiBU
aGlzIGhhcHBlbnMKLSAgICAgICAgICAgIC8vIHN1cGVyIHJhcmVseSwgcHJvYmFibHkgbmV2ZXIg
Zm9yIG1vc3QgdXNlcnMuCisgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09
IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgICAg
ICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewor
ICAgICAgICAgICAgICAgIGFsbG9jYXRvci5iZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigp
OworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgbV92ZXJzaW9uID0gbmV4dFZlcnNpb24obV92ZXJzaW9u
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChVTkxJS0VMWShtX3ZlcnNpb24gPT0gaW5pdGlhbFZl
cnNpb24pKSB7CisgICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2Ug
aGFuZGxlIHRoaXMgYnkgc2V0dGluZyBhbGwgYmxvY2sgdmVyc2lvbnMgdG8gbnVsbC4KICAgICAg
ICAgICAgIGZvckVhY2hCbG9jaygKICAgICAgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGhhbmRsZSkgewotICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmZsaXBJZk5lY2Vz
c2FyeSgpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmJsb2NrKCkucmVzZXRWZXJzaW9u
KCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgbV92ZXJzaW9uID0g
bmV4dFZlcnNpb247IC8vIEhlbmNlZm9ydGgsIGZsaXBJZk5lY2Vzc2FyeSgpIHdpbGwgdHJpZ2dl
ciBvbiBhbGwgYmxvY2tzLgorICAgICAgICAKICAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24q
IGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCiAgICAgICAgICAgICBhbGxvY2F0aW9u
LT5mbGlwKCk7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwotICAgIFZlcmlmeU1hcmtlZCB2ZXJp
ZnlGdW5jdG9yOwotICAgIGZvckVhY2hCbG9jayh2ZXJpZnlGdW5jdG9yKTsKLSNlbmRpZgorICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAg
ICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYmxvY2stPm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICAgICAg
fSk7CisgICAgfQorICAgIAorICAgIG1faXNNYXJraW5nID0gdHJ1ZTsKK30KKwordm9pZCBNYXJr
ZWRTcGFjZTo6ZW5kTWFya2luZygpCit7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAg
WyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAg
ICAgICAgICAgIGFsbG9jYXRvci5lbmRNYXJraW5nKCk7CisgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7CisgICAgCisgICAgbV9pc01hcmtp
bmcgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6d2lsbFN0YXJ0SXRlcmF0aW5nKCkK
QEAgLTU0NCwxMyArNTYwLDU3IEBAIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFkZEJsb2NrKE1hcmtl
ZEJsb2MKIAogdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKQogewotICAgIGJsb2NrLT5hc3NlcnRGbGlwcGVkKCk7Ci0gICAgbV9i
bG9ja3NXaXRoTmV3T2JqZWN0cy5hcHBlbmQoYmxvY2spOwotICAgIAogICAgIGlmIChibG9jay0+
d2Vha1NldCgpLmlzT25MaXN0KCkpIHsKICAgICAgICAgYmxvY2stPndlYWtTZXQoKS5yZW1vdmUo
KTsKICAgICAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5hcHBlbmQoJmJsb2NrLT53ZWFrU2V0KCkp
OwogICAgIH0KIH0KIAorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkU3BhY2U6OmZpbmRFbXB0
eUJsb2NrKCkKK3sKKyAgICBmb3IgKDsgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IG1f
YWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRp
b24tPm5leHRBbGxvY2F0b3IoKSkgeworICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2sgPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+ZmluZEVtcHR5QmxvY2soKSkK
KyAgICAgICAgICAgIHJldHVybiBibG9jazsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3ZvaWQgTWFya2VkU3BhY2U6OnNuYXBzaG90KCkKK3sKKyAgICBpZiAobV9oZWFwLT5vcGVy
YXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKKyAgICAgICAgZm9yRWFjaEFs
bG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+
IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90Rm9y
RWRlbkNvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVh
Y2hBbGxvY2F0b3IoCisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9y
KSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFwc2hv
dEZvckZ1bGxDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0
YXR1czo6Q29udGludWU7CisgICAgICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgTWFya2Vk
U3BhY2U6OmFzc2VydFNuYXBzaG90RW1wdHkoKQoreworICAgIGlmIChBU1NFUlRfRElTQUJMRUQp
CisgICAgICAgIHJldHVybjsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1h
cmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAg
ICAgYWxsb2NhdG9yLmFzc2VydFNuYXBzaG90RW1wdHkoKTsKKyAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRT
cGFjZTo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICBmb3JFYWNoQWxsb2NhdG9y
KAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25T
dGF0dXMgeworICAgICAgICAgICAgb3V0LnByaW50KCJCaXRzIGZvciAiLCBhbGxvY2F0b3IsICI6
XG4iKTsKKyAgICAgICAgICAgIGFsbG9jYXRvci5kdW1wQml0cyhvdXQpOworICAgICAgICAgICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsMTYgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1TaXplQ2xhc3NlcyA9IGxhcmdlQ3V0b2ZmIC8gc2l6
ZVN0ZXA7CiAgICAgCi0gICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9u
ID0gNDI7ICAvLyBUaGlzIGNhbiBiZSBhbnkgdmFsdWUsIGluY2x1ZGluZyByYW5kb20gZ2FyYmFn
ZSwgc28gbG9uZyBhcyBpdCdzIGNvbnNpc3RlbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJv
Y2Vzcy4KKyAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gbnVsbFZlcnNpb24gPSAwOyAvLyBU
aGUgdmVyc2lvbiBvZiBmcmVzaGx5IGFsbG9jYXRlZCBibG9ja3MuCisgICAgc3RhdGljIGNvbnN0
IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gMTsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUg
aGVhcCBzdGFydHMgb3V0IHdpdGguCisgICAgCisgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24o
SGVhcFZlcnNpb24gdmVyc2lvbikKKyAgICB7CisgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAg
aWYgKHZlcnNpb24gPT0gbnVsbFZlcnNpb24pCisgICAgICAgICAgICB2ZXJzaW9uKys7CisgICAg
ICAgIHJldHVybiB2ZXJzaW9uOworICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90IHNpemVD
bGFzc1RvSW5kZXgoc2l6ZV90IHNpemUpCiAgICAgewpAQCAtMTE0LDcgKzEyMyw3IEBAIHB1Ymxp
YzoKICAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKSB7
IHJldHVybiBtX25vcm1hbFNwYWNlOyB9CiAgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxp
YXJ5RGF0YSgpIHsgcmV0dXJuIG1fYXV4aWxpYXJ5U3BhY2U7IH0KICAgICAKLSAgICB2b2lkIHJl
c2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIAogICAg
IHZvaWQgdmlzaXRXZWFrU2V0cyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lkIHJlYXBXZWFr
U2V0cygpOwpAQCAtMTQ0LDExICsxNTMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29uc3Vt
ZUZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICB2b2lkIGRpZEFsbG9jYXRlSW5C
bG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAKLSAgICB2b2lkIGZsaXAoKTsKKyAgICB2b2lk
IGJlZ2luTWFya2luZygpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNo
b3QoKTsKICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgICB2b2lkIHN3ZWVwKCk7
CiAgICAgdm9pZCBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKTsKLSAgICB2b2lkIHpvbWJpZnlTd2Vl
cCgpOworICAgIHZvaWQgYXNzZXJ0U25hcHNob3RFbXB0eSgpOwogICAgIHNpemVfdCBvYmplY3RD
b3VudCgpOwogICAgIHNpemVfdCBzaXplKCk7CiAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CkBAIC0x
NTcsOCArMTY4LDYgQEAgcHVibGljOgogICAgIAogICAgIEhlYXBWZXJzaW9uIHZlcnNpb24oKSBj
b25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KIAotICAgIGNvbnN0IFZlY3RvcjxNYXJrZWRCbG9j
azo6SGFuZGxlKj4mIGJsb2Nrc1dpdGhOZXdPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9j
a3NXaXRoTmV3T2JqZWN0czsgfQotICAgIAogICAgIGNvbnN0IFZlY3RvcjxMYXJnZUFsbG9jYXRp
b24qPiYgbGFyZ2VBbGxvY2F0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9u
czsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsgfQogICAgIHVuc2lnbmVk
IGxhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyB9CkBAIC0xNjksMTMg
KzE3OCwxNiBAQCBwdWJsaWM6CiAgICAgTGFyZ2VBbGxvY2F0aW9uKiogbGFyZ2VBbGxvY2F0aW9u
c0ZvclRoaXNDb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25z
Rm9yVGhpc0NvbGxlY3Rpb25FbmQ7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zRm9y
VGhpc0NvbGxlY3Rpb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9y
VGhpc0NvbGxlY3Rpb25TaXplOyB9CiAgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBmaXJzdEFs
bG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RBbGxvY2F0b3I7IH0KKyAgICBNYXJrZWRB
bGxvY2F0b3IqIGFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogZmluZEVtcHR5QmxvY2soKTsKKyAgICAKICAgICAvLyBXaGVuIHRoaXMgaXMgdHJ1ZSBp
dCBtZWFucyB0aGF0IHdlIGhhdmUgZmxpcHBlZCBidXQgdGhlIG1hcmsgYml0cyBoYXZlbid0IGNv
bnZlcmdlZCB5ZXQuCiAgICAgYm9vbCBpc01hcmtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzTWFy
a2luZzsgfQogICAgIAotICAgIC8vIEZJWE1FOiBBZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxLCBNYXJrZWRTcGFjZSB3aWxsIGNvbnRyb2wgdGhpcwot
ICAgIC8vIGZsYWcgZGlyZWN0bHkuCi0gICAgdm9pZCBzZXRJc01hcmtpbmcoYm9vbCB2YWx1ZSkg
eyBtX2lzTWFya2luZyA9IHZhbHVlOyB9Ci0KKyAgICB2b2lkIGR1bXBCaXRzKFByaW50U3RyZWFt
JiA9IFdURjo6ZGF0YUZpbGUoKSk7CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTE5MCw4ICsy
MDIsOCBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZVN1YnNwYWNlKFN1YnNw
YWNlJik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxv
Y2F0b3IoY29uc3QgRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgZm9yRWFjaFN1YnNwYWNlKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBmb3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBmb3JFYWNoU3Vic3Bh
Y2UoY29uc3QgRnVuY3RvciYpOwogICAgIAogICAgIHZvaWQgYWRkQWN0aXZlV2Vha1NldChXZWFr
U2V0Kik7CiAKQEAgLTIwNSw3ICsyMTcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0l0ZXJh
dGluZzsKICAgICBib29sIG1faXNNYXJraW5nIHsgZmFsc2UgfTsKICAgICBNYXJrZWRCbG9ja1Nl
dCBtX2Jsb2NrczsKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tzV2l0
aE5ld09iamVjdHM7CiAgICAgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+IG1fbGFyZ2VBbGxvY2F0
aW9uczsKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0IHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9u
IHsgMCB9OwpAQCAtMjE1LDQwICsyMjYsMTEgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xh
cmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUgeyAwIH07CiAgICAgU2VudGluZWxM
aW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX2FjdGl2
ZVdlYWtTZXRzOwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxXZWFrU2V0Pj4gbV9uZXdBY3RpdmVXZWFrU2V0czsKKyAgICAKKyAgICBNYXJrZWRB
bGxvY2F0b3IqIG1fZmlyc3RBbGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgTWFya2VkQWxsb2Nh
dG9yKiBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiB7IG51bGxwdHIgfTsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNo
TGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsK
LSAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Js
b2Nrcy5zZXQoKS5lbmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5z
ZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5oYW5k
bGUoKS5mb3JFYWNoTGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxs
b2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewotICAgICAgICBpZiAoYWxsb2NhdGlvbi0+
aXNMaXZlKCkpIHsKLSAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwg
YWxsb2NhdGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRv
bmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERl
YWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0g
ICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9j
a3Muc2V0KCkuZW5kKCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0
KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+aGFuZGxl
KCkuZm9yRWFjaERlYWRDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9j
YXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKLSAgICAgICAgaWYgKCFhbGxvY2F0aW9uLT5p
c0xpdmUoKSkgewotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBh
bGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9u
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIGlubGlu
ZSBNYXJrZWRBbGxvY2F0b3IqIE1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3IoU3Vic3BhY2UmIHNw
YWNlLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKQEAgLTMwNCwxNSArMjg2
LDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGZvckVhY2hTdWJzcGFjZSgKLSAgICAgICAg
WyZdIChTdWJzcGFjZSYgc3Vic3BhY2UsIEFsbG9jYXRvckF0dHJpYnV0ZXMpIC0+IEl0ZXJhdGlv
blN0YXR1cyB7Ci0gICAgICAgICAgICBmb3IgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yIDog
c3Vic3BhY2UuYmFnT2ZBbGxvY2F0b3JzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZ1bmN0b3Io
KmFsbG9jYXRvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLSAgICAg
ICAgfSk7CisgICAgZm9yIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IG1fZmlyc3RBbGxv
Y2F0b3I7IGFsbG9jYXRvcjsgYWxsb2NhdG9yID0gYWxsb2NhdG9yLT5uZXh0QWxsb2NhdG9yKCkp
IHsKKyAgICAgICAgaWYgKGZ1bmN0b3IoKmFsbG9jYXRvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpE
b25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFj
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUm
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsK
KyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAo
QmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9y
KSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25z
KSB7CisgICAgICAgIGlmIChhbGxvY2F0aW9uLT5pc0xpdmUoKSkgeworICAgICAgICAgICAgaWYg
KGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2Vs
bEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGlu
ZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwg
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7Cisg
ICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJs
b2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3Rvcikg
PT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykg
eworICAgICAgICBpZiAoIWFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAo
ZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxs
S2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDIwNTg1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTg5LDYgKzE4OSw4IEBAIHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFw
cGVuZFRvTWEKICAgICB2YWxpZGF0ZShjZWxsKTsKICNlbmRpZgogICAgIAorICAgIC8vZGF0YUxv
ZygiICAgIE1hcmtpbmcgIiwgUmF3UG9pbnRlcihjZWxsKSwgIlxuIik7CisgICAgCiAgICAgaWYg
KGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHNldE1hcmtlZEFuZEFwcGVuZFRv
TWFya1N0YWNrKGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLCBjZWxsKTsKICAgICBlbHNlCkBAIC0x
OTgsNyArMjAwLDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQog
dGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyVHlwZT4KIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90
VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYXJrU3RhY2soQ29udGFpbmVyVHlwZSYgY29u
dGFpbmVyLCBKU0NlbGwqIGNlbGwpCiB7Ci0gICAgY29udGFpbmVyLmZsaXBJZk5lY2Vzc2FyeUR1
cmluZ01hcmtpbmcobV92ZXJzaW9uKTsKKyAgICBjb250YWluZXIuYWJvdXRUb01hcmsobV92ZXJz
aW9uKTsKICAgICAKICAgICBpZiAoY29udGFpbmVyLnRlc3RBbmRTZXRNYXJrZWQoY2VsbCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI0NiwxMCArMjQ4LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6bWFy
a0F1eGlsaWFyeShjb25zdCB2bwogICAgIAogICAgIEFTU0VSVChjZWxsLT5oZWFwKCkgPT0gaGVh
cCgpKTsKICAgICAKLSAgICBpZiAoSGVhcDo6dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNl
bGwpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5
KGNlbGwpKTsKKyAgICBpZiAoSGVhcDo6dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwp
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIAogICAgIG5vdGVMaXZlQXV4aWxpYXJ5Q2Vs
bChjZWxsKTsKIH0KQEAgLTI5NCw2ICsyOTQsOCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZp
c2l0b3I6OnZpc2l0Q2hpCiB7CiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5
KGNlbGwpKTsKICAgICAKKyAgICAvL2RhdGFMb2coIlZpc2l0aW5nICIsIFJhd1BvaW50ZXIoY2Vs
bCksICJcbiIpOworCiAgICAgU2V0Q3VycmVudENlbGxTY29wZSBjdXJyZW50Q2VsbFNjb3BlKCp0
aGlzLCBjZWxsKTsKICAgICAKICAgICBtX2N1cnJlbnRPYmplY3RDZWxsU3RhdGVCZWZvcmVWaXNp
dGluZyA9IGNlbGwtPmNlbGxTdGF0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvV2Vhay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsu
aAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw5IEBACiAK
ICNpbmNsdWRlICJKU0V4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVk
ZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC05Myw0ICs5
NSwyMyBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAorbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+
PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5D
b21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6
OldlYWs8VD4+IHsKKyAgICB0eXBlZGVmIEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKKworICAg
IHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7CisgICAgc3RhdGljIEVtcHR5
VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB0eXBlZGVm
IFQqIFBlZWtUeXBlOworICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBl
JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KKyAgICBzdGF0aWMgUGVla1R5cGUgcGVl
ayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5cGUoKTsgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKICNlbmRpZiAvLyBXZWFrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV2Vha0Jsb2NrLmNwcAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3
IEBAIHZvaWQgV2Vha0Jsb2NrOjpzcGVjaWFsaXplZFZpc2l0KENvbnRhaW4KICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGNvbnN0IEpTVmFsdWUmIGpzVmFsdWUgPSB3ZWFrSW1wbC0+
anNWYWx1ZSgpOwotICAgICAgICBpZiAoY29udGFpbmVyLmlzTWFya2VkT3JOZXdseUFsbG9jYXRl
ZER1cmluZ1dlYWtWaXNpdGluZyh2ZXJzaW9uLCBqc1ZhbHVlLmFzQ2VsbCgpKSkKKyAgICAgICAg
aWYgKGNvbnRhaW5lci5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWRDb25jdXJyZW50bHkodmVyc2lv
biwganNWYWx1ZS5hc0NlbGwoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAg
ICAgICAgIGlmICghd2Vha0hhbmRsZU93bmVyLT5pc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhI
YW5kbGU8VW5rbm93bj46OndyYXBTbG90KCZjb25zdF9jYXN0PEpTVmFsdWUmPihqc1ZhbHVlKSks
IHdlYWtJbXBsLT5jb250ZXh0KCksIHZpc2l0b3IpKQpAQCAtMTQ3LDE3ICsxNDcsMTQgQEAgdm9p
ZCBXZWFrQmxvY2s6OnJlYXAoKQogICAgIC8vIElmIHRoaXMgV2Vha0Jsb2NrIGRvZXNuJ3QgYmVs
b25nIHRvIGEgQ2VsbENvbnRhaW5lciwgd2Ugd29uJ3QgZXZlbiBiZSBoZXJlLgogICAgIEFTU0VS
VChtX2NvbnRhaW5lcik7CiAgICAgCi0gICAgbV9jb250YWluZXIuZmxpcElmTmVjZXNzYXJ5KCk7
Ci0KLSAgICAvLyBXZSBvbmx5IHJlYXAgYWZ0ZXIgbWFya2luZy4KLSAgICBBU1NFUlQobV9jb250
YWluZXIuaXNNYXJrZWQoKSk7CisgICAgSGVhcFZlcnNpb24gdmVyc2lvbiA9IG1fY29udGFpbmVy
LmhlYXAoKS0+b2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHdlYWtJbXBsQ291bnQoKTsgKytpKSB7CiAgICAgICAgIFdlYWtJbXBsKiB3ZWFrSW1w
bCA9ICZ3ZWFrSW1wbHMoKVtpXTsKICAgICAgICAgaWYgKHdlYWtJbXBsLT5zdGF0ZSgpID4gV2Vh
a0ltcGw6OkRlYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAobV9jb250
YWluZXIuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxs
KCkpKSB7CisgICAgICAgIGlmIChtX2NvbnRhaW5lci5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQo
dmVyc2lvbiwgd2Vha0ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEFT
U0VSVCh3ZWFrSW1wbC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vh
a0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFr
SW5saW5lcy5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9XZWFrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiV2Vha1NldElubGlu
ZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoVHJh
aXRzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNDksMjMgKzE0OCw0IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIHdlYWtDbGUKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
LW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJh
aXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiB7Ci0gICAgdHlwZWRlZiBKU0M6OldlYWs8VD4gU3Rv
cmFnZVR5cGU7Ci0KLSAgICB0eXBlZGVmIHN0ZDo6bnVsbHB0cl90IEVtcHR5VmFsdWVUeXBlOwot
ICAgIHN0YXRpYyBFbXB0eVZhbHVlVHlwZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQotCi0gICAgdHlwZWRlZiBUKiBQZWVrVHlwZTsKLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhj
b25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9Ci0gICAgc3Rh
dGljIFBlZWtUeXBlIHBlZWsoRW1wdHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0K
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCiAjZW5kaWYgLy8gV2Vha0lubGluZXNfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCShyZXZpc2lvbiAyMDU4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUg
IldlYWsuaCIKICNpbmNsdWRlICJXZWFrSGFuZGxlT3duZXIuaCIKLSNpbmNsdWRlICJXZWFrSW5s
aW5lcy5oIgogI2luY2x1ZGUgPHR1cGxlPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDU4NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNiw2ICsxMTYsNyBAQAogI2luY2x1ZGUgIk1hcENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiTWFwSXRlcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJNYXBQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJNYXRoT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCiAjaW5jbHVkZSAiTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVN
YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5
cGVNYXAuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvdG90eXBlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5k
ZWYgUHJvdG90eXBlTWFwX2gKICNkZWZpbmUgUHJvdG90eXBlTWFwX2gKIAorI2luY2x1ZGUgIklu
ZGV4aW5nVHlwZS5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXZWFrR0NN
YXAuaCIKICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIw
NTg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTExJbnRQQ1Jh
bmdlcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tT
ZXQuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQQ1RvQ29k
ZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiU2xvdFZp
c2l0b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
R0NNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
R0NNYXAuaAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha0dDTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUg
V2Vha0dDTWFwX2gKIAogI2luY2x1ZGUgIldlYWsuaCIKLSNpbmNsdWRlICJXZWFrSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjA1ODU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk1Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1
ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAJCTBGNDU3MDQzMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzA0MjFCRTVCNThGMDA2MkE2
MjkgLyogRG9taW5hdG9ycy5oICovOyB9OwogCQkwRjQ1NzA0NTFCRTgzNDQxMDA2MkE2MjkgLyog
QnViYmxlU29ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLzsgfTsKIAkJMEY3
MjVDQUMxQzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFu
Z2VTZXQuaCAqLzsgfTsKKwkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3
QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjgy
NEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQgLyog
UGFya2luZ0xvdC5jcHAgKi87IH07CiAJCTBGODI0QTY5MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJr
aW5nTG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oICovOyB9OwogCQkwRjg3MTA1
QTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NzEwNTkxNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1Bv
aW50ZXIuaCAqLzsgfTsKQEAgLTM2Niw2ICszNjcsNyBAQAogCQkwRjQ1NzA0MjFCRTVCNThGMDA2
MkE2MjkgLyogRG9taW5hdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
b21pbmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDQ0MUJFODM0
NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJ1YmJsZVNvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MjVDQUIx
QzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJhbmdlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI1
MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJraW5nTG90LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtp
bmdMb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFya2luZ0xvdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyog
UmF3UG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXdQb2ludGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODAsNiArODgyLDcgQEAKIAkJCQlB
OEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5oICovLAogCQkJCTFBRUE4OEUxMUQ2QkJD
RjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJQThBNDcyOUYxNTFBODI1QTAwNDEy
M0ZGIC8qIEV4cG9ydE1hY3Jvcy5oICovLAorCQkJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAv
KiBGYXN0Qml0VmVjdG9yLmNwcCAqLywKIAkJCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyog
RmFzdEJpdFZlY3Rvci5oICovLAogCQkJCUE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0
TWFsbG9jLmNwcCAqLywKIAkJCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxv
Yy5oICovLApAQCAtMTU5NCw2ICsxNTk3LDcgQEAKIAkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJD
MzAgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0VDMTUxQTgyNUIw
MDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y0
MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRv
bVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQwMjE1MUE4MjVCMDA0MTIzRkYg
LyogUGFnZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIwNTg1OSkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgRGF0YUxv
Zy5jcHAKICAgICBEYXRlTWF0aC5jcHAKICAgICBEZWNpbWFsTnVtYmVyLmNwcAorICAgIEZhc3RC
aXRWZWN0b3IuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKICAgICBGaWxlUHJpbnRTdHJlYW0uY3Bw
CiAgICAgRnVuY3Rpb25EaXNwYXRjaGVyLmNwcApJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJp
dFZlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmFzdEJp
dFZlY3Rvci5oIgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93
bmVyOjpzZXRFcXVhbHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKQor
eworICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oCisgICAg
ICAgIGZhc3RDYWxsb2Mob3RoZXIuYXJyYXlMZW5ndGgoKSwgc2l6ZW9mKHVpbnQzMl90KSkpOwor
ICAgIG1lbWNweShuZXdBcnJheSwgb3RoZXIubV93b3Jkcywgb3RoZXIuYXJyYXlMZW5ndGgoKSAq
IHNpemVvZih1aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRzKQorICAgICAgICBmYXN0RnJlZSht
X3dvcmRzKTsKKyAgICBtX3dvcmRzID0gbmV3QXJyYXk7CisgICAgbV9udW1CaXRzID0gb3RoZXIu
bV9udW1CaXRzOworfQorCit2b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZVNsb3co
c2l6ZV90IG51bUJpdHMpCit7CisgICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JB
cnJheUxlbmd0aChudW1CaXRzKTsKKyAgICAKKyAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFk
IG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KKyAgICAvLyB1c2Ug
Y2FzZSBmb3IgdGhpcyBtZXRob2QgdG8gYmUgaW5pdGlhbGl6aW5nIHRoZSBzaXplIG9mIHRoZSBi
aXR2ZWN0b3IuCisgICAgCisgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3QqPihmYXN0Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOworICAgIG1l
bWNweShuZXdBcnJheSwgbV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkp
OworICAgIGlmIChtX3dvcmRzKQorICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKKyAgICBtX3dv
cmRzID0gbmV3QXJyYXk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFz
dEJpdFZlY3Rvci5oCShyZXZpc2lvbiAyMDU4NTkpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0
VmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTkxLDE3ICs5MiwxMiBAQCBwdWJsaWM6CiAgICAg
CiAgICAgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3BlcmF0b3I9KGNvbnN0IEZhc3RCaXRWZWN0
b3JXb3JkT3duZXImIG90aGVyKQogICAgIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IG90aGVy
LmFycmF5TGVuZ3RoKCk7Ci0gICAgICAgIGlmIChsZW5ndGggPT0gYXJyYXlMZW5ndGgoKSkgewot
ICAgICAgICAgICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVv
Zih1aW50MzJfdCkpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICBpZiAoYXJy
YXlMZW5ndGgoKSAhPSBvdGhlci5hcnJheUxlbmd0aCgpKQorICAgICAgICAgICAgc2V0RXF1YWxz
U2xvdyhvdGhlcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KG1fd29yZHMs
IG90aGVyLm1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICAg
ICAgICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKICAgICAgICAgfQotICAgICAgICB1
aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobGVu
Z3RoLCBzaXplb2YodWludDMyX3QpKSk7Ci0gICAgICAgIG1lbWNweShuZXdBcnJheSwgb3RoZXIu
bV93b3JkcywgbGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgIGlmIChtX3dvcmRz
KQotICAgICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Ci0gICAgICAgIG1fd29yZHMgPSBuZXdB
cnJheTsKLSAgICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQogICAgIApAQCAtMTQwLDE4ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCByZXNpemUoc2l6ZV90IG51bUJpdHMpCiAgICAgewotICAgICAgICBpZiAobnVt
Qml0cyA9PSBtX251bUJpdHMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAg
ICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhw
ZWN0IHRoZSBjb21tb24KLSAgICAgICAgLy8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJl
IGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0aGUgYml0dmVjdG9yLgotICAgICAgICAKLSAgICAg
ICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsK
LSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0
Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwotICAgICAgICBtZW1jcHkobmV3
QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAg
ICAgaWYgKG1fd29yZHMpCi0gICAgICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAg
bV93b3JkcyA9IG5ld0FycmF5OworICAgICAgICBpZiAoYXJyYXlMZW5ndGgoKSAhPSBmYXN0Qml0
VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cykpCisgICAgICAgICAgICByZXNpemVTbG93KG51bUJp
dHMpOwogICAgICAgICBtX251bUJpdHMgPSBudW1CaXRzOwogICAgIH0KICAgICAKQEAgLTE3MSw2
ICsxNTcsOSBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QqIHdvcmRzKCkgeyByZXR1cm4gbV93b3Jk
czsgfQogCiBwcml2YXRlOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEVxdWFsc1Ns
b3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHJlc2l6ZVNsb3coc2l6ZV90IG51bUJpdHMpOworICAgIAogICAgIHVpbnQz
Ml90KiBtX3dvcmRzIHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9
OwpAQCAtMzIwLDYgKzMwOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IGFycmF5TGVuZ3RoKCk7IGluZGV4LS07KSB7CisgICAgICAgICAgICBp
ZiAobV93b3Jkcy53b3JkKGluZGV4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3Rv
ckFuZFdvcmRzPHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSwgdHlwZW5hbWUgT3RoZXJXb3Jkczo6
Vmlld1R5cGU+PiBvcGVyYXRvciYoY29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4m
IG90aGVyKSBjb25zdAogICAgIHsKQEAgLTQ3MSw2ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fd29yZHMuY2xlYXJBbGwoKTsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGNvbnRlbnRzIG9mIHRoaXMgYml0dmVjdG9yIGNoYW5nZWQuCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3RoZXJXb3Jkcz4KICAgICBib29sIHNldEFuZENoZWNrKGNvbnN0IEZhc3RCaXRWZWN0b3JJ
bXBsPE90aGVyV29yZHM+JiBvdGhlcikKICAgICB7CkBAIC01NTAsNiArNTQ5LDI4IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBhdChpbmRleCk7CiAgICAgfQorICAgIAorICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgY29udGVudHMgY2hhbmdlZC4KKyAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgYXRvbWljU2V0QW5kQ2hlY2soc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKQorICAgIHsK
KyAgICAgICAgdWludDMyX3QqIHBvaW50ZXIgPSAmbV93b3Jkcy53b3JkKGluZGV4ID4+IDUpOwor
ICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoaW5kZXggJiAzMSk7CisgICAgICAgIGZvciAo
OzspIHsKKyAgICAgICAgICAgIHVpbnQzMl90IG9sZFZhbHVlID0gKnBvaW50ZXI7CisgICAgICAg
ICAgICB1aW50MzJfdCBuZXdWYWx1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAg
ICAgICAgICAgIGlmIChvbGRWYWx1ZSAmIG1hc2spCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlIHwgbWFzazsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCEob2xkVmFsdWUgJiBtYXNr
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG5l
d1ZhbHVlID0gb2xkVmFsdWUgJiB+bWFzazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICh3ZWFrQ29tcGFyZUFuZFN3YXAocG9pbnRlciwgb2xkVmFsdWUsIG5ld1ZhbHVlKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289080</attachid>
            <date>2016-09-16 11:09:44 -0700</date>
            <delta_ts>2016-09-17 11:26:04 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>139269</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0NyBA
QAorMjAxNi0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgTWFya2VkQmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9j
YXRpb24gYW5kIG1hcmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgQ29uY3VycmVudCBHQ3MgbXVzdCBhbGxvdyBmb3IgbXV0
YXRpb24gYW5kIGFsbG9jYXRpb24gZHVyaW5nIGNvbGxlY3Rpb24uIFdlIGFscmVhZHkga25vdwor
ICAgICAgICBob3cgdG8gbXV0YXRlIGR1cmluZyBjb2xsZWN0aW9uLiBXZSBoYXZlIGEgd3JpdGUg
YmFycmllciBmb3IgdGhhdC4gQWxsb2NhdGlvbiBkdXJpbmcKKyAgICAgICAgY29sbGVjdGlvbiBp
cyBtb3JlIGludm9sdmVkOiB0aGUgY29sbGVjdG9yIG1vZGlmaWVzIHRoZSB0aGUgbWFyayBiaXRz
LCBhcyB3ZWxsIGFzIG90aGVyCisgICAgICAgIGtpbmRzIG9mIE1hcmtlZEJsb2NrIHN0YXRlLCBp
bi1wbGFjZSBkdXJpbmcgYSBjb2xsZWN0aW9uLiBUaGUgYWxsb2NhdG9yIHVzZXMgdGhhdCBzYW1l
CisgICAgICAgIE1hcmtlZEJsb2NrIHN0YXRlIHRvIGRlY2lkZSB3aGljaCByZWdpb25zIG9mIG1l
bW9yeSBhcmUgZnJlZS4gVGhpcyB3b3JrcyBpZiB0aGUgYWxsb2NhdG9yCisgICAgICAgIG5ldmVy
IHJ1bnMgd2hpbGUgdGhlIGNvbGxlY3RvciBpcyBydW5uaW5nLCBidXQgaWYgd2Ugd2FudCB0byBh
bGxvdyB0aGVtIHRvIHJ1biBhdCB0aGUgc2FtZQorICAgICAgICB0aW1lLCB0aGVuIHdlIG5lZWQg
dG8gaGF2ZSB0d28gdmVyc2lvbnMgb2YgdGhlIHN0YXRlOiBvbmUgdmVyc2lvbiBidWlsdCB1cCBi
eSB0aGUKKyAgICAgICAgY29sbGVjdG9yIGFuZCBhbm90aGVyIGNvbnN1bWVkIGJ5IHRoZSBhbGxv
Y2F0b3IuIFdlIGNsZWFyIHRoZSBjb2xsZWN0b3Igc3RhdGUgYXQgdGhlCisgICAgICAgIGJlZ2lu
bmluZyBvZiBjb2xsZWN0aW9uLCBhbmQgc3BsYXQgdGhlIGNvbGxlY3RvciBzdGF0ZSBvbnRvIHRo
ZSBhbGxvY2F0b3Igc3RhdGUgYWZ0ZXIKKyAgICAgICAgY29sbGVjdGlvbi4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgY291bGQgYmUgc3VwZXIgZXhwZW5zaXZlLCBidXQgd2UgY2FuIG1ha2UgaXQg
Y2hlYXAgd2l0aCBzb21lIGNsZXZlcm5lc3MuIFRoZSBiaWdnZXN0CisgICAgICAgIG9ic2VydmF0
aW9uIGlzIGp1c3QgdGhhdCBtb3N0IG9mIHRoZSBzdGF0ZSBpcyBhIGhhbmRmdWwgb2YgYml0cyBw
ZXIgYmxvY2s6IGlzIHRoZSBibG9jaworICAgICAgICBmcmVlLWxpc3RlZD8gaXMgaXQgY29tcGxl
dGVseSBmdWxsPyBjb21wbGV0ZWx5IGVtcHR5PyBpbiB0aGUgaW5jcmVtZW50YWwgc3dlZXBlcidz
CisgICAgICAgIHNuYXBzaG90PyBpcyBpdCByZXRpcmVkPyBpcyBpdCBpbiBlZGVuPyBUaGVyZSBp
cyBhbHNvIHN0YXRlIGluc2lkZSBibG9ja3MsIGxpa2UgdGhlIG1hcmsKKyAgICAgICAgYml0cywg
YnV0IEkgaGF2ZSBhIHNvbGlkIHBsYW4gdGhlcmUgYW5kIEknbGwgc2F2ZSBpdCBmb3IgYW5vdGhl
ciBwYXRjaC4gT25jZSB3ZSB2aWV3IHRoZQorICAgICAgICBzdGF0ZSBvZiBibG9ja3MgYXMgYml0
cywgd2UgY2FuIHB1dCB0aGF0IHN0YXRlIGludG8gYml0dmVjdG9ycywgc28gdGhhdCBpZiB0aGUg
Y29sbGVjdG9yCisgICAgICAgIG5lZWRzIHRvIHRyYW5zZm9ybSB0aGUgc3RhdGUgb2Ygc29tZSBi
bG9ja3MsIGl0IGNhbiBkbyBpdCB3aXRoIGEgc2luZ2xlIG9wZXJhdGlvbiBvdmVyCisgICAgICAg
IGJpdHZlY3RvcnMuIEkgbGlrZSB0byB0aGluayBvZiB0aGlzIGFzIDMyLXdheSBwYXJhbGxlbGl6
aW5nIGJsb2NrIG9wZXJhdGlvbnMsIHNpbmNlCisgICAgICAgIGRvaW5nIG9uZSBvcGVyYXRpb24g
b24gYSAzMi1iaXQgd29yZCBpbiBvbmUgb2YgdGhvc2UgYml0dmVjdG9ycyBpbnN0YW50bHkgYWZm
ZWN0cyAzMgorICAgICAgICBibG9ja3MuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBj
b252ZXJ0cyBhbGwgcHJldmlvdXMgY29sbGVjdGlvbnMgb2YgTWFya2VkQmxvY2tzLCBhbG9uZyB3
aXRoIHRoZSBNYXJrZWRCbG9jaworICAgICAgICBzdGF0ZSwgaW50byA4IGJpdHZlY3RvcnMgKGxp
dmUsIGVtcHR5LCBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlLCBlZGVuLCBzbmFwc2hvdCwKKyAgICAg
ICAgbWFya2luZ05vdEVtcHR5LCBhbmQgbWFya2luZ1JldGlyZWQpLiBUaGUgYml0dmVjdG9ycyBz
ZXBhcmF0ZSBhbGxvY2F0b3Igc3RhdGUgKGVtcHR5LAorICAgICAgICBhbGxvY2F0ZWQsIGNhbkFs
bG9jYXRlKSBmcm9tIG1hcmtpbmcgc3RhdGUgKG1hcmtpbmdOb3RFbXB0eSwgbWFya2luZ1JldGly
ZWQpLgorICAgICAgICAKKyAgICAgICAgQXMgYSBuaWNlIHNpZGUtZWZmZWN0IG9mIHN3aXRjaGlu
ZyB0byBiaXR2ZWN0b3JzLCB3ZSBnZXQgc2l6ZSBjbGFzcyByZWJhbGFuY2luZyBmb3IgZnJlZS4K
KyAgICAgICAgSXQgdXNlZCB0byBiZSB0aGF0IGlmIGEgTWFya2VkQWxsb2NhdG9yIGhhZCBhbiBl
bXB0eSBibG9jaywgd2Ugd291bGQgb25seSBhbGxvdyB0aGF0CisgICAgICAgIG1lbW9yeSB0byBi
ZSByZXVzZWQgYnkgYSBkaWZmZXJlbnQgTWFya2VkQWxsb2NhdG9yIGlmIHdlIGRpZCBhbiBpbmNy
ZW1lbnRhbCBzd2VlcCBvciBhCisgICAgICAgIGZ1bGwgZWFnZXIgc3dlZXAuIE5vdyB3ZSBodW50
IGRvd24gYWxsIGRlc3RydWN0b3JsZXNzIGVtcHR5IGJsb2NrcyBiZWZvcmUgYWxsb2NhdGluZyBu
ZXcKKyAgICAgICAgTWFya2VkQmxvY2tzLiBJdCB3b3VsZCBiZSByZWxhdGl2ZWx5IGVhc3kgdG8g
YWxzbyBodW50IGRvd24gZGVzdHJ1Y3RvciBlbXB0eSBibG9ja3MsIGJ1dAorICAgICAgICB0aGUg
dGhlb3J5IGlzIHRoYXQgdGhvc2UgbWlnaHQgYmUgZXhwZW5zaXZlIHRvIHN3ZWVwLCBzbyBpdCBt
aWdodCBzdGlsbCBiZSBiZXR0ZXIgdG8gbGVhdmUKKyAgICAgICAgdGhvc2UgdG8gdGhlIGluY3Jl
bWVudGFsIHN3ZWVwZXIuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAg
KiBoZWFwL0NlbGxDb250YWluZXIuaDoKKyAgICAgICAgKiBoZWFwL0NlbGxDb250YWluZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OnZtKToKKyAgICAgICAgKEpTQzo6
Q2VsbENvbnRhaW5lcjo6aGVhcCk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmlzTWFy
a2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmFib3V0
VG9NYXJrKToKKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6aXNNYXJrZWQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmJlZ2luTWFya2luZyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2Fy
YmFnZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJbXBsKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6c25hcHNob3RNYXJrZWRTcGFjZSk6CisgICAgICAgIChKU0M6OkhlYXA6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6em9tYmlmeURlYWRPYmplY3RzKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3I6Ok1hcmtlZEJsb2NrU25h
cHNob3RGdW5jdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTbmFwc2hv
dEZ1bmN0b3I6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpyZXNl
dEFsbG9jYXRvcnMpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAq
IGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWQpOgorICAg
ICAgICAoSlNDOjpIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6Okhl
YXA6OnRlc3RBbmRTZXRNYXJrZWQpOgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuY3Bw
OgorICAgICAgICAqIGhlYXAvSGVhcFV0aWwuaDoKKyAgICAgICAgKEpTQzo6SGVhcFV0aWw6OmZp
bmRHQ09iamVjdFBvaW50ZXJzRm9yTWFya2luZyk6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpp
c1BvaW50ZXJHQ09iamVjdEpTQ2VsbCk6CisgICAgICAgICogaGVhcC9IZWFwVmVyaWZpZXIuY3Bw
OgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJ
bmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXApOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVy
OjpzdGFydFN3ZWVwaW5nKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjp3aWxs
RmluaXNoU3dlZXBpbmcpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6Cisg
ICAgICAgICogaGVhcC9MYXJnZUFsbG9jYXRpb24uaDoKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxv
Y2F0aW9uOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJr
ZWRDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6YWJvdXRU
b01hcmspOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2VkRHVyaW5nV2Vh
a1Zpc2l0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjpmbGlw
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmZs
aXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFy
a2VkQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpNYXJrZWRB
bGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJsb2NrKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbik6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUltcGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OnRyeUFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0
b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9j
ayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnByZXBhcmVGb3JBbGxvY2F0aW9uKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEFsbG9jYXRvcjo6YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlND
OjpNYXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1RvU3dlZXApOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzaHJp
bmspOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFzc2VydFNuYXBzaG90RW1wdHkp
OgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmR1bXApOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OmR1bXBCaXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9y
OjpyZXRpcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZpbHRl
ck5leHRCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0
TmV4dEJsb2NrVG9Td2VlcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJpdFZlY3Rvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpuZXh0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQWxsb2NhdG9yOjpzZXROZXh0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OnJlc3VtZUFsbG9jYXRpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6fkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJrZWRC
bG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dl
ZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2Rl
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RF
bXB0eU1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBl
clNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c2V0SXNGcmVlTGlzdGVkKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVk
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om1hcmtDb3VudCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6bm90ZU1hcmtlZFNsb3cpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpy
ZW1vdmVGcm9tQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
ZGlkQWRkVG9BbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpk
aWRSZW1vdmVGcm9tQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2Vs
bCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0
U3RhdGVBbmRTd2VlcE1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3cpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxsUmVtb3ZlQmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpwcmludEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01h
cmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRnJlZUxp
c3RlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmluZGV4KToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkQ29u
Y3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzT25C
bG9ja3NUb1N3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6c2V0SXNPbkJsb2Nrc1RvU3dlZXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpzdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwRm9yRWRlbkNv
bGxlY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRE
dXJpbmdXZWFrVmlzaXRpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc0xpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6Zm9yRWFjaExpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNTd2VlcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzQWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQpOiBEZWxldGVkLgorICAgICAgICAqIGhl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6SGFuZGxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExp
dmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRD
ZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0VmVyc2lvbik6CisgICAgICAg
ICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJr
ZWRTcGFjZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzaHJpbmspOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZW5kTWFy
a2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2spOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2spOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6c25hcHNob3QpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YXNz
ZXJ0U25hcHNob3RFbXB0eSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkdW1wQml0cyk6
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp6b21iaWZ5U3dlZXApOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6VmVyaWZ5TWFya2VkOjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6OmZsaXApOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkU3Bh
Y2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5leHRWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OmZpcnN0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmJs
b2Nrc1dpdGhOZXdPYmplY3RzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OnNldElzTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JF
YWNoTGl2ZUNlbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFj
aERlYWRDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlSW5saW5lcy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwpOgorICAgICAgICAqIGhl
YXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6c2V0TWFya2Vk
QW5kQXBwZW5kVG9NYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6bWFya0F1
eGlsaWFyeSk6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBoZWFwL1dlYWsuaDoKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8
VD4+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+
OjpwZWVrKToKKyAgICAgICAgKiBoZWFwL1dlYWtCbG9jay5jcHA6CisgICAgICAgIChKU0M6Oldl
YWtCbG9jazo6c3BlY2lhbGl6ZWRWaXNpdCk6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6cmVh
cCk6CisgICAgICAgICogaGVhcC9XZWFrSW5saW5lcy5oOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPEpTQzo6V2VhazxUPj46OmVtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPEpTQzo6V2VhazxUPj46OnBlZWspOiBEZWxldGVkLgorICAgICAgICAqIGppdC9K
SVRUaHVua3MuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb3RvdHlwZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHA6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKiB0
b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcDoKKwogMjAxNi0wOS0xNiAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3QyNjI6IFZhcmlvdXMgQ29u
c3RydWN0b3JzIGxlbmd0aCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBjb25maWd1cmFibGUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTBGN0MzOUZCMUM4RjYyOTMwMDQ4
MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5o
ICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5
RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsKIAkJMEY3
QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERG
R09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFya2VkQmxv
Y2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi87IH07
CisJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI5MUQ4ODk1
MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLzsgfTsKIAkJMEY4MDIzRUExNjEz
ODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMz
NUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1Qjgx
NjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI3MzEsNiArMjczMyw4IEBACiAJCTBGN0MzOUZBMUM4
RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5oOyBwYXRo
ID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZC
NzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNlSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJB
NDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFs
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMzOCw5ICs1
MzQyLDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRv
ci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAg
Ki8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggKi8sCisJ
CQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovLAog
CQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICovLAogCQkJ
CTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJCQkJMTRE
MkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMEY3QzVGQjkx
RDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0MkQ2RjBF
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBGMTM1MzlB
NDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlBRERCMUY2MjE4RDc3REI3MDA5QjU4
QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNzM5NCw2ICs3NDAwLDcgQEAKIAkJCQkwRjY2
RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAvKiBNYXJr
ZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4QkUwMEJC
QjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2Rl
LmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkxOCw3IEBACiAJCQkJQTUwM0ZBMkExODhG
MTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVk
U2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQkExRDg4OTUwNzAwNDRGNUUy
IC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1QzIxODVC
RkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0MgLyogSlNJbnB1dHMuanNvbiBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2QXJyYXku
aCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJWTUVudHJ5
U2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVy
LmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxD
b250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBIZWFwOwogY2xhc3MgSGVhcENlbGw7CiBjbGFzcyBMYXJnZUFsbG9j
YXRpb247CiBjbGFzcyBNYXJrZWRCbG9jazsKIGNsYXNzIFdlYWtTZXQ7CitjbGFzcyBWTTsKIAog
dHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKIApAQCAtNTYsNiArNTgsOSBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KICAgICAKKyAgICBWTSogdm0oKSBjb25zdDsKKyAgICBIZWFwKiBoZWFw
KCkgY29uc3Q7CisgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9lbmNvZGVkUG9pbnRlcjsgfQogICAgIAogICAgIGJvb2wgaXNNYXJrZWRCbG9jaygp
IGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZFBvaW50ZXIgJiYgIShtX2VuY29kZWRQb2ludGVyICYg
aXNMYXJnZUFsbG9jYXRpb25CaXQpOyB9CkBAIC03MywxMyArNzgsMTMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxMYXJnZUFsbG9jYXRpb24qPihtX2VuY29kZWRQb2lu
dGVyIC0gaXNMYXJnZUFsbG9jYXRpb25CaXQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZsaXBJ
Zk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKKyAg
ICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxpcCgpIGNv
bnN0OwogICAgIAotICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKICAgICBib29sIGlzTWFya2Vk
KEhlYXBDZWxsKikgY29uc3Q7CisgICAgYm9vbCBpc01hcmtlZChIZWFwVmVyc2lvbiwgSGVhcENl
bGwqKSBjb25zdDsKICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCop
IGNvbnN0OworICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBI
ZWFwQ2VsbCopIGNvbnN0OwogICAgIAogICAgIHZvaWQgbm90ZU1hcmtlZCgpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5saW5l
cy5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxs
Q29udGFpbmVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNCArMjksMjAgQEAKICNp
bmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJMYXJnZUFsbG9jYXRpb24uaCIKICNpbmNsdWRl
ICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgIlZNLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1p
bmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZCgpIGNvbnN0CitpbmxpbmUgVk0qIENl
bGxDb250YWluZXI6OnZtKCkgY29uc3QKIHsKICAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaGFuZGxlKCku
aXNNYXJrZWQoKTsKKyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLnZtKCk7CisgICAg
cmV0dXJuIG1hcmtlZEJsb2NrKCkudm0oKTsKK30KKworaW5saW5lIEhlYXAqIENlbGxDb250YWlu
ZXI6OmhlYXAoKSBjb25zdAoreworICAgIHJldHVybiAmdm0oKS0+aGVhcDsKIH0KIAogaW5saW5l
IGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoSGVhcENlbGwqIGNlbGwpIGNvbnN0CkBAIC00
Niw2ICs1MiwxMyBAQCBpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwCiAg
ICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJrZWQoY2VsbCk7CiB9CiAKK2lubGluZSBib29s
IENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXBWZXJzaW9uIHZlcnNpb24sIEhlYXBDZWxsKiBj
ZWxsKSBjb25zdAoreworICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAgICByZXR1
cm4gbGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsKKyAgICByZXR1cm4gbWFya2VkQmxvY2so
KS5pc01hcmtlZCh2ZXJzaW9uLCBjZWxsKTsKK30KKwogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5l
cjo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKiBjZWxsKSBjb25zdAogewogICAg
IGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQpAQCAtNTMsNiArNjYsMTMgQEAgaW5saW5lIGJvb2wg
Q2VsbENvbnRhaW5lcjo6aXNNYXJrZWRPck5ldwogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlz
TWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKIH0KIAoraW5saW5lIGJvb2wgQ2VsbENvbnRh
aW5lcjo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIEhlYXBD
ZWxsKiBjZWxsKSBjb25zdAoreworICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAg
ICByZXR1cm4gbGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7Cisg
ICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHZlcnNpb24s
IGNlbGwpOworfQorCiBpbmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpub3RlTWFya2VkKCkKIHsK
ICAgICBpZiAoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpCkBAIC03MywxNiArOTMsMTAgQEAgaW5saW5l
IFdlYWtTZXQmIENlbGxDb250YWluZXI6OndlYWtTZXQoKQogICAgIHJldHVybiBtYXJrZWRCbG9j
aygpLndlYWtTZXQoKTsKIH0KIAotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6ZmxpcElmTmVj
ZXNzYXJ5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQotewotICAgIGlmICghaXNMYXJnZUFsbG9j
YXRpb24oKSkKLSAgICAgICAgbWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNp
b24pOwotfQotCi1pbmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkoKQor
aW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZl
cnNpb24pCiB7CiAgICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICBtYXJrZWRC
bG9jaygpLmZsaXBJZk5lY2Vzc2FyeSgpOworICAgICAgICBtYXJrZWRCbG9jaygpLmFib3V0VG9N
YXJrKGhlYXBWZXJzaW9uKTsKIH0KIAogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6bmVlZHNG
bGlwKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2
ZVJvb3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25z
ZXJ2YXRpdmVSb290cy5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5o
IgogI2luY2x1ZGUgIkpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRl
ICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCkBAIC01MjYsMTEg
KzUyNyw5IEBAIHZvaWQgSGVhcDo6YmVnaW5NYXJraW5nKCkKICAgICB9CiAgICAgCiAgICAgewot
ICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVj
dFNwYWNlLmNsZWFyTWFya3MiKTsKLSAgICAgICAgbV9vYmplY3RTcGFjZS5mbGlwKCk7CisgICAg
ICAgIFRpbWluZ1Njb3BlIGNsZWFyTWFya3NUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3Bh
Y2UuYmVnaW5NYXJraW5nIik7CisgICAgICAgIG1fb2JqZWN0U3BhY2UuYmVnaW5NYXJraW5nKCk7
CiAgICAgfQotICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKHRydWUpOwogfQog
CiB2b2lkIEhlYXA6OnZpc2l0RXh0ZXJuYWxSZW1lbWJlcmVkU2V0KCkKQEAgLTc3OSw3ICs3Nzgs
NyBAQCB2b2lkIEhlYXA6OmVuZE1hcmtpbmcoKQogICAgIEFTU0VSVChtX3NoYXJlZE1hcmtTdGFj
ay5pc0VtcHR5KCkpOwogICAgIG1fd2Vha1JlZmVyZW5jZUhhcnZlc3RlcnMucmVtb3ZlQWxsKCk7
CiAgICAgCi0gICAgbV9vYmplY3RTcGFjZS5zZXRJc01hcmtpbmcoZmFsc2UpOworICAgIG1fb2Jq
ZWN0U3BhY2UuZW5kTWFya2luZygpOwogfQogCiBzaXplX3QgSGVhcDo6b2JqZWN0Q291bnQoKQpA
QCAtOTM5LDcgKzkzOCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgICAg
ICBtX29iamVjdFNwYWNlLnN3ZWVwKCk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc2hyaW5rKCk7
CiAgICAgfQotICAgIEFTU0VSVChtX2Jsb2NrU25hcHNob3QuaXNFbXB0eSgpKTsKKyAgICBtX29i
amVjdFNwYWNlLmFzc2VydFNuYXBzaG90RW1wdHkoKTsKIAogICAgIHN3ZWVwQWxsTG9naWNhbGx5
RW1wdHlXZWFrQmxvY2tzKCk7CiB9CkBAIC0xMDQ4LDcgKzEwNDcsNyBAQCBORVZFUl9JTkxJTkUg
dm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVy
KCk7CiAgICAgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOwogCi0g
ICAgcmVzZXRBbGxvY2F0b3JzKCk7CisgICAgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB1
cGRhdGVBbGxvY2F0aW9uTGltaXRzKCk7CiAgICAgZGlkRmluaXNoQ29sbGVjdGlvbihnY1N0YXJ0
VGltZSk7CiAgICAgcmVzdW1lQ29tcGlsZXJUaHJlYWRzKCk7CkBAIC0xMTYyLDQ0ICsxMTYxLDEw
IEBAIHZvaWQgSGVhcDo6c3dlZXBBcnJheUJ1ZmZlcnMoKQogICAgIG1fYXJyYXlCdWZmZXJzLnN3
ZWVwKCk7CiB9CiAKLXN0cnVjdCBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvciA6IHB1YmxpYyBN
YXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9y
KFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIGJsb2NrcykgCi0gICAgICAgIDogbV9pbmRl
eCgwKSAKLSAgICAgICAgLCBtX2Jsb2NrcyhibG9ja3MpCi0gICAgewotICAgIH0KLQotICAgIHZv
aWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGJsb2NrLT5zZXRJc09uQmxvY2tzVG9Td2VlcCh0cnVlKTsKLSAgICAgICAgbV9ibG9j
a3NbbV9pbmRleCsrXSA9IGJsb2NrOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEg
bXV0YWJsZSBmaWVsZCBiZWNhdWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCi0gICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAotICAgIG11dGFibGUg
c2l6ZV90IG1faW5kZXg7Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgbV9ibG9j
a3M7Ci19OwotCiB2b2lkIEhlYXA6OnNuYXBzaG90TWFya2VkU3BhY2UoKQogewogICAgIFRpbWlu
Z1Njb3BlIHRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6c25hcHNob3RNYXJrZWRTcGFjZSIpOwot
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSByZW5hbWVkLiBJdCdzIG5vdCBh
Y3R1YWxseSBzbmFwc2hvdHRpbmcgYWxsIG9mIE1hcmtlZFNwYWNlLgotICAgIC8vIFRoaXMgaXMg
dXNlZCBieSBJbmNyZW1lbnRhbFN3ZWVwZXIsIHNvIGl0IG9ubHkgbmVlZHMgdG8gc25hcHNob3Qg
YmxvY2tzLiBIb3dldmVyLCBpZiB3ZSBldmVyCi0gICAgLy8gd2FudGVkIHRvIGFkZCBvdGhlciBz
bmFwc2hvdHRpbmcgbG9naW4sIHdlJ2QgcHJvYmFibHkgcHV0IGl0IGhlcmUuCi0gICAgCi0gICAg
aWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbikgewotICAgICAgICBm
b3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA6IG1fb2JqZWN0U3BhY2UuYmxvY2tzV2l0
aE5ld09iamVjdHMoKSkgewotICAgICAgICAgICAgaWYgKGhhbmRsZS0+aXNPbkJsb2Nrc1RvU3dl
ZXAoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1fYmxvY2tTbmFw
c2hvdC5hcHBlbmQoaGFuZGxlKTsKLSAgICAgICAgICAgIGhhbmRsZS0+c2V0SXNPbkJsb2Nrc1Rv
U3dlZXAodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBtX2Jsb2NrU25h
cHNob3QucmVzaXplVG9GaXQobV9vYmplY3RTcGFjZS5ibG9ja3MoKS5zZXQoKS5zaXplKCkpOwot
ICAgICAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvciBmdW5jdG9yKG1fYmxvY2tTbmFwc2hv
dCk7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0K
KyAgICBtX29iamVjdFNwYWNlLnNuYXBzaG90KCk7CiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlU291
cmNlUHJvdmlkZXJDYWNoZXMoKQpAQCAtMTIyMiw5ICsxMTg3LDkgQEAgdm9pZCBIZWFwOjp3cml0
ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbgogICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVy
Q3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2Nrcyh0aGlzKTsKIH0KIAotdm9pZCBIZWFwOjpyZXNl
dEFsbG9jYXRvcnMoKQordm9pZCBIZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAg
bV9vYmplY3RTcGFjZS5yZXNldEFsbG9jYXRvcnMoKTsKKyAgICBtX29iamVjdFNwYWNlLnByZXBh
cmVGb3JBbGxvY2F0aW9uKCk7CiB9CiAKIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0
cygpCkBAIC0xNDczLDcgKzE0MzgsNyBAQCBwdWJsaWM6CiB2b2lkIEhlYXA6OnpvbWJpZnlEZWFk
T2JqZWN0cygpCiB7CiAgICAgLy8gU3dlZXAgbm93IGJlY2F1c2UgZGVzdHJ1Y3RvcnMgd2lsbCBj
cmFzaCBvbmNlIHdlJ3JlIHpvbWJpZmllZC4KLSAgICBtX29iamVjdFNwYWNlLnpvbWJpZnlTd2Vl
cCgpOworICAgIG1fb2JqZWN0U3BhY2Uuc3dlZXAoKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUg
aXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxs
KGl0ZXJhdGlvblNjb3BlLCBab21iaWZ5KCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyArMzMxLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1l
bnRhbFN3ZWVwZXIoKTsKICAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0Nv
ZGVCbG9ja3MoKTsKLSAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFy
ZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAg
IHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwogICAgIHZvaWQgY2xlYXJV
bm1hcmtlZEV4ZWN1dGFibGVzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBJbmxpbmVzLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDkgKzgxLDggQEAgQUxXQVlT
X0lOTElORSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IAogICAgIGlmIChjZWxsLT5pc0xhcmdl
QWxsb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNN
YXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwot
ICAgIGlmIChibG9jay5uZWVkc0ZsaXAoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gYmxvY2suaXNNYXJr
ZWQoY2VsbCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKAorICAgICAgICBibG9jay52bSgp
LT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKIH0KIAogQUxXQVlTX0lOTElO
RSBib29sIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNvbnN0IHZvaWQqIHJhd0NlbGwpCkBA
IC05MiwxMCArOTEsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWRDb25jdXJy
CiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBjZWxs
LT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwogICAgIE1hcmtlZEJsb2NrJiBibG9jayA9
IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgaWYgKGJsb2NrLm5lZWRzRmxpcChibG9jay52bSgp
LT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxs
KTsKKyAgICByZXR1cm4gYmxvY2suaXNNYXJrZWRDb25jdXJyZW50bHkoCisgICAgICAgIGJsb2Nr
LnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwogfQogCiBBTFdBWVNf
SU5MSU5FIGJvb2wgSGVhcDo6dGVzdEFuZFNldE1hcmtlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBj
b25zdCB2b2lkKiByYXdDZWxsKQpAQCAtMTA0LDcgKzEwMSw3IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBIZWFwOjp0ZXN0QW5kU2V0TWFya2UKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24o
KSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLnRlc3RBbmRTZXRNYXJr
ZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAg
IGJsb2NrLmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcodmVyc2lvbik7CisgICAgYmxvY2su
YWJvdXRUb01hcmsodmVyc2lvbik7CiAgICAgcmV0dXJuIGJsb2NrLnRlc3RBbmRTZXRNYXJrZWQo
Y2VsbCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0
aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Rh
dGlzdGljcy5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgog
I2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGls
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwu
aAkod29ya2luZyBjb3B5KQpAQCAtODQsOSArODQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBp
ZiAoIWZpbHRlci5ydWxlT3V0KGJpdHdpc2VfY2FzdDxCaXRzPihwcmV2aW91c0NhbmRpZGF0ZSkp
CiAgICAgICAgICAgICAgICAgJiYgc2V0LmNvbnRhaW5zKHByZXZpb3VzQ2FuZGlkYXRlKQogICAg
ICAgICAgICAgICAgICYmIHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxsS2luZCgpID09
IEhlYXBDZWxsOjpBdXhpbGlhcnkpIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c0NhbmRpZGF0
ZS0+ZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKICAgICAgICAgICAgICAgICBwcmV2aW91
c1BvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocHJldmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgp
LmNlbGxBbGlnbihwcmV2aW91c1BvaW50ZXIpKTsKLSAgICAgICAgICAgICAgICBpZiAocHJldmlv
dXNDYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwocHJldmlvdXNQb2ludGVyKSkKKyAgICAg
ICAgICAgICAgICBpZiAocHJldmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwoaGVh
cFZlcnNpb24sIHByZXZpb3VzUG9pbnRlcikpCiAgICAgICAgICAgICAgICAgICAgIGZ1bmMocHJl
dmlvdXNQb2ludGVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTksMTAgKzk4LDgg
QEAgcHVibGljOgogICAgICAgICBpZiAoIXNldC5jb250YWlucyhjYW5kaWRhdGUpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgY2FuZGlkYXRlLT5mbGlwSWZOZWNlc3Nh
cnkoaGVhcFZlcnNpb24pOwotCiAgICAgICAgIGF1dG8gdHJ5UG9pbnRlciA9IFsmXSAodm9pZCog
cG9pbnRlcikgewotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2Vs
bChwb2ludGVyKSkKKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNl
bGwoaGVhcFZlcnNpb24sIHBvaW50ZXIpKQogICAgICAgICAgICAgICAgIGZ1bmMocG9pbnRlcik7
CiAgICAgICAgIH07CiAgICAgCkBAIC0xNzAsNyArMTY3LDYgQEAgcHVibGljOgogICAgICAgICBp
ZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxsS2luZCgpICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBjYW5kaWRhdGUtPmZs
aXBJZk5lY2Vzc2FyeSgpOwogICAgICAgICBpZiAoIWNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZl
Q2VsbChwb2ludGVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHJldmlzaW9u
IDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNw
cAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVt
ZW50YWxTd2VlcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQCBzdGF0aWMg
Y29uc3QgZG91YmxlIHN3ZWVwVGltZU11bHRpcGxpZXIgCiAjaWYgVVNFKENGKQogSW5jcmVtZW50
YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3ApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSwgcnVuTG9vcCkKLSAgICAsIG1fYmxv
Y2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25hcHNob3QpCiB7CiB9CiAKQEAgLTY2LDcgKzY1LDYg
QEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICNlbGlmIFBMQVRGT1JN
KEVGTCkKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXAp
CiAgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSkKLSAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFw
LT5tX2Jsb2NrU25hcHNob3QpCiB7CiB9CiAKQEAgLTg2LDcgKzg0LDYgQEAgdm9pZCBJbmNyZW1l
bnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICNlbGlmIFVTRShHTElCKQogSW5jcmVtZW50YWxT
d2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCkKICAgICA6IEhlYXBUaW1lciho
ZWFwLT52bSgpKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkK
IHsKIH0KIApAQCAtMTIxLDE5ICsxMTgsMjAgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRv
U3dlZXAoZG91YmxlIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9ibG9ja3NUb1N3
ZWVwLmNsZWFyKCk7CiAgICAgY2FuY2VsVGltZXIoKTsKIH0KIAogYm9vbCBJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKCkKIHsKLSAgICB3aGlsZSAoIW1fYmxvY2tzVG9Td2VlcC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nr
c1RvU3dlZXAudGFrZUxhc3QoKTsKLSAgICAgICAgYmxvY2stPnNldElzT25CbG9ja3NUb1N3ZWVw
KGZhbHNlKTsKLQotICAgICAgICBpZiAoIWJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbnVsbHB0
cjsKKyAgICAKKyAgICBmb3IgKDsgbV9jdXJyZW50QWxsb2NhdG9yOyBtX2N1cnJlbnRBbGxvY2F0
b3IgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPm5leHRBbGxvY2F0b3IoKSkgeworICAgICAgICBibG9j
ayA9IG1fY3VycmVudEFsbG9jYXRvci0+ZmluZEJsb2NrVG9Td2VlcCgpOworICAgICAgICBpZiAo
YmxvY2spCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKGJsb2NrKSB7
CiAgICAgICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyhtX3ZtLT5oZWFwKTsKICAgICAgICAg
YmxvY2stPnN3ZWVwKCk7CiAgICAgICAgIG1fdm0tPmhlYXAub2JqZWN0U3BhY2UoKS5mcmVlT3JT
aHJpbmtCbG9jayhibG9jayk7CkBAIC0xNDYsMTEgKzE0NCwxMiBAQCBib29sIEluY3JlbWVudGFs
U3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRT
d2VlcGluZygpCiB7CiAgICAgc2NoZWR1bGVUaW1lcigpOworICAgIG1fY3VycmVudEFsbG9jYXRv
ciA9IG1fdm0tPmhlYXAub2JqZWN0U3BhY2UoKS5maXJzdEFsbG9jYXRvcigpOwogfQogCiB2b2lk
IEluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKCkKIHsKLSAgICBtX2Jsb2Nr
c1RvU3dlZXAuY2xlYXIoKTsKKyAgICBtX2N1cnJlbnRBbGxvY2F0b3IgPSBudWxscHRyOwogICAg
IGlmIChtX3ZtKQogICAgICAgICBjYW5jZWxUaW1lcigpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHJldmlzaW9uIDIwNjAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMTIgQEAKICNkZWZpbmUgSW5jcmVtZW50YWxTd2Vl
cGVyX2gKIAogI2luY2x1ZGUgIkhlYXBUaW1lci5oIgotI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgi
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVh
cDsKLWNsYXNzIE1hcmtlZEJsb2NrOworY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogCiBjbGFzcyBJ
bmNyZW1lbnRhbFN3ZWVwZXIgOiBwdWJsaWMgSGVhcFRpbWVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxl
VGltZXIoKTsKICAgICB2b2lkIGNhbmNlbFRpbWVyKCk7CiAgICAgCi0gICAgVmVjdG9yPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqPiYgbV9ibG9ja3NUb1N3ZWVwOworICAgIE1hcmtlZEFsbG9jYXRvciog
bV9jdXJyZW50QWxsb2NhdG9yOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDkgKzcwLDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGlzTmV3bHlBbGxvY2F0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTmV3bHlBbGxvY2F0ZWQ7IH0KICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNNYXJrZWQoKSB7IHJldHVybiBtX2lzTWFya2VkLmxvYWQoc3RkOjptZW1vcnlf
b3JkZXJfcmVsYXhlZCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNYXJrZWQoSGVhcENl
bGwqKSB7IHJldHVybiBtX2lzTWFya2VkLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNp
b24sIEhlYXBDZWxsKikgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpOyB9CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKSB7IHJldHVy
biBpc01hcmtlZCgpIHx8IGlzTmV3bHlBbGxvY2F0ZWQoKTsgfQogICAgIGJvb2wgaXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2Nh
dGVkKCk7IH0KLSAgICBib29sIGlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9u
LCBIZWFwQ2VsbCopIHsgcmV0dXJuIGlzTWFya2VkKCk7IH0KICAgICBib29sIGlzTGl2ZSgpIHsg
cmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOyB9CiAgICAgCiAgICAgYm9vbCBoYXNW
YWxpZENlbGwoKSBjb25zdCB7IHJldHVybiBtX2hhc1ZhbGlkQ2VsbDsgfQpAQCAtMTA2LDggKzEw
Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAgICAgCi0gICAgdm9pZCBm
bGlwSWZOZWNlc3NhcnkodWludDY0X3QpIHsgfQotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVy
aW5nTWFya2luZyh1aW50NjRfdCkgeyB9CisgICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lv
bikgeyB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIHRlc3RBbmRTZXRNYXJrZWQoKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2Nh
dG9yLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KQEAgLTM5LDcgKzQwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBNYXJrZWRBbGxvY2F0
b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoZWFwLCBNYXJrZWRTcGFjZSogbWFya2VkU3BhY2Us
IHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcykK
ICAgICA6IG1fY3VycmVudEJsb2NrKDApCiAgICAgLCBtX2xhc3RBY3RpdmVCbG9jaygwKQotICAg
ICwgbV9uZXh0QmxvY2tUb1N3ZWVwKG51bGxwdHIpCiAgICAgLCBtX2NlbGxTaXplKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjZWxsU2l6ZSkpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykK
ICAgICAsIG1faGVhcChoZWFwKQpAQCAtNTAsMTEgKzUwLDEzIEBAIE1hcmtlZEFsbG9jYXRvcjo6
TWFya2VkQWxsb2NhdG9yKEhlYXAqIGgKIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0
KGRvdWJsZSBkZWFkbGluZSkKIHsKICAgICB1bnNpZ25lZCBpdGVyc1NpbmNlTGFzdFRpbWVDaGVj
ayA9IDA7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2NrTGlzdC5iZWdp
bigpOwotICAgIHdoaWxlIChibG9jaykgewotICAgICAgICBibG9jayA9IGZpbHRlck5leHRCbG9j
ayhibG9jay0+bmV4dCgpKTsKLSAgICAgICAgaWYgKGJsb2NrKQotICAgICAgICAgICAgYmxvY2st
PmZsaXBJZk5lY2Vzc2FyeSgpOyAvLyBGb3JjZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0
aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50aWMgZWZmZWN0LgorICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX2Jsb2Nrcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRleF07CisgICAgICAgIGlmIChi
bG9jaykgeworICAgICAgICAgICAgLy8gRm9yY2VzIHVzIHRvIHRvdWNoIHRoZSBtZW1vcnkgb2Yg
dGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVjdC4KKyAgICAgICAgICAgIGlmIChi
bG9jay0+bmVlZHNGbGlwKCkpCisgICAgICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkucmVzZXRW
ZXJzaW9uKCk7CisgICAgICAgIH0KICAgICAgICAgKytpdGVyc1NpbmNlTGFzdFRpbWVDaGVjazsK
ICAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID49IEhlYXA6OnNfdGltZUNoZWNr
UmVzb2x1dGlvbikgewogICAgICAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAgLTY2LDg0ICs2OCw3NyBAQCBib29sIE1hcmtl
ZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3VibGUgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQot
ewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7IC8vIFRoaXMgd2lsbCBiZSBjYWxsZWQg
aW4gcGFyYWxsZWwgZHVyaW5nIEdDLgotICAgIGlmIChibG9jayA9PSBtX2N1cnJlbnRCbG9jaykg
ewotICAgICAgICAvLyBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgbXV0YXRvciBpcyBydW5uaW5nLiBX
ZSBmaW5pc2hlZCBhIGZ1bGwgR0MgYW5kIG1hcmtlZCB0b28gZmV3IHRoaW5ncwotICAgICAgICAv
LyB0byByZXRpcmUuIFRoZW4gd2Ugc3RhcnRlZCBhbGxvY2F0aW5nIGluIHRoaXMgYmxvY2suIFRo
ZW4gYSBiYXJyaWVyIHJhbiwgd2hpY2ggbWFya2VkIGFuCi0gICAgICAgIC8vIG9iamVjdCBpbiB0
aGlzIGJsb2NrLCB3aGljaCBwdXQgaXQgb3ZlciB0aGUgcmV0aXJlbWVudCB0aHJlc2hvbGQuIEl0
J3MgT0sgdG8gc2ltcGx5IGRvCi0gICAgICAgIC8vIG5vdGhpbmcgaW4gdGhhdCBjYXNlLgotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChibG9jayA9PSBtX2xhc3RBY3RpdmVCbG9jaykg
ewotICAgICAgICAvLyBUaGlzIGNhbiBlYXNpbHkgaGFwcGVuIGR1cmluZyBtYXJraW5nLiBJdCB3
b3VsZCBiZSBlYXN5IHRvIGhhbmRsZSB0aGlzIGNhc2UsIGJ1dCBpdCdzCi0gICAgICAgIC8vIGp1
c3QgYXMgZWFzeSB0byBpZ25vcmUgaXQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUkVM
RUFTRV9BU1NFUlQoYmxvY2stPmlzT25MaXN0KCkpOwotICAgIGlmIChibG9jayA9PSBtX25leHRC
bG9ja1RvU3dlZXApCi0gICAgICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IGZpbHRlck5leHRCbG9j
ayhibG9jay0+bmV4dCgpKTsKLSAgICBibG9jay0+cmVtb3ZlKCk7Ci0gICAgbV9yZXRpcmVkQmxv
Y2tzLnB1c2goYmxvY2spOwotfQotCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0
b3I6OmZpbHRlck5leHRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK01hcmtlZEJs
b2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmluZEVtcHR5QmxvY2soKQogewotICAgIGlm
IChibG9jayA9PSBtX2Jsb2NrTGlzdC5lbmQoKSkKKyAgICBtX2VtcHR5Q3Vyc29yID0gbV9lbXB0
eS5maW5kQml0KG1fZW1wdHlDdXJzb3IsIHRydWUpOworICAgIGlmIChtX2VtcHR5Q3Vyc29yID49
IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGJs
b2NrOwotfQotCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEJsb2NrVG9Td2VlcChNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jaykKLXsKLSAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBmaWx0
ZXJOZXh0QmxvY2soYmxvY2spOworICAgIHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5Q3Vyc29yXTsK
IH0KIAogdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5n
SW1wbCgpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwogICAgIAotICAgIGlmIChtX2N1cnJlbnRCbG9jaykgewotICAgICAgICBBU1NFUlQobV9jdXJy
ZW50QmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVwKTsKKyAgICBpZiAobV9jdXJyZW50QmxvY2sp
CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAgICAg
c2V0TmV4dEJsb2NrVG9Td2VlcChtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICB9CiAgICAg
CiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChtX25l
eHRCbG9ja1RvU3dlZXAgIT0gbV9ibG9ja0xpc3QuZW5kKCkpOwotCi0gICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqJiBibG9jayA9IG1f
bmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICBuZXh0ID0g
ZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgIC8vIEl0IHdvdWxkIGJl
IHN1cGVyIHdlaXJkIGlmIHRoZSBibG9ja3Mgd2UgYXJlIHN3ZWVwaW5nIGhhdmUgYW55dGhpbmcg
YWxsb2NhdGVkIGR1cmluZyB0aGlzCi0gICAgICAgIC8vIGN5Y2xlLgotICAgICAgICBBU1NFUlQo
IWJsb2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgCi0gICAgICAgIEZyZWVM
aXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9G
cmVlTGlzdCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAo
OzspIHsKKyAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0gbV9jYW5BbGxvY2F0ZS5maW5kQml0
KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGlmIChtX2FsbG9jYXRpb25DdXJz
b3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAg
ICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24gYSBjb21wbGV0ZS1mdWxsIGJsb2Nr
LiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0Ci0gICAgICAgIC8vIHRoYXQgYWxn
b3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8gaXQgc29tZXRpbWVzLgotICAgICAg
ICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpIHsKLSAgICAgICAgICAgIEFTU0VS
VChibG9jay0+aXNGcmVlTGlzdGVkKCkpOwotICAgICAgICAgICAgYmxvY2stPnVuc3dlZXBXaXRo
Tm9OZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc01hcmtlZCgp
KTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQorICAgICAgICBzZXRJc0NhbkFsbG9jYXRlKG1fYWxsb2NhdGlvbkN1cnNvciwgZmFs
c2UpOwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7Ci0gICAgICAgIHNldEZyZWVM
aXN0KGZyZWVMaXN0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICh2b2lkKiByZXN1bHQg
PSB0cnlBbGxvY2F0ZUluKG1fYmxvY2tzW21fYWxsb2NhdGlvbkN1cnNvcl0pKQorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZyZWVMaXN0KSB7Ci0g
ICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZmluZEVtcHR5QmxvY2soKSkKKyAgICAgICAgcmV0
dXJuIGFsbG9jYXRlSW4oYmxvY2spOworICAgIAorICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jayA9IG1fbWFya2VkU3BhY2UtPmZpbmRFbXB0eUJsb2NrKCkpIHsKKyAgICAgICAgYmxv
Y2stPnN3ZWVwKCk7CisgICAgICAgIGJsb2NrLT5yZW1vdmVGcm9tQWxsb2NhdG9yKCk7CisgICAg
ICAgIGFkZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlSW4oYmxvY2spOwog
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAordm9pZCogTWFya2VkQWxsb2Nh
dG9yOjphbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIHZvaWQq
IHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4oYmxvY2spOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlB
bGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIEFTU0VSVChibG9j
ayk7CisgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgQVNT
RVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIEZyZWVMaXN0IGZyZWVMaXN0
ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7Cisg
ICAgCisgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGVseSBmdWxs
IGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0CisgICAgLy8gdGhhdCBh
bGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCisgICAg
aWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7CisgICAgICAgIEFTU0VSVChibG9j
ay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxs
b2NhdGVkKCk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAg
ICAgQVNTRVJUKCFpc0VtcHR5KGJsb2NrKSk7CisgICAgICAgIEFTU0VSVCghaXNDYW5BbGxvY2F0
ZShibG9jaykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCisgICAgbV9j
dXJyZW50QmxvY2sgPSBibG9jazsKKyAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7CisgICAgCiAg
ICAgdm9pZCogcmVzdWx0OwogICAgIGlmIChtX2ZyZWVMaXN0LnJlbWFpbmluZykgewogICAgICAg
ICB1bnNpZ25lZCBjZWxsU2l6ZSA9IG1fY2VsbFNpemU7CkBAIC0xNTUsNiArMTUwLDcgQEAgdm9p
ZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQogICAgICAgICByZXN1bHQgPSBo
ZWFkOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHNldElzRWRlbiht
X2N1cnJlbnRCbG9jaywgdHJ1ZSk7CiAgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWxsb2NhdGVJbkJs
b2NrKG1fY3VycmVudEJsb2NrKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjI3LDggKzIy
Myw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBhZGRCbG9jayhibG9jayk7Ci0gICAgICAg
IAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKKyAgICByZXN1
bHQgPSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBBU1NFUlQocmVzdWx0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpAQCAtMjQ5LDM3ICsyNDQsNzQgQEAgc2l6ZV90IE1hcmtlZEFsbG9jYXRvcjo6
YmxvY2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjp0
cnlBbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwg
dGhpcywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAgICAKKyAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIG1fY2VsbFNp
emUsIG1fYXR0cmlidXRlcyk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7CisgICAg
CisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2Nr
KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50Qmxv
Y2spOwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAgIGlm
IChtX2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9ibG9j
a3Muc2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFj
aXR5KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChibG9jayk7CisgICAgICAgIGlmIChtX2Js
b2Nrcy5jYXBhY2l0eSgpICE9IG9sZENhcGFjaXR5KSB7CisgICAgICAgICAgICBmb3JFYWNoQml0
VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygp
ID09IG9sZENhcGFjaXR5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAg
WyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9y
LnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRh
a2VMYXN0KCk7CisgICAgICAgIEFTU0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgbV9i
bG9ja3NbaW5kZXhdID0gYmxvY2s7CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3Io
CisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKHZlY3RvciwgIXZlY3RvcltpbmRleF0pOworICAgICAgICB9KTsKKworICAgIGJs
b2NrLT5kaWRBZGRUb0FsbG9jYXRvcih0aGlzLCBpbmRleCk7CiAgICAgCi0gICAgbV9ibG9ja0xp
c3QuYXBwZW5kKGJsb2NrKTsKLSAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBt
X21hcmtlZFNwYWNlLT5kaWRBZGRCbG9jayhibG9jayk7CisgICAgc2V0SXNMaXZlKGluZGV4LCB0
cnVlKTsKKyAgICBzZXRJc0VtcHR5KGluZGV4LCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxv
Y2F0b3I6OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlm
IChtX2N1cnJlbnRCbG9jayA9PSBibG9jaykgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZp
bHRlck5leHRCbG9jayhtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxp
c3QoRnJlZUxpc3QoKSk7Ci0gICAgfQotICAgIGlmIChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxv
Y2spCi0gICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0
KCkpOworICAgIEFTU0VSVChibG9jay0+YWxsb2NhdG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJU
KG1fYmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9PSBibG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJl
bW92ZUJsb2NrKCk7Ci0gICAgbV9ibG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nr
c1tibG9jay0+aW5kZXgoKV0gPSBudWxscHRyOworICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBl
bmQoYmxvY2stPmluZGV4KCkpOworICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAg
IFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2st
PmluZGV4KCldID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIAorICAgIGJsb2NrLT5kaWRSZW1v
dmVGcm9tQWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2Nh
dGluZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxD
b2xsZWN0aW9uKQotICAgICAgICBtX2Jsb2NrTGlzdC50YWtlRnJvbShtX3JldGlyZWRCbG9ja3Mp
OwotCisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6
IE1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmchXG4iKTsKICAgICBBU1NFUlQoIW1fbGFz
dEFjdGl2ZUJsb2NrKTsKICAgICBpZiAoIW1fY3VycmVudEJsb2NrKSB7CiAgICAgICAgIEFTU0VS
VCghbV9mcmVlTGlzdCk7CkBAIC0yOTIsMjkgKzMyNCwyNSBAQCB2b2lkIE1hcmtlZEFsbG9jYXRv
cjo6c3RvcEFsbG9jYXRpbmcoKQogICAgIG1fZnJlZUxpc3QgPSBGcmVlTGlzdCgpOwogfQogCi12
b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzZXQoKQordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnByZXBh
cmVGb3JBbGxvY2F0aW9uKCkKIHsKLSAgICBtX2xhc3RBY3RpdmVCbG9jayA9IDA7Ci0gICAgbV9j
dXJyZW50QmxvY2sgPSAwOworICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKKyAgICBt
X2N1cnJlbnRCbG9jayA9IG51bGxwdHI7CiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7CiAK
LSAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fYmxvY2tMaXN0LmJlZ2luKCkpOworICAgIG1fYWxs
b2NhdGlvbkN1cnNvciA9IDA7CisgICAgbV9lbXB0eUN1cnNvciA9IDA7CisgICAgbV9zbmFwc2hv
dEN1cnNvciA9IDA7CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7Ci0gICAgICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6OkhhbmRsZSomIGJs
b2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAg
ICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgICAg
ICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpT
d2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAgICAgYmxvY2stPnphcChmcmVlTGlzdCk7Ci0gICAg
ICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBUaGlu
Z3M/CiAgICAgfQogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxp
emUoKQogewotICAgIG1fYmxvY2tMaXN0LnRha2VGcm9tKG1fcmV0aXJlZEJsb2Nrcyk7CiAgICAg
Zm9yRWFjaEJsb2NrKAogICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7
CiAgICAgICAgICAgICBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTMyNiw0ICsz
NTQsMTIxIEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzZXRGcmVlTGlzdChjb25zdCAKICAgICBt
X2ZyZWVMaXN0ID0gZnJlZUxpc3Q7CiB9CiAKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVB
bGxvY2F0aW5nKCkKK3sKKyAgICBpZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRp
bmcoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOworICAgIG1fbGFz
dEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmJlZ2lu
TWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNr
eSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNl
IGR1cmluZyBmdWxsCisgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUg
bGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKKyAg
ICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRlbi4KKyAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVh
ckFsbCgpOworICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKK30KKwordm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcoKQoreworICAgIG1fYWxsb2NhdGVkLmNsZWFyQWxsKCk7
CisgICAgCisgICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBjb21wcmVo
ZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bworICAgIC8v
IGtub3cgd2hhdCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdlIGlzIGFs
cmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCisgICAgLy8gdmVjdG9ycy4KKyAgICAK
KyAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CisgICAgICAgIC8vIElmIGJsb2NrcyBuZWVk
IGRlc3RydWN0aW9uIHRoZW4gbm90aGluZyBpcyBlbXB0eSEgVGhpcyBpcyBhIGNvcnJlY3QgYXNz
ZXJ0aW9uIGJ1dCBtYXkKKyAgICAgICAgLy8gYmVjb21lIHdyb25nIG9uY2Ugd2UgZ28gZnVsbCBj
b25jdXJyZW50OiB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBibG9jaywgaXQgd2lsbCBmbGlja2VyCisg
ICAgICAgIC8vIGludG8gdGhlIGVtcHR5IHNldCBmb3IgYSB0aW55IG1vbWVudC4gT24gdGhlIG90
aGVyIGhhbmQsIHRoaXMgY29kZSBpcyBsaWtlbHkgdG8gYmUgcnVuCisgICAgICAgIC8vIGluIHN0
b3BUaGVXb3JsZC4KKyAgICAgICAgQVNTRVJUKG1fZW1wdHkuaXNFbXB0eSgpKTsKKyAgICAgICAg
bV9jYW5BbGxvY2F0ZSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIG1fZW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1w
dHk7CisgICAgbV9jYW5BbGxvY2F0ZSA9IG1fbGl2ZSAmIG1fbWFya2luZ05vdEVtcHR5ICYgfm1f
bWFya2luZ1JldGlyZWQ7CisgICAgCisgICAgaWYgKGZhbHNlKSB7CisgICAgICAgIGRhdGFMb2co
IkJpdHMgZm9yICIsIG1fY2VsbFNpemUsICIsICIsIG1fYXR0cmlidXRlcywgIiBhZnRlciBlbmRN
YXJraW5nOlxuIik7CisgICAgICAgIGR1bXBCaXRzKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgfQor
fQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RGb3JFZGVuQ29sbGVjdGlvbigpCit7
CisgICAgbV9zbmFwc2hvdCB8PSBtX2VkZW47Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpz
bmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICBtX3NuYXBzaG90ID0gbV9saXZlOwor
fQorCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1RvU3dl
ZXAoKQoreworICAgIG1fc25hcHNob3RDdXJzb3IgPSBtX3NuYXBzaG90LmZpbmRCaXQobV9zbmFw
c2hvdEN1cnNvciwgdHJ1ZSk7CisgICAgaWYgKG1fc25hcHNob3RDdXJzb3IgPj0gbV9ibG9ja3Mu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV9z
bmFwc2hvdEN1cnNvcl07Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzd2VlcCgpCit7Cisg
ICAgbV9zbmFwc2hvdC5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkg
eworICAgICAgICAgICAgbV9ibG9ja3NbaW5kZXhdLT5zd2VlcCgpOworICAgICAgICB9KTsKK30K
Kwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNocmluaygpCit7CisgICAgbV9lbXB0eS5mb3JFYWNo
U2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgbV9tYXJr
ZWRTcGFjZS0+ZnJlZUJsb2NrKG1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIH0pOworfQorCit2
b2lkIE1hcmtlZEFsbG9jYXRvcjo6YXNzZXJ0U25hcHNob3RFbXB0eSgpCit7CisgICAgaWYgKEFT
U0VSVF9ESVNBQkxFRCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChtX3NuYXBzaG90
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGRhdGFMb2coIkFzc2VydGlv
biBmYWlsZWQ6IHNuYXBzaG90IG5vdCBlbXB0eSBpbiAiLCAqdGhpcywgIi5cbiIpOworICAgIGR1
bXBCaXRzKCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTWFya2VkQWxs
b2NhdG9yOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KFJh
d1BvaW50ZXIodGhpcyksICI6IiwgbV9jZWxsU2l6ZSwgIi8iLCBtX2F0dHJpYnV0ZXMpOworfQor
Cit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAg
ICB1bnNpZ25lZCBtYXhOYW1lTGVuZ3RoID0gMDsKKyAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5h
bWUoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihuYW1lKTsKKyAgICAgICAgICAgIG1h
eE5hbWVMZW5ndGggPSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBsZW5ndGgpOworICAgICAgICB9
KTsKKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCisgICAgICAgIFsmXSAoRmFz
dEJpdFZlY3RvciYgdmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICBvdXQu
cHJpbnQoIiAgICAiLCBuYW1lLCAiOiAiKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1heE5hbWVMZW5ndGggLSBzdHJsZW4obmFtZSk7IGktLTspCisgICAgICAgICAgICAgICAgb3V0
LnByaW50KCIgIik7CisgICAgICAgICAgICBvdXQucHJpbnQodmVjdG9yLCAiXG4iKTsKKyAgICAg
ICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJBbGxvY2F0b3JBdHRyaWJ1dGVzLmgiCiAjaW5j
bHVkZSAiRnJlZUxpc3QuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgPHd0
Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM5
LDEzNCBAQCBjbGFzcyBIZWFwOwogY2xhc3MgTWFya2VkU3BhY2U7CiBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAKKyNkZWZpbmUgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQobWFj
cm8pIFwKKyAgICBtYWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMg
dGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICovXAorICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyog
VGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVjdHMgYW5kIG5vdGhp
bmcgdG8gZGVzdHJveS4gKi8gXAorICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBU
aGUgc2V0IG9mIGFsbGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCisg
ICAgbWFjcm8oY2FuQWxsb2NhdGUsIENhbkFsbG9jYXRlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9j
a3MgdGhhdCBjYW4gYmUgYWxsb2NhdGVkIGluIHJpZ2h0IG5vdy4gKi8gXAorICAgIG1hY3JvKGVk
ZW4sIEVkZW4pIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMg
c2luY2UgdGhlIGxhc3QgR0MuICovXAorICAgIG1hY3JvKHNuYXBzaG90LCBTbmFwc2hvdCkgLyog
VGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVu
dGFsIHN3ZWVwZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5n
IG1hcmtpbmcuICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5
KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisgICAg
bWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KKworLy8gTm90ZSB0aGF0IHRoaXMgY29sbGVjdG9y
IHN1cHBvcnRzIG92ZXJsYXBwaW5nIGFsbG9jYXRvciBzdGF0ZSB3aXRoIG1hcmtpbmcgc3RhdGUs
IHNpbmNlIGluIGEKKy8vIGNvbmN1cnJlbnQgY29sbGVjdG9yIHlvdSBhbGxvdyBhbGxvY2F0aW9u
IHdoaWxlIG1hcmtpbmcgaXMgcnVubmluZy4gU28gaXQncyBiZXN0IHRvIHZpc3VhbGl6ZSBhCisv
LyBmdWxsIG11dGFibGUtPmVkZW4gY29sbGVjdC0+bXV0YXRlLT5mdWxsIGNvbGxlY3QgY3ljbGUg
YW5kIHNlZSBob3cgdGhlIGJpdHMgYWJvdmUgZ2V0IGFmZmVjdGVkLgorLy8gVGhlIGV4YW1wbGUg
YmVsb3cgdHJpZXMgdG8gYmUgZXhoYXVzdGl2ZSBhYm91dCB3aGF0IGhhcHBlbnMgdG8gdGhlIGJp
dHMsIGJ1dCBvbWl0cyBhIGxvdCBvZgorLy8gdGhpbmdzIHRoYXQgaGFwcGVuIHRvIG90aGVyIHN0
YXRlLgorLy8KKy8vIENyZWF0ZSBhbGxvY2F0b3IKKy8vIC0gYWxsIGJpdHMgYXJlIGVtcHR5Cisv
LyBTdGFydCBhbGxvY2F0aW5nIGluIHNvbWUgYmxvY2sKKy8vIC0gYWxsb2NhdGUgdGhlIGJsb2Nr
IGFuZCBzZXQgdGhlIGxpdmUgYml0LgorLy8gLSB0aGUgZW1wdHkgYml0IGZvciB0aGUgYmxvY2sg
ZmxpY2tlcnMgb24gYW5kIHRoZW4gZ2V0cyBpbW1lZGlhdGVseSBjbGVhcmVkIGJ5IHN3ZWVwaW5n
LgorLy8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgaW4gdGhhdCBi
bG9jaworLy8gLSBzZXQgdGhlIGFsbG9jYXRlZCBiaXQuCisvLyBEbyB0aGF0IHRvIGEgbG90IG9m
IGJsb2NrcyBhbmQgdGhlbiBzdGFydCBhbiBlZGVuIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFy
a2luZygpIGhhcyBub3RoaW5nIHRvIGRvLgorLy8gLSBieSBkZWZhdWx0IHdlIGhhdmUgY2xlYXIg
bWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIGJpdHMuCisvLyAtIG1hcmtpbmcgYnVpbGRz
IHVwIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFy
a2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gZm9yIGRlc3RydWN0
b3IgYmxvY2tzOiBjYW5BbGxvY2F0ZSA9IGxpdmUgJiB+bWFya2luZ1JldGlyZWQKKy8vIC0gZm9y
IG5vbi1kZXN0cnVjdG9yIGJsb2NrczoKKy8vICAgICAgIGVtcHR5ID0gbGl2ZSAmIH5tYXJraW5n
Tm90RW1wdHkKKy8vICAgICAgIGNhbkFsbG9jYXRlID0gbGl2ZSAmIG1hcmtpbmdOb3RFbXB0eSAm
IH5tYXJraW5nUmV0aXJlZAorLy8gU25hcHNob3R0aW5nLgorLy8gLSBzbmFwc2hvdCB8PSBlZGVu
CisvLyBQcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBlZGVuCisvLyBGaW5pc2gg
Y29sbGVjdGlvbi4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCBoYWQgc29tZSBmcmVl
IGFuZCBzb21lIGxpdmUgb2JqZWN0cy4KKy8vIC0gY2xlYXIgdGhlIGNhbkFsbG9jYXRlIGJpdAor
Ly8gLSBjbGVhciB0aGUgc25hcHNob3QgYml0CisvLyAtIHNldCB0aGUgZWRlbiBiaXQKKy8vIEZp
bmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4g
c29tZSBibG9jayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5LgorLy8gLSBjbGVhciB0aGUgZW1w
dHkgYml0CisvLyAtIGNsZWFyIHRoZSBzbmFwc2hvdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJp
dC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxs
b2NhdGUgaW4gc29tZSBibG9jayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5IGluIGFub3RoZXIg
YWxsb2NhdG9yLgorLy8gLSBjbGVhciB0aGUgZW1wdHkgYml0CisvLyAtIGNsZWFyIGFsbCBiaXRz
IGluIHRoYXQgYWxsb2NhdG9yCisvLyAtIHNldCB0aGUgbGl2ZSBiaXQgaW4gYW5vdGhlciBhbGxv
Y2F0b3IgYW5kIHRoZSBlbXB0eSBiaXQuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSwgc25hcHNob3Qg
Yml0cy4KKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQg
dGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gU3RhcnQgYSBmdWxsIGNvbGxlY3Rpb24uCisvLyAtIGJl
Z2luTWFya2luZygpIGNsZWFycyBtYXJraW5nTm90RW1wdHksIG1hcmtpbmdSZXRpcmVkCisvLyAt
IHRoZSBoZWFwIHZlcnNpb24gaXMgaW5jcmVtZW50ZWQKKy8vIC0gbWFya2luZyByZWJ1aWxkcyBt
YXJraW5nTm90RW1wdHkvbWFya2luZ3JldGlyZWQgYml0cy4KKy8vIFdlIGRvIGVuZE1hcmtpbmco
KQorLy8gLSBjbGVhciBhbGwgYWxsb2NhdGVkIGJpdHMuCisvLyAtIHNldCBjYW5BbGxvY2F0ZS9l
bXB0eSB0aGUgc2FtZSB3YXkgYXMgaW4gZWRlbiBjb2xsZWN0aW9uLgorLy8gU25hcHNob3R0aW5n
LgorLy8gLSBzbmFwc2hvdCB8PSBsaXZlCisvLyBwcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8g
LSBjbGVhciBlZGVuLgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLworLy8gTm90aWNlIGhvdyBp
biB0aGlzIHNjaGVtZSwgdGhlIGVtcHR5L2NhbkFsbG9jYXRlIHN0YXRlIHN0YXlzIHNlcGFyYXRl
IGZyb20gdGhlIG1hcmtpbmdOb3RFbXB0eS8KKy8vIG1hcmtpbmdSZXRpcmVkIHN0YXRlLiBUaGlz
IGlzIG9uZSBzdGVwIHRvd2FyZHMgaGF2aW5nIHNlcGFyYXRlZCBhbGxvY2F0aW9uIGFuZCBtYXJr
aW5nIHN0YXRlLgorLy8KKy8vIEFmdGVyIHRoaXMsIHdlIGp1c3QgbmVlZCB0byBhbnN3ZXIgdGhl
IHF1ZXN0aW9uOiB3aGF0IGRvZXMgYW4gb2JqZWN0IGFsbG9jYXRlZCBkdXJpbmcgZWRlbiBHQwor
Ly8gbG9vayBsaWtlIHRvIHRoZSBHQz8KKy8vCisvLyBJJ3ZlIGNvbWUgdXAgd2l0aCB0d28gY29t
cGVsbGluZyBhbnN3ZXJzLgorLy8KKy8vIDEuIEFMTE9DQVRFIEJMQUNLCisvLworLy8gSSB0aGlu
ayB0aGF0IHRoZSBlYXNpZXN0IGFuc3dlciBpcyB0byBhbGxvY2F0ZSB0aGUgb2JqZWN0IHdoaXRl
IGFuZCB0aGVuCisvLyBpbW1lZGlhdGVseSBtYXJrIGl0LiBUaGlzIG1ha2VzIHRoZSBvYmplY3Qg
YmVoYXZlIGFzIGlmIGl0IHdhcyBhbGxvY2F0ZWQganVzdCBiZWZvcmUgdGhlIHN0YXJ0CisvLyBv
ZiBHQyBhbmQgaXQgd2FzIG9uIHRoZSBzdGFjayBhdCB0aGUgYmVnaW5uaW5nIG9mIEdDLiBXZSB3
b3VsZG4ndCBoYXZlIHRvIGRvIGFueXRoaW5nIGRpZmZlcmVudAorLy8gd2l0aCB0aGUgdmFyaW91
cyBibG9jayBiaXRzIHdoZW4gYWxsb2NhdGluZyBkdXJpbmcgR0M6IHdlIGNvdWxkIHN0aWxsIHNl
dCBlZGVuIGFuZCBhbGxvY2F0ZWQKKy8vIHNpbmNlIHRoZXkgd2lsbCBiZSBjbGVhcmVkIGFueXdh
eS4KKy8vCisvLyBCdXQgdGhpcyBtZWFucyB0aGF0IHRoZSBvYmplY3Qgd29uJ3QgYmUgZWxpZ2li
bGUgZm9yIGZyZWVpbmcgdW50aWwgdGhlIG5leHQgZnVsbCBHQy4gSWRlYWxseQorLy8gd2UnZCBt
YWtlIHRoZSBvYmplY3QgaXMgZWxpZ2libGUgZm9yIGZyZWVpbmcgYXQgdGhlIG5leHQgZWRlbiBH
Qy4gVGhlcmUncyBhIGJ1bmNoIG9mIHRoaW5ncyB3ZQorLy8gY291bGQgZG8gdG8gbWFrZSB0aGlz
IGhhcHBlbi4gSGVyZSBhcmUgc29tZSBpZGVhczoKKy8vCisvLyAtIEludHJvZHVjZSBhIG5ldyBD
ZWxsU3RhdGUsIGNhbGxlZCBGbG9hdCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdhcyBh
bGxvY2F0ZWQgZHVyaW5nIHRoZQorLy8gICBHQy4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgbWFy
a2luZyBkb2VzIG5vdGhpbmcgZm9yIEZsb2F0cy4gVGhpcyB3b3VsZCBtYWtlIG1hcmtpbmcgYSB0
aW55CisvLyAgIGJpdCBtb3JlIGV4cGVuc2l2ZS4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgdGhl
IGJhcnJpZXIgcmVjb2duaXplcyBzdG9yZXMgdG8gYSBGbG9hdCB0aGUgc2FtZQorLy8gICB3YXkg
dGhhdCBpdCBzZWVzIGEgc3RvcmUgdG8gT2xkQmxhY2s6IGl0IHB1dHMgdGhlIG9iamVjdCBvbiB0
aGUgbWFyayBzdGFjay4gRmxvYXRzIHdvdWxkIGJlCisvLyAgIHB1dCBvbiB0aGUgbWFyayBzdGFj
ayBhcyBGbG9hdEdyZXkgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IHdpbGwgYmUgc2Nhbm5lZCBieSB0
aGUgR0MgYnV0IHRoYXQKKy8vICAgdGhleSBhcmVuJ3QgYWN0dWFsbHkgbWFya2VkLgorLy8KKy8v
ICAgTm90ZSB0aGF0IHRoaXMgaW1wbGllcyBoYXZpbmcgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiB0
aG9zZSBjZWxscyBmcm9tIEZsb2F0IHRvIHNvbWV0aGluZyBlbHNlCisvLyAgIGF0IHRoZSBlbmQg
b2YgR0MuICBJJ20gbm90IHN1cmUgdGhhdCB0aGlzIGlzIHNvIGdyZWF0LgorLy8KKy8vIC0gTWFy
ayB0aGUgb2JqZWN0cyBhZnRlciBhbGxvY2F0aW9uLCBidXQgYWxzbyBzZXQgc29tZSBvdGhlciBi
aXRzIHRvIGluZGljYXRlIHRoYXQgdGhlIHRob3NlCisvLyAgIG9iamVjdHMgc2hvdWxkIGJlIHVu
bWFya2VkIGF0IHRoZSBlbmQgb2YgdGhlIEdDLgorLy8KKy8vIEVpdGhlciBvZiB0aGVzZSBhcHBy
b2FjaGVzIHdvdWxkIG1ha2UgY29sbGVjdGlvbnMgbW9yZSBleHBlbnNpdmUsIGJ1dCBpdCBmZWVs
cyBsaWtlIHRoZSBsYXR0ZXIKKy8vIGFwcHJvYWNoIHdvdWxkIGJlIGEgcHJvZml0YWJsZSBvcHRp
bWl6YXRpb24uIEknbSBhbHNvIHJlYWxseSBnZXR0aW5nIHdvcnJpZWQgYWJvdXQgaG93IHRoaXMg
R0MKKy8vIGV4cGVyaWVuY2VzIGJhY2t3YXJkcyB0aW1lIHRyYXZlbCwgd2l0aCBhbGwgdGhlIHJl
bWFya2luZyBvZiB0aGluZ3MgbGlrZSBuZXcgb2JqZWN0cyBhbmQKKy8vIHdoYXRub3QuCisvLwor
Ly8gMi4gQUxMT0NBVEUgV0hJVEUKKy8vCisvLyBJIGRvbid0IGtub3cgaWYgdGhpcyBpcyBzb3Vu
ZCwgYnV0IGlmIGl0IHdhcyB0aGVuIGl0IHdvdWxkIGJlIHRoZSBvcHRpbWFsIHNvbHV0aW9uLiBB
bGxvY2F0aW9uCisvLyB3b3VsZCB3b3JrIGFzIG5vdyBhbmQgY29uc2VxdWVudGx5LCBldmVyeXRo
aW5nIHdlIGtub3cgYWJvdXQgd2hhdCB3YXMgYWxsb2NhdGVkIGR1cmluZyBhIEdDIGlzCisvLyBm
b3Jnb3R0ZW4gYXQgdGhlIGVuZCBvZiBHQy4gQnV0IHRoYXQncyBmaW5lLiBFbmQgb2YgR0MgbXVz
dCByZXNjYW4gYW55IGhlYXAgbG9jYXRpb25zIHRoYXQgZ290CisvLyBzdG9yZWQgaW50byBhbmQg
aXQgbXVzdCByZXNjYW4gdGhlIHN0YWNrLiBTbywgd2hpdGUgb2JqZWN0cyBhbGxvY2F0ZWQgZHVy
aW5nIEdDIHdvdWxkIGdldAorLy8gbWFya2VkIGlmIHRoZXkgc29tZWhvdyBzdXJ2aXZlZC4KKy8v
CisvLyBUaGlzIG1lYW5zIHRoYXQgZm9yIGV4YW1wbGUgaWYgdGhlcmUgaXMgYSBmaWVsZCB0aGF0
IG9mdGVuIGdldHMgc3RvcmVkIHRvIHdpdGggbmV3IG9iamVjdHMsIHRoZQorLy8gR0Mgd2lsbCBu
b3Qgc2VlIGFsbCBvZiB0aGUgdmFsdWVzIGluIHRoYXQgZmllbGQgYnV0IGluc3RlYWQgaXQgd291
bGQgcG9sbCB0aGF0IGZpZWxkLCBob3BlZnVsbHkKKy8vIHNvbWV3aGF0IHJhcmVseS4gV2UgY2Fu
IG1ha2UgaXQgdmVyeSByYXJlIGJ5IG9ubHkgaW5mcmVxdWVudGx5IGRvbmF0aW5nIGZyb20gdGhl
IG1haW4gdGhyZWFkJ3MKKy8vIHNsb3QgdmlzaXRvciB0byBhbnkgb2YgdGhlIG90aGVycy4gU28s
IHdlIHdvdWxkIG9ubHkgbWFyayBzb21lIG9mIHRoZSBuZXcgb2JqZWN0cyB0aGF0IGdvdAorLy8g
c3RvcmVkIGludG8gdGhhdCBmaWVsZC4gSXQgYWxzbyBtZWFucyB0aGF0IGFueSBvYmplY3QgYWxs
b2NhdGVkIGR1cmluZyB0aGUgR0MgdGhhdCBkaWRuJ3QgZ2V0CisvLyBzdG9yZWQgaW50byBhbnkg
b2JqZWN0IHRoYXQgd2FzIGxpdmUgc2luY2UgYmVmb3JlIHRoZSBzdGFydCBvZiBHQyB3b3VsZCBz
aW1wbHkgZGlzYXBwZWFyLiBUaGlzCisvLyBtZWFucyBtdWNoIGxlc3MgcmVzY2FubmluZyB0aGFu
IGFueSBvZiB0aGUgb3RoZXIgcHJvcG9zYWxzLgorLy8KKy8vIEkgcmVhbGx5IHdhbnQgdG8gZ28g
d2l0aCB0aGUgYWxsb2NhdGUtd2hpdGUgYXBwcm9hY2gsIGJ1dCBJIG5lZWQgdG8gdGhpbmsgbW9y
ZSBkZWVwbHkgYWJvdXQgaXQKKy8vIGJlZm9yZSBJIGNvbW1pdCB0byBpdC4KKwogY2xhc3MgTWFy
a2VkQWxsb2NhdG9yIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
CkBAIC00Niw5ICsxNzYsMTYgQEAgcHVibGljOgogCiAgICAgTWFya2VkQWxsb2NhdG9yKEhlYXAq
LCBNYXJrZWRTcGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRl
cyYpOwogICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKLSAgICB2b2lkIHJlc2V0KCk7
CisgICAgdm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRp
bmcoKTsKICAgICB2b2lkIHJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICB2b2lkIGJlZ2luTWFya2lu
Z0ZvckZ1bGxDb2xsZWN0aW9uKCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBz
bmFwc2hvdEZvckVkZW5Db2xsZWN0aW9uKCk7CisgICAgdm9pZCBzbmFwc2hvdEZvckZ1bGxDb2xs
ZWN0aW9uKCk7CisgICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc2hyaW5rKCk7CisgICAgdm9p
ZCBhc3NlcnRTbmFwc2hvdEVtcHR5KCk7CiAgICAgc2l6ZV90IGNlbGxTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9jZWxsU2l6ZTsgfQogICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KICAgICBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVl
ZHNEZXN0cnVjdGlvbjsgfQpAQCAtNzIsNiArMjA5LDQ2IEBAIHB1YmxpYzoKICAgICBib29sIGlz
UGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJsb2Nr
U2l6ZUZvckJ5dGVzKHNpemVfdCk7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklU
X0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wg
aXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBs
b3dlckJpdE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0
TmFtZShibG9jay0+aW5kZXgoKSk7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5h
bWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0g
PSB2YWx1ZTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShi
bG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9IFwKKyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMg
IyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IHJldHVybiBtXyAj
IyBsb3dlckJpdE5hbWUuYXRvbWljU2V0QW5kQ2hlY2soaW5kZXgsIHZhbHVlKTsgfSBcCisgICAg
Ym9vbCBhdG9taWNTZXRBbmRDaGVja0lzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWUuYXRv
bWljU2V0QW5kQ2hlY2soYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQorICAgIEZPUl9FQUNIX01B
UktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUykKKyN1bmRl
ZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAg
eworI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNh
cGl0YWxCaXROYW1lKSBcCisgICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAg
ICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FM
TEJBQ0spOworI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAg
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9y
V2l0aE5hbWUoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FU
T1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAg
ZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUsICNjYXBpdGFsQml0TmFtZSk7CisgICAgICAgIEZPUl9F
QUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKTsK
KyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAgICBN
YXJrZWRBbGxvY2F0b3IqIG5leHRBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25leHRBbGxv
Y2F0b3I7IH0KKyAgICAKKyAgICAvLyBNYXJrZWRTcGFjZSBjYWxscyB0aGlzIGR1cmluZyBpbml0
LgorICAgIHZvaWQgc2V0TmV4dEFsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcikg
eyBtX25leHRBbGxvY2F0b3IgPSBhbGxvY2F0b3I7IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBmaW5kRW1wdHlCbG9jaygpOworICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGZpbmRCbG9ja1RvU3dlZXAoKTsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdDsKKyAgICB2b2lkIGR1bXBCaXRzKFByaW50U3RyZWFtJiA9IFdURjo6ZGF0YUZpbGUoKSk7
CiAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwpAQCAtODIsMjUg
KzI1OSwzNyBAQCBwcml2YXRlOgogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3Rp
bmcoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpOwogICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICB2b2lkKiB0cnlB
bGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkKiBhbGxvY2F0ZUluKE1h
cmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVj
dGlvbnNJZk5lZWRlZCgpOwotICAgIHZvaWQgcmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsK
ICAgICAKICAgICB2b2lkIHNldEZyZWVMaXN0KGNvbnN0IEZyZWVMaXN0Jik7CiAgICAgCi0gICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogZmlsdGVyTmV4dEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUq
KTsKLSAgICB2b2lkIHNldE5leHRCbG9ja1RvU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSopOwot
ICAgIAogICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7CisgICAgCisgICAgVmVjdG9yPE1hcmtlZEJs
b2NrOjpIYW5kbGUqPiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2Nr
SW5kaWNlczsKKyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04o
bG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMg
bG93ZXJCaXROYW1lOworICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9B
TExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0RF
Q0xBUkFUSU9OCisgICAgCisgICAgLy8gQWZ0ZXIgeW91IGRvIHNvbWV0aGluZyB0byBhIGJsb2Nr
IGJhc2VkIG9uIG9uZSBvZiB0aGVzZSBjdXJzb3JzLCB5b3UgY2xlYXIgdGhlIGJpdCBpbiB0aGUK
KyAgICAvLyBjb3JyZXNwb25kaW5nIGJpdHZlY3RvciBhbmQgbGVhdmUgdGhlIGN1cnNvciB3aGVy
ZSBpdCB3YXMuCisgICAgc2l6ZV90IG1fYWxsb2NhdGlvbkN1cnNvciB7IDAgfTsgLy8gUG9pbnRz
IHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGFsbG9jYXRpb24uCisg
ICAgc2l6ZV90IG1fZW1wdHlDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9j
ayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBlbXB0eSBhbGxvY2F0aW9uIChhbGxvY2F0aW5nIGlu
IGVtcHR5IGJsb2NrcykuCisgICAgc2l6ZV90IG1fc25hcHNob3RDdXJzb3IgeyAwIH07IC8vIFBv
aW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBpbmNyZW1lbnRh
bCBzd2VlcGluZy4KKyAgICAKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2N1cnJlbnRCbG9j
azsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBtX25leHRCbG9ja1RvU3dlZXA7Ci0gICAgU2VudGluZWxMaW5rZWRM
aXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2Nr
OjpIYW5kbGU+PiBtX2Jsb2NrTGlzdDsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxv
Y2s6OkhhbmRsZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1f
cmV0aXJlZEJsb2NrczsKKwogICAgIExvY2sgbV9sb2NrOwogICAgIHVuc2lnbmVkIG1fY2VsbFNp
emU7CiAgICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAgICAgSGVhcCogbV9o
ZWFwOwogICAgIE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOworICAgIE1hcmtlZEFsbG9jYXRv
ciogbV9uZXh0QWxsb2NhdG9yOwogfTsKIAogaW5saW5lIHB0cmRpZmZfdCBNYXJrZWRBbGxvY2F0
b3I6Om9mZnNldE9mRnJlZUxpc3QoKQpAQCAtMTQ5LDIwICszMzgsMTIgQEAgQUxXQVlTX0lOTElO
RSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbAogICAgIHJldHVybiBoZWFkOwogfQogCi1pbmxp
bmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcoKQotewotICAgIGlmICgh
bV9sYXN0QWN0aXZlQmxvY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZnJlZUxpc3QgPSBt
X2xhc3RBY3RpdmVCbG9jay0+cmVzdW1lQWxsb2NhdGluZygpOwotICAgIG1fY3VycmVudEJsb2Nr
ID0gbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotfQotCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpm
b3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX2Jsb2NrTGlzdC5m
b3JFYWNoKGZ1bmN0b3IpOwotICAgIG1fcmV0aXJlZEJsb2Nrcy5mb3JFYWNoKGZ1bmN0b3IpOwor
ICAgIG1fbGl2ZS5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewor
ICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNp
bmNsdWRlICJTdXBlclNhbXBsZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNiw3ICszNyw3
IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBm
YWxzZTsKIHN0YXRpYyBzaXplX3QgYmFsYW5jZTsKIAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFy
a2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
KQorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFw
LCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMp
CiB7CiAgICAgaWYgKGNvbXB1dGVCYWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4
LDI0ICs0OSwyMCBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQogICAg
ICAgICBzY3JpYmJsZShibG9ja1NwYWNlLCBibG9ja1NpemUpOwotICAgIHJldHVybiBuZXcgSGFu
ZGxlKGhlYXAsIGFsbG9jYXRvciwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOwor
ICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBibG9ja1Nw
YWNlKTsKIH0KIAotTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIE1hcmtl
ZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIHZvaWQqIGJsb2NrU3BhY2UpCitNYXJrZWRCbG9jazo6SGFu
ZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV9hdG9tc1Bl
ckNlbGwoKGNlbGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRB
dG9tKGF0b21zUGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDEpCiAgICAgLCBtX2F0dHJpYnV0
ZXMoYXR0cmlidXRlcykKLSAgICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0
IHVubWFya2VkLgotICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0
KGFsbG9jYXRvci0+aGVhcCgpLT52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX3dlYWtT
ZXQoaGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkpCiB7CiAgICAgbV9ibG9jayA9IG5ldyAoTm90
TnVsbCwgYmxvY2tTcGFjZSkgTWFya2VkQmxvY2soKmhlYXAudm0oKSwgKnRoaXMpOwogICAgIAog
ICAgIG1fd2Vha1NldC5zZXRDb250YWluZXIoKm1fYmxvY2spOwogICAgIAogICAgIGhlYXAuZGlk
QWxsb2NhdGVCbG9jayhibG9ja1NpemUpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT04odGhpcyk7Ci0gICAgQVNTRVJUKGFsbG9jYXRvcik7CiAgICAgaWYgKG1fYXR0cmlidXRl
cy5jZWxsS2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CiB9CkBA
IC03OCw2ICs3NSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQogICAgICAgICBp
ZiAoIShiYWxhbmNlICUgMTApKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFs
YW5jZTogIiwgYmFsYW5jZSwgIlxuIik7CiAgICAgfQorICAgIHJlbW92ZUZyb21BbGxvY2F0b3Io
KTsKICAgICBtX2Jsb2NrLT5+TWFya2VkQmxvY2soKTsKICAgICBmYXN0QWxpZ25lZEZyZWUobV9i
bG9jayk7CiAgICAgaGVhcC5kaWRGcmVlQmxvY2soYmxvY2tTaXplKTsKQEAgLTg1LDcgKzgzLDcg
QEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAKIE1hcmtlZEJsb2NrOjpNYXJrZWRC
bG9jayhWTSYgdm0sIEhhbmRsZSYgaGFuZGxlKQogICAgIDogbV9uZWVkc0Rlc3RydWN0aW9uKGhh
bmRsZS5uZWVkc0Rlc3RydWN0aW9uKCkpCi0gICAgLCBtX3ZlcnNpb24odm0uaGVhcC5vYmplY3RT
cGFjZSgpLnZlcnNpb24oKSkKKyAgICAsIG1fdmVyc2lvbihNYXJrZWRTcGFjZTo6bnVsbFZlcnNp
b24pCiAgICAgLCBtX2hhbmRsZShoYW5kbGUpCiAgICAgLCBtX3ZtKCZ2bSkKIHsKQEAgLTEwMSwy
MiArOTksMjIgQEAgTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKFZNJiB2bSwgSGFuZGxlJgogICAg
IG1fYmlhc2VkTWFya0NvdW50ID0gbV9tYXJrQ291bnRCaWFzOyAvLyBUaGlzIG1lYW5zIHdlIGhh
dmVuJ3QgbWFya2VkIGFueXRoaW5nIHlldC4KIH0KIAotdGVtcGxhdGU8TWFya2VkQmxvY2s6OkJs
b2NrU3RhdGUgYmxvY2tTdGF0ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVw
TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlB
bGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpI
YW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9k
ZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6
Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OkZsaXBNb2RlIGZsaXBNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Bl
Y2lhbGl6ZWRTd2VlcCgpCiB7Ci0gICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOwotICAgIEFTU0VSVChibG9ja1N0YXRlID09IE5ldyB8fCBibG9ja1N0YXRlID09
IE1hcmtlZCk7Ci0gICAgQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24gJiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSkpOworICAgIFJFTEVBU0VfQVNTRVJU
KCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2Rl
ID09IFN3ZWVwT25seSkpOwogICAgIAotICAgIGFzc2VydEZsaXBwZWQoKTsKKyAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKICAgICBNYXJrZWRCbG9jayYg
YmxvY2sgPSB0aGlzLT5ibG9jaygpOwogICAgIAotICAgIGJvb2wgaXNOZXdCbG9jayA9IGJsb2Nr
U3RhdGUgPT0gTmV3OwotICAgIGJvb2wgaXNFbXB0eUJsb2NrID0gIWJsb2NrLmhhc0FueU1hcmtl
ZCgpCi0gICAgICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxs
b2NhdGVkCi0gICAgICAgICYmIGRlc3RydWN0aW9uTW9kZSA9PSBEb2VzTm90TmVlZERlc3RydWN0
aW9uOwotICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2NhdG9yKCkgJiYgKGlzTmV3QmxvY2sg
fHwgaXNFbXB0eUJsb2NrKSkgewotICAgICAgICBBU1NFUlQoYmxvY2subV9tYXJrcy5pc0VtcHR5
KCkpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAi
OiBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVxuIik7CisgICAgCisgICAg
aWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQorICAgICAgICAmJiBlbXB0eU1vZGUgPT0g
SXNFbXB0eQorICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZCkgeworICAgICAgICBBU1NFUlQoZmxpcE1vZGUgPT0gTmVlZHNGbGlwKTsKICAg
ICAgICAgCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZMYXN0Q2VsbCA9IHN0YXRpY19jYXN0PGNoYXIq
PihjZWxsQWxpZ24oYmxvY2suYXRvbXMoKSArIG1fZW5kQXRvbSAtIDEpKTsKICAgICAgICAgY2hh
ciogcGF5bG9hZEVuZCA9IHN0YXJ0T2ZMYXN0Q2VsbCArIGNlbGxTaXplKCk7CkBAIC0xMjQsNyAr
MTIyLDEwIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAg
ICAgY2hhciogcGF5bG9hZEJlZ2luID0gYml0d2lzZV9jYXN0PGNoYXIqPihibG9jay5hdG9tcygp
ICsgZmlyc3RBdG9tKCkpOwogICAgICAgICBpZiAoc2NyaWJibGVNb2RlID09IFNjcmliYmxlKQog
ICAgICAgICAgICAgc2NyaWJibGUocGF5bG9hZEJlZ2luLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJl
Z2luKTsKLSAgICAgICAgbV9zdGF0ZSA9ICgoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkg
PyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRv
RnJlZUxpc3QpCisgICAgICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgdHJ1ZSk7CiAgICAgICAg
IEZyZWVMaXN0IHJlc3VsdCA9IEZyZWVMaXN0OjpidW1wKHBheWxvYWRFbmQsIHBheWxvYWRFbmQg
LSBwYXlsb2FkQmVnaW4pOwogICAgICAgICBpZiAoZmFsc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCJRdWlja2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIodGhpcyksICIgd2l0aCBjZWxsIHNp
emUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIs
IHJlc3VsdCwgIlxuIik7CkBAIC0xMzcsMTQgKzEzOCwxNCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgRnJlZUNlbGwqIGhlYWQgPSAwOwogICAgIHNpemVf
dCBjb3VudCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRB
dG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIGlmIChibG9ja1N0YXRlID09IE1h
cmtlZAotICAgICAgICAgICAgJiYgKGJsb2NrLm1fbWFya3MuZ2V0KGkpCisgICAgICAgIGlmIChl
bXB0eU1vZGUgPT0gTm90RW1wdHkKKyAgICAgICAgICAgICYmICgoZmxpcE1vZGUgPT0gRG9lc05v
dE5lZWRGbGlwICYmIGJsb2NrLm1fbWFya3MuZ2V0KGkpKQogICAgICAgICAgICAgICAgIHx8IChu
ZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYgbV9uZXdseUFsbG9jYXRl
ZC0+Z2V0KGkpKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAKICAgICAgICAg
SGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZibG9jay5h
dG9tcygpW2ldKTsKIAotICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVzdHJ1
Y3Rpb24gJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCisgICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUg
PT0gTmVlZHNEZXN0cnVjdGlvbiAmJiBlbXB0eU1vZGUgPT0gTm90RW1wdHkpCiAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKS0+Y2FsbERlc3RydWN0b3IoKnZtKCkpOwogCiAg
ICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CkBAIC0xNjMsMjMgKzE2
NCwzOCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAg
IG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJl
ZUxpc3Q6Omxpc3QoaGVhZCwgY291bnQgKiBjZWxsU2l6ZSgpKTsKLSAgICBtX3N0YXRlID0gKHN3
ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKLSAgICBp
ZiAoZmFsc2UpCisgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAg
IHNldElzRnJlZUxpc3RlZCgpOworICAgIGVsc2UgeworICAgICAgICB1bnNpZ25lZCBjZWxsc1Bl
ckJsb2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7CisgICAgICAg
IGlmIChjb3VudCA9PSBjZWxsc1BlckJsb2NrKQorICAgICAgICAgICAgbV9hbGxvY2F0b3ItPnNl
dElzRW1wdHkodGhpcywgdHJ1ZSk7CisgICAgfQorICAgIGlmIChmYWxzZSkgewogICAgICAgICBk
YXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGgg
Y2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVz
LCAiOiAiLCByZXN1bHQsICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgQWxsb2NhdG9yOiAi
LCBSYXdQb2ludGVyKG1fYWxsb2NhdG9yKSwgIlxuIik7CisgICAgICAgIGZvciAoRnJlZUNlbGwq
IGNlbGwgPSByZXN1bHQuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgQ2VsbDogIiwgUmF3UG9pbnRlcihjZWxsKSwgIiwgbmV4dDogIiwgUmF3
UG9pbnRlcihjZWxsLT5uZXh0KSwgIlxuIik7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKFN3ZWVwTW9kZSBzd2VlcE1v
ZGUpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgbV9hbGxvY2F0b3ItPnNldElzU25h
cHNob3QodGhpcywgZmFsc2UpOwogICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT04odGhpcyk7Ci0KICAgICBtX3dlYWtTZXQuc3dlZXAoKTsKIAogICAgIGlmIChzd2VlcE1v
ZGUgPT0gU3dlZXBPbmx5ICYmIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVl
ZERlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKIAorICAgIGlmIChVTkxJ
S0VMWShtX2lzRnJlZUxpc3RlZCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCk7CisgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOworICAgIH0K
KyAgICAKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yLT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAg
CiAgICAgaWYgKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uKQog
ICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8TmVlZHNEZXN0cnVj
dGlvbj4oc3dlZXBNb2RlKTsKICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1v
ZGU8RG9lc05vdE5lZWREZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsKQEAgLTE4OSw0NyArMjA1LDU3
IEBAIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUKIEZyZWVMaXN0IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9k
ZSBzd2VlcE1vZGUpCiB7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCi0gICAgICAgIHJl
dHVybiBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwg
U2NyaWJibGU+KHN3ZWVwTW9kZSk7Ci0gICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVB
bmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9kZSk7Cisg
ICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUs
IFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5
TW9kZTxkZXN0cnVjdGlvbk1vZGUsIERvbnRTY3JpYmJsZT4oc3dlZXBNb2RlKTsKIH0KIAogdGVt
cGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KLUZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9k
ZSkKK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1wdHlN
b2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAg
Y2FzZSBOZXc6Ci0gICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsK
LSAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3QsIGRl
c3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigp
OwotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAgLy8gSGFwcGVucyB3aGVuIGEgYmxvY2sg
dHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxsb2NhdGVkLgotICAgICAgICBBU1NFUlQoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAgIGNh
c2UgQWxsb2NhdGVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNlIE1hcmtlZDoKLSAgICAgICAgaWYgKG1f
bmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBU
b0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dl
ZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxv
Y2F0ZWQ+KCkKLSAgICAgICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2Vl
cE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4o
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwg
U3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhh
dmVOZXdseUFsbG9jYXRlZD4oKQotICAgICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxN
YXJrZWQsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RI
YXZlTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRnJlZUxpc3QoKTsKKyAgICAvLyBJdCdzIG5v
dCBvYnZpb3VzLCBidXQgdGhpcyBpcyB0aGUgb25seSB3YXkgdG8ga25vdyBpZiB0aGUgYmxvY2sg
aXMgZW1wdHkuIEl0J3MgdGhlIG9ubHkKKyAgICAvLyBiaXQgdGhhdCBjYXB0dXJlcyB0aGVzZSBj
YXZlYXRzOgorICAgIC8vIC0gSXQncyB0cnVlIHdoZW4gdGhlIGJsb2NrIGlzIGZyZXNobHkgYWxs
b2NhdGVkLgorICAgIC8vIC0gSXQncyBmYWxzZSBpZiB0aGVyZSBhcmUgYW55IGRlc3RydWN0b3Jz
IHRoYXQgbmVlZCB0byBiZSBjYWxsZWQsIGV2ZW4gaWYgdGhlIGJsb2NrIGhhcyBubworICAgIC8v
ICAgbGl2ZSBvYmplY3RzLgorICAgIGlmIChtX2FsbG9jYXRvci0+aXNFbXB0eSh0aGlzKSkKKyAg
ICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQ8SXNFbXB0eSwg
ZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGU+KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3
ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQ8Tm90RW1wdHksIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworfQorCit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6
SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25N
b2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgorRnJl
ZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9j
YXRlZChTd2VlcE1vZGUgc3dlZXBNb2RlKQoreworICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKQor
ICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0
cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7
CisgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1
Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVw
TW9kZSk7Cit9CisKK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0
eU1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5
QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQor
eworICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICByZXR1cm4g
c3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3ZWVwVG9GcmVlTGlzdCwgZGVz
dHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKKyAgICBy
ZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3ZWVwT25seSwgZGVz
dHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKK30KKwor
dGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3Ry
dWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9k
ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVk
TW9kZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0Rmxp
cE1vZGUoKQoreworICAgIGlmIChuZWVkc0ZsaXAoKSkKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxp
emVkU3dlZXA8ZW1wdHlNb2RlLCBzd2VlcE1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVN
b2RlLCBuZXdseUFsbG9jYXRlZE1vZGUsIE5lZWRzRmxpcD4oKTsKKyAgICByZXR1cm4gc3BlY2lh
bGl6ZWRTd2VlcDxlbXB0eU1vZGUsIHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJs
ZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZSwgRG9lc05vdE5lZWRGbGlwPigpOwogfQogCiB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpCiB7Ci0g
ICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJB
TlNJVElPTih0aGlzKTsKLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlID09IEZyZWVM
aXN0ZWQpOwotICAgIG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pc0Zy
ZWVMaXN0ZWQpOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c2V0SXNGcmVlTGlzdGVkKCkKK3sKKyAgICBtX2FsbG9jYXRvci0+c2V0
SXNFbXB0eSh0aGlzLCBmYWxzZSk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSB0cnVlOwogfQogCiBj
bGFzcyBTZXROZXdseUFsbG9jYXRlZEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRG
dW5jdG9yIHsKQEAgLTI1MiwyNiArMjc4LDE3IEBAIHByaXZhdGU6CiAKIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRnJlZUxpc3QmIGZyZWVMaXN0KQogewot
ICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJ
T04odGhpcyk7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhp
cyksICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nIVxuIik7CisgICAgQVNT
RVJUKCFhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOwogCi0gICAgaWYgKG1fc3RhdGUg
PT0gTWFya2VkKSB7Ci0gICAgICAgIC8vIElmIHRoZSBibG9jayBpcyBpbiB0aGUgTWFya2VkIHN0
YXRlIHRoZW4gd2Uga25vdyB0aGF0IG9uZSBvZiB0aGVzZQotICAgICAgICAvLyBjb25kaXRpb25z
IGhvbGRzOgotICAgICAgICAvLwotICAgICAgICAvLyAtIEl0IHdhcyBub3QgdXNlZCBmb3IgYWxs
b2NhdGlvbiBkdXJpbmcgdGhlIHByZXZpb3VzIGFsbG9jYXRpb24gY3ljbGUuCi0gICAgICAgIC8v
ICAgSXQgbWF5IGhhdmUgZGVhZCBvYmplY3RzLCBhbmQgd2Ugb25seSBrbm93IHRoZW0gdG8gYmUg
ZGVhZCBieSB0aGUKLSAgICAgICAgLy8gICBmYWN0IHRoYXQgdGhlaXIgbWFyayBiaXRzIGFyZSB1
bnNldC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBTb21lb25lIGhhZCBhbHJlYWR5IGRvbmUg
c3RvcEFsbG9jYXRpbmcoKSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBvZgotICAgICAgICAvLyAgIGhl
YXAgaXRlcmF0aW9uLCBhbmQgdGhleSBoYWQgYWxyZWFkeSAKLSAgICAgICAgLy8gSGVuY2UgaWYg
dGhlIGJsb2NrIGlzIE1hcmtlZCB3ZSBuZWVkIHRvIGxlYXZlIGl0IE1hcmtlZC4KKyAgICBpZiAo
IWlzRnJlZUxpc3RlZCgpKSB7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBlaXRoZXIg
ZGlkbid0IHVzZSB0aGlzIGJsb2NrIGF0IGFsbCBmb3IgYWxsb2NhdGlvbiBzaW5jZSBsYXN0IEdD
LAorICAgICAgICAvLyBvciBzb21lb25lIGhhZCBhbHJlYWR5IGRvbmUgc3RvcEFsbG9jYXRpbmco
KSBiZWZvcmUuCiAgICAgICAgIEFTU0VSVChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJl
ZUxpc3RlZCk7Ci0gICAgCiAgICAgLy8gUm9sbCBiYWNrIHRvIGEgY29oZXJlbnQgc3RhdGUgZm9y
IEhlYXAgaW50cm9zcGVjdGlvbi4gQ2VsbHMgbmV3bHkKICAgICAvLyBhbGxvY2F0ZWQgZnJvbSBv
dXIgZnJlZSBsaXN0IGFyZSBub3QgY3VycmVudGx5IG1hcmtlZCwgc28gd2UgbmVlZCBhbm90aGVy
CiAgICAgLy8gd2F5IHRvIHRlbGwgd2hhdCdzIGxpdmUgdnMgZGVhZC4gCkBAIC0yOTAsMTEgKzMw
NywxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nCiAgICAgICAg
ICAgICBjbGVhck5ld2x5QWxsb2NhdGVkKGNlbGwpOwogICAgICAgICB9KTsKICAgICAKLSAgICBt
X3N0YXRlID0gTWFya2VkOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7CiB9CiAKIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogeworICAgIGFsbG9j
YXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlzLCBmYWxzZSk7CiAgICAgbV9ibG9jay0+Y2xlYXJN
YXJrcygpOwogICAgIG1fd2Vha1NldC5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCkBAIC0zMDQs
MTQgKzMyMiwxMSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpCiAK
IEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcoKQogewotICAg
IGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04o
dGhpcyk7Ci0KLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOworICAgIEFTU0VSVCghYWxs
b2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgp
KTsKIAogICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAvLyBXZSBkaWRuJ3Qg
aGF2ZSB0byBjcmVhdGUgYSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAuIFRoYXQgbWVhbnMgd2Ug
d2VyZSBhbHJlYWR5IE1hcmtlZAotICAgICAgICAvLyB3aGVuIHdlIGxhc3Qgc3RvcHBlZCBhbGxv
Y2F0aW9uLCBzbyByZXR1cm4gYW4gZW1wdHkgZnJlZSBsaXN0IGFuZCBzdGF5IGluIHRoZSBNYXJr
ZWQgc3RhdGUuCisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVk
IHRoZSBibG9jayB3aGVuIHdlIHN0b3BwZWQgYWxsb2NhdGlvbi4KICAgICAgICAgcmV0dXJuIEZy
ZWVMaXN0KCk7CiAgICAgfQogCkBAIC0zNDUsNDAgKzM2MCwyOCBAQCB2b2lkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmZvckVhY2hGcmVlQ2VsCiAgICAgfQogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpm
bGlwSWZOZWNlc3NhcnkoKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSh2bSgpLT5oZWFwLm9iamVj
dFNwYWNlKCkudmVyc2lvbigpKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlw
SWZOZWNlc3NhcnkoKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KCk7Ci19Ci0KLXZv
aWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3coKQotewotICAgIEFTU0VSVChuZWVk
c0ZsaXAoKSk7Ci0gICAgQVNTRVJUKCF2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5n
KCkpOwotICAgIGNsZWFyTWFya3MoKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVj
ZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3coKQordm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtT
bG93KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9i
amVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
Ci0gICAgaWYgKG5lZWRzRmxpcCgpKQotICAgICAgICBjbGVhck1hcmtzKCk7CisgICAgaWYgKG5l
ZWRzRmxpcChoZWFwVmVyc2lvbikpIHsKKyAgICAgICAgY2xlYXJNYXJrcyhoZWFwVmVyc2lvbik7
CisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkg
b2JqZWN0IGluIHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9t
aWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgfQog
fQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKKyAgICBjbGVhck1hcmtzKHZt
KCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpOworfQorCit2b2lkIE1hcmtlZEJsb2Nr
OjpjbGVhck1hcmtzKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQorewogICAgIG1fbWFya3MuY2xl
YXJBbGwoKTsKICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIC8vIFRoaXMgd2lsbCBiZWNv
bWUgdHJ1ZSBhdCB0aGUgZW5kIG9mIHRoZSBtYXJrIHBoYXNlLiBXZSBzZXQgaXQgbm93IHRvCi0g
ICAgLy8gYXZvaWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4KLSAgICBoYW5kbGUoKS5t
X3N0YXRlID0gTWFya2VkOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgbV92ZXJz
aW9uID0gdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKKyAgICBtX3ZlcnNpb24g
PSBoZWFwVmVyc2lvbjsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTM5OCwzMSArNDAx
LDM4IEBAIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkKICAgICByZXR1cm4g
bV9ibG9jay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6d2ls
bFJlbW92ZUJsb2NrKCkKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHAp
CiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgcmV0dXJuIGlzTWFya2VkKHZtKCktPmhl
YXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIHApOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCgpCitib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omlz
TWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBmbGlw
SWZOZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMp
OwotICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOworICAgIHJldHVybiBp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24o
KSwgY2VsbCk7Cit9CisKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRl
ZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxs
b2NhdGVkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOworfQogCi0g
ICAgbV9zdGF0ZSA9IEFsbG9jYXRlZDsKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29u
c3VtZUZyZWVMaXN0KCkKK3sKKyAgICBpZiAoZmFsc2UpCisgICAgICAgIGRhdGFMb2coUmF3UG9p
bnRlcih0aGlzKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0IVxu
Iik7CisgICAgQVNTRVJUKGlzRnJlZUxpc3RlZCgpKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZh
bHNlOworICAgIGFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlzLCB0cnVlKTsKIH0KIAog
c2l6ZV90IE1hcmtlZEJsb2NrOjptYXJrQ291bnQoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgp
OwotICAgIHJldHVybiBtX21hcmtzLmNvdW50KCk7CisgICAgcmV0dXJuIG5lZWRzRmxpcCgpID8g
MCA6IG1fbWFya3MuY291bnQoKTsKIH0KIAogYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0Vt
cHR5KCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBN
YXJrZWQgJiYgIWJsb2NrKCkuaGFzQW55TWFya2VkKCkgJiYgbV93ZWFrU2V0LmlzRW1wdHkoKSAm
JiAoIW1fbmV3bHlBbGxvY2F0ZWQgfHwgbV9uZXdseUFsbG9jYXRlZC0+aXNFbXB0eSgpKTsKKyAg
ICByZXR1cm4gbV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcyk7CiB9CiAKIHZvaWQgTWFya2VkQmxv
Y2s6OmNsZWFySGFzQW55TWFya2VkKCkKQEAgLTQzMiwzMyArNDQyLDQ0IEBAIHZvaWQgTWFya2Vk
QmxvY2s6OmNsZWFySGFzQW55TWFya2VkKCkKIAogdm9pZCBNYXJrZWRCbG9jazo6bm90ZU1hcmtl
ZFNsb3coKQogewotICAgIGhhbmRsZSgpLm1fYWxsb2NhdG9yLT5yZXRpcmUoJmhhbmRsZSgpKTsK
KyAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hlY2tJc01hcmtpbmdSZXRp
cmVkKCZoYW5kbGUoKSwgdHJ1ZSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEpTQwordm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpyZW1vdmVGcm9tQWxsb2NhdG9yKCkKK3sKKyAgICBpZiAoIW1fYWxs
b2NhdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9hbGxvY2F0b3ItPnJlbW92ZUJs
b2NrKHRoaXMpOworfQogCi1uYW1lc3BhY2UgV1RGIHsKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBp
bmRleCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpKTsKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4
ID0gaW5kZXg7CisgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Cit9CisKK3ZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAgQVNTRVJUKG1f
aW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJU
KG1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKTsKKyAgICBtX2FsbG9jYXRvciA9IG51bGxwdHI7Cit9CiAKLXVzaW5nIG5h
bWVzcGFjZSBKU0M7Citib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFw
Q2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gaXNMaXZlKHZtKCktPmhlYXAub2JqZWN0U3BhY2Uo
KS52ZXJzaW9uKCksIGNlbGwpOworfQogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgTWFya2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSkKK2Jvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQogewotICAgIHN3aXRjaCAoYmxv
Y2tTdGF0ZSkgewotICAgIGNhc2UgTWFya2VkQmxvY2s6Ok5ldzoKLSAgICAgICAgb3V0LnByaW50
KCJOZXciKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6OkZyZWVMaXN0
ZWQ6Ci0gICAgICAgIG91dC5wcmludCgiRnJlZUxpc3RlZCIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBNYXJrZWRCbG9jazo6QWxsb2NhdGVkOgotICAgICAgICBvdXQucHJpbnQoIkFsbG9j
YXRlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TWFya2VkOgot
ICAgICAgICBvdXQucHJpbnQoIk1hcmtlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGlzTGl2ZUNlbGwodm0o
KS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgcCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNl
IFdURgorfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjAgKzQ0LDYgQEAg
Y2xhc3MgTWFya2VkQWxsb2NhdG9yOwogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5cGVkZWYg
dWludDMyX3QgSGVhcFZlcnNpb247CiAKLS8vIFNldCB0byBsb2cgc3RhdGUgdHJhbnNpdGlvbnMg
b2YgYmxvY2tzLgotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUyAwCi0K
LSNpZiBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwotI2RlZmluZSBIRUFQX0xPR19C
TE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgZG8geyAgICAgICAgICAgIFwKLSAgICAgICAg
ZGF0YUxvZ0YoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgICAgICAiJXM6JWQgJXM6IGJsb2NrICVzID0gJXAsICVkXG4iLCAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18s
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICNoYW5kbGUsICYoaGFuZGxlKS0+Ymxv
Y2soKSwgKGhhbmRsZSktPm1fc3RhdGUpOyAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0jZWxz
ZQotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgKCh2b2lk
KTApCi0jZW5kaWYKLQogLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFsaWduZWQgY29udGFp
bmVyIGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgogLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVk
IHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogLy8gbWFya2Vk
IGJsb2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXplLiBPYmplY3RzIHNtYWxsZXIgdGhh
biB0aGUKQEAgLTc2LDggKzYyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgSGFuZGxlOwogcHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0ZSA6IHVpbnQ4X3QgeyBOZXcs
IEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAgIAogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja01h
c2sgPSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3
by4KQEAgLTg2LDEyICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFy
a2VkQmxvY2s6OmF0b21TaXplICYgKE1hcmtlZEJsb2NrOjphdG9tU2l6ZSAtIDEpKSwgIk1hcmtl
ZEJsb2NrOjphdG9tU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwogICAgIHN0YXRpY19h
c3NlcnQoIShNYXJrZWRCbG9jazo6YmxvY2tTaXplICYgKE1hcmtlZEJsb2NrOjpibG9ja1NpemUg
LSAxKSksICJNYXJrZWRCbG9jazo6YmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7
Ci0KKyAgICAKICAgICBzdHJ1Y3QgVm9pZEZ1bmN0b3IgewogICAgICAgICB0eXBlZGVmIHZvaWQg
UmV0dXJuVHlwZTsKICAgICAgICAgdm9pZCByZXR1cm5WYWx1ZSgpIHsgfQogICAgIH07Ci0KKyAg
ICAKICAgICBjbGFzcyBDb3VudEZ1bmN0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBzaXplX3QgUmV0dXJuVHlwZTsKQEAgLTEwNiw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
bXV0YWJsZSBSZXR1cm5UeXBlIG1fY291bnQ7CiAgICAgfTsKICAgICAgICAgCi0gICAgY2xhc3Mg
SGFuZGxlIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPEhhbmRsZT4geworICAgIGNsYXNz
IEhhbmRsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8SGFuZGxlPjsKQEAgLTEzMCw2ICsxMTQsMTQgQEAgcHVibGljOgogICAgICAg
ICBWTSogdm0oKSBjb25zdDsKICAgICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwogICAgICAgICAg
ICAgCisgICAgICAgIC8vIFN3ZWVwaW5nIGVuc3VyZXMgdGhhdCBkZXN0cnVjdG9ycyBnZXQgY2Fs
bGVkIGFuZCByZW1vdmVzIHRoZSBibG9jayBmcm9tIHRoZSBzbmFwc2hvdC4KKyAgICAgICAgLy8g
U3dlZXBpbmcgdG8gZnJlZSBsaXN0IGFsc28gcmVtb3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgZW1w
dHkgc2V0LCBpZiBpdCB3YXMgaW4gdGhhdCBzZXQuCisgICAgICAgIC8vIFN3ZWVwaW5nIG9ubHkg
bWF5IGFkZCB0aGlzIGJsb2NrIHRvIHRoZSBlbXB0eSBzZXQsIGlmIHRoZSBibG9jayBpcyBmb3Vu
ZCB0byBiZSBlbXB0eS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gTm90ZSB0aGF0IHlvdSBuZWVk
IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBlbXB0eSBiaXQgcmVmbGVjdHMgcmVhbGl0eS4gSWYgaXQn
cyBub3Qgc2V0CisgICAgICAgIC8vIGFuZCB0aGUgYmxvY2sgaXMgZnJlc2hseSBjcmVhdGVkLCB0
aGVuIHdlJ2xsIG1ha2UgdGhlIG1pc3Rha2Ugb2YgcnVubmluZyBkZXN0cnVjdG9ycyBpbgorICAg
ICAgICAvLyB0aGUgYmxvY2suIElmIGl0J3Mgbm90IHNldCBhbmQgdGhlIGJsb2NrIGhhcyBub3Ro
aW5nIG1hcmtlZCwgdGhlbiB3ZSdsbCBtYWtlIHRoZQorICAgICAgICAvLyBtaXN0YWtlIG9mIG1h
a2luZyBhIHBvcCBmcmVlbGlzdCByYXRoZXIgdGhhbiBhIGJ1bXAgZnJlZWxpc3QuCiAgICAgICAg
IGVudW0gU3dlZXBNb2RlIHsgU3dlZXBPbmx5LCBTd2VlcFRvRnJlZUxpc3QgfTsKICAgICAgICAg
RnJlZUxpc3Qgc3dlZXAoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgCkBAIC0xNTMs
OCArMTQ1LDYgQEAgcHVibGljOgogICAgICAgICAvLyBhbmQgd2FzIHN1Y2Nlc3NmdWxseSBjbGVh
cmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgICAgICAgIGJvb2wgY2xlYXJOZXdseUFsbG9jYXRl
ZCgpOwogICAgICAgICAgICAgCi0gICAgICAgIHZvaWQgZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7
Ci0gICAgICAgICAgICAKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgICAgIGNvbnN0
IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1
Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7CkBAIC0xNjQsOSArMTU0LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogICAgICAgICBzaXplX3Qgc2l6ZSgpOwog
ICAgICAgICAgICAgCisgICAgICAgIGlubGluZSBib29sIGlzTGl2ZShIZWFwVmVyc2lvbiwgY29u
c3QgSGVhcENlbGwqKTsKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lv
biwgY29uc3Qgdm9pZCopOworCiAgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7
CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CisKICAgICAgICAgYm9vbCBp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgYm9vbCBp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CiAg
ICAgICAgICAgICAKICAgICAgICAgYm9vbCBpc05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsK
ICAgICAgICAgdm9pZCBzZXROZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CkBAIC0xNzQsMzEg
KzE2OSwyNSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBib29sIGhhc0FueU5ld2x5QWxs
b2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX25ld2x5QWxsb2NhdGVkOyB9CiAgICAgICAgICAg
ICAKLSAgICAgICAgYm9vbCBpc0FsbG9jYXRlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzTWFy
a2VkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3Q7Ci0gICAgICAg
IGJvb2wgbmVlZHNTd2VlcGluZygpIGNvbnN0OwotICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9j
aygpOwotCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0
dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9y
Jik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMg
Zm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0
IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJ
dGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAg
ICAgIAogICAgICAgICBib29sIG5lZWRzRmxpcCgpOwotICAgICAgICAgICAgCi0gICAgICAgIHZv
aWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbik7Ci0gICAgICAgIHZv
aWQgZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uKTsKLSAgICAgICAgdm9pZCBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICAgICAgICAgIAorICAgICAgICAKICAgICAgICAgdm9pZCBhc3NlcnRGbGlw
cGVkKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgYm9vbCBpc09uQmxvY2tzVG9Td2VlcCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNPbkJsb2Nrc1RvU3dlZXA7IH0KLSAgICAgICAgdm9pZCBzZXRJc09u
QmxvY2tzVG9Td2VlcChib29sIHZhbHVlKSB7IG1faXNPbkJsb2Nrc1RvU3dlZXAgPSB2YWx1ZTsg
fQorICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGcmVlTGlz
dGVkOyB9CisgICAgICAgIAorICAgICAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBt
X2luZGV4OyB9CisgICAgICAgIAorICAgICAgICB2b2lkIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsK
KyAgICAgICAgCisgICAgICAgIHZvaWQgZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9y
Kiwgc2l6ZV90IGluZGV4KTsKKyAgICAgICAgdm9pZCBkaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7
CiAgICAgICAgIAotICAgICAgICBCbG9ja1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZTsgfQotICAgICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSGFuZGxlKEhlYXAm
LCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJp
YnV0ZXMmLCB2b2lkKik7CisgICAgICAgIEhhbmRsZShIZWFwJiwgc2l6ZV90IGNlbGxTaXplLCBj
b25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiwgdm9pZCopOwogICAgICAgICAgICAgCiAgICAgICAg
IHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJT
ZWxlY3RTY3JpYmJsZU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKQEAgLTIwNiwxNiArMTk1
LDMxIEBAIHB1YmxpYzoKICAgICAgICAgZW51bSBTY3JpYmJsZU1vZGUgeyBEb250U2NyaWJibGUs
IFNjcmliYmxlIH07CiAgICAgICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25N
b2RlLCBTY3JpYmJsZU1vZGU+Ci0gICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U3Rh
dGVBbmRTd2VlcE1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgRnJlZUxpc3Qg
c3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAg
ICAgICAgIAorICAgICAgICBlbnVtIEVtcHR5TW9kZSB7IElzRW1wdHksIE5vdEVtcHR5IH07Cisg
ICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2Ny
aWJibGVNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxs
b2NhdGVkKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAogICAgICAgICBlbnVtIE5l
d2x5QWxsb2NhdGVkTW9kZSB7IEhhc05ld2x5QWxsb2NhdGVkLCBEb2VzTm90SGF2ZU5ld2x5QWxs
b2NhdGVkIH07Ci0gICAgICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dl
ZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2Rl
PgorICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUs
IFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2Vl
cEhlbHBlclNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICAK
KyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwg
U2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVw
SGVscGVyU2VsZWN0RmxpcE1vZGUoKTsKKyAgICAgICAgCisgICAgICAgIGVudW0gRmxpcE1vZGUg
eyBOZWVkc0ZsaXAsIERvZXNOb3ROZWVkRmxpcCB9OworICAgICAgICAKKyAgICAgICAgdGVtcGxh
dGU8RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBO
ZXdseUFsbG9jYXRlZE1vZGUsIEZsaXBNb2RlPgogICAgICAgICBGcmVlTGlzdCBzcGVjaWFsaXpl
ZFN3ZWVwKCk7CiAgICAgICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ICAgICAgICAgdm9pZCBmb3JFYWNoRnJlZUNlbGwoY29uc3QgRnJlZUxpc3QmLCBjb25zdCBGdW5j
Jik7Ci0gICAgICAgICAgICAKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0SXNGcmVlTGlzdGVk
KCk7CisgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX3ByZXY7CiAgICAg
ICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fbmV4dDsKICAgICAgICAgICAgIApAQCAtMjI1LDE2
ICsyMjksMTYgQEAgcHVibGljOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpCaXRtYXA8
YXRvbXNQZXJCbG9jaz4+IG1fbmV3bHlBbGxvY2F0ZWQ7CiAgICAgICAgICAgICAKICAgICAgICAg
QWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7Ci0gICAgICAgIEJsb2NrU3RhdGUgbV9z
dGF0ZTsKLSAgICAgICAgYm9vbCBtX2lzT25CbG9ja3NUb1N3ZWVwIHsgZmFsc2UgfTsKKyAgICAg
ICAgYm9vbCBtX2lzRnJlZUxpc3RlZCB7IGZhbHNlIH07CiAgICAgICAgICAgICAKLSAgICAgICAg
TWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBt
X2FsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0
OwogICAgICAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrOwogICAgIH07CiAg
ICAgICAgIAotICAgIHN0YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYs
IE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmli
dXRlcyYpOworICAgIHN0YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYs
IHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwogICAgICAgICAK
ICAgICBIYW5kbGUmIGhhbmRsZSgpOwogICAgICAgICAKQEAgLTI0OCwzNCArMjUyLDM1IEBAIHB1
YmxpYzoKICAgICBzaXplX3QgbWFya0NvdW50KCk7CiAKICAgICBib29sIGlzTWFya2VkKGNvbnN0
IHZvaWQqKTsKKyAgICBib29sIGlzTWFya2VkKEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7Cisg
ICAgYm9vbCBpc01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOwog
ICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIAogICAgIGJv
b2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKik7CisgICAgYm9vbCBp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CiAg
ICAgCi0gICAgYm9vbCBpc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiwgY29u
c3QgSGVhcENlbGwqKTsKLQogICAgIGJvb2wgaXNBdG9tKGNvbnN0IHZvaWQqKTsKICAgICB2b2lk
IGNsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgCisgICAgCiAgICAgc2l6ZV90IGNl
bGxTaXplKCk7CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNv
bnN0OwotCisgICAgCiAgICAgYm9vbCBoYXNBbnlNYXJrZWQoKSBjb25zdDsKICAgICB2b2lkIG5v
dGVNYXJrZWQoKTsKICAgICAgICAgCiAgICAgV2Vha1NldCYgd2Vha1NldCgpOwotCisgICAgCiAg
ICAgYm9vbCBuZWVkc0ZsaXAoSGVhcFZlcnNpb24pOwogICAgIGJvb2wgbmVlZHNGbGlwKCk7Ci0g
ICAgICAgIAotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lv
bik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24pOwotICAgIHZvaWQgZmxp
cElmTmVjZXNzYXJ5KCk7CisgICAgCisgICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lvbik7
CiAgICAgICAgIAogICAgIHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAKICAgICBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247IH0K
LSAgICAgICAgCisgICAgCisgICAgaW5saW5lIHZvaWQgcmVzZXRWZXJzaW9uKCk7CisgICAgCiBw
cml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9t
U2l6ZSAtIDE7CiAKQEAgLTI4NCw5ICsyODksOSBAQCBwcml2YXRlOgogICAgIE1hcmtlZEJsb2Nr
KFZNJiwgSGFuZGxlJik7CiAgICAgQXRvbSogYXRvbXMoKTsKICAgICAgICAgCi0gICAgdm9pZCBm
bGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdygpOwotICAgIHZvaWQgZmxpcElmTmVjZXNz
YXJ5U2xvdygpOworICAgIHZvaWQgYWJvdXRUb01hcmtTbG93KEhlYXBWZXJzaW9uKTsKICAgICB2
b2lkIGNsZWFyTWFya3MoKTsKKyAgICB2b2lkIGNsZWFyTWFya3MoSGVhcFZlcnNpb24pOwogICAg
IHZvaWQgY2xlYXJIYXNBbnlNYXJrZWQoKTsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWRTbG93
KCk7CkBAIC00NjksNDAgKzQ3NCwxMyBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bmVlZHNG
bGlwKEhlYXBWCiAgICAgcmV0dXJuIGhlYXBWZXJzaW9uICE9IG1fdmVyc2lvbjsKIH0KIAotaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVy
c2lvbikKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFyayhIZWFwVmVyc2lvbiBo
ZWFwVmVyc2lvbikKIHsKICAgICBpZiAoVU5MSUtFTFkobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkp
Ci0gICAgICAgIGZsaXBJZk5lY2Vzc2FyeVNsb3coKTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2Vk
QmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24gaGVhcFZlcnNp
b24pCi17Ci0gICAgaWYgKFVOTElLRUxZKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpKQotICAgICAg
ICBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdygpOworICAgICAgICBhYm91dFRvTWFy
a1Nsb3coaGVhcFZlcnNpb24pOwogICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogfQogCi1pbmxp
bmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24g
aGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24p
OwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnlE
dXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQotewotICAgIGJsb2NrKCkuZmxp
cElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhoZWFwVmVyc2lvbik7Ci19Ci0KLWlubGluZSB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBGb3JFZGVuQ29sbGVjdGlvbigpCi17Ci0gICAgYXNz
ZXJ0RmxpcHBlZCgpOwotICAgICAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lU
SU9OKHRoaXMpOwotICAgIAotICAgIEFTU0VSVChtX3N0YXRlICE9IE5ldyAmJiBtX3N0YXRlICE9
IEZyZWVMaXN0ZWQpOwotICAgIAotICAgIG1fc3RhdGUgPSBNYXJrZWQ7Ci19Ci0KICNpZiBBU1NF
UlRfRElTQUJMRUQKIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjphc3NlcnRGbGlwcGVkKCkKIHsK
QEAgLTUxNCw5ICs0OTIsMTYgQEAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6YXNz
ZXJ0RgogICAgIGJsb2NrKCkuYXNzZXJ0RmxpcHBlZCgpOwogfQogCi1pbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkKK2lubGluZSBib29sIE1hcmtlZEJsb2Nr
Ojppc01hcmtlZChIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKIHsKLSAg
ICBhc3NlcnRGbGlwcGVkKCk7CisgICAgcmV0dXJuIG5lZWRzRmxpcChoZWFwVmVyc2lvbikgPyBm
YWxzZSA6IG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkpOworfQorCitpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24sIGNv
bnN0IHZvaWQqIHApCit7CisgICAgaWYgKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKICAgICByZXR1cm4gbV9t
YXJrcy5nZXQoYXRvbU51bWJlcihwKSk7CiB9CiAKQEAgLTU1MCw0MyArNTM1LDE0IEBAIGlubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmUKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKLXsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJr
ZWQpOwotICAgIHJldHVybiBtX2Jsb2NrLT5pc01hcmtlZChjZWxsKSB8fCAobV9uZXdseUFsbG9j
YXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKLX0KLQotaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKK2lu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChI
ZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBBU1NFUlQo
bV9oYW5kbGUubV9zdGF0ZSA9PSBNYXJrZWQpOwotICAgIHJldHVybiBpc01hcmtlZChjZWxsKSB8
fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBtX2hhbmRsZS5pc05ld2x5QWxsb2NhdGVk
KGNlbGwpKTsKKyAgICByZXR1cm4gbV9ibG9jay0+aXNNYXJrZWQodmVyc2lvbiwgY2VsbCkgfHwg
KG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiB9CiAKLWlubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyhIZWFwVmVyc2lv
biBoZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0
IEhlYXBDZWxsKiBjZWxsKQogewotICAgIGlmIChuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzTWFya2VkKGNlbGwpOwotfQotCi1pbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENlbGwqIGNlbGwp
Ci17Ci0gICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNh
c2UgQWxsb2NhdGVkOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNhc2UgTWFya2VkOgot
ICAgICAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOwotCi0gICAgY2Fz
ZSBOZXc6Ci0gICAgY2FzZSBGcmVlTGlzdGVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzTWFy
a2VkKHZlcnNpb24sIGNlbGwpIHx8IChtX2hhbmRsZS5tX25ld2x5QWxsb2NhdGVkICYmIG1faGFu
ZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCkBAIC02MDMsMTMgKzU1OSw2IEBAIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQot
ewotICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKLX0KLQog
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CkBA
IC02MjIsNjIgKzU3MSw2IEBAIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6Okhh
bmQKICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIGZs
aXBJZk5lY2Vzc2FyeSgpOwotICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMu
Y2VsbEtpbmQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9t
OyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRl
cnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7Ci0gICAgICAg
IGlmICghaXNMaXZlKGNlbGwpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYg
KGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAg
ICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKLSAgICB9Ci0gICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6Q29udGludWU7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgot
aW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoRGVhZENl
bGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAg
ICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOwotICAgIGZvciAo
c2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2Vs
bCkgewotICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBD
ZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOwotICAgICAgICBpZiAoaXNMaXZlKGNlbGwpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkg
PT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0
YXR1czo6RG9uZTsKLSAgICB9Ci0gICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7
Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRzU3dlZXBpbmcoKSBj
b25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlw
SWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzQWxsb2NhdGVkKCkgY29uc3QKLXsKLSAgICBj
b25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7
Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gQWxsb2NhdGVkOwotfQotCi1pbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJr
ZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBt
X3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6
aXNGcmVlTGlzdGVkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5k
bGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gRnJl
ZUxpc3RlZDsKLX0KLQogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omhhc0FueU1hcmtlZCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fYmlhc2VkTWFya0NvdW50ICE9IG1fbWFya0NvdW50QmlhczsK
QEAgLTcxMSw4ICs2MDQsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6Ok1h
cmtlCiAgICAgdHlwZWRlZiBNYXJrZWRCbG9ja0hhc2ggSGFzaDsKIH07CiAKLXZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6Ok1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlKTsK
LQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBNYXJrZWRCbG9ja19oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWFy
a2VkQWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lv
biB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKK3sKKyAgICBBU1NFUlQoIWlzRnJlZUxp
c3RlZCgpKTsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSkp
IHsKKyAgICAgICAgaWYgKGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgTWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+Ymxv
Y2soKTsKKyAgICAKKyAgICBpZiAoYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBpZiAoYmxvY2submVlZHNGbGlwKHZlcnNpb24p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQoY2Vs
bCk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoSGVh
cFZlcnNpb24gdmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKK3sKKyAgICBpZiAoIW1fYmxvY2stPmlz
QXRvbShwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc0xpdmUodmVyc2lv
biwgc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPgoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxl
Ojpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBIZWFwQ2Vs
bDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOworICAgIGZvciAoc2l6ZV90IGkg
PSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgeworICAg
ICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1f
YmxvY2stPmF0b21zKClbaV0pOworICAgICAgICBpZiAoIWlzTGl2ZShjZWxsKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJh
dGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRv
bmU7CisgICAgfQorICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KK2lubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7
CisgICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAgICBm
b3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1Bl
ckNlbGwpIHsKKyAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxI
ZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKKyAgICAgICAgaWYgKGlzTGl2ZShjZWxs
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtp
bmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkRvbmU7CisgICAgfQorICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRp
bnVlOworfQorCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6cmVzZXRWZXJzaW9uKCkKK3sKKyAg
ICBtX3ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
Y3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJJ
bmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJT
dXBlclNhbXBsZXIuaCIKICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIApAQCAtMTk1LDYgKzE5
NiwyMiBAQCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICAgICAgICAg
IAogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAg
IH0pOworICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogcHJldmlvdXMgPSBudWxscHRyOworICAg
IGZvckVhY2hTdWJzcGFjZSgKKyAgICAgICAgWyZdIChTdWJzcGFjZSYgc3Vic3BhY2UsIEFsbG9j
YXRvckF0dHJpYnV0ZXMpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBmb3IgKE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yIDogc3Vic3BhY2UuYmFnT2ZBbGxvY2F0b3JzKSB7Cisg
ICAgICAgICAgICAgICAgLy8gV2UgY2FuIHNldCB0aGlzIGluIGFueSBvcmRlci4gVGhlIHBvaW50
IGlzIGp1c3QgdGhhdCB3ZSB3YW50IHRvIGJlIGFibGUgdG8KKyAgICAgICAgICAgICAgICAvLyBj
dXJzb3Igb3ZlciBhbGxvY2F0b3JzLgorICAgICAgICAgICAgICAgIGFsbG9jYXRvci0+c2V0TmV4
dEFsbG9jYXRvcihwcmV2aW91cyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
cHJldmlvdXMgPSBhbGxvY2F0b3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKKyAg
ICBtX2ZpcnN0QWxsb2NhdG9yID0gcHJldmlvdXM7CisgICAgbV9hbGxvY2F0b3JGb3JFbXB0eUFs
bG9jYXRpb24gPSBwcmV2aW91czsKIH0KIAogTWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSgpCkBA
IC0yMjIsMTUgKzIzOSwyMSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6
ZSgpCiAKIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZShTdWJzcGFjZSYgc3Vic3BhY2UsIHNp
emVfdCBieXRlcykKIHsKLSAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxv
Y2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci0+YWxs
b2NhdGUoKTsKKyAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JG
b3Ioc3Vic3BhY2UsIGJ5dGVzKSkgeworICAgICAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3It
PmFsbG9jYXRlKCk7CisgICAgICAgIC8vZGF0YUxvZygiQWxsb2NhdGVkICIsIFJhd1BvaW50ZXIo
cmVzdWx0KSwgIlxuIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIHJldHVy
biBhbGxvY2F0ZUxhcmdlKHN1YnNwYWNlLCBieXRlcyk7CiB9CiAKIHZvaWQqIE1hcmtlZFNwYWNl
Ojp0cnlBbGxvY2F0ZShTdWJzcGFjZSYgc3Vic3BhY2UsIHNpemVfdCBieXRlcykKIHsKLSAgICBp
ZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5
dGVzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci0+dHJ5QWxsb2NhdGUoKTsKKyAgICBpZiAo
TWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVz
KSkgeworICAgICAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3ItPnRyeUFsbG9jYXRlKCk7Cisg
ICAgICAgIC8vZGF0YUxvZygiVHJ5LWFsbG9jYXRlZCAiLCBSYXdQb2ludGVyKHJlc3VsdCksICJc
biIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICByZXR1cm4gdHJ5QWxsb2Nh
dGVMYXJnZShzdWJzcGFjZSwgYnl0ZXMpOwogfQogCkBAIC0yNTksOSArMjgyLDEwIEBAIHZvaWQq
IE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZUxhcmdlKFN1YnMKIHZvaWQgTWFya2VkU3BhY2U6OnN3
ZWVwKCkKIHsKICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0g
ICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KSB7Ci0gICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAor
ICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0
dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLnN3ZWVwKCk7CisgICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTI4NCwyOCAr
MzA4LDE2IEBAIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygKICAgICBt
X2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0ID0gbV9sYXJnZUFsbG9jYXRpb25zLnNpemUo
KTsKIH0KIAotdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKLXsKLSAgICBpZiAoT3B0
aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0YUxvZygiWm9tYmlmeWluZyBzd2VlcC4uLiIpOwot
ICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAgICBmb3JFYWNo
QmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAg
ICAgICAgIGlmIChibG9jay0+bmVlZHNTd2VlcGluZygpKQotICAgICAgICAgICAgICAgIGJsb2Nr
LT5zd2VlcCgpOwotICAgICAgICB9KTsKLX0KLQotdm9pZCBNYXJrZWRTcGFjZTo6cmVzZXRBbGxv
Y2F0b3JzKCkKK3ZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKICAg
ICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2Nh
dG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAgICAgICAgYWxsb2NhdG9yLnJlc2V0KCk7
CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKIAotICAg
IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuY2xlYXIoKTsKICAgICBtX2FjdGl2ZVdlYWtTZXRzLnRh
a2VGcm9tKG1fbmV3QWN0aXZlV2Vha1NldHMpOworICAgIAogICAgIGlmIChtX2hlYXAtPm9wZXJh
dGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikKICAgICAgICAgbV9sYXJnZUFsbG9j
YXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9m
ZnNldDsKICAgICBlbHNlCkBAIC00MTAsMTEgKzQyMiwxMSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpm
cmVlT3JTaHJpbmtCbG9jayhNYXJrCiAKIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiB7Ci0g
ICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KSB7Ci0gICAgICAgICAgICBmcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CisgICAgZm9yRWFjaEFs
bG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRl
cmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5zaHJpbmsoKTsKKyAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKLSAgICAv
LyBGb3IgTGFyZ2VBbGxvY2F0aW9ucywgd2UgZG8gdGhlIG1vcmFsIGVxdWl2YWxlbnQgaW4gc3dl
ZXBMYXJnZUFsbG9jYXRpb25zKCkuCiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlB
bGxvY2F0ZWQoKQpAQCAtNDI5LDU3ICs0NDEsNjEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJO
ZXdseUFsbG9jYXRlZCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sYXJnZUFsbG9jYXRpb25z
T2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFsbG9jYXRlZCgp
OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZd
IChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgQVNTRVJUKCFibG9j
ay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBmb3IgKExhcmdl
QWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKLSAgICAgICAgQVNT
RVJUKCFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwotI2VuZGlmIC8vICFBU1NFUlRf
RElTQUJMRUQKLX0KLQotI2lmbmRlZiBOREVCVUcgCi1zdHJ1Y3QgVmVyaWZ5TWFya2VkIDogTWFy
a2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsgCi0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0Zs
aXAoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChibG9jay0+bV9zdGF0
ZSkgewotICAgICAgICBjYXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICB9CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAg
Zm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykgeworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssICFibG9jay0+Y2xlYXJO
ZXdseUFsbG9jYXRlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgZm9y
IChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCisgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5pc05ld2x5QWxs
b2NhdGVkKCkpOwogICAgIH0KLX07IAotI2VuZGlmIAorfQogCi12b2lkIE1hcmtlZFNwYWNlOjpm
bGlwKCkKK3ZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVh
cC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+ZmxpcEZvckVkZW5Db2xs
ZWN0aW9uKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24g
PSBtX3ZlcnNpb24gKyAxOwotICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24gPT0gaW5p
dGlhbFZlcnNpb24pKSB7Ci0gICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3Vu
ZCEgV2UgaGFuZGxlIHRoaXMgYnkgZmxpcHBpbmcgYWxsIGJsb2Nrcy4gVGhpcyBoYXBwZW5zCi0g
ICAgICAgICAgICAvLyBzdXBlciByYXJlbHksIHByb2JhYmx5IG5ldmVyIGZvciBtb3N0IHVzZXJz
LgorICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlv
bikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRB
bGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAg
ICBhbGxvY2F0b3IuYmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgIG1fdmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fdmVyc2lvbik7CisgICAgICAgIAor
ICAgICAgICBpZiAoVU5MSUtFTFkobV92ZXJzaW9uID09IGluaXRpYWxWZXJzaW9uKSkgeworICAg
ICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5
IHNldHRpbmcgYWxsIGJsb2NrIHZlcnNpb25zIHRvIG51bGwuCiAgICAgICAgICAgICBmb3JFYWNo
QmxvY2soCiAgICAgICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5mbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0VmVyc2lvbigpOwogICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIG1fdmVyc2lvbiA9IG5leHRWZXJzaW9uOyAv
LyBIZW5jZWZvcnRoLCBmbGlwSWZOZWNlc3NhcnkoKSB3aWxsIHRyaWdnZXIgb24gYWxsIGJsb2Nr
cy4KKyAgICAgICAgCiAgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDog
bV9sYXJnZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAg
IH0KIAotI2lmbmRlZiBOREVCVUcKLSAgICBWZXJpZnlNYXJrZWQgdmVyaWZ5RnVuY3RvcjsKLSAg
ICBmb3JFYWNoQmxvY2sodmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBpZiAoIUFTU0VSVF9E
SVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVk
c0ZsaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFT
U0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAg
ICAKKyAgICBtX2lzTWFya2luZyA9IHRydWU7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmVuZE1h
cmtpbmcoKQoreworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxs
b2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxv
Y2F0b3IuZW5kTWFya2luZygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CisgICAgICAgIH0pOworICAgIAorICAgIG1faXNNYXJraW5nID0gZmFsc2U7CiB9
CiAKIHZvaWQgTWFya2VkU3BhY2U6OndpbGxTdGFydEl0ZXJhdGluZygpCkBAIC01NDYsMTMgKzU2
Miw1NyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBZGRCbG9jayhNYXJrZWRCbG9jCiAKIHZvaWQg
TWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykKIHsKLSAgICBibG9jay0+YXNzZXJ0RmxpcHBlZCgpOwotICAgIG1fYmxvY2tzV2l0aE5ld09i
amVjdHMuYXBwZW5kKGJsb2NrKTsKLSAgICAKICAgICBpZiAoYmxvY2stPndlYWtTZXQoKS5pc09u
TGlzdCgpKSB7CiAgICAgICAgIGJsb2NrLT53ZWFrU2V0KCkucmVtb3ZlKCk7CiAgICAgICAgIG1f
bmV3QWN0aXZlV2Vha1NldHMuYXBwZW5kKCZibG9jay0+d2Vha1NldCgpKTsKICAgICB9CiB9CiAK
K01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZFNwYWNlOjpmaW5kRW1wdHlCbG9jaygpCit7Cisg
ICAgZm9yICg7IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyBtX2FsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbiA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5uZXh0QWxsb2Nh
dG9yKCkpIHsKKyAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9hbGxv
Y2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPmZpbmRFbXB0eUJsb2NrKCkpCisgICAgICAgICAgICBy
ZXR1cm4gYmxvY2s7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1hcmtl
ZFNwYWNlOjpzbmFwc2hvdCgpCit7CisgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVz
cygpID09IEVkZW5Db2xsZWN0aW9uKSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAg
ICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0
dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFwc2hvdEZvckVkZW5Db2xsZWN0aW9u
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cisg
ICAgICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAor
ICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9u
U3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RGb3JGdWxsQ29sbGVj
dGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OworICAgICAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIE1hcmtlZFNwYWNlOjphc3NlcnRT
bmFwc2hvdEVtcHR5KCkKK3sKKyAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgICAgICByZXR1
cm47CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3Im
IGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5h
c3NlcnRTbmFwc2hvdEVtcHR5KCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmR1bXBCaXRz
KFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZd
IChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAg
ICAgICAgIG91dC5wcmludCgiQml0cyBmb3IgIiwgYWxsb2NhdG9yLCAiOlxuIik7CisgICAgICAg
ICAgICBhbGxvY2F0b3IuZHVtcEJpdHMob3V0KTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9u
IDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDE2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgbnVtU2l6ZUNsYXNzZXMgPSBsYXJnZUN1dG9mZiAvIHNpemVTdGVwOwogICAgIAot
ICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBpbml0aWFsVmVyc2lvbiA9IDQyOyAgLy8gVGhp
cyBjYW4gYmUgYW55IHZhbHVlLCBpbmNsdWRpbmcgcmFuZG9tIGdhcmJhZ2UsIHNvIGxvbmcgYXMg
aXQncyBjb25zaXN0ZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nlc3MuCisgICAgc3Rh
dGljIGNvbnN0IEhlYXBWZXJzaW9uIG51bGxWZXJzaW9uID0gMDsgLy8gVGhlIHZlcnNpb24gb2Yg
ZnJlc2hseSBhbGxvY2F0ZWQgYmxvY2tzLgorICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBp
bml0aWFsVmVyc2lvbiA9IDE7IC8vIFRoZSB2ZXJzaW9uIHRoYXQgdGhlIGhlYXAgc3RhcnRzIG91
dCB3aXRoLgorICAgIAorICAgIEhlYXBWZXJzaW9uIG5leHRWZXJzaW9uKEhlYXBWZXJzaW9uIHZl
cnNpb24pCisgICAgeworICAgICAgICB2ZXJzaW9uKys7CisgICAgICAgIGlmICh2ZXJzaW9uID09
IG51bGxWZXJzaW9uKQorICAgICAgICAgICAgdmVyc2lvbisrOworICAgICAgICByZXR1cm4gdmVy
c2lvbjsKKyAgICB9CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBzaXplQ2xhc3NUb0luZGV4KHNp
emVfdCBzaXplKQogICAgIHsKQEAgLTExNCw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgU3Vic3Bh
Y2UmIHN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9ub3Jt
YWxTcGFjZTsgfQogICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvckF1eGlsaWFyeURhdGEoKSB7IHJl
dHVybiBtX2F1eGlsaWFyeVNwYWNlOyB9CiAgICAgCi0gICAgdm9pZCByZXNldEFsbG9jYXRvcnMo
KTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAKICAgICB2b2lkIHZpc2l0V2Vh
a1NldHMoSGVhcFJvb3RWaXNpdG9yJik7CiAgICAgdm9pZCByZWFwV2Vha1NldHMoKTsKQEAgLTE0
NCwxMSArMTUzLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdChNYXJr
ZWRCbG9jazo6SGFuZGxlKik7CiAgICAgdm9pZCBkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxv
Y2s6OkhhbmRsZSopOwogCi0gICAgdm9pZCBmbGlwKCk7CisgICAgdm9pZCBiZWdpbk1hcmtpbmco
KTsKKyAgICB2b2lkIGVuZE1hcmtpbmcoKTsKKyAgICB2b2lkIHNuYXBzaG90KCk7CiAgICAgdm9p
ZCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAgICAgdm9pZCBzd2VlcCgpOwogICAgIHZvaWQgc3dl
ZXBMYXJnZUFsbG9jYXRpb25zKCk7Ci0gICAgdm9pZCB6b21iaWZ5U3dlZXAoKTsKKyAgICB2b2lk
IGFzc2VydFNuYXBzaG90RW1wdHkoKTsKICAgICBzaXplX3Qgb2JqZWN0Q291bnQoKTsKICAgICBz
aXplX3Qgc2l6ZSgpOwogICAgIHNpemVfdCBjYXBhY2l0eSgpOwpAQCAtMTU3LDggKzE2OCw2IEBA
IHB1YmxpYzoKICAgICAKICAgICBIZWFwVmVyc2lvbiB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4g
bV92ZXJzaW9uOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBi
bG9ja3NXaXRoTmV3T2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzV2l0aE5ld09iamVj
dHM7IH0KLSAgICAKICAgICBjb25zdCBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4mIGxhcmdlQWxs
b2NhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnM7IH0KICAgICB1bnNp
Z25lZCBsYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFy
Z2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRp
b25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2Nh
dGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgfQpAQCAtMTY5LDEzICsxNzgsMTYgQEAgcHVi
bGljOgogICAgIExhcmdlQWxsb2NhdGlvbioqIGxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVj
dGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0
aW9uRW5kOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9u
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9u
U2l6ZTsgfQogICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogZmlyc3RBbGxvY2F0b3IoKSBjb25z
dCB7IHJldHVybiBtX2ZpcnN0QWxsb2NhdG9yOyB9CisgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxv
Y2F0b3JGb3JFbXB0eUFsbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbjsgfQorICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRFbXB0
eUJsb2NrKCk7CisgICAgCiAgICAgLy8gV2hlbiB0aGlzIGlzIHRydWUgaXQgbWVhbnMgdGhhdCB3
ZSBoYXZlIGZsaXBwZWQgYnV0IHRoZSBtYXJrIGJpdHMgaGF2ZW4ndCBjb252ZXJnZWQgeWV0Lgog
ICAgIGJvb2wgaXNNYXJraW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc01hcmtpbmc7IH0KICAgICAK
LSAgICAvLyBGSVhNRTogQWZ0ZXIgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MTU4MSwgTWFya2VkU3BhY2Ugd2lsbCBjb250cm9sIHRoaXMKLSAgICAvLyBmbGFnIGRp
cmVjdGx5LgotICAgIHZvaWQgc2V0SXNNYXJraW5nKGJvb2wgdmFsdWUpIHsgbV9pc01hcmtpbmcg
PSB2YWx1ZTsgfQotCisgICAgdm9pZCBkdW1wQml0cyhQcmludFN0cmVhbSYgPSBXVEY6OmRhdGFG
aWxlKCkpOworICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0xOTAsOCArMjAyLDggQEAgcHJpdmF0
ZToKICAgICAKICAgICB2b2lkIGluaXRpYWxpemVTdWJzcGFjZShTdWJzcGFjZSYpOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1
bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hTdWJz
cGFjZShjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHZvaWQgZm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgZm9yRWFjaFN1YnNwYWNlKGNvbnN0IEZ1bmN0
b3ImKTsKICAgICAKICAgICB2b2lkIGFkZEFjdGl2ZVdlYWtTZXQoV2Vha1NldCopOwogCkBAIC0y
MDUsNyArMjE3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJdGVyYXRpbmc7CiAgICAgYm9v
bCBtX2lzTWFya2luZyB7IGZhbHNlIH07CiAgICAgTWFya2VkQmxvY2tTZXQgbV9ibG9ja3M7Ci0g
ICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOwog
ICAgIFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiBtX2xhcmdlQWxsb2NhdGlvbnM7CiAgICAgdW5z
aWduZWQgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCB7IDAgfTsKICAgICB1bnNpZ25l
ZCBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiB7IDAgfTsKQEAgLTIx
NSw0MCArMjI2LDExIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25z
Rm9yVGhpc0NvbGxlY3Rpb25TaXplIHsgMCB9OwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFr
U2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9hY3RpdmVXZWFrU2V0czsKICAg
ICBTZW50aW5lbExpbmtlZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1Nl
dD4+IG1fbmV3QWN0aXZlV2Vha1NldHM7CisgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2Zp
cnN0QWxsb2NhdG9yIHsgbnVsbHB0ciB9OworICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0
b3JGb3JFbXB0eUFsbG9jYXRpb24geyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJ
dGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgQVNTRVJUKGlz
SXRlcmF0aW5nKCkpOwotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5k
KCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaExp
dmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xh
cmdlQWxsb2NhdGlvbnMpIHsKLSAgICAgICAgaWYgKGFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7Ci0g
ICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0
dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbChIZWFwSXRl
cmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIEFTU0VSVChpc0l0
ZXJhdGluZygpKTsKLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgp
OwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hEZWFk
Q2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJn
ZUFsbG9jYXRpb25zKSB7Ci0gICAgICAgIGlmICghYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKLSAg
ICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0
cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCiBpbmxpbmUgTWFya2VkQWxsb2Nh
dG9yKiBNYXJrZWRTcGFjZTo6YWxsb2NhdG9yRm9yKFN1YnNwYWNlJiBzcGFjZSwgc2l6ZV90IGJ5
dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7CkBAIC0zMDQsMTUgKzI4NiwxMCBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4KIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKLSAgICBmb3JFYWNoU3Vic3BhY2UoCi0gICAgICAgIFsmXSAoU3Vic3BhY2Um
IHN1YnNwYWNlLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAg
ICAgICAgICAgZm9yIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA6IHN1YnNwYWNlLmJhZ09m
QWxsb2NhdG9ycykgewotICAgICAgICAgICAgICAgIGlmIChmdW5jdG9yKCphbGxvY2F0b3IpID09
IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6RG9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci0gICAgICAgIH0pOworICAgIGZv
ciAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBtX2ZpcnN0QWxsb2NhdG9yOyBhbGxvY2F0
b3I7IGFsbG9jYXRvciA9IGFsbG9jYXRvci0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGlm
IChmdW5jdG9yKCphbGxvY2F0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TWFya2VkQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtl
ZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKK3sKKyAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7CisgICAgQmxvY2tJdGVy
YXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3Ig
aXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
aWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoTGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKExhcmdl
QWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgeworICAgICAgICBp
ZiAoYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKKyAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9j
YXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVy
YXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRT
cGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCit7CisgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOworICAgIEJsb2NrSXRlcmF0
b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0
ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlm
ICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaERlYWRDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0
YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChMYXJnZUFs
bG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKKyAgICAgICAgaWYg
KCFhbGxvY2F0aW9uLT5pc0xpdmUoKSkgeworICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2Nh
dGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJh
dGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2
ICsxODksOCBAQCB2b2lkIFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRBbmRBcHBlbmRUb01hCiAgICAg
dmFsaWRhdGUoY2VsbCk7CiAjZW5kaWYKICAgICAKKyAgICAvL2RhdGFMb2coIiAgICBNYXJraW5n
ICIsIFJhd1BvaW50ZXIoY2VsbCksICJcbiIpOworICAgIAogICAgIGlmIChjZWxsLT5pc0xhcmdl
QWxsb2NhdGlvbigpKQogICAgICAgICBzZXRNYXJrZWRBbmRBcHBlbmRUb01hcmtTdGFjayhjZWxs
LT5sYXJnZUFsbG9jYXRpb24oKSwgY2VsbCk7CiAgICAgZWxzZQpAQCAtMTk4LDcgKzIwMCw3IEBA
IHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWEKIHRlbXBsYXRlPHR5cGVu
YW1lIENvbnRhaW5lclR5cGU+CiBBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OnNldE1h
cmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwgSlNDZWxs
KiBjZWxsKQogewotICAgIGNvbnRhaW5lci5mbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKG1f
dmVyc2lvbik7CisgICAgY29udGFpbmVyLmFib3V0VG9NYXJrKG1fdmVyc2lvbik7CiAgICAgCiAg
ICAgaWYgKGNvbnRhaW5lci50ZXN0QW5kU2V0TWFya2VkKGNlbGwpKQogICAgICAgICByZXR1cm47
CkBAIC0yNDYsMTAgKzI0OCw4IEBAIHZvaWQgU2xvdFZpc2l0b3I6Om1hcmtBdXhpbGlhcnkoY29u
c3Qgdm8KICAgICAKICAgICBBU1NFUlQoY2VsbC0+aGVhcCgpID09IGhlYXAoKSk7CiAgICAgCi0g
ICAgaWYgKEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQobV92ZXJzaW9uLCBjZWxsKSkgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseShjZWxsKSk7CisgICAg
aWYgKEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQobV92ZXJzaW9uLCBjZWxsKSkKICAgICAgICAgcmV0
dXJuOwotICAgIH0KICAgICAKICAgICBub3RlTGl2ZUF1eGlsaWFyeUNlbGwoY2VsbCk7CiB9CkBA
IC0yOTQsNiArMjk0LDggQEAgQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENo
aQogewogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseShjZWxsKSk7CiAgICAg
CisgICAgLy9kYXRhTG9nKCJWaXNpdGluZyAiLCBSYXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKKwog
ICAgIFNldEN1cnJlbnRDZWxsU2NvcGUgY3VycmVudENlbGxTY29wZSgqdGhpcywgY2VsbCk7CiAg
ICAgCiAgICAgbV9jdXJyZW50T2JqZWN0Q2VsbFN0YXRlQmVmb3JlVmlzaXRpbmcgPSBjZWxsLT5j
ZWxsU3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgJKHJldmlzaW9uIDIw
NjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsOSBAQAogCiAjaW5jbHVkZSAiSlNF
eHBvcnRNYWNyb3MuaCIKICNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
clRyYWl0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtOTMsNCArOTUsMjMgQEAgcHJpdmF0
ZToKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFz
c1ZlY3RvclRyYWl0cyB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1j
bXAgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRz
PEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiB7Cisg
ICAgdHlwZWRlZiBKU0M6OldlYWs8VD4gU3RvcmFnZVR5cGU7CisKKyAgICB0eXBlZGVmIHN0ZDo6
bnVsbHB0cl90IEVtcHR5VmFsdWVUeXBlOworICAgIHN0YXRpYyBFbXB0eVZhbHVlVHlwZSBlbXB0
eVZhbHVlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgdHlwZWRlZiBUKiBQZWVrVHlwZTsK
KyAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0
dXJuIHZhbHVlLmdldCgpOyB9CisgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoRW1wdHlWYWx1ZVR5
cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAj
ZW5kaWYgLy8gV2Vha19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9j
ay5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dl
YWtCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFdlYWtC
bG9jazo6c3BlY2lhbGl6ZWRWaXNpdChDb250YWluCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBjb25zdCBKU1ZhbHVlJiBqc1ZhbHVlID0gd2Vha0ltcGwtPmpzVmFsdWUoKTsKLSAg
ICAgICAgaWYgKGNvbnRhaW5lci5pc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyh2ZXJzaW9uLCBq
c1ZhbHVlLmFzQ2VsbCgpKSkKKyAgICAgICAgaWYgKGNvbnRhaW5lci5pc01hcmtlZENvbmN1cnJl
bnRseSh2ZXJzaW9uLCBqc1ZhbHVlLmFzQ2VsbCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAKICAgICAgICAgaWYgKCF3ZWFrSGFuZGxlT3duZXItPmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3QoJmNvbnN0X2Nhc3Q8SlNWYWx1ZSY+
KGpzVmFsdWUpKSwgd2Vha0ltcGwtPmNvbnRleHQoKSwgdmlzaXRvcikpCkBAIC0xNDcsMTcgKzE0
NywxNCBAQCB2b2lkIFdlYWtCbG9jazo6cmVhcCgpCiAgICAgLy8gSWYgdGhpcyBXZWFrQmxvY2sg
ZG9lc24ndCBiZWxvbmcgdG8gYSBDZWxsQ29udGFpbmVyLCB3ZSB3b24ndCBldmVuIGJlIGhlcmUu
CiAgICAgQVNTRVJUKG1fY29udGFpbmVyKTsKICAgICAKLSAgICBtX2NvbnRhaW5lci5mbGlwSWZO
ZWNlc3NhcnkoKTsKLQotICAgIC8vIFdlIG9ubHkgcmVhcCBhZnRlciBtYXJraW5nLgotICAgIEFT
U0VSVChtX2NvbnRhaW5lci5pc01hcmtlZCgpKTsKKyAgICBIZWFwVmVyc2lvbiB2ZXJzaW9uID0g
bV9jb250YWluZXIuaGVhcCgpLT5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgd2Vha0ltcGxDb3VudCgpOyArK2kpIHsKICAgICAgICAgV2Vha0lt
cGwqIHdlYWtJbXBsID0gJndlYWtJbXBscygpW2ldOwogICAgICAgICBpZiAod2Vha0ltcGwtPnN0
YXRlKCkgPiBXZWFrSW1wbDo6RGVhZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGlmIChtX2NvbnRhaW5lci5pc01hcmtlZCh3ZWFrSW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKSkg
eworICAgICAgICBpZiAobV9jb250YWluZXIuaXNNYXJrZWQodmVyc2lvbiwgd2Vha0ltcGwtPmpz
VmFsdWUoKS5hc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVCh3ZWFrSW1wbC0+c3RhdGUo
KSA9PSBXZWFrSW1wbDo6TGl2ZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCShyZXZpc2lvbiAy
MDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTIsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiV2Vha1NldElubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC0xNDksMjMgKzE0OCw0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2
b2lkIHdlYWtDbGUKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKLW5hbWVzcGFjZSBXVEYgewotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEpTQzo6V2VhazxUPj4gOiBT
aW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuQ29tcGFy
ZVdpdGhNZW1jbXAgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBI
YXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpXZWFr
PFQ+PiB7Ci0gICAgdHlwZWRlZiBKU0M6OldlYWs8VD4gU3RvcmFnZVR5cGU7Ci0KLSAgICB0eXBl
ZGVmIHN0ZDo6bnVsbHB0cl90IEVtcHR5VmFsdWVUeXBlOwotICAgIHN0YXRpYyBFbXB0eVZhbHVl
VHlwZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQotCi0gICAgdHlwZWRlZiBUKiBQ
ZWVrVHlwZTsKLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBTdG9yYWdlVHlwZSYgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9Ci0gICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoRW1w
dHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdURgotCiAjZW5kaWYgLy8gV2Vha0lubGluZXNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFRodW5rcy5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTAgQEAKICNp
bmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIldlYWsuaCIKICNpbmNsdWRlICJX
ZWFrSGFuZGxlT3duZXIuaCIKLSNpbmNsdWRlICJXZWFrSW5saW5lcy5oIgogI2luY2x1ZGUgPHR1
cGxlPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1By
aW1pdGl2ZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsx
MTYsNyBAQAogI2luY2x1ZGUgIk1hcENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWFwSXRlcmF0
b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJNYXBQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJNYXJr
ZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJNYXRoT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWlj
cm90YXNrLmgiCiAjaW5jbHVkZSAiTW9kdWxlTG9hZGVyUHJvdG90eXBlLmgiCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAkocmV2aXNpb24gMjA2
MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgUHJvdG90eXBlTWFwX2gKICNk
ZWZpbmUgUHJvdG90eXBlTWFwX2gKIAorI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgorI2luY2x1
ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXZWFrR0NNYXAuaCIKICNpbmNsdWRlIDx3dGYv
VHJpU3RhdGUuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxp
bmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1ZGUgIk1h
cmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQuaCIKKyNpbmNsdWRlICJNYXJr
ZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1
ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkocmV2aXNpb24gMjA2
MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2Vha0dDTWFwX2gKIAogI2luY2x1
ZGUgIldlYWsuaCIKLSNpbmNsdWRlICJXZWFrSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA2MDMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3Iu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0
cmVhbS5oPgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYtMDktMTYgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE1hcmtlZEJsb2NrIHN0YXRlIHRy
YWNraW5nIHN1cHBvcnQgb3ZlcmxhcHBlZCBhbGxvY2F0aW9uIGFuZCBtYXJraW5nIHN0YXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1ODEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRo
ZSBtYWluIGNoYW5nZSBoZXJlIGlzIHRvIGJyaW5nIGJhY2sgRmFzdEJpdFZlY3Rvci5jcHAsIHNv
IHRoYXQgSSBjb3VsZCBvdXRsaW5lIHNvbWUKKyAgICAgICAgbGFyZ2Ugc2xvdyBwYXRoIGZ1bmN0
aW9ucy4gVGhpcyBhbHNvIGFkZHMgc29tZSB1dGlsaXRpZXMsIGxpa2UgYXRvbWljU2V0QW5kQ2hl
Y2soKSBhbmQKKyAgICAgICAgaXNFbXB0eSgpLiBUaGUgR0MgdXNlcyB0aGVzZS4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV1RGOjpGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpzZXRFcXVhbHNTbG93KToKKyAgICAgICAg
KFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXplU2xvdyk6CisgICAgICAgICogd3Rm
L0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6
b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXpl
KToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvckltcGw6OmlzRW1wdHkpOgorICAgICAgICAo
V1RGOjpGYXN0Qml0VmVjdG9yOjphdG9taWNTZXRBbmRDaGVjayk6CisgICAgICAgIChXVEY6OkZh
c3RCaXRWZWN0b3I6Om9wZXJhdG9yW10pOiBEZWxldGVkLgorCiAyMDE2LTA5LTE2ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGlzVmFsaWRFbnVt
IHRvIHdvcmsgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBHQ0MKSW5kZXg6IFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogCQkwRjQ1NzA0MzFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwNDIxQkU1QjU4
RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLzsgfTsKIAkJMEY0NTcwNDUxQkU4MzQ0MTAwNjJB
NjI5IC8qIEJ1YmJsZVNvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi87IH07
CiAJCTBGNzI1Q0FDMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNB
IC8qIFJhbmdlU2V0LmggKi87IH07CisJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0
Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLzsgfTsK
IAkJMEY4MjRBNjgxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MjRBNjQxQjc0NDNBMDAwMkUz
NDVEIC8qIFBhcmtpbmdMb3QuY3BwICovOyB9OwogCQkwRjgyNEE2OTFCNzQ0M0EwMDAyRTM0NUQg
LyogUGFya2luZ0xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLzsgfTsKIAkJ
MEY4NzEwNUExNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAv
KiBSYXdQb2ludGVyLmggKi87IH07CkBAIC0zNjYsNiArMzY3LDcgQEAKIAkJMEY0NTcwNDIxQkU1
QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ1NzA0
NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCdWJibGVTb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSYW5nZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGYXN0Qml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjQxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFya2luZ0xvdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAv
KiBQYXJraW5nTG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcmtpbmdM
b3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NzEwNTkxNjY0M0YxOTAwOTBC
MEFEIC8qIFJhd1BvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmF3
UG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODgwLDYgKzg4Miw3IEBA
CiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EuaCAqLywKIAkJCQkxQUVBODhF
MTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5oICovLAogCQkJCUE4QTQ3MjlGMTUxQTgy
NUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQkwRjdDNUZCNTFEODg1Q0YyMDA0
NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8sCiAJCQkJMEZEODFBQzQxNTRGQjIyRTAwOTgz
RTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYg
LyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZh
c3RNYWxsb2MuaCAqLywKQEAgLTE1OTQsNiArMTU5Nyw3IEBACiAJCQkJQ0Q1NDk3QUMxNTg1N0Qw
MzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1
MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEE0NzNGNDE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNGNzE1MUE4MjVCMDA0MTIzRkYgLyogT1NBbGxvY2F0b3JQ
b3NpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyog
T1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MDIxNTFBODI1QjAw
NDEyM0ZGIC8qIFBhZ2VCbG9jay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBAIHNldChXVEZfU09VUkNFUwogICAg
IERhdGFMb2cuY3BwCiAgICAgRGF0ZU1hdGguY3BwCiAgICAgRGVjaW1hbE51bWJlci5jcHAKKyAg
ICBGYXN0Qml0VmVjdG9yLmNwcAogICAgIEZhc3RNYWxsb2MuY3BwCiAgICAgRmlsZVByaW50U3Ry
ZWFtLmNwcAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0Zhc3RCaXRWZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRW
ZWN0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZhc3RCaXRWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgRmFzdEJpdFZlY3Rv
cldvcmRPd25lcjo6c2V0RXF1YWxzU2xvdyhjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBv
dGhlcikKK3sKKyAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+
KAorICAgICAgICBmYXN0Q2FsbG9jKG90aGVyLmFycmF5TGVuZ3RoKCksIHNpemVvZih1aW50MzJf
dCkpKTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG90aGVyLm1fd29yZHMsIG90aGVyLmFycmF5TGVu
Z3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICBpZiAobV93b3JkcykKKyAgICAgICAgZmFz
dEZyZWUobV93b3Jkcyk7CisgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAgIG1fbnVtQml0cyA9
IG90aGVyLm1fbnVtQml0czsKK30KKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpyZXNp
emVTbG93KHNpemVfdCBudW1CaXRzKQoreworICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0Qml0
VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cyk7CisgICAgCisgICAgLy8gVXNlIGZhc3RDYWxsb2Mg
aW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCisgICAg
Ly8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6ZSBv
ZiB0aGUgYml0dmVjdG9yLgorICAgIAorICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsK
KyAgICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWlu
dDMyX3QpKTsKKyAgICBpZiAobV93b3JkcykKKyAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Cisg
ICAgbV93b3JkcyA9IG5ld0FycmF5OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDog
U291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0Zhc3RCaXRWZWN0b3IuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dURi93dGYv
RmFzdEJpdFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC05MSwxNyArOTIsMTIgQEAgcHVibGlj
OgogICAgIAogICAgIEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG9wZXJhdG9yPShjb25zdCBGYXN0
Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHNpemVfdCBsZW5ndGgg
PSBvdGhlci5hcnJheUxlbmd0aCgpOwotICAgICAgICBpZiAobGVuZ3RoID09IGFycmF5TGVuZ3Ro
KCkpIHsKLSAgICAgICAgICAgIG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBsZW5ndGgg
KiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAg
aWYgKGFycmF5TGVuZ3RoKCkgIT0gb3RoZXIuYXJyYXlMZW5ndGgoKSkKKyAgICAgICAgICAgIHNl
dEVxdWFsc1Nsb3cob3RoZXIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweSht
X3dvcmRzLCBvdGhlci5tX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7
CisgICAgICAgICAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7CiAgICAgICAgIH0KLSAg
ICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2Fs
bG9jKGxlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwotICAgICAgICBtZW1jcHkobmV3QXJyYXks
IG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBpZiAo
bV93b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOwotICAgICAgICBtX3dvcmRz
ID0gbmV3QXJyYXk7Ci0gICAgICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KICAgICAKQEAgLTE0MCwxOCArMTM2LDggQEAgcHVibGlj
OgogICAgIAogICAgIHZvaWQgcmVzaXplKHNpemVfdCBudW1CaXRzKQogICAgIHsKLSAgICAgICAg
aWYgKG51bUJpdHMgPT0gbV9udW1CaXRzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAK
LSAgICAgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNl
IHdlIGV4cGVjdCB0aGUgY29tbW9uCi0gICAgICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1ldGhv
ZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rvci4KLSAgICAgICAg
Ci0gICAgICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVt
Qml0cyk7Ci0gICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90
Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKLSAgICAgICAgbWVt
Y3B5KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7
Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAgICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Ci0g
ICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsKKyAgICAgICAgaWYgKGFycmF5TGVuZ3RoKCkgIT0g
ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpKQorICAgICAgICAgICAgcmVzaXplU2xv
dyhudW1CaXRzKTsKICAgICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKICAgICB9CiAgICAgCkBA
IC0xNzEsNiArMTU3LDkgQEAgcHVibGljOgogICAgIHVpbnQzMl90KiB3b3JkcygpIHsgcmV0dXJu
IG1fd29yZHM7IH0KIAogcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRF
cXVhbHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZXNpemVTbG93KHNpemVfdCBudW1CaXRzKTsKKyAgICAKICAg
ICB1aW50MzJfdCogbV93b3JkcyB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9udW1CaXRzIHsg
MCB9OwogfTsKQEAgLTMyMCw2ICszMDksMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgZm9yIChzaXplX3QgaW5kZXggPSBhcnJheUxlbmd0aCgpOyBpbmRleC0tOykgeworICAgICAg
ICAgICAgaWYgKG1fd29yZHMud29yZChpbmRleCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIEZhc3RCaXRWZWN0b3JJbXBsPEZhc3RC
aXRWZWN0b3JBbmRXb3Jkczx0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUsIHR5cGVuYW1lIE90aGVy
V29yZHM6OlZpZXdUeXBlPj4gb3BlcmF0b3ImKGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90aGVy
V29yZHM+JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC00NzEsNiArNDY5LDcgQEAgcHVibGljOgog
ICAgICAgICBtX3dvcmRzLmNsZWFyQWxsKCk7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBjb250ZW50cyBvZiB0aGlzIGJpdHZlY3RvciBjaGFuZ2VkLgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAgYm9vbCBzZXRBbmRDaGVjayhjb25zdCBGYXN0Qml0
VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpCiAgICAgewpAQCAtNTUwLDYgKzU0OSwyOCBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwogICAgIH0KKyAgICAK
KyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnRzIGNoYW5nZWQuCisgICAgQUxXQVlT
X0lOTElORSBib29sIGF0b21pY1NldEFuZENoZWNrKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHVpbnQzMl90KiBwb2ludGVyID0gJm1fd29yZHMud29yZChpbmRleCA+
PiA1KTsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKGluZGV4ICYgMzEpOworICAgICAg
ICBmb3IgKDs7KSB7CisgICAgICAgICAgICB1aW50MzJfdCBvbGRWYWx1ZSA9ICpwb2ludGVyOwor
ICAgICAgICAgICAgdWludDMyX3QgbmV3VmFsdWU7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsK
KyAgICAgICAgICAgICAgICBpZiAob2xkVmFsdWUgJiBtYXNrKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSB8IG1h
c2s7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghKG9sZFZhbHVl
ICYgbWFzaykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlICYgfm1hc2s7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAod2Vha0NvbXBhcmVBbmRTd2FwKHBvaW50ZXIsIG9sZFZhbHVlLCBuZXdWYWx1ZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289175</attachid>
            <date>2016-09-17 11:26:04 -0700</date>
            <delta_ts>2016-09-17 12:47:36 -0700</delta_ts>
            <desc>fixed the earley regression, got what might be a splay progression!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>142603</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0NyBA
QAorMjAxNi0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgTWFya2VkQmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9j
YXRpb24gYW5kIG1hcmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgQ29uY3VycmVudCBHQ3MgbXVzdCBhbGxvdyBmb3IgbXV0
YXRpb24gYW5kIGFsbG9jYXRpb24gZHVyaW5nIGNvbGxlY3Rpb24uIFdlIGFscmVhZHkga25vdwor
ICAgICAgICBob3cgdG8gbXV0YXRlIGR1cmluZyBjb2xsZWN0aW9uLiBXZSBoYXZlIGEgd3JpdGUg
YmFycmllciBmb3IgdGhhdC4gQWxsb2NhdGlvbiBkdXJpbmcKKyAgICAgICAgY29sbGVjdGlvbiBp
cyBtb3JlIGludm9sdmVkOiB0aGUgY29sbGVjdG9yIG1vZGlmaWVzIHRoZSB0aGUgbWFyayBiaXRz
LCBhcyB3ZWxsIGFzIG90aGVyCisgICAgICAgIGtpbmRzIG9mIE1hcmtlZEJsb2NrIHN0YXRlLCBp
bi1wbGFjZSBkdXJpbmcgYSBjb2xsZWN0aW9uLiBUaGUgYWxsb2NhdG9yIHVzZXMgdGhhdCBzYW1l
CisgICAgICAgIE1hcmtlZEJsb2NrIHN0YXRlIHRvIGRlY2lkZSB3aGljaCByZWdpb25zIG9mIG1l
bW9yeSBhcmUgZnJlZS4gVGhpcyB3b3JrcyBpZiB0aGUgYWxsb2NhdG9yCisgICAgICAgIG5ldmVy
IHJ1bnMgd2hpbGUgdGhlIGNvbGxlY3RvciBpcyBydW5uaW5nLCBidXQgaWYgd2Ugd2FudCB0byBh
bGxvdyB0aGVtIHRvIHJ1biBhdCB0aGUgc2FtZQorICAgICAgICB0aW1lLCB0aGVuIHdlIG5lZWQg
dG8gaGF2ZSB0d28gdmVyc2lvbnMgb2YgdGhlIHN0YXRlOiBvbmUgdmVyc2lvbiBidWlsdCB1cCBi
eSB0aGUKKyAgICAgICAgY29sbGVjdG9yIGFuZCBhbm90aGVyIGNvbnN1bWVkIGJ5IHRoZSBhbGxv
Y2F0b3IuIFdlIGNsZWFyIHRoZSBjb2xsZWN0b3Igc3RhdGUgYXQgdGhlCisgICAgICAgIGJlZ2lu
bmluZyBvZiBjb2xsZWN0aW9uLCBhbmQgc3BsYXQgdGhlIGNvbGxlY3RvciBzdGF0ZSBvbnRvIHRo
ZSBhbGxvY2F0b3Igc3RhdGUgYWZ0ZXIKKyAgICAgICAgY29sbGVjdGlvbi4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgY291bGQgYmUgc3VwZXIgZXhwZW5zaXZlLCBidXQgd2UgY2FuIG1ha2UgaXQg
Y2hlYXAgd2l0aCBzb21lIGNsZXZlcm5lc3MuIFRoZSBiaWdnZXN0CisgICAgICAgIG9ic2VydmF0
aW9uIGlzIGp1c3QgdGhhdCBtb3N0IG9mIHRoZSBzdGF0ZSBpcyBhIGhhbmRmdWwgb2YgYml0cyBw
ZXIgYmxvY2s6IGlzIHRoZSBibG9jaworICAgICAgICBmcmVlLWxpc3RlZD8gaXMgaXQgY29tcGxl
dGVseSBmdWxsPyBjb21wbGV0ZWx5IGVtcHR5PyBpbiB0aGUgaW5jcmVtZW50YWwgc3dlZXBlcidz
CisgICAgICAgIHNuYXBzaG90PyBpcyBpdCByZXRpcmVkPyBpcyBpdCBpbiBlZGVuPyBUaGVyZSBp
cyBhbHNvIHN0YXRlIGluc2lkZSBibG9ja3MsIGxpa2UgdGhlIG1hcmsKKyAgICAgICAgYml0cywg
YnV0IEkgaGF2ZSBhIHNvbGlkIHBsYW4gdGhlcmUgYW5kIEknbGwgc2F2ZSBpdCBmb3IgYW5vdGhl
ciBwYXRjaC4gT25jZSB3ZSB2aWV3IHRoZQorICAgICAgICBzdGF0ZSBvZiBibG9ja3MgYXMgYml0
cywgd2UgY2FuIHB1dCB0aGF0IHN0YXRlIGludG8gYml0dmVjdG9ycywgc28gdGhhdCBpZiB0aGUg
Y29sbGVjdG9yCisgICAgICAgIG5lZWRzIHRvIHRyYW5zZm9ybSB0aGUgc3RhdGUgb2Ygc29tZSBi
bG9ja3MsIGl0IGNhbiBkbyBpdCB3aXRoIGEgc2luZ2xlIG9wZXJhdGlvbiBvdmVyCisgICAgICAg
IGJpdHZlY3RvcnMuIEkgbGlrZSB0byB0aGluayBvZiB0aGlzIGFzIDMyLXdheSBwYXJhbGxlbGl6
aW5nIGJsb2NrIG9wZXJhdGlvbnMsIHNpbmNlCisgICAgICAgIGRvaW5nIG9uZSBvcGVyYXRpb24g
b24gYSAzMi1iaXQgd29yZCBpbiBvbmUgb2YgdGhvc2UgYml0dmVjdG9ycyBpbnN0YW50bHkgYWZm
ZWN0cyAzMgorICAgICAgICBibG9ja3MuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBj
b252ZXJ0cyBhbGwgcHJldmlvdXMgY29sbGVjdGlvbnMgb2YgTWFya2VkQmxvY2tzLCBhbG9uZyB3
aXRoIHRoZSBNYXJrZWRCbG9jaworICAgICAgICBzdGF0ZSwgaW50byA4IGJpdHZlY3RvcnMgKGxp
dmUsIGVtcHR5LCBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlLCBlZGVuLCBzbmFwc2hvdCwKKyAgICAg
ICAgbWFya2luZ05vdEVtcHR5LCBhbmQgbWFya2luZ1JldGlyZWQpLiBUaGUgYml0dmVjdG9ycyBz
ZXBhcmF0ZSBhbGxvY2F0b3Igc3RhdGUgKGVtcHR5LAorICAgICAgICBhbGxvY2F0ZWQsIGNhbkFs
bG9jYXRlKSBmcm9tIG1hcmtpbmcgc3RhdGUgKG1hcmtpbmdOb3RFbXB0eSwgbWFya2luZ1JldGly
ZWQpLgorICAgICAgICAKKyAgICAgICAgQXMgYSBuaWNlIHNpZGUtZWZmZWN0IG9mIHN3aXRjaGlu
ZyB0byBiaXR2ZWN0b3JzLCB3ZSBnZXQgc2l6ZSBjbGFzcyByZWJhbGFuY2luZyBmb3IgZnJlZS4K
KyAgICAgICAgSXQgdXNlZCB0byBiZSB0aGF0IGlmIGEgTWFya2VkQWxsb2NhdG9yIGhhZCBhbiBl
bXB0eSBibG9jaywgd2Ugd291bGQgb25seSBhbGxvdyB0aGF0CisgICAgICAgIG1lbW9yeSB0byBi
ZSByZXVzZWQgYnkgYSBkaWZmZXJlbnQgTWFya2VkQWxsb2NhdG9yIGlmIHdlIGRpZCBhbiBpbmNy
ZW1lbnRhbCBzd2VlcCBvciBhCisgICAgICAgIGZ1bGwgZWFnZXIgc3dlZXAuIE5vdyB3ZSBodW50
IGRvd24gYWxsIGRlc3RydWN0b3JsZXNzIGVtcHR5IGJsb2NrcyBiZWZvcmUgYWxsb2NhdGluZyBu
ZXcKKyAgICAgICAgTWFya2VkQmxvY2tzLiBJdCB3b3VsZCBiZSByZWxhdGl2ZWx5IGVhc3kgdG8g
YWxzbyBodW50IGRvd24gZGVzdHJ1Y3RvciBlbXB0eSBibG9ja3MsIGJ1dAorICAgICAgICB0aGUg
dGhlb3J5IGlzIHRoYXQgdGhvc2UgbWlnaHQgYmUgZXhwZW5zaXZlIHRvIHN3ZWVwLCBzbyBpdCBt
aWdodCBzdGlsbCBiZSBiZXR0ZXIgdG8gbGVhdmUKKyAgICAgICAgdGhvc2UgdG8gdGhlIGluY3Jl
bWVudGFsIHN3ZWVwZXIuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAg
KiBoZWFwL0NlbGxDb250YWluZXIuaDoKKyAgICAgICAgKiBoZWFwL0NlbGxDb250YWluZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OnZtKToKKyAgICAgICAgKEpTQzo6
Q2VsbENvbnRhaW5lcjo6aGVhcCk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmlzTWFy
a2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmFib3V0
VG9NYXJrKToKKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6aXNNYXJrZWQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmJlZ2luTWFya2luZyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2Fy
YmFnZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJbXBsKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6c25hcHNob3RNYXJrZWRTcGFjZSk6CisgICAgICAgIChKU0M6OkhlYXA6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6em9tYmlmeURlYWRPYmplY3RzKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3I6Ok1hcmtlZEJsb2NrU25h
cHNob3RGdW5jdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTbmFwc2hv
dEZ1bmN0b3I6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpyZXNl
dEFsbG9jYXRvcnMpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAq
IGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWQpOgorICAg
ICAgICAoSlNDOjpIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6Okhl
YXA6OnRlc3RBbmRTZXRNYXJrZWQpOgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuY3Bw
OgorICAgICAgICAqIGhlYXAvSGVhcFV0aWwuaDoKKyAgICAgICAgKEpTQzo6SGVhcFV0aWw6OmZp
bmRHQ09iamVjdFBvaW50ZXJzRm9yTWFya2luZyk6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpp
c1BvaW50ZXJHQ09iamVjdEpTQ2VsbCk6CisgICAgICAgICogaGVhcC9IZWFwVmVyaWZpZXIuY3Bw
OgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJ
bmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXApOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVy
OjpzdGFydFN3ZWVwaW5nKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjp3aWxs
RmluaXNoU3dlZXBpbmcpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6Cisg
ICAgICAgICogaGVhcC9MYXJnZUFsbG9jYXRpb24uaDoKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxv
Y2F0aW9uOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJr
ZWRDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6YWJvdXRU
b01hcmspOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2VkRHVyaW5nV2Vh
a1Zpc2l0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjpmbGlw
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmZs
aXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFy
a2VkQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpNYXJrZWRB
bGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJsb2NrKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbik6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUltcGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OnRyeUFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0
b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9j
ayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnByZXBhcmVGb3JBbGxvY2F0aW9uKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEFsbG9jYXRvcjo6YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlND
OjpNYXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1RvU3dlZXApOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzaHJp
bmspOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFzc2VydFNuYXBzaG90RW1wdHkp
OgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmR1bXApOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OmR1bXBCaXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9y
OjpyZXRpcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZpbHRl
ck5leHRCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0
TmV4dEJsb2NrVG9Td2VlcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJpdFZlY3Rvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpuZXh0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQWxsb2NhdG9yOjpzZXROZXh0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OnJlc3VtZUFsbG9jYXRpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6fkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJrZWRC
bG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dl
ZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2Rl
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RF
bXB0eU1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBl
clNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c2V0SXNGcmVlTGlzdGVkKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVk
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om1hcmtDb3VudCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6bm90ZU1hcmtlZFNsb3cpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpy
ZW1vdmVGcm9tQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
ZGlkQWRkVG9BbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpk
aWRSZW1vdmVGcm9tQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2Vs
bCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0
U3RhdGVBbmRTd2VlcE1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3cpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxsUmVtb3ZlQmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpwcmludEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01h
cmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRnJlZUxp
c3RlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmluZGV4KToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkQ29u
Y3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzT25C
bG9ja3NUb1N3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6c2V0SXNPbkJsb2Nrc1RvU3dlZXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpzdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwRm9yRWRlbkNv
bGxlY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRE
dXJpbmdXZWFrVmlzaXRpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc0xpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6Zm9yRWFjaExpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNTd2VlcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzQWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQpOiBEZWxldGVkLgorICAgICAgICAqIGhl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6SGFuZGxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExp
dmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRD
ZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0VmVyc2lvbik6CisgICAgICAg
ICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJr
ZWRTcGFjZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzaHJpbmspOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZW5kTWFy
a2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2spOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2spOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6c25hcHNob3QpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YXNz
ZXJ0U25hcHNob3RFbXB0eSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkdW1wQml0cyk6
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp6b21iaWZ5U3dlZXApOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6VmVyaWZ5TWFya2VkOjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6OmZsaXApOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkU3Bh
Y2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5leHRWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OmZpcnN0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmJs
b2Nrc1dpdGhOZXdPYmplY3RzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OnNldElzTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JF
YWNoTGl2ZUNlbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFj
aERlYWRDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlSW5saW5lcy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwpOgorICAgICAgICAqIGhl
YXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6c2V0TWFya2Vk
QW5kQXBwZW5kVG9NYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6bWFya0F1
eGlsaWFyeSk6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBoZWFwL1dlYWsuaDoKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8
VD4+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+
OjpwZWVrKToKKyAgICAgICAgKiBoZWFwL1dlYWtCbG9jay5jcHA6CisgICAgICAgIChKU0M6Oldl
YWtCbG9jazo6c3BlY2lhbGl6ZWRWaXNpdCk6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6cmVh
cCk6CisgICAgICAgICogaGVhcC9XZWFrSW5saW5lcy5oOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPEpTQzo6V2VhazxUPj46OmVtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPEpTQzo6V2VhazxUPj46OnBlZWspOiBEZWxldGVkLgorICAgICAgICAqIGppdC9K
SVRUaHVua3MuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb3RvdHlwZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHA6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKiB0
b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcDoKKwogMjAxNi0wOS0xNiAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3QyNjI6IFZhcmlvdXMgQ29u
c3RydWN0b3JzIGxlbmd0aCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBjb25maWd1cmFibGUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTBGN0MzOUZCMUM4RjYyOTMwMDQ4
MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5o
ICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5
RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsKIAkJMEY3
QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERG
R09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFya2VkQmxv
Y2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi87IH07
CisJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI5MUQ4ODk1
MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLzsgfTsKIAkJMEY4MDIzRUExNjEz
ODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMz
NUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1Qjgx
NjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI3MzEsNiArMjczMyw4IEBACiAJCTBGN0MzOUZBMUM4
RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5oOyBwYXRo
ID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZC
NzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNlSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJB
NDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFs
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMzOCw5ICs1
MzQyLDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRv
ci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAg
Ki8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggKi8sCisJ
CQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovLAog
CQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICovLAogCQkJ
CTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJCQkJMTRE
MkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMEY3QzVGQjkx
RDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0MkQ2RjBF
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBGMTM1MzlB
NDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlBRERCMUY2MjE4RDc3REI3MDA5QjU4
QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNzM5NCw2ICs3NDAwLDcgQEAKIAkJCQkwRjY2
RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAvKiBNYXJr
ZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4QkUwMEJC
QjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2Rl
LmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkxOCw3IEBACiAJCQkJQTUwM0ZBMkExODhG
MTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVk
U2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQkExRDg4OTUwNzAwNDRGNUUy
IC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1QzIxODVC
RkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0MgLyogSlNJbnB1dHMuanNvbiBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2QXJyYXku
aCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJWTUVudHJ5
U2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVy
LmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxD
b250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBIZWFwOwogY2xhc3MgSGVhcENlbGw7CiBjbGFzcyBMYXJnZUFsbG9j
YXRpb247CiBjbGFzcyBNYXJrZWRCbG9jazsKIGNsYXNzIFdlYWtTZXQ7CitjbGFzcyBWTTsKIAog
dHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKIApAQCAtNTYsNiArNTgsOSBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KICAgICAKKyAgICBWTSogdm0oKSBjb25zdDsKKyAgICBIZWFwKiBoZWFw
KCkgY29uc3Q7CisgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9lbmNvZGVkUG9pbnRlcjsgfQogICAgIAogICAgIGJvb2wgaXNNYXJrZWRCbG9jaygp
IGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZFBvaW50ZXIgJiYgIShtX2VuY29kZWRQb2ludGVyICYg
aXNMYXJnZUFsbG9jYXRpb25CaXQpOyB9CkBAIC03MywxMyArNzgsMTMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxMYXJnZUFsbG9jYXRpb24qPihtX2VuY29kZWRQb2lu
dGVyIC0gaXNMYXJnZUFsbG9jYXRpb25CaXQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZsaXBJ
Zk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKKyAg
ICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxpcCgpIGNv
bnN0OwogICAgIAotICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKICAgICBib29sIGlzTWFya2Vk
KEhlYXBDZWxsKikgY29uc3Q7CisgICAgYm9vbCBpc01hcmtlZChIZWFwVmVyc2lvbiwgSGVhcENl
bGwqKSBjb25zdDsKICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCop
IGNvbnN0OworICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBI
ZWFwQ2VsbCopIGNvbnN0OwogICAgIAogICAgIHZvaWQgbm90ZU1hcmtlZCgpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5saW5l
cy5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxs
Q29udGFpbmVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNCArMjksMjAgQEAKICNp
bmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJMYXJnZUFsbG9jYXRpb24uaCIKICNpbmNsdWRl
ICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgIlZNLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1p
bmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZCgpIGNvbnN0CitpbmxpbmUgVk0qIENl
bGxDb250YWluZXI6OnZtKCkgY29uc3QKIHsKICAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaGFuZGxlKCku
aXNNYXJrZWQoKTsKKyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLnZtKCk7CisgICAg
cmV0dXJuIG1hcmtlZEJsb2NrKCkudm0oKTsKK30KKworaW5saW5lIEhlYXAqIENlbGxDb250YWlu
ZXI6OmhlYXAoKSBjb25zdAoreworICAgIHJldHVybiAmdm0oKS0+aGVhcDsKIH0KIAogaW5saW5l
IGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoSGVhcENlbGwqIGNlbGwpIGNvbnN0CkBAIC00
Niw2ICs1MiwxMyBAQCBpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwCiAg
ICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJrZWQoY2VsbCk7CiB9CiAKK2lubGluZSBib29s
IENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXBWZXJzaW9uIHZlcnNpb24sIEhlYXBDZWxsKiBj
ZWxsKSBjb25zdAoreworICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAgICByZXR1
cm4gbGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsKKyAgICByZXR1cm4gbWFya2VkQmxvY2so
KS5pc01hcmtlZCh2ZXJzaW9uLCBjZWxsKTsKK30KKwogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5l
cjo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKiBjZWxsKSBjb25zdAogewogICAg
IGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQpAQCAtNTMsNiArNjYsMTMgQEAgaW5saW5lIGJvb2wg
Q2VsbENvbnRhaW5lcjo6aXNNYXJrZWRPck5ldwogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlz
TWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKIH0KIAoraW5saW5lIGJvb2wgQ2VsbENvbnRh
aW5lcjo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIEhlYXBD
ZWxsKiBjZWxsKSBjb25zdAoreworICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAg
ICByZXR1cm4gbGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7Cisg
ICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHZlcnNpb24s
IGNlbGwpOworfQorCiBpbmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpub3RlTWFya2VkKCkKIHsK
ICAgICBpZiAoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpCkBAIC03MywxNiArOTMsMTAgQEAgaW5saW5l
IFdlYWtTZXQmIENlbGxDb250YWluZXI6OndlYWtTZXQoKQogICAgIHJldHVybiBtYXJrZWRCbG9j
aygpLndlYWtTZXQoKTsKIH0KIAotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6ZmxpcElmTmVj
ZXNzYXJ5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQotewotICAgIGlmICghaXNMYXJnZUFsbG9j
YXRpb24oKSkKLSAgICAgICAgbWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNp
b24pOwotfQotCi1pbmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkoKQor
aW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZl
cnNpb24pCiB7CiAgICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICBtYXJrZWRC
bG9jaygpLmZsaXBJZk5lY2Vzc2FyeSgpOworICAgICAgICBtYXJrZWRCbG9jaygpLmFib3V0VG9N
YXJrKGhlYXBWZXJzaW9uKTsKIH0KIAogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6bmVlZHNG
bGlwKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2
ZVJvb3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25z
ZXJ2YXRpdmVSb290cy5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5o
IgogI2luY2x1ZGUgIkpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRl
ICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCkBAIC01MjYsMTEg
KzUyNyw5IEBAIHZvaWQgSGVhcDo6YmVnaW5NYXJraW5nKCkKICAgICB9CiAgICAgCiAgICAgewot
ICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVj
dFNwYWNlLmNsZWFyTWFya3MiKTsKLSAgICAgICAgbV9vYmplY3RTcGFjZS5mbGlwKCk7CisgICAg
ICAgIFRpbWluZ1Njb3BlIGNsZWFyTWFya3NUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3Bh
Y2UuYmVnaW5NYXJraW5nIik7CisgICAgICAgIG1fb2JqZWN0U3BhY2UuYmVnaW5NYXJraW5nKCk7
CiAgICAgfQotICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKHRydWUpOwogfQog
CiB2b2lkIEhlYXA6OnZpc2l0RXh0ZXJuYWxSZW1lbWJlcmVkU2V0KCkKQEAgLTc3OSw3ICs3Nzgs
NyBAQCB2b2lkIEhlYXA6OmVuZE1hcmtpbmcoKQogICAgIEFTU0VSVChtX3NoYXJlZE1hcmtTdGFj
ay5pc0VtcHR5KCkpOwogICAgIG1fd2Vha1JlZmVyZW5jZUhhcnZlc3RlcnMucmVtb3ZlQWxsKCk7
CiAgICAgCi0gICAgbV9vYmplY3RTcGFjZS5zZXRJc01hcmtpbmcoZmFsc2UpOworICAgIG1fb2Jq
ZWN0U3BhY2UuZW5kTWFya2luZygpOwogfQogCiBzaXplX3QgSGVhcDo6b2JqZWN0Q291bnQoKQpA
QCAtOTM5LDcgKzkzOCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgICAg
ICBtX29iamVjdFNwYWNlLnN3ZWVwKCk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc2hyaW5rKCk7
CiAgICAgfQotICAgIEFTU0VSVChtX2Jsb2NrU25hcHNob3QuaXNFbXB0eSgpKTsKKyAgICBtX29i
amVjdFNwYWNlLmFzc2VydFNuYXBzaG90RW1wdHkoKTsKIAogICAgIHN3ZWVwQWxsTG9naWNhbGx5
RW1wdHlXZWFrQmxvY2tzKCk7CiB9CkBAIC0xMDQ4LDcgKzEwNDcsNyBAQCBORVZFUl9JTkxJTkUg
dm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVy
KCk7CiAgICAgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOwogCi0g
ICAgcmVzZXRBbGxvY2F0b3JzKCk7CisgICAgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB1
cGRhdGVBbGxvY2F0aW9uTGltaXRzKCk7CiAgICAgZGlkRmluaXNoQ29sbGVjdGlvbihnY1N0YXJ0
VGltZSk7CiAgICAgcmVzdW1lQ29tcGlsZXJUaHJlYWRzKCk7CkBAIC0xMDYzLDYgKzEwNjIsMTEg
QEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgICAgICBkb3Vi
bGUgYWZ0ZXIgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgICAgIGRhdGFMb2coYWZ0ZXIgLSBiZWZv
cmUsICIgbXNdXG4iKTsKICAgICB9CisgICAgCisgICAgaWYgKGZhbHNlKSB7CisgICAgICAgIGRh
dGFMb2coIkhlYXAgc3RhdGUgYWZ0ZXIgR0M6XG4iKTsKKyAgICAgICAgbV9vYmplY3RTcGFjZS5k
dW1wQml0cygpOworICAgIH0KIH0KIAogdm9pZCBIZWFwOjpzd2VlcExhcmdlQWxsb2NhdGlvbnMo
KQpAQCAtMTE2Miw0NCArMTE2NiwxMCBAQCB2b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkK
ICAgICBtX2FycmF5QnVmZmVycy5zd2VlcCgpOwogfQogCi1zdHJ1Y3QgTWFya2VkQmxvY2tTbmFw
c2hvdEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBNYXJr
ZWRCbG9ja1NuYXBzaG90RnVuY3RvcihWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBibG9j
a3MpIAotICAgICAgICA6IG1faW5kZXgoMCkgCi0gICAgICAgICwgbV9ibG9ja3MoYmxvY2tzKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2spIGNvbnN0Ci0gICAgewotICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAo
dHJ1ZSk7Ci0gICAgICAgIG1fYmxvY2tzW21faW5kZXgrK10gPSBibG9jazsKLSAgICB9Ci0KLSAg
ICAvLyBGSVhNRTogVGhpcyBpcyBhIG11dGFibGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3QgYSBD
KysgbGFtYmRhLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTk2NDQKLSAgICBtdXRhYmxlIHNpemVfdCBtX2luZGV4OwotICAgIFZlY3RvcjxNYXJrZWRC
bG9jazo6SGFuZGxlKj4mIG1fYmxvY2tzOwotfTsKLQogdm9pZCBIZWFwOjpzbmFwc2hvdE1hcmtl
ZFNwYWNlKCkKIHsKICAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhpcywgIkhlYXA6OnNu
YXBzaG90TWFya2VkU3BhY2UiKTsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkg
YmUgcmVuYW1lZC4gSXQncyBub3QgYWN0dWFsbHkgc25hcHNob3R0aW5nIGFsbCBvZiBNYXJrZWRT
cGFjZS4KLSAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSW5jcmVtZW50YWxTd2VlcGVyLCBzbyBpdCBv
bmx5IG5lZWRzIHRvIHNuYXBzaG90IGJsb2Nrcy4gSG93ZXZlciwgaWYgd2UgZXZlcgotICAgIC8v
IHdhbnRlZCB0byBhZGQgb3RoZXIgc25hcHNob3R0aW5nIGxvZ2luLCB3ZSdkIHByb2JhYmx5IHB1
dCBpdCBoZXJlLgotICAgIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNv
bGxlY3Rpb24pIHsKLSAgICAgICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgOiBt
X29iamVjdFNwYWNlLmJsb2Nrc1dpdGhOZXdPYmplY3RzKCkpIHsKLSAgICAgICAgICAgIGlmICho
YW5kbGUtPmlzT25CbG9ja3NUb1N3ZWVwKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBtX2Jsb2NrU25hcHNob3QuYXBwZW5kKGhhbmRsZSk7Ci0gICAgICAgICAgICBo
YW5kbGUtPnNldElzT25CbG9ja3NUb1N3ZWVwKHRydWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgbV9ibG9ja1NuYXBzaG90LnJlc2l6ZVRvRml0KG1fb2JqZWN0U3BhY2UuYmxv
Y2tzKCkuc2V0KCkuc2l6ZSgpKTsKLSAgICAgICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3Ig
ZnVuY3RvcihtX2Jsb2NrU25hcHNob3QpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hC
bG9jayhmdW5jdG9yKTsKLSAgICB9CisgICAgbV9vYmplY3RTcGFjZS5zbmFwc2hvdCgpOwogfQog
CiB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKQEAgLTEyMjIsOSArMTE5
Miw5IEBAIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW4KICAgICBtX2Nv
ZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhpcyk7
CiB9CiAKLXZvaWQgSGVhcDo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgSGVhcDo6cHJlcGFyZUZv
ckFsbG9jYXRpb24oKQogewotICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3JzKCk7Cisg
ICAgbV9vYmplY3RTcGFjZS5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogfQogCiB2b2lkIEhlYXA6
OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQpAQCAtMTQ3Myw3ICsxNDQzLDcgQEAgcHVibGljOgog
dm9pZCBIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMoKQogewogICAgIC8vIFN3ZWVwIG5vdyBiZWNh
dXNlIGRlc3RydWN0b3JzIHdpbGwgY3Jhc2ggb25jZSB3ZSdyZSB6b21iaWZpZWQuCi0gICAgbV9v
YmplY3RTcGFjZS56b21iaWZ5U3dlZXAoKTsKKyAgICBtX29iamVjdFNwYWNlLnN3ZWVwKCk7CiAg
ICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICBtX29iamVj
dFNwYWNlLmZvckVhY2hEZWFkQ2VsbChpdGVyYXRpb25TY29wZSwgWm9tYmlmeSgpKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMz
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpOwog
ICAgIHZvaWQgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAgdm9pZCB3cml0ZUJhcnJp
ZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7Ci0gICAgdm9pZCByZXNldEFsbG9jYXRv
cnMoKTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBoYXJ2ZXN0
V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXpl
cnMoKTsKICAgICB2b2lkIGNsZWFyVW5tYXJrZWRFeGVjdXRhYmxlcygpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MSw5ICs4MSw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZChjb25zdCAK
ICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwt
PmxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0g
Y2VsbC0+bWFya2VkQmxvY2soKTsKLSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJsb2NrLnZtKCkt
PmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5pc01hcmtl
ZCgKKyAgICAgICAgYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2Vs
bCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseShj
b25zdCB2b2lkKiByYXdDZWxsKQpAQCAtOTIsMTAgKzkxLDggQEAgQUxXQVlTX0lOTElORSBib29s
IEhlYXA6OmlzTWFya2VkQ29uY3VycgogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigp
KQogICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsKICAg
ICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGlmIChibG9j
ay5uZWVkc0ZsaXAoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICByZXR1
cm4gYmxvY2suaXNNYXJrZWQoY2VsbCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkQ29uY3Vy
cmVudGx5KAorICAgICAgICBibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigp
LCBjZWxsKTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQo
SGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTEwNCw3ICsxMDEs
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6dGVzdEFuZFNldE1hcmtlCiAgICAgaWYgKGNl
bGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9j
YXRpb24oKS50ZXN0QW5kU2V0TWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2Vs
bC0+bWFya2VkQmxvY2soKTsKLSAgICBibG9jay5mbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5n
KHZlcnNpb24pOworICAgIGJsb2NrLmFib3V0VG9NYXJrKHZlcnNpb24pOwogICAgIHJldHVybiBi
bG9jay50ZXN0QW5kU2V0TWFya2VkKGNlbGwpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJN
YXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBVdGlsLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDggQEAg
cHVibGljOgogICAgICAgICAgICAgaWYgKCFmaWx0ZXIucnVsZU91dChiaXR3aXNlX2Nhc3Q8Qml0
cz4ocHJldmlvdXNDYW5kaWRhdGUpKQogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhw
cmV2aW91c0NhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+
aGFuZGxlKCkuY2VsbEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7Ci0gICAgICAgICAg
ICAgICAgcHJldmlvdXNDYW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7CiAg
ICAgICAgICAgICAgICAgcHJldmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZp
b3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBy
ZXZpb3VzUG9pbnRlcikpCisgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FuZGlkYXRlLT5o
YW5kbGUoKS5pc0xpdmVDZWxsKGhlYXBWZXJzaW9uLCBwcmV2aW91c1BvaW50ZXIpKQogICAgICAg
ICAgICAgICAgICAgICBmdW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTk5LDEwICs5OCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFzZXQuY29udGFp
bnMoY2FuZGlkYXRlKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIGNh
bmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLQogICAgICAgICBhdXRvIHRy
eVBvaW50ZXIgPSBbJl0gKHZvaWQqIHBvaW50ZXIpIHsKLSAgICAgICAgICAgIGlmIChjYW5kaWRh
dGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwocG9pbnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlk
YXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKGhlYXBWZXJzaW9uLCBwb2ludGVyKSkKICAgICAgICAg
ICAgICAgICBmdW5jKHBvaW50ZXIpOwogICAgICAgICB9OwogICAgIApAQCAtMTcwLDcgKzE2Nyw2
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtpbmQoKSAh
PSBIZWFwQ2VsbDo6SlNDZWxsKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAK
LSAgICAgICAgY2FuZGlkYXRlLT5mbGlwSWZOZWNlc3NhcnkoKTsKICAgICAgICAgaWYgKCFjYW5k
aWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwocG9pbnRlcikpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZl
cmlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwVmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1l
bnRhbFN3ZWVwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDcgKzUwLDYgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVNdWx0aXBsaWVyIAog
I2lmIFVTRShDRikKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAq
IGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCks
IHJ1bkxvb3ApCi0gICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQog
ewogfQogCkBAIC02Niw3ICs2NSw2IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxU
aW1lcigpCiAjZWxpZiBQTEFURk9STShFRkwpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVu
dGFsU3dlZXBlcihIZWFwKiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAg
LCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQogewogfQogCkBAIC04Niw3
ICs4NCw2IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxUaW1lcigpCiAjZWxpZiBV
U0UoR0xJQikKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhl
YXApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSkKLSAgICAsIG1fYmxvY2tzVG9Td2VlcCho
ZWFwLT5tX2Jsb2NrU25hcHNob3QpCiB7CiB9CiAKQEAgLTEyMSwxOSArMTE4LDIwIEBAIHZvaWQg
SW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3ZWVwKGRvdWJsZSAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fYmxvY2tzVG9Td2VlcC5jbGVhcigpOwogICAgIGNhbmNlbFRpbWVyKCk7CiB9
CiAKIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygpCiB7Ci0gICAgd2hp
bGUgKCFtX2Jsb2Nrc1RvU3dlZXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrID0gbV9ibG9ja3NUb1N3ZWVwLnRha2VMYXN0KCk7Ci0gICAgICAgIGJsb2Nr
LT5zZXRJc09uQmxvY2tzVG9Td2VlcChmYWxzZSk7Ci0KLSAgICAgICAgaWYgKCFibG9jay0+bmVl
ZHNTd2VlcGluZygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBibG9jayA9IG51bGxwdHI7CisgICAgCisgICAgZm9yICg7IG1fY3VycmVudEFsbG9j
YXRvcjsgbV9jdXJyZW50QWxsb2NhdG9yID0gbV9jdXJyZW50QWxsb2NhdG9yLT5uZXh0QWxsb2Nh
dG9yKCkpIHsKKyAgICAgICAgYmxvY2sgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPmZpbmRCbG9ja1Rv
U3dlZXAoKTsKKyAgICAgICAgaWYgKGJsb2NrKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIAorICAgIGlmIChibG9jaykgewogICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Mo
bV92bS0+aGVhcCk7CiAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwogICAgICAgICBtX3ZtLT5oZWFw
Lm9iamVjdFNwYWNlKCkuZnJlZU9yU2hyaW5rQmxvY2soYmxvY2spOwpAQCAtMTQ2LDExICsxNDQs
MTIgQEAgYm9vbCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKAogdm9pZCBJbmNy
ZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcoKQogewogICAgIHNjaGVkdWxlVGltZXIoKTsK
KyAgICBtX2N1cnJlbnRBbGxvY2F0b3IgPSBtX3ZtLT5oZWFwLm9iamVjdFNwYWNlKCkuZmlyc3RB
bGxvY2F0b3IoKTsKIH0KIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2Vl
cGluZygpCiB7Ci0gICAgbV9ibG9ja3NUb1N3ZWVwLmNsZWFyKCk7CisgICAgbV9jdXJyZW50QWxs
b2NhdG9yID0gbnVsbHB0cjsKICAgICBpZiAobV92bSkKICAgICAgICAgY2FuY2VsVGltZXIoKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDEyIEBACiAj
ZGVmaW5lIEluY3JlbWVudGFsU3dlZXBlcl9oCiAKICNpbmNsdWRlICJIZWFwVGltZXIuaCIKLSNp
bmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7Ci1jbGFzcyBNYXJrZWRCbG9jazsKK2NsYXNzIE1hcmtl
ZEFsbG9jYXRvcjsKIAogY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyIDogcHVibGljIEhlYXBUaW1l
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzY2hlZHVsZVRpbWVyKCk7CiAgICAgdm9pZCBjYW5jZWxUaW1lcigpOwog
ICAgIAotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIG1fYmxvY2tzVG9Td2VlcDsK
KyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fY3VycmVudEFsbG9jYXRvcjsKICNlbmRpZgogfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgJKHJl
dmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2Nh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw5ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgYm9vbCBpc05ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc05ld2x5QWxsb2Nh
dGVkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2VkKCkgeyByZXR1cm4gbV9pc01h
cmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9CisgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzTWFya2VkKEhlYXBDZWxsKikgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2Vk
Q29uY3VycmVudGx5KEhlYXBWZXJzaW9uLCBIZWFwQ2VsbCopIHsgcmV0dXJuIG1faXNNYXJrZWQu
bG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQogICAgIGJvb2wgaXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKCkgeyByZXR1cm4gaXNNYXJrZWQoKSB8fCBpc05ld2x5QWxsb2NhdGVkKCk7
IH0KICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCopIHsgcmV0dXJu
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOyB9Ci0gICAgYm9vbCBpc01hcmtlZER1cmluZ1dl
YWtWaXNpdGluZyhIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVybiBpc01hcmtlZCgpOyB9
CiAgICAgYm9vbCBpc0xpdmUoKSB7IHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsg
fQogICAgIAogICAgIGJvb2wgaGFzVmFsaWRDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWYWxp
ZENlbGw7IH0KQEAgLTEwNiw4ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgY29uc3QgQWxs
b2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRl
czsgfQogICAgIAotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KHVpbnQ2NF90KSB7IH0KLSAgICB2
b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcodWludDY0X3QpIHsgfQorICAgIHZvaWQg
YWJvdXRUb01hcmsoSGVhcFZlcnNpb24pIHsgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCB0ZXN0QW5kU2V0TWFya2VkKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50
YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJs
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlZNLmgi
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogTWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoSGVhcCogaGVhcCwgTWFy
a2VkU3BhY2UqIG1hcmtlZFNwYWNlLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiAgICAgOiBtX2N1cnJlbnRCbG9jaygwKQogICAgICwgbV9s
YXN0QWN0aXZlQmxvY2soMCkKLSAgICAsIG1fbmV4dEJsb2NrVG9Td2VlcChudWxscHRyKQogICAg
ICwgbV9jZWxsU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2VsbFNpemUpKQogICAgICwgbV9h
dHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCiAgICAgLCBtX2hlYXAoaGVhcCkKQEAgLTUwLDExICs1MCwx
MyBAQCBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoCiBib29sIE1hcmtl
ZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiB7CiAgICAgdW5zaWduZWQg
aXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPSAwOwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrID0gbV9ibG9ja0xpc3QuYmVnaW4oKTsKLSAgICB3aGlsZSAoYmxvY2spIHsKLSAgICAgICAg
YmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5leHQoKSk7Ci0gICAgICAgIGlmIChibG9j
aykKLSAgICAgICAgICAgIGJsb2NrLT5mbGlwSWZOZWNlc3NhcnkoKTsgLy8gRm9yY2VzIHVzIHRv
IHRvdWNoIHRoZSBtZW1vcnkgb2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVj
dC4KKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9ibG9ja3Muc2l6ZSgpOyAr
K2luZGV4KSB7CisgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3Nb
aW5kZXhdOworICAgICAgICBpZiAoYmxvY2spIHsKKyAgICAgICAgICAgIC8vIEZvcmNlcyB1cyB0
byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRoZSBibG9jaywgYnV0IGhhcyBubyBzZW1hbnRpYyBlZmZl
Y3QuCisgICAgICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAg
IGJsb2NrLT5ibG9jaygpLnJlc2V0VmVyc2lvbigpOworICAgICAgICB9CiAgICAgICAgICsraXRl
cnNTaW5jZUxhc3RUaW1lQ2hlY2s7CiAgICAgICAgIGlmIChpdGVyc1NpbmNlTGFzdFRpbWVDaGVj
ayA+PSBIZWFwOjpzX3RpbWVDaGVja1Jlc29sdXRpb24pIHsKICAgICAgICAgICAgIGRvdWJsZSBj
dXJyZW50VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CkBAIC02Niw4
NCArNjgsNzYgQEAgYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJldGlyZShNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jaykKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOyAv
LyBUaGlzIHdpbGwgYmUgY2FsbGVkIGluIHBhcmFsbGVsIGR1cmluZyBHQy4KLSAgICBpZiAoYmxv
Y2sgPT0gbV9jdXJyZW50QmxvY2spIHsKLSAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gdGhl
IG11dGF0b3IgaXMgcnVubmluZy4gV2UgZmluaXNoZWQgYSBmdWxsIEdDIGFuZCBtYXJrZWQgdG9v
IGZldyB0aGluZ3MKLSAgICAgICAgLy8gdG8gcmV0aXJlLiBUaGVuIHdlIHN0YXJ0ZWQgYWxsb2Nh
dGluZyBpbiB0aGlzIGJsb2NrLiBUaGVuIGEgYmFycmllciByYW4sIHdoaWNoIG1hcmtlZCBhbgot
ICAgICAgICAvLyBvYmplY3QgaW4gdGhpcyBibG9jaywgd2hpY2ggcHV0IGl0IG92ZXIgdGhlIHJl
dGlyZW1lbnQgdGhyZXNob2xkLiBJdCdzIE9LIHRvIHNpbXBseSBkbwotICAgICAgICAvLyBub3Ro
aW5nIGluIHRoYXQgY2FzZS4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoYmxvY2sg
PT0gbV9sYXN0QWN0aXZlQmxvY2spIHsKLSAgICAgICAgLy8gVGhpcyBjYW4gZWFzaWx5IGhhcHBl
biBkdXJpbmcgbWFya2luZy4gSXQgd291bGQgYmUgZWFzeSB0byBoYW5kbGUgdGhpcyBjYXNlLCBi
dXQgaXQncwotICAgICAgICAvLyBqdXN0IGFzIGVhc3kgdG8gaWdub3JlIGl0LgotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5pc09uTGlzdCgpKTsKLSAg
ICBpZiAoYmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVwKQotICAgICAgICBtX25leHRCbG9ja1Rv
U3dlZXAgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5leHQoKSk7Ci0gICAgYmxvY2stPnJlbW92
ZSgpOwotICAgIG1fcmV0aXJlZEJsb2Nrcy5wdXNoKGJsb2NrKTsKLX0KLQotTWFya2VkQmxvY2s6
OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaWx0ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2spCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRF
bXB0eUJsb2NrKCkKIHsKLSAgICBpZiAoYmxvY2sgPT0gbV9ibG9ja0xpc3QuZW5kKCkpCisgICAg
bV9lbXB0eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKKyAg
ICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBibG9jazsKLX0KLQotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNl
dE5leHRCbG9ja1RvU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCi17Ci0gICAgbV9u
ZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrKTsKKyAgICByZXR1cm4gbV9i
bG9ja3NbbV9lbXB0eUN1cnNvcl07CiB9CiAKIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxs
b2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwoKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBpZiAobV9jdXJyZW50QmxvY2spIHsK
LSAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCk7Cisg
ICAgaWYgKG1fY3VycmVudEJsb2NrKQogICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkQ29uc3Vt
ZUZyZWVMaXN0KCk7Ci0gICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50QmxvY2st
Pm5leHQoKSk7Ci0gICAgfQogICAgIAogICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotCi0g
ICAgUkVMRUFTRV9BU1NFUlQobV9uZXh0QmxvY2tUb1N3ZWVwICE9IG1fYmxvY2tMaXN0LmVuZCgp
KTsKLQotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9j
azo6SGFuZGxlKiYgYmxvY2sgPSBtX25leHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5l
eHQpIHsKLSAgICAgICAgbmV4dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQot
ICAgICAgICAvLyBJdCB3b3VsZCBiZSBzdXBlciB3ZWlyZCBpZiB0aGUgYmxvY2tzIHdlIGFyZSBz
d2VlcGluZyBoYXZlIGFueXRoaW5nIGFsbG9jYXRlZCBkdXJpbmcgdGhpcwotICAgICAgICAvLyBj
eWNsZS4KLSAgICAgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7Ci0g
ICAgICAgIAotICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRC
bG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOworICAgIG1fY3VycmVudEJsb2NrID0gbnVs
bHB0cjsKKyAgICAKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9
IChtX2NhbkFsbG9jYXRlIHwgbV9lbXB0eSkuZmluZEJpdChtX2FsbG9jYXRpb25DdXJzb3IsIHRy
dWUpOworICAgICAgICBpZiAobV9hbGxvY2F0aW9uQ3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0
byBzdHVtYmxlIG9uIGEgY29tcGxldGUtZnVsbCBibG9jay4gTWFya2luZyB0cmllcyB0byByZXRp
cmUgdGhlc2UsIGJ1dAotICAgICAgICAvLyB0aGF0IGFsZ29yaXRobSBpcyByYWN5IGFuZCBtYXkg
Zm9yZ2V0IHRvIGRvIGl0IHNvbWV0aW1lcy4KLSAgICAgICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRp
b25XaWxsRmFpbCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgp
KTsKLSAgICAgICAgICAgIGJsb2NrLT51bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKTsKLSAg
ICAgICAgICAgIEFTU0VSVChibG9jay0+aXNNYXJrZWQoKSk7Ci0gICAgICAgICAgICByZXRpcmUo
YmxvY2spOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgc2V0SXND
YW5BbGxvY2F0ZShtX2FsbG9jYXRpb25DdXJzb3IsIGZhbHNlKTsKIAotICAgICAgICBtX2N1cnJl
bnRCbG9jayA9IGJsb2NrOwotICAgICAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICBpZiAodm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVJbihtX2Jsb2Nr
c1ttX2FsbG9jYXRpb25DdXJzb3JdKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogICAgIAotICAgIGlmICghbV9mcmVlTGlzdCkgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9
IDA7Ci0gICAgICAgIHJldHVybiAwOworICAgIGlmIChPcHRpb25zOjpsb29rRm9yRW1wdHlCbG9j
a3NJbk90aGVyQWxsb2NhdG9ycygpKSB7CisgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jayA9IG1fbWFya2VkU3BhY2UtPmZpbmRFbXB0eUJsb2NrKCkpIHsKKyAgICAgICAgICAg
IGJsb2NrLT5zd2VlcCgpOworICAgICAgICAgICAgYmxvY2stPnJlbW92ZUZyb21BbGxvY2F0b3Io
KTsKKyAgICAgICAgICAgIGFkZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgICAgIHJldHVybiBhbGxv
Y2F0ZUluKGJsb2NrKTsKKyAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KIAordm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKQoreworICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4oYmxvY2sp
OworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKQoreworICAgIEFTU0VSVChibG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+aGFzQW55
TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOwor
ICAgIAorICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpI
YW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgCisgICAgLy8gSXQncyBwb3NzaWJsZSB0byBz
dHVtYmxlIG9uIGEgY29tcGxldGVseSBmdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGly
ZSB0aGVzZSwgYnV0CisgICAgLy8gdGhhdCBhbGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdl
dCB0byBkbyBpdCBzb21ldGltZXMuCisgICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFp
bCgpKSB7CisgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBi
bG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCk7CisgICAgICAgIEFTU0VSVCghYmxv
Y2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgQVNTRVJUKCFpc0VtcHR5KGJsb2NrKSk7Cisg
ICAgICAgIEFTU0VSVCghaXNDYW5BbGxvY2F0ZShibG9jaykpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisgICAgCisgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jazsKKyAgICBzZXRG
cmVlTGlzdChmcmVlTGlzdCk7CisgICAgCiAgICAgdm9pZCogcmVzdWx0OwogICAgIGlmIChtX2Zy
ZWVMaXN0LnJlbWFpbmluZykgewogICAgICAgICB1bnNpZ25lZCBjZWxsU2l6ZSA9IG1fY2VsbFNp
emU7CkBAIC0xNTUsNiArMTQ5LDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0
ZVdpdGhvdQogICAgICAgICByZXN1bHQgPSBoZWFkOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQpOworICAgIHNldElzRWRlbihtX2N1cnJlbnRCbG9jaywgdHJ1ZSk7CiAgICAgbV9t
YXJrZWRTcGFjZS0+ZGlkQWxsb2NhdGVJbkJsb2NrKG1fY3VycmVudEJsb2NrKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtMjI3LDggKzIyMiw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6
YWxsb2NhdGVTbG93Q2FzZUkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAg
ICBhZGRCbG9jayhibG9jayk7Ci0gICAgICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0
aG91dENvbGxlY3RpbmcoKTsKKyAgICByZXN1bHQgPSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBB
U1NFUlQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ5LDM3ICsyNDMsNzUg
QEAgc2l6ZV90IE1hcmtlZEFsbG9jYXRvcjo6YmxvY2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6
OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBl
clNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtl
ZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwgdGhpcywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVz
KTsKKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6
dHJ5Q3JlYXRlKCptX2hlYXApOworICAgIGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAKKyAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRCbG9jayhoYW5kbGUpOworICAg
IAorICAgIHJldHVybiBoYW5kbGU7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjphZGRCbG9j
ayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIHsKLSAgICBBU1NFUlQoIW1fY3VycmVudEJs
b2NrKTsKLSAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOworICAgIHNpemVfdCBpbmRleDsKKyAgICBp
ZiAobV9mcmVlQmxvY2tJbmRpY2VzLmlzRW1wdHkoKSkgeworICAgICAgICBpbmRleCA9IG1fYmxv
Y2tzLnNpemUoKTsKKworICAgICAgICBzaXplX3Qgb2xkQ2FwYWNpdHkgPSBtX2Jsb2Nrcy5jYXBh
Y2l0eSgpOworICAgICAgICBtX2Jsb2Nrcy5hcHBlbmQoYmxvY2spOworICAgICAgICBpZiAobV9i
bG9ja3MuY2FwYWNpdHkoKSAhPSBvbGRDYXBhY2l0eSkgeworICAgICAgICAgICAgZm9yRWFjaEJp
dFZlY3RvcigKKyAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rvcikgewor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvciwgdmVjdG9yLm51bUJpdHMo
KSA9PSBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIEFTU0VSVChtX2Jsb2Nrcy5jYXBhY2l0eSgpID4gb2xkQ2FwYWNpdHkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAg
IFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIHZlY3Rv
ci5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHkoKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50
YWtlTGFzdCgpOworICAgICAgICBBU1NFUlQoIW1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIG1f
YmxvY2tzW2luZGV4XSA9IGJsb2NrOworICAgIH0KKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9y
KAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRCh2ZWN0b3IsICF2ZWN0b3JbaW5kZXhdKTsKKyAgICAgICAgfSk7CisKKyAgICAv
LyBUaGlzIGlzIHRoZSBwb2ludCBhdCB3aGljaCB0aGUgYmxvY2sgbGVhcm5zIG9mIGl0cyBjZWxs
U2l6ZSgpIGFuZCBhdHRyaWJ1dGVzKCkuCisgICAgYmxvY2stPmRpZEFkZFRvQWxsb2NhdG9yKHRo
aXMsIGluZGV4KTsKICAgICAKLSAgICBtX2Jsb2NrTGlzdC5hcHBlbmQoYmxvY2spOwotICAgIHNl
dE5leHRCbG9ja1RvU3dlZXAoYmxvY2spOwotICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2Nr
KGJsb2NrKTsKKyAgICBzZXRJc0xpdmUoaW5kZXgsIHRydWUpOworICAgIHNldElzRW1wdHkoaW5k
ZXgsIHRydWUpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVtb3ZlQmxvY2soTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spCiB7Ci0gICAgaWYgKG1fY3VycmVudEJsb2NrID09IGJsb2Nr
KSB7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrID0gZmlsdGVyTmV4dEJsb2NrKG1fY3VycmVudEJs
b2NrLT5uZXh0KCkpOwotICAgICAgICBzZXRGcmVlTGlzdChGcmVlTGlzdCgpKTsKLSAgICB9Ci0g
ICAgaWYgKG1fbmV4dEJsb2NrVG9Td2VlcCA9PSBibG9jaykKLSAgICAgICAgc2V0TmV4dEJsb2Nr
VG9Td2VlcChtX25leHRCbG9ja1RvU3dlZXAtPm5leHQoKSk7CisgICAgQVNTRVJUKGJsb2NrLT5h
bGxvY2F0b3IoKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQobV9ibG9ja3NbYmxvY2stPmluZGV4KCld
ID09IGJsb2NrKTsKIAotICAgIGJsb2NrLT53aWxsUmVtb3ZlQmxvY2soKTsKLSAgICBtX2Jsb2Nr
TGlzdC5yZW1vdmUoYmxvY2spOworICAgIG1fYmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9IG51bGxw
dHI7CisgICAgbV9mcmVlQmxvY2tJbmRpY2VzLmFwcGVuZChibG9jay0+aW5kZXgoKSk7CisgICAg
CisgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0
b3IpIHsKKyAgICAgICAgICAgIHZlY3RvcltibG9jay0+aW5kZXgoKV0gPSBmYWxzZTsKKyAgICAg
ICAgfSk7CisgICAgCisgICAgYmxvY2stPmRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKIH0KIAog
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKIHsKLSAgICBpZiAobV9oZWFw
LT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pCi0gICAgICAgIG1fYmxv
Y2tMaXN0LnRha2VGcm9tKG1fcmV0aXJlZEJsb2Nrcyk7Ci0KKyAgICBpZiAoZmFsc2UpCisgICAg
ICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxs
b2NhdGluZyFcbiIpOwogICAgIEFTU0VSVCghbV9sYXN0QWN0aXZlQmxvY2spOwogICAgIGlmICgh
bV9jdXJyZW50QmxvY2spIHsKICAgICAgICAgQVNTRVJUKCFtX2ZyZWVMaXN0KTsKQEAgLTI5Miwy
OSArMzI0LDI1IEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCiAgICAg
bV9mcmVlTGlzdCA9IEZyZWVMaXN0KCk7CiB9CiAKLXZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXNl
dCgpCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewotICAg
IG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKLSAgICBtX2N1cnJlbnRCbG9jayA9IDA7CisgICAgbV9s
YXN0QWN0aXZlQmxvY2sgPSBudWxscHRyOworICAgIG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsK
ICAgICBzZXRGcmVlTGlzdChGcmVlTGlzdCgpKTsKIAotICAgIHNldE5leHRCbG9ja1RvU3dlZXAo
bV9ibG9ja0xpc3QuYmVnaW4oKSk7CisgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0gMDsKKyAgICBt
X2VtcHR5Q3Vyc29yID0gMDsKKyAgICBtX3NuYXBzaG90Q3Vyc29yID0gMDsKKyAgICAKKyAgICBt
X2VkZW4uY2xlYXJBbGwoKTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VJbW1vcnRh
bE9iamVjdHMoKSkpIHsKLSAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbmV4dDsKLSAgICAg
ICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiYgYmxvY2sgPSBtX25leHRCbG9ja1RvU3dlZXA7
IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgICAgIG5leHQgPSBmaWx0ZXJOZXh0Qmxv
Y2soYmxvY2stPm5leHQoKSk7Ci0KLSAgICAgICAgICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxv
Y2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAg
ICAgICBibG9jay0+emFwKGZyZWVMaXN0KTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0g
ICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IFRoaW5ncz8KICAgICB9CiB9CiAKIHZvaWQgTWFy
a2VkQWxsb2NhdG9yOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7Ci0gICAgbV9ibG9ja0xpc3Qu
dGFrZUZyb20obV9yZXRpcmVkQmxvY2tzKTsKICAgICBmb3JFYWNoQmxvY2soCiAgICAgICAgIFsm
XSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKICAgICAgICAgICAgIGJsb2NrLT5sYXN0
Q2hhbmNlVG9GaW5hbGl6ZSgpOwpAQCAtMzI2LDQgKzM1NCwxMjEgQEAgdm9pZCBNYXJrZWRBbGxv
Y2F0b3I6OnNldEZyZWVMaXN0KGNvbnN0IAogICAgIG1fZnJlZUxpc3QgPSBmcmVlTGlzdDsKIH0K
IAordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcoKQoreworICAgIGlmICgh
bV9sYXN0QWN0aXZlQmxvY2spCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJlZUxpc3QgPSBt
X2xhc3RBY3RpdmVCbG9jay0+cmVzdW1lQWxsb2NhdGluZygpOworICAgIG1fY3VycmVudEJsb2Nr
ID0gbV9sYXN0QWN0aXZlQmxvY2s7CisgICAgbV9sYXN0QWN0aXZlQmxvY2sgPSBudWxscHRyOwor
fQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24o
KQoreworICAgIC8vIE1hcmsgYml0cyBhcmUgc3RpY2t5IGFuZCBzbyBpcyBvdXIgc3VtbWFyeSBv
ZiBtYXJrIGJpdHMuIFdlIG9ubHkgY2xlYXIgdGhlc2UgZHVyaW5nIGZ1bGwKKyAgICAvLyBjb2xs
ZWN0aW9ucywgc28gaWYgeW91IHN1cnZpdmVkIHRoZSBsYXN0IGNvbGxlY3Rpb24geW91IHdpbGwg
c3Vydml2ZSB0aGUgbmV4dCBvbmUgc28gbG9uZworICAgIC8vIGFzIHRoZSBuZXh0IG9uZSBpcyBl
ZGVuLgorICAgIG1fbWFya2luZ05vdEVtcHR5LmNsZWFyQWxsKCk7CisgICAgbV9tYXJraW5nUmV0
aXJlZC5jbGVhckFsbCgpOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZW5kTWFya2luZygp
Cit7CisgICAgbV9hbGxvY2F0ZWQuY2xlYXJBbGwoKTsKKyAgICAKKyAgICAvLyBJdCdzIHN1cnBy
aXNpbmcgYW5kIGZydXN0cmF0aW5nIHRvIGNvbXByZWhlbmQsIGJ1dCB0aGUgZW5kLW9mLW1hcmtp
bmcgZmxpcCBkb2VzIG5vdCBuZWVkIHRvCisgICAgLy8ga25vdyB3aGF0IGtpbmQgb2YgY29sbGVj
dGlvbiBpdCBpcy4gVGhhdCBrbm93bGVkZ2UgaXMgYWxyZWFkeSBlbmNvZGVkIGluIHRoZSBtX21h
cmtpbmdYWVoKKyAgICAvLyB2ZWN0b3JzLgorICAgIAorICAgIGlmIChuZWVkc0Rlc3RydWN0aW9u
KCkpIHsKKyAgICAgICAgLy8gSWYgYmxvY2tzIG5lZWQgZGVzdHJ1Y3Rpb24gdGhlbiBub3RoaW5n
IGlzIGVtcHR5ISBUaGlzIGlzIGEgY29ycmVjdCBhc3NlcnRpb24gYnV0IG1heQorICAgICAgICAv
LyBiZWNvbWUgd3Jvbmcgb25jZSB3ZSBnbyBmdWxsIGNvbmN1cnJlbnQ6IHdoZW4gd2UgY3JlYXRl
IGEgbmV3IGJsb2NrLCBpdCB3aWxsIGZsaWNrZXIKKyAgICAgICAgLy8gaW50byB0aGUgZW1wdHkg
c2V0IGZvciBhIHRpbnkgbW9tZW50LiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBjb2RlIGlzIGxp
a2VseSB0byBiZSBydW4KKyAgICAgICAgLy8gaW4gc3RvcFRoZVdvcmxkLgorICAgICAgICBBU1NF
UlQobV9lbXB0eS5pc0VtcHR5KCkpOworICAgICAgICBtX2NhbkFsbG9jYXRlID0gbV9saXZlICYg
fm1fbWFya2luZ1JldGlyZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9l
bXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKKyAgICBtX2NhbkFsbG9jYXRlID0g
bV9saXZlICYgbV9tYXJraW5nTm90RW1wdHkgJiB+bV9tYXJraW5nUmV0aXJlZDsKKyAgICAKKyAg
ICBpZiAoZmFsc2UpIHsKKyAgICAgICAgZGF0YUxvZygiQml0cyBmb3IgIiwgbV9jZWxsU2l6ZSwg
IiwgIiwgbV9hdHRyaWJ1dGVzLCAiIGFmdGVyIGVuZE1hcmtpbmc6XG4iKTsKKyAgICAgICAgZHVt
cEJpdHMoV1RGOjpkYXRhRmlsZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9y
OjpzbmFwc2hvdEZvckVkZW5Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3NuYXBzaG90IHw9IG1fZWRl
bjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24o
KQoreworICAgIG1fc25hcHNob3QgPSBtX2xpdmU7Cit9CisKK01hcmtlZEJsb2NrOjpIYW5kbGUq
IE1hcmtlZEFsbG9jYXRvcjo6ZmluZEJsb2NrVG9Td2VlcCgpCit7CisgICAgbV9zbmFwc2hvdEN1
cnNvciA9IG1fc25hcHNob3QuZmluZEJpdChtX3NuYXBzaG90Q3Vyc29yLCB0cnVlKTsKKyAgICBp
ZiAobV9zbmFwc2hvdEN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBtX2Jsb2Nrc1ttX3NuYXBzaG90Q3Vyc29yXTsKK30KKwordm9p
ZCBNYXJrZWRBbGxvY2F0b3I6OnN3ZWVwKCkKK3sKKyAgICBtX3NuYXBzaG90LmZvckVhY2hTZXRC
aXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBtX2Jsb2Nrc1tp
bmRleF0tPnN3ZWVwKCk7CisgICAgICAgIH0pOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
c2hyaW5rKCkKK3sKKyAgICBtX2VtcHR5LmZvckVhY2hTZXRCaXQoCisgICAgICAgIFsmXSAoc2l6
ZV90IGluZGV4KSB7CisgICAgICAgICAgICBtX21hcmtlZFNwYWNlLT5mcmVlQmxvY2sobV9ibG9j
a3NbaW5kZXhdKTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjphc3Nl
cnRTbmFwc2hvdEVtcHR5KCkKK3sKKyAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKG1fc25hcHNob3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgZGF0YUxvZygiQXNzZXJ0aW9uIGZhaWxlZDogc25hcHNob3Qgbm90IGVt
cHR5IGluICIsICp0aGlzLCAiLlxuIik7CisgICAgZHVtcEJpdHMoKTsKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjoiLCBtX2Nl
bGxTaXplLCAiLyIsIG1fYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpk
dW1wQml0cyhQcmludFN0cmVhbSYgb3V0KQoreworICAgIHVuc2lnbmVkIG1heE5hbWVMZW5ndGgg
PSAwOworICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKKyAgICAgICAgWyZdIChGYXN0Qml0
VmVjdG9yJiwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RybGVuKG5hbWUpOworICAgICAgICAgICAgbWF4TmFtZUxlbmd0aCA9IHN0ZDo6bWF4KG1h
eE5hbWVMZW5ndGgsIGxlbmd0aCk7CisgICAgICAgIH0pOworICAgIAorICAgIGZvckVhY2hCaXRW
ZWN0b3JXaXRoTmFtZSgKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IsIGNvbnN0
IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIG91dC5wcmludCgiICAgICIsIG5hbWUsICI6ICIp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF4TmFtZUxlbmd0aCAtIHN0cmxlbihu
YW1lKTsgaS0tOykKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiKTsKKyAgICAgICAgICAg
IG91dC5wcmludCh2ZWN0b3IsICJcbiIpOworICAgICAgICB9KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9j
YXRvci5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksOSBAQAogI2luY2x1
ZGUgIkFsbG9jYXRvckF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1
ZGUgIk1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzcsNiArMzksMTM0IEBAIGNsYXNzIEhlYXA7CiBjbGFz
cyBNYXJrZWRTcGFjZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAorI2RlZmluZSBG
T1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChtYWNybykgXAorICAgIG1hY3JvKGxpdmUsIExp
dmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4g
Ki9cCisgICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhh
dCBoYXZlIG5vIGxpdmUgb2JqZWN0cyBhbmQgbm90aGluZyB0byBkZXN0cm95LiAqLyBcCisgICAg
bWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxsYmxvY2tzIHRoYXQg
YXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAgICBtYWNybyhjYW5BbGxvY2F0ZSwgQ2Fu
QWxsb2NhdGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNhbiBiZSBhbGxvY2F0ZWQg
aW4gcmlnaHQgbm93LiAqLyBcCisgICAgbWFjcm8oZWRlbiwgRWRlbikgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUgbGFzdCBHQy4gKi9cCisg
ICAgbWFjcm8oc25hcHNob3QsIFNuYXBzaG90KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhh
dCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9cCisgICAgXAor
ICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCisgICAgbWFjcm8o
bWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2Nr
cyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyhtYXJraW5nUmV0aXJlZCwgTWFy
a2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSByZXRpcmVkLiAq
LworCisvLyBOb3RlIHRoYXQgdGhpcyBjb2xsZWN0b3Igc3VwcG9ydHMgb3ZlcmxhcHBpbmcgYWxs
b2NhdG9yIHN0YXRlIHdpdGggbWFya2luZyBzdGF0ZSwgc2luY2UgaW4gYQorLy8gY29uY3VycmVu
dCBjb2xsZWN0b3IgeW91IGFsbG93IGFsbG9jYXRpb24gd2hpbGUgbWFya2luZyBpcyBydW5uaW5n
LiBTbyBpdCdzIGJlc3QgdG8gdmlzdWFsaXplIGEKKy8vIGZ1bGwgbXV0YWJsZS0+ZWRlbiBjb2xs
ZWN0LT5tdXRhdGUtPmZ1bGwgY29sbGVjdCBjeWNsZSBhbmQgc2VlIGhvdyB0aGUgYml0cyBhYm92
ZSBnZXQgYWZmZWN0ZWQuCisvLyBUaGUgZXhhbXBsZSBiZWxvdyB0cmllcyB0byBiZSBleGhhdXN0
aXZlIGFib3V0IHdoYXQgaGFwcGVucyB0byB0aGUgYml0cywgYnV0IG9taXRzIGEgbG90IG9mCisv
LyB0aGluZ3MgdGhhdCBoYXBwZW4gdG8gb3RoZXIgc3RhdGUuCisvLworLy8gQ3JlYXRlIGFsbG9j
YXRvcgorLy8gLSBhbGwgYml0cyBhcmUgZW1wdHkKKy8vIFN0YXJ0IGFsbG9jYXRpbmcgaW4gc29t
ZSBibG9jaworLy8gLSBhbGxvY2F0ZSB0aGUgYmxvY2sgYW5kIHNldCB0aGUgbGl2ZSBiaXQuCisv
LyAtIHRoZSBlbXB0eSBiaXQgZm9yIHRoZSBibG9jayBmbGlja2VycyBvbiBhbmQgdGhlbiBnZXRz
IGltbWVkaWF0ZWx5IGNsZWFyZWQgYnkgc3dlZXBpbmcuCisvLyAtIHNldCB0aGUgZWRlbiBiaXQu
CisvLyBGaW5pc2ggYWxsb2NhdGluZyBpbiB0aGF0IGJsb2NrCisvLyAtIHNldCB0aGUgYWxsb2Nh
dGVkIGJpdC4KKy8vIERvIHRoYXQgdG8gYSBsb3Qgb2YgYmxvY2tzIGFuZCB0aGVuIHN0YXJ0IGFu
IGVkZW4gY29sbGVjdGlvbi4KKy8vIC0gYmVnaW5NYXJraW5nKCkgaGFzIG5vdGhpbmcgdG8gZG8u
CisvLyAtIGJ5IGRlZmF1bHQgd2UgaGF2ZSBjbGVhciBtYXJraW5nTm90RW1wdHkvbWFya2luZ1Jl
dGlyZWQgYml0cy4KKy8vIC0gbWFya2luZyBidWlsZHMgdXAgbWFya2luZ05vdEVtcHR5L21hcmtp
bmdSZXRpcmVkIGJpdHMuCisvLyBXZSBkbyBlbmRNYXJraW5nKCkKKy8vIC0gY2xlYXIgYWxsIGFs
bG9jYXRlZCBiaXRzLgorLy8gLSBmb3IgZGVzdHJ1Y3RvciBibG9ja3M6IGNhbkFsbG9jYXRlID0g
bGl2ZSAmIH5tYXJraW5nUmV0aXJlZAorLy8gLSBmb3Igbm9uLWRlc3RydWN0b3IgYmxvY2tzOgor
Ly8gICAgICAgZW1wdHkgPSBsaXZlICYgfm1hcmtpbmdOb3RFbXB0eQorLy8gICAgICAgY2FuQWxs
b2NhdGUgPSBsaXZlICYgbWFya2luZ05vdEVtcHR5ICYgfm1hcmtpbmdSZXRpcmVkCisvLyBTbmFw
c2hvdHRpbmcuCisvLyAtIHNuYXBzaG90IHw9IGVkZW4KKy8vIFByZXBhcmUgZm9yIGFsbG9jYXRp
b24uCisvLyAtIGNsZWFyIGVkZW4KKy8vIEZpbmlzaCBjb2xsZWN0aW9uLgorLy8gQWxsb2NhdGUg
aW4gc29tZSBibG9jayB0aGF0IGhhZCBzb21lIGZyZWUgYW5kIHNvbWUgbGl2ZSBvYmplY3RzLgor
Ly8gLSBjbGVhciB0aGUgY2FuQWxsb2NhdGUgYml0CisvLyAtIGNsZWFyIHRoZSBzbmFwc2hvdCBi
aXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdAorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUg
YWxsb2NhdGVkIGJpdCkuCisvLyBBbGxvY2F0ZSBpbiBzb21lIGJsb2NrIHRoYXQgd2FzIGNvbXBs
ZXRlbHkgZW1wdHkuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSBiaXQKKy8vIC0gY2xlYXIgdGhlIHNu
YXBzaG90IGJpdAorLy8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcg
KHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBBbGxvY2F0ZSBpbiBzb21lIGJsb2NrIHRoYXQg
d2FzIGNvbXBsZXRlbHkgZW1wdHkgaW4gYW5vdGhlciBhbGxvY2F0b3IuCisvLyAtIGNsZWFyIHRo
ZSBlbXB0eSBiaXQKKy8vIC0gY2xlYXIgYWxsIGJpdHMgaW4gdGhhdCBhbGxvY2F0b3IKKy8vIC0g
c2V0IHRoZSBsaXZlIGJpdCBpbiBhbm90aGVyIGFsbG9jYXRvciBhbmQgdGhlIGVtcHR5IGJpdC4K
Ky8vIC0gY2xlYXIgdGhlIGVtcHR5LCBzbmFwc2hvdCBiaXRzLgorLy8gLSBzZXQgdGhlIGVkZW4g
Yml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBT
dGFydCBhIGZ1bGwgY29sbGVjdGlvbi4KKy8vIC0gYmVnaW5NYXJraW5nKCkgY2xlYXJzIG1hcmtp
bmdOb3RFbXB0eSwgbWFya2luZ1JldGlyZWQKKy8vIC0gdGhlIGhlYXAgdmVyc2lvbiBpcyBpbmNy
ZW1lbnRlZAorLy8gLSBtYXJraW5nIHJlYnVpbGRzIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5ncmV0
aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0
ZWQgYml0cy4KKy8vIC0gc2V0IGNhbkFsbG9jYXRlL2VtcHR5IHRoZSBzYW1lIHdheSBhcyBpbiBl
ZGVuIGNvbGxlY3Rpb24uCisvLyBTbmFwc2hvdHRpbmcuCisvLyAtIHNuYXBzaG90IHw9IGxpdmUK
Ky8vIHByZXBhcmUgZm9yIGFsbG9jYXRpb24uCisvLyAtIGNsZWFyIGVkZW4uCisvLyBGaW5pc2gg
Y29sbGVjdGlvbi4KKy8vCisvLyBOb3RpY2UgaG93IGluIHRoaXMgc2NoZW1lLCB0aGUgZW1wdHkv
Y2FuQWxsb2NhdGUgc3RhdGUgc3RheXMgc2VwYXJhdGUgZnJvbSB0aGUgbWFya2luZ05vdEVtcHR5
LworLy8gbWFya2luZ1JldGlyZWQgc3RhdGUuIFRoaXMgaXMgb25lIHN0ZXAgdG93YXJkcyBoYXZp
bmcgc2VwYXJhdGVkIGFsbG9jYXRpb24gYW5kIG1hcmtpbmcgc3RhdGUuCisvLworLy8gQWZ0ZXIg
dGhpcywgd2UganVzdCBuZWVkIHRvIGFuc3dlciB0aGUgcXVlc3Rpb246IHdoYXQgZG9lcyBhbiBv
YmplY3QgYWxsb2NhdGVkIGR1cmluZyBlZGVuIEdDCisvLyBsb29rIGxpa2UgdG8gdGhlIEdDPwor
Ly8KKy8vIEkndmUgY29tZSB1cCB3aXRoIHR3byBjb21wZWxsaW5nIGFuc3dlcnMuCisvLworLy8g
MS4gQUxMT0NBVEUgQkxBQ0sKKy8vCisvLyBJIHRoaW5rIHRoYXQgdGhlIGVhc2llc3QgYW5zd2Vy
IGlzIHRvIGFsbG9jYXRlIHRoZSBvYmplY3Qgd2hpdGUgYW5kIHRoZW4KKy8vIGltbWVkaWF0ZWx5
IG1hcmsgaXQuIFRoaXMgbWFrZXMgdGhlIG9iamVjdCBiZWhhdmUgYXMgaWYgaXQgd2FzIGFsbG9j
YXRlZCBqdXN0IGJlZm9yZSB0aGUgc3RhcnQKKy8vIG9mIEdDIGFuZCBpdCB3YXMgb24gdGhlIHN0
YWNrIGF0IHRoZSBiZWdpbm5pbmcgb2YgR0MuIFdlIHdvdWxkbid0IGhhdmUgdG8gZG8gYW55dGhp
bmcgZGlmZmVyZW50CisvLyB3aXRoIHRoZSB2YXJpb3VzIGJsb2NrIGJpdHMgd2hlbiBhbGxvY2F0
aW5nIGR1cmluZyBHQzogd2UgY291bGQgc3RpbGwgc2V0IGVkZW4gYW5kIGFsbG9jYXRlZAorLy8g
c2luY2UgdGhleSB3aWxsIGJlIGNsZWFyZWQgYW55d2F5LgorLy8KKy8vIEJ1dCB0aGlzIG1lYW5z
IHRoYXQgdGhlIG9iamVjdCB3b24ndCBiZSBlbGlnaWJsZSBmb3IgZnJlZWluZyB1bnRpbCB0aGUg
bmV4dCBmdWxsIEdDLiBJZGVhbGx5CisvLyB3ZSdkIG1ha2UgdGhlIG9iamVjdCBpcyBlbGlnaWJs
ZSBmb3IgZnJlZWluZyBhdCB0aGUgbmV4dCBlZGVuIEdDLiBUaGVyZSdzIGEgYnVuY2ggb2YgdGhp
bmdzIHdlCisvLyBjb3VsZCBkbyB0byBtYWtlIHRoaXMgaGFwcGVuLiBIZXJlIGFyZSBzb21lIGlk
ZWFzOgorLy8KKy8vIC0gSW50cm9kdWNlIGEgbmV3IENlbGxTdGF0ZSwgY2FsbGVkIEZsb2F0LCB3
aGljaCBtZWFucyB0aGF0IHRoZSBvYmplY3Qgd2FzIGFsbG9jYXRlZCBkdXJpbmcgdGhlCisvLyAg
IEdDLiBXZSB3b3VsZCBtYWtlIHN1cmUgdGhhdCBtYXJraW5nIGRvZXMgbm90aGluZyBmb3IgRmxv
YXRzLiBUaGlzIHdvdWxkIG1ha2UgbWFya2luZyBhIHRpbnkKKy8vICAgYml0IG1vcmUgZXhwZW5z
aXZlLiBXZSB3b3VsZCBtYWtlIHN1cmUgdGhhdCB0aGUgYmFycmllciByZWNvZ25pemVzIHN0b3Jl
cyB0byBhIEZsb2F0IHRoZSBzYW1lCisvLyAgIHdheSB0aGF0IGl0IHNlZXMgYSBzdG9yZSB0byBP
bGRCbGFjazogaXQgcHV0cyB0aGUgb2JqZWN0IG9uIHRoZSBtYXJrIHN0YWNrLiBGbG9hdHMgd291
bGQgYmUKKy8vICAgcHV0IG9uIHRoZSBtYXJrIHN0YWNrIGFzIEZsb2F0R3JleSB0byBpbmRpY2F0
ZSB0aGF0IHRoZXkgd2lsbCBiZSBzY2FubmVkIGJ5IHRoZSBHQyBidXQgdGhhdAorLy8gICB0aGV5
IGFyZW4ndCBhY3R1YWxseSBtYXJrZWQuCisvLworLy8gICBOb3RlIHRoYXQgdGhpcyBpbXBsaWVz
IGhhdmluZyB0byBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRob3NlIGNlbGxzIGZyb20gRmxvYXQgdG8g
c29tZXRoaW5nIGVsc2UKKy8vICAgYXQgdGhlIGVuZCBvZiBHQy4gIEknbSBub3Qgc3VyZSB0aGF0
IHRoaXMgaXMgc28gZ3JlYXQuCisvLworLy8gLSBNYXJrIHRoZSBvYmplY3RzIGFmdGVyIGFsbG9j
YXRpb24sIGJ1dCBhbHNvIHNldCBzb21lIG90aGVyIGJpdHMgdG8gaW5kaWNhdGUgdGhhdCB0aGUg
dGhvc2UKKy8vICAgb2JqZWN0cyBzaG91bGQgYmUgdW5tYXJrZWQgYXQgdGhlIGVuZCBvZiB0aGUg
R0MuCisvLworLy8gRWl0aGVyIG9mIHRoZXNlIGFwcHJvYWNoZXMgd291bGQgbWFrZSBjb2xsZWN0
aW9ucyBtb3JlIGV4cGVuc2l2ZSwgYnV0IGl0IGZlZWxzIGxpa2UgdGhlIGxhdHRlcgorLy8gYXBw
cm9hY2ggd291bGQgYmUgYSBwcm9maXRhYmxlIG9wdGltaXphdGlvbi4gSSdtIGFsc28gcmVhbGx5
IGdldHRpbmcgd29ycmllZCBhYm91dCBob3cgdGhpcyBHQworLy8gZXhwZXJpZW5jZXMgYmFja3dh
cmRzIHRpbWUgdHJhdmVsLCB3aXRoIGFsbCB0aGUgcmVtYXJraW5nIG9mIHRoaW5ncyBsaWtlIG5l
dyBvYmplY3RzIGFuZAorLy8gd2hhdG5vdC4KKy8vCisvLyAyLiBBTExPQ0FURSBXSElURQorLy8K
Ky8vIEkgZG9uJ3Qga25vdyBpZiB0aGlzIGlzIHNvdW5kLCBidXQgaWYgaXQgd2FzIHRoZW4gaXQg
d291bGQgYmUgdGhlIG9wdGltYWwgc29sdXRpb24uIEFsbG9jYXRpb24KKy8vIHdvdWxkIHdvcmsg
YXMgbm93IGFuZCBjb25zZXF1ZW50bHksIGV2ZXJ5dGhpbmcgd2Uga25vdyBhYm91dCB3aGF0IHdh
cyBhbGxvY2F0ZWQgZHVyaW5nIGEgR0MgaXMKKy8vIGZvcmdvdHRlbiBhdCB0aGUgZW5kIG9mIEdD
LiBCdXQgdGhhdCdzIGZpbmUuIEVuZCBvZiBHQyBtdXN0IHJlc2NhbiBhbnkgaGVhcCBsb2NhdGlv
bnMgdGhhdCBnb3QKKy8vIHN0b3JlZCBpbnRvIGFuZCBpdCBtdXN0IHJlc2NhbiB0aGUgc3RhY2su
IFNvLCB3aGl0ZSBvYmplY3RzIGFsbG9jYXRlZCBkdXJpbmcgR0Mgd291bGQgZ2V0CisvLyBtYXJr
ZWQgaWYgdGhleSBzb21laG93IHN1cnZpdmVkLgorLy8KKy8vIFRoaXMgbWVhbnMgdGhhdCBmb3Ig
ZXhhbXBsZSBpZiB0aGVyZSBpcyBhIGZpZWxkIHRoYXQgb2Z0ZW4gZ2V0cyBzdG9yZWQgdG8gd2l0
aCBuZXcgb2JqZWN0cywgdGhlCisvLyBHQyB3aWxsIG5vdCBzZWUgYWxsIG9mIHRoZSB2YWx1ZXMg
aW4gdGhhdCBmaWVsZCBidXQgaW5zdGVhZCBpdCB3b3VsZCBwb2xsIHRoYXQgZmllbGQsIGhvcGVm
dWxseQorLy8gc29tZXdoYXQgcmFyZWx5LiBXZSBjYW4gbWFrZSBpdCB2ZXJ5IHJhcmUgYnkgb25s
eSBpbmZyZXF1ZW50bHkgZG9uYXRpbmcgZnJvbSB0aGUgbWFpbiB0aHJlYWQncworLy8gc2xvdCB2
aXNpdG9yIHRvIGFueSBvZiB0aGUgb3RoZXJzLiBTbywgd2Ugd291bGQgb25seSBtYXJrIHNvbWUg
b2YgdGhlIG5ldyBvYmplY3RzIHRoYXQgZ290CisvLyBzdG9yZWQgaW50byB0aGF0IGZpZWxkLiBJ
dCBhbHNvIG1lYW5zIHRoYXQgYW55IG9iamVjdCBhbGxvY2F0ZWQgZHVyaW5nIHRoZSBHQyB0aGF0
IGRpZG4ndCBnZXQKKy8vIHN0b3JlZCBpbnRvIGFueSBvYmplY3QgdGhhdCB3YXMgbGl2ZSBzaW5j
ZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIEdDIHdvdWxkIHNpbXBseSBkaXNhcHBlYXIuIFRoaXMKKy8v
IG1lYW5zIG11Y2ggbGVzcyByZXNjYW5uaW5nIHRoYW4gYW55IG9mIHRoZSBvdGhlciBwcm9wb3Nh
bHMuCisvLworLy8gSSByZWFsbHkgd2FudCB0byBnbyB3aXRoIHRoZSBhbGxvY2F0ZS13aGl0ZSBh
cHByb2FjaCwgYnV0IEkgbmVlZCB0byB0aGluayBtb3JlIGRlZXBseSBhYm91dCBpdAorLy8gYmVm
b3JlIEkgY29tbWl0IHRvIGl0LgorCiBjbGFzcyBNYXJrZWRBbGxvY2F0b3IgewogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKQEAgLTQ2LDkgKzE3NiwxNiBAQCBwdWJs
aWM6CiAKICAgICBNYXJrZWRBbGxvY2F0b3IoSGVhcCosIE1hcmtlZFNwYWNlKiwgc2l6ZV90IGNl
bGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7CiAgICAgdm9pZCBsYXN0Q2hhbmNl
VG9GaW5hbGl6ZSgpOwotICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxv
Y2F0aW9uKCk7CiAgICAgdm9pZCBzdG9wQWxsb2NhdGluZygpOwogICAgIHZvaWQgcmVzdW1lQWxs
b2NhdGluZygpOworICAgIHZvaWQgYmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAg
ICB2b2lkIGVuZE1hcmtpbmcoKTsKKyAgICB2b2lkIHNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24o
KTsKKyAgICB2b2lkIHNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICB2b2lkIHN3ZWVw
KCk7CisgICAgdm9pZCBzaHJpbmsoKTsKKyAgICB2b2lkIGFzc2VydFNuYXBzaG90RW1wdHkoKTsK
ICAgICBzaXplX3QgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NlbGxTaXplOyB9CiAgICAg
Y29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlczsgfQogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uOyB9CkBAIC03Miw2
ICsyMDksNDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUp
OwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYmxvY2tTaXplRm9yQnl0ZXMoc2l6ZV90KTsKKyAg
ICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwg
Y2FwaXRhbEJpdE5hbWUpICAgICBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXpl
X3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAor
ICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sp
IGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpKTsgfSBc
CisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFs
dWUpIHsgbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNl
dElzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZh
bHVlKSB7IHNldElzICMjIGNhcGl0YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0g
XAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3Qg
aW5kZXgsIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRB
bmRDaGVjayhpbmRleCwgdmFsdWUpOyB9IFwKKyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMg
IyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUp
IHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhibG9jay0+aW5k
ZXgoKSwgdmFsdWUpOyB9CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VE
X0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0FD
Q0VTU09SUworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hC
aXRWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FU
T1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAg
ZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NB
VE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyk7CisjdW5kZWYgTUFSS0VEX0FM
TE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZShjb25zdCBGdW5jJiBmdW5j
KQorICAgIHsKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXRO
YW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSwg
I2NhcGl0YWxCaXROYW1lKTsKKyAgICAgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQo
TUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0spOworI3VuZGVmIE1BUktFRF9BTExPQ0FUT1Jf
QklUX0NBTExCQUNLCisgICAgfQorICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogbmV4dEFsbG9j
YXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEFsbG9jYXRvcjsgfQorICAgIAorICAgIC8vIE1h
cmtlZFNwYWNlIGNhbGxzIHRoaXMgZHVyaW5nIGluaXQuCisgICAgdm9pZCBzZXROZXh0QWxsb2Nh
dG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKSB7IG1fbmV4dEFsbG9jYXRvciA9IGFsbG9j
YXRvcjsgfQorICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRFbXB0eUJsb2NrKCk7
CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEJsb2NrVG9Td2VlcCgpOworICAg
IAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZHVtcEJpdHMo
UHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgpKTsKICAgIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgTWFya2VkQmxvY2s7CkBAIC04MiwyNSArMjU5LDM3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOwogICAgIHZvaWQqIHRyeUFsbG9j
YXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCk7CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5
QWxsb2NhdGVCbG9jaygpOworICAgIHZvaWQqIHRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6Okhh
bmRsZSopOworICAgIHZvaWQqIGFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgdm9p
ZCByZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIAogICAgIHZvaWQgc2V0RnJlZUxp
c3QoY29uc3QgRnJlZUxpc3QmKTsKICAgICAKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaWx0
ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSopOwotICAgIHZvaWQgc2V0TmV4dEJsb2Nr
VG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKik7Ci0gICAgCiAgICAgRnJlZUxpc3QgbV9mcmVl
TGlzdDsKKyAgICAKKyAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tzOwor
ICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mcmVlQmxvY2tJbmRpY2VzOworICAgIAorI2RlZmluZSBN
QVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXRO
YW1lKSBcCisgICAgRmFzdEJpdFZlY3RvciBtXyAjIyBsb3dlckJpdE5hbWU7CisgICAgRk9SX0VB
Q0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04p
CisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04KKyAgICAKKyAgICAvLyBB
ZnRlciB5b3UgZG8gc29tZXRoaW5nIHRvIGEgYmxvY2sgYmFzZWQgb24gb25lIG9mIHRoZXNlIGN1
cnNvcnMsIHlvdSBjbGVhciB0aGUgYml0IGluIHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0
dmVjdG9yIGFuZCBsZWF2ZSB0aGUgY3Vyc29yIHdoZXJlIGl0IHdhcy4KKyAgICBzaXplX3QgbV9h
bGxvY2F0aW9uQ3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBp
cyBhIGNhbmRpZGF0ZSBmb3IgYWxsb2NhdGlvbi4KKyAgICBzaXplX3QgbV9lbXB0eUN1cnNvciB7
IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9y
IGVtcHR5IGFsbG9jYXRpb24gKGFsbG9jYXRpbmcgaW4gZW1wdHkgYmxvY2tzKS4KKyAgICBzaXpl
X3QgbV9zbmFwc2hvdEN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRo
YXQgaXMgYSBjYW5kaWRhdGUgZm9yIGluY3JlbWVudGFsIHN3ZWVwaW5nLgorICAgIAogICAgIE1h
cmtlZEJsb2NrOjpIYW5kbGUqIG1fY3VycmVudEJsb2NrOwogICAgIE1hcmtlZEJsb2NrOjpIYW5k
bGUqIG1fbGFzdEFjdGl2ZUJsb2NrOwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fbmV4dEJs
b2NrVG9Td2VlcDsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSwg
QmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fYmxvY2tMaXN0Owot
ICAgIFNlbnRpbmVsTGlua2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4gbV9yZXRpcmVkQmxvY2tzOworCiAgICAgTG9j
ayBtX2xvY2s7CiAgICAgdW5zaWduZWQgbV9jZWxsU2l6ZTsKICAgICBBbGxvY2F0b3JBdHRyaWJ1
dGVzIG1fYXR0cmlidXRlczsKICAgICBIZWFwKiBtX2hlYXA7CiAgICAgTWFya2VkU3BhY2UqIG1f
bWFya2VkU3BhY2U7CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX25leHRBbGxvY2F0b3I7CiB9Owog
CiBpbmxpbmUgcHRyZGlmZl90IE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdCgpCkBA
IC0xNDksMjAgKzMzOCwxMiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6
YWxsCiAgICAgcmV0dXJuIGhlYWQ7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
cmVzdW1lQWxsb2NhdGluZygpCi17Ci0gICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9jaykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5yZXN1bWVB
bGxvY2F0aW5nKCk7Ci0gICAgbV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVCbG9jazsKLSAg
ICBtX2xhc3RBY3RpdmVCbG9jayA9IDA7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PiBpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogewotICAgIG1fYmxvY2tMaXN0LmZvckVhY2goZnVuY3Rvcik7Ci0gICAgbV9y
ZXRpcmVkQmxvY2tzLmZvckVhY2goZnVuY3Rvcik7CisgICAgbV9saXZlLmZvckVhY2hTZXRCaXQo
CisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBmdW5jdG9yKG1fYmxv
Y2tzW2luZGV4XSk7CisgICAgICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDIw
NjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0
aWMgY29uc3QgYm9vbCBjb21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGljIHNpemVfdCBiYWxh
bmNlOwogCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAm
IGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0
IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCitNYXJrZWRCbG9jazo6SGFuZGxlKiBN
YXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXApCiB7CiAgICAgaWYgKGNvbXB1dGVCYWxh
bmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4LDI2ICs0OSwxNyBAQCBNYXJrZWRCbG9j
azo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQogICAgICAgICBzY3JpYmJsZShibG9ja1NwYWNl
LCBibG9ja1NpemUpOwotICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGFsbG9jYXRvciwgY2Vs
bFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOworICAgIHJldHVybiBuZXcgSGFuZGxlKGhl
YXAsIGJsb2NrU3BhY2UpOwogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYg
aGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3Qg
QWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcywgdm9pZCogYmxvY2tTcGFjZSkKLSAgICA6
IG1fYXRvbXNQZXJDZWxsKChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZSkKLSAg
ICAsIG1fZW5kQXRvbShhdG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxKQotICAgICwg
bV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgLCBtX3N0YXRlKE5ldykgLy8gQWxsIGNlbGxz
IHN0YXJ0IG91dCB1bm1hcmtlZC4KLSAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKLSAgICAs
IG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+dm0oKSwgQ2VsbENvbnRhaW5lcigpKQorTWFy
a2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIHZvaWQqIGJsb2NrU3BhY2UpCisg
ICAgOiBtX3dlYWtTZXQoaGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkpCiB7CiAgICAgbV9ibG9j
ayA9IG5ldyAoTm90TnVsbCwgYmxvY2tTcGFjZSkgTWFya2VkQmxvY2soKmhlYXAudm0oKSwgKnRo
aXMpOwogICAgIAogICAgIG1fd2Vha1NldC5zZXRDb250YWluZXIoKm1fYmxvY2spOwogICAgIAog
ICAgIGhlYXAuZGlkQWxsb2NhdGVCbG9jayhibG9ja1NpemUpOwotICAgIEhFQVBfTE9HX0JMT0NL
X1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgQVNTRVJUKGFsbG9jYXRvcik7Ci0gICAgaWYg
KG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQotICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVj
dGlvbik7CiB9CiAKIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQpAQCAtNzgsNiArNzAs
NyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlOjp+SGFuZGxlKCkKICAgICAgICAgaWYgKCEoYmFsYW5j
ZSAlIDEwKSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJh
bGFuY2UsICJcbiIpOwogICAgIH0KKyAgICByZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAgICAgbV9i
bG9jay0+fk1hcmtlZEJsb2NrKCk7CiAgICAgZmFzdEFsaWduZWRGcmVlKG1fYmxvY2spOwogICAg
IGhlYXAuZGlkRnJlZUJsb2NrKGJsb2NrU2l6ZSk7CkBAIC04NSwzOCArNzgsMjggQEAgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAKIE1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhWTSYg
dm0sIEhhbmRsZSYgaGFuZGxlKQogICAgIDogbV9uZWVkc0Rlc3RydWN0aW9uKGhhbmRsZS5uZWVk
c0Rlc3RydWN0aW9uKCkpCi0gICAgLCBtX3ZlcnNpb24odm0uaGVhcC5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKSkKKyAgICAsIG1fdmVyc2lvbihNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb24pCiAgICAg
LCBtX2hhbmRsZShoYW5kbGUpCiAgICAgLCBtX3ZtKCZ2bSkKIHsKLSAgICB1bnNpZ25lZCBjZWxs
c1BlckJsb2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGhhbmRsZS5jZWxsU2l6ZSgp
OwotICAgIGRvdWJsZSBtYXJrQ291bnRCaWFzID0gLShPcHRpb25zOjptaW5NYXJrZWRCbG9ja1V0
aWxpemF0aW9uKCkgKiBjZWxsc1BlckJsb2NrKTsKLSAgICAKLSAgICAvLyBUaGUgbWFyayBjb3Vu
dCBiaWFzIHNob3VsZCBiZSBjb21mb3J0YWJseSB3aXRoaW4gdGhpcyByYW5nZS4KLSAgICBSRUxF
QVNFX0FTU0VSVChtYXJrQ291bnRCaWFzID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDE2X3Q+OjptaW4oKSkpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtDb3Vu
dEJpYXMgPCAwKTsKLSAgICAKLSAgICBtX21hcmtDb3VudEJpYXMgPSBzdGF0aWNfY2FzdDxpbnQx
Nl90PihtYXJrQ291bnRCaWFzKTsKLSAgICAKLSAgICBtX2JpYXNlZE1hcmtDb3VudCA9IG1fbWFy
a0NvdW50QmlhczsgLy8gVGhpcyBtZWFucyB3ZSBoYXZlbid0IG1hcmtlZCBhbnl0aGluZyB5ZXQu
CiB9CiAKLXRlbXBsYXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0
cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1v
ZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRl
ZE1vZGU+Cit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2Rl
LCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1v
ZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2Ny
aWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlB
bGxvY2F0ZWRNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpGbGlwTW9kZSBmbGlwTW9kZT4KIEZy
ZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoKQogewotICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBBU1NFUlQoYmxv
Y2tTdGF0ZSA9PSBOZXcgfHwgYmxvY2tTdGF0ZSA9PSBNYXJrZWQpOwotICAgIEFTU0VSVCghKGRl
c3RydWN0aW9uTW9kZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBT
d2VlcE9ubHkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghKGRlc3RydWN0aW9uTW9kZSA9PSBEb2Vz
Tm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsKICAgICAKLSAg
ICBhc3NlcnRGbGlwcGVkKCk7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOworCiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+YmxvY2soKTsKICAg
ICAKLSAgICBib29sIGlzTmV3QmxvY2sgPSBibG9ja1N0YXRlID09IE5ldzsKLSAgICBib29sIGlz
RW1wdHlCbG9jayA9ICFibG9jay5oYXNBbnlNYXJrZWQoKQotICAgICAgICAmJiBuZXdseUFsbG9j
YXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZAotICAgICAgICAmJiBkZXN0cnVj
dGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbjsKLSAgICBpZiAoT3B0aW9uczo6dXNl
QnVtcEFsbG9jYXRvcigpICYmIChpc05ld0Jsb2NrIHx8IGlzRW1wdHlCbG9jaykpIHsKLSAgICAg
ICAgQVNTRVJUKGJsb2NrLm1fbWFya3MuaXNFbXB0eSgpKTsKKyAgICBpZiAoZmFsc2UpCisgICAg
ICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Bl
Y2lhbGl6ZWRTd2VlcCFcbiIpOworICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2Nh
dG9yKCkKKyAgICAgICAgJiYgZW1wdHlNb2RlID09IElzRW1wdHkKKyAgICAgICAgJiYgbmV3bHlB
bGxvY2F0ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQpIHsKKyAgICAgICAgQVNT
RVJUKGZsaXBNb2RlID09IE5lZWRzRmxpcCk7CiAgICAgICAgIAogICAgICAgICBjaGFyKiBzdGFy
dE9mTGFzdENlbGwgPSBzdGF0aWNfY2FzdDxjaGFyKj4oY2VsbEFsaWduKGJsb2NrLmF0b21zKCkg
KyBtX2VuZEF0b20gLSAxKSk7CiAgICAgICAgIGNoYXIqIHBheWxvYWRFbmQgPSBzdGFydE9mTGFz
dENlbGwgKyBjZWxsU2l6ZSgpOwpAQCAtMTI0LDcgKzEwNywxMCBAQCBGcmVlTGlzdCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIGNoYXIqIHBheWxvYWRCZWdpbiA9IGJp
dHdpc2VfY2FzdDxjaGFyKj4oYmxvY2suYXRvbXMoKSArIGZpcnN0QXRvbSgpKTsKICAgICAgICAg
aWYgKHNjcmliYmxlTW9kZSA9PSBTY3JpYmJsZSkKICAgICAgICAgICAgIHNjcmliYmxlKHBheWxv
YWRCZWdpbiwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7Ci0gICAgICAgIG1fc3RhdGUgPSAo
KHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7Cisg
ICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICAgICAgc2V0
SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYWxsb2NhdG9yLT5z
ZXRJc0VtcHR5KHRoaXMsIHRydWUpOwogICAgICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlz
dDo6YnVtcChwYXlsb2FkRW5kLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsKICAgICAgICAg
aWYgKGZhbHNlKQogICAgICAgICAgICAgZGF0YUxvZygiUXVpY2tseSBzd2VwdCBibG9jayAiLCBS
YXdQb2ludGVyKHRoaXMpLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0
dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTM3LDE0
ICsxMjMsMTQgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAg
IEZyZWVDZWxsKiBoZWFkID0gMDsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIGZvciAoc2l6
ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkg
ewotICAgICAgICBpZiAoYmxvY2tTdGF0ZSA9PSBNYXJrZWQKLSAgICAgICAgICAgICYmIChibG9j
ay5tX21hcmtzLmdldChpKQorICAgICAgICBpZiAoZW1wdHlNb2RlID09IE5vdEVtcHR5CisgICAg
ICAgICAgICAmJiAoKGZsaXBNb2RlID09IERvZXNOb3ROZWVkRmxpcCAmJiBibG9jay5tX21hcmtz
LmdldChpKSkKICAgICAgICAgICAgICAgICB8fCAobmV3bHlBbGxvY2F0ZWRNb2RlID09IEhhc05l
d2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChpKSkpKQogICAgICAgICAgICAg
Y29udGludWU7Ci0KKyAgICAgICAgCiAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYmxvY2suYXRvbXMoKVtpXSk7CiAKLSAgICAgICAgaWYg
KGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGJsb2NrU3RhdGUgIT0gTmV3
KQorICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVzdHJ1Y3Rpb24gJiYgZW1w
dHlNb2RlID09IE5vdEVtcHR5KQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2Vs
bCktPmNhbGxEZXN0cnVjdG9yKCp2bSgpKTsKIAogICAgICAgICBpZiAoc3dlZXBNb2RlID09IFN3
ZWVwVG9GcmVlTGlzdCkgewpAQCAtMTYzLDcgKzE0OSwxMyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRy
OwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6Omxpc3QoaGVhZCwgY291bnQgKiBj
ZWxsU2l6ZSgpKTsKLSAgICBtX3N0YXRlID0gKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3Qg
PyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVl
TGlzdCkKKyAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIHVu
c2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gY2VsbFNp
emUoKTsKKyAgICAgICAgaWYgKGNvdW50ID09IGNlbGxzUGVyQmxvY2spCisgICAgICAgICAgICBt
X2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVlKTsKKyAgICB9CiAgICAgaWYgKGZhbHNl
KQogICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcigmYmxv
Y2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwg
bV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwogICAgIHJldHVybiByZXN1bHQ7CkBA
IC0xNzEsMTUgKzE2MywyMCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFs
aXplCiAKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKFN3ZWVwTW9kZSBzd2Vl
cE1vZGUpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgbV9hbGxvY2F0b3ItPnNldElz
U25hcHNob3QodGhpcywgZmFsc2UpOwogICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RS
QU5TSVRJT04odGhpcyk7Ci0KICAgICBtX3dlYWtTZXQuc3dlZXAoKTsKIAogICAgIGlmIChzd2Vl
cE1vZGUgPT0gU3dlZXBPbmx5ICYmIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90
TmVlZERlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKIAorICAgIGlmIChV
TkxJS0VMWShtX2lzRnJlZUxpc3RlZCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7CisgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOworICAg
IH0KKyAgICAKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yLT5pc0FsbG9jYXRlZCh0aGlzKSk7Cisg
ICAgCiAgICAgaWYgKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9u
KQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8TmVlZHNEZXN0
cnVjdGlvbj4oc3dlZXBNb2RlKTsKICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJs
ZU1vZGU8RG9lc05vdE5lZWREZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsKQEAgLTE4OSw0NyArMTg2
LDU5IEBAIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUKIEZyZWVMaXN0
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVw
TW9kZSBzd2VlcE1vZGUpCiB7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCi0gICAgICAg
IHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9k
ZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7Ci0gICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3Rh
dGVBbmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9kZSk7
CisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1v
ZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVt
cHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIERvbnRTY3JpYmJsZT4oc3dlZXBNb2RlKTsKIH0KIAog
dGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KLUZyZWVMaXN0IE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVw
TW9kZSkKK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1w
dHlNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0g
ICAgY2FzZSBOZXc6Ci0gICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0
KTsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3Qs
IGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
PigpOwotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAgLy8gSGFwcGVucyB3aGVuIGEgYmxv
Y2sgdHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxsb2NhdGVkLgotICAgICAgICBBU1NFUlQoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAg
IGNhc2UgQWxsb2NhdGVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNlIE1hcmtlZDoKLSAgICAgICAgaWYg
KG1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwg
U3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlB
bGxvY2F0ZWQ+KCkKLSAgICAgICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBT
d2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRl
ZD4oKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0g
U3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtl
ZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05v
dEhhdmVOZXdseUFsbG9jYXRlZD4oKQotICAgICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2Vl
cDxNYXJrZWQsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNO
b3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRnJlZUxpc3QoKTsKKyAgICAvLyBJdCdz
IG5vdCBvYnZpb3VzLCBidXQgdGhpcyBpcyB0aGUgb25seSB3YXkgdG8ga25vdyBpZiB0aGUgYmxv
Y2sgaXMgZW1wdHkuIEl0J3MgdGhlIG9ubHkKKyAgICAvLyBiaXQgdGhhdCBjYXB0dXJlcyB0aGVz
ZSBjYXZlYXRzOgorICAgIC8vIC0gSXQncyB0cnVlIHdoZW4gdGhlIGJsb2NrIGlzIGZyZXNobHkg
YWxsb2NhdGVkLgorICAgIC8vIC0gSXQncyB0cnVlIGlmIHRoZSBibG9jayBoYWQgYmVlbiBzd2Vw
dCBpbiB0aGUgcGFzdCwgYWxsIGRlc3RydWN0b3JzIHdlcmUgY2FsbGVkLCBhbmQgdGhhdAorICAg
IC8vICAgc3dlZXAgcHJvdmVkIHRoYXQgdGhlIGJsb2NrIGlzIGVtcHR5LgorICAgIC8vIC0gSXQn
cyBmYWxzZSBpZiB0aGVyZSBhcmUgYW55IGRlc3RydWN0b3JzIHRoYXQgbmVlZCB0byBiZSBjYWxs
ZWQsIGV2ZW4gaWYgdGhlIGJsb2NrIGhhcyBubworICAgIC8vICAgbGl2ZSBvYmplY3RzLgorICAg
IGlmIChtX2FsbG9jYXRvci0+aXNFbXB0eSh0aGlzKSkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVs
cGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQ8SXNFbXB0eSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3Jp
YmJsZU1vZGU+KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3
bHlBbGxvY2F0ZWQ8Tm90RW1wdHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlPihzd2Vl
cE1vZGUpOworfQorCit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1w
dHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgc3dlZXBN
b2RlKQoreworICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKQorICAgICAgICByZXR1cm4gc3dlZXBI
ZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxl
TW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVs
cGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1v
ZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7Cit9CisKK3RlbXBsYXRl
PE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIERlc3RydWN0aW9uTW9k
ZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3Jp
YmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFs
bG9jYXRlZE1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNl
bGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQoreworICAgIGlmIChzd2VlcE1vZGUg
PT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RGbGlw
TW9kZTxlbXB0eU1vZGUsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJs
ZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxl
Y3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJs
ZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKK30KKwordGVtcGxhdGU8TWFya2VkQmxvY2s6
OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBN
b2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KK0ZyZWVMaXN0IE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RmxpcE1vZGUoKQoreworICAgIGlmIChu
ZWVkc0ZsaXAoKSkKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBz
d2VlcE1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1v
ZGUsIE5lZWRzRmxpcD4oKTsKKyAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxlbXB0eU1vZGUs
IHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVk
TW9kZSwgRG9lc05vdE5lZWRGbGlwPigpOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7
Ci0gICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICAK
LSAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOwotICAgIG1fc3RhdGUg
PSBNYXJrZWQ7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pc0ZyZWVMaXN0ZWQpOworICAgIG1faXNG
cmVlTGlzdGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c2V0SXNG
cmVlTGlzdGVkKCkKK3sKKyAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCBmYWxzZSk7
CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSB0cnVlOwogfQogCiBjbGFzcyBTZXROZXdseUFsbG9jYXRl
ZEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKQEAgLTI1MiwyNiAr
MjYxLDE3IEBAIHByaXZhdGU6CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9j
YXRpbmcoY29uc3QgRnJlZUxpc3QmIGZyZWVMaXN0KQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgp
OwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CisgICAgaWYgKGZh
bHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnN0b3BBbGxvY2F0aW5nIVxuIik7CisgICAgQVNTRVJUKCFhbGxvY2F0b3IoKS0+aXNB
bGxvY2F0ZWQodGhpcykpOwogCi0gICAgaWYgKG1fc3RhdGUgPT0gTWFya2VkKSB7Ci0gICAgICAg
IC8vIElmIHRoZSBibG9jayBpcyBpbiB0aGUgTWFya2VkIHN0YXRlIHRoZW4gd2Uga25vdyB0aGF0
IG9uZSBvZiB0aGVzZQotICAgICAgICAvLyBjb25kaXRpb25zIGhvbGRzOgotICAgICAgICAvLwot
ICAgICAgICAvLyAtIEl0IHdhcyBub3QgdXNlZCBmb3IgYWxsb2NhdGlvbiBkdXJpbmcgdGhlIHBy
ZXZpb3VzIGFsbG9jYXRpb24gY3ljbGUuCi0gICAgICAgIC8vICAgSXQgbWF5IGhhdmUgZGVhZCBv
YmplY3RzLCBhbmQgd2Ugb25seSBrbm93IHRoZW0gdG8gYmUgZGVhZCBieSB0aGUKLSAgICAgICAg
Ly8gICBmYWN0IHRoYXQgdGhlaXIgbWFyayBiaXRzIGFyZSB1bnNldC4KLSAgICAgICAgLy8KLSAg
ICAgICAgLy8gLSBTb21lb25lIGhhZCBhbHJlYWR5IGRvbmUgc3RvcEFsbG9jYXRpbmcoKSwgZm9y
IGV4YW1wbGUgYmVjYXVzZSBvZgotICAgICAgICAvLyAgIGhlYXAgaXRlcmF0aW9uLCBhbmQgdGhl
eSBoYWQgYWxyZWFkeSAKLSAgICAgICAgLy8gSGVuY2UgaWYgdGhlIGJsb2NrIGlzIE1hcmtlZCB3
ZSBuZWVkIHRvIGxlYXZlIGl0IE1hcmtlZC4KKyAgICBpZiAoIWlzRnJlZUxpc3RlZCgpKSB7Cisg
ICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBlaXRoZXIgZGlkbid0IHVzZSB0aGlzIGJsb2Nr
IGF0IGFsbCBmb3IgYWxsb2NhdGlvbiBzaW5jZSBsYXN0IEdDLAorICAgICAgICAvLyBvciBzb21l
b25lIGhhZCBhbHJlYWR5IGRvbmUgc3RvcEFsbG9jYXRpbmcoKSBiZWZvcmUuCiAgICAgICAgIEFT
U0VSVChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0gICAgCiAgICAg
Ly8gUm9sbCBiYWNrIHRvIGEgY29oZXJlbnQgc3RhdGUgZm9yIEhlYXAgaW50cm9zcGVjdGlvbi4g
Q2VsbHMgbmV3bHkKICAgICAvLyBhbGxvY2F0ZWQgZnJvbSBvdXIgZnJlZSBsaXN0IGFyZSBub3Qg
Y3VycmVudGx5IG1hcmtlZCwgc28gd2UgbmVlZCBhbm90aGVyCiAgICAgLy8gd2F5IHRvIHRlbGwg
d2hhdCdzIGxpdmUgdnMgZGVhZC4gCkBAIC0yOTAsMTEgKzI5MCwxMiBAQCB2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nCiAgICAgICAgICAgICBjbGVhck5ld2x5QWxsb2Nh
dGVkKGNlbGwpOwogICAgICAgICB9KTsKICAgICAKLSAgICBtX3N0YXRlID0gTWFya2VkOworICAg
IG1faXNGcmVlTGlzdGVkID0gZmFsc2U7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
bGFzdENoYW5jZVRvRmluYWxpemUoKQogeworICAgIGFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRl
ZCh0aGlzLCBmYWxzZSk7CiAgICAgbV9ibG9jay0+Y2xlYXJNYXJrcygpOwogICAgIG1fd2Vha1Nl
dC5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCkBAIC0zMDQsMTQgKzMwNSwxMSBAQCB2b2lkIE1h
cmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpCiAKIEZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwot
ICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0KLSAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBNYXJrZWQpOworICAgIEFTU0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVk
KHRoaXMpKTsKKyAgICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKIAogICAgIGlmICghbV9uZXds
eUFsbG9jYXRlZCkgewotICAgICAgICAvLyBXZSBkaWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSAibmV3
bHkgYWxsb2NhdGVkIiBiaXRtYXAuIFRoYXQgbWVhbnMgd2Ugd2VyZSBhbHJlYWR5IE1hcmtlZAot
ICAgICAgICAvLyB3aGVuIHdlIGxhc3Qgc3RvcHBlZCBhbGxvY2F0aW9uLCBzbyByZXR1cm4gYW4g
ZW1wdHkgZnJlZSBsaXN0IGFuZCBzdGF5IGluIHRoZSBNYXJrZWQgc3RhdGUuCisgICAgICAgIC8v
IFRoaXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVkIHRoZSBibG9jayB3aGVuIHdlIHN0
b3BwZWQgYWxsb2NhdGlvbi4KICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAgICAgfQogCkBA
IC0zNDUsNDAgKzM0MywyOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hGcmVl
Q2VsCiAgICAgfQogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnkoKQotewot
ICAgIGZsaXBJZk5lY2Vzc2FyeSh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKTsK
LX0KLQotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnkoKQotewotICAg
IGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KCk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OmZsaXBJ
Zk5lY2Vzc2FyeVNsb3coKQotewotICAgIEFTU0VSVChuZWVkc0ZsaXAoKSk7Ci0gICAgQVNTRVJU
KCF2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOwotICAgIGNsZWFyTWFya3Mo
KTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Ns
b3coKQordm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KEhlYXBWZXJzaW9uIGhlYXBW
ZXJzaW9uKQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5n
KCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgaWYgKG5lZWRzRmxpcCgp
KQotICAgICAgICBjbGVhck1hcmtzKCk7CisgICAgaWYgKG5lZWRzRmxpcChoZWFwVmVyc2lvbikp
IHsKKyAgICAgICAgY2xlYXJNYXJrcyhoZWFwVmVyc2lvbik7CisgICAgICAgIC8vIFRoaXMgbWVh
bnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2su
CisgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2lu
Z05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgfQogfQogCiB2b2lkIE1hcmtlZEJsb2Nr
OjpjbGVhck1hcmtzKCkKIHsKKyAgICBjbGVhck1hcmtzKHZtKCktPmhlYXAub2JqZWN0U3BhY2Uo
KS52ZXJzaW9uKCkpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKEhlYXBWZXJz
aW9uIGhlYXBWZXJzaW9uKQorewogICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKICAgICBjbGVhckhh
c0FueU1hcmtlZCgpOwotICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgdHJ1ZSBhdCB0aGUgZW5kIG9m
IHRoZSBtYXJrIHBoYXNlLiBXZSBzZXQgaXQgbm93IHRvCi0gICAgLy8gYXZvaWQgYW4gZXh0cmEg
cGFzcyB0byBkbyBzbyBsYXRlci4KLSAgICBoYW5kbGUoKS5tX3N0YXRlID0gTWFya2VkOwogICAg
IFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgbV92ZXJzaW9uID0gdm0oKS0+aGVhcC5vYmpl
Y3RTcGFjZSgpLnZlcnNpb24oKTsKKyAgICBtX3ZlcnNpb24gPSBoZWFwVmVyc2lvbjsKIH0KIAog
I2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTM5OCwzMSArMzg0LDM4IEBAIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkKICAgICByZXR1cm4gbV9ibG9jay0+bmVlZHNGbGlwKCk7
CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6d2lsbFJlbW92ZUJsb2NrKCkKK2Jvb2wg
TWFya2VkQmxvY2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHApCiB7Ci0gICAgZmxpcElmTmVjZXNz
YXJ5KCk7CisgICAgcmV0dXJuIGlzTWFya2VkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJz
aW9uKCksIHApOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVl
TGlzdCgpCitib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRl
ZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBI
RUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAotICAgIEFTU0VSVCht
X3N0YXRlID09IEZyZWVMaXN0ZWQpOworICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7Cit9CiAKLSAgICBt
X3N0YXRlID0gQWxsb2NhdGVkOworYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxs
b2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoreworICAgIHJldHVybiBpc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7Cit9
CisKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0KCkKK3sKKyAg
ICBpZiAoZmFsc2UpCisgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0IVxuIik7CisgICAgQVNTRVJUKGlzRnJl
ZUxpc3RlZCgpKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOworICAgIGFsbG9jYXRvcigp
LT5zZXRJc0FsbG9jYXRlZCh0aGlzLCB0cnVlKTsKIH0KIAogc2l6ZV90IE1hcmtlZEJsb2NrOjpt
YXJrQ291bnQoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX21hcmtz
LmNvdW50KCk7CisgICAgcmV0dXJuIG5lZWRzRmxpcCgpID8gMCA6IG1fbWFya3MuY291bnQoKTsK
IH0KIAogYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0VtcHR5KCkKIHsKLSAgICBmbGlwSWZO
ZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQgJiYgIWJsb2NrKCkuaGFz
QW55TWFya2VkKCkgJiYgbV93ZWFrU2V0LmlzRW1wdHkoKSAmJiAoIW1fbmV3bHlBbGxvY2F0ZWQg
fHwgbV9uZXdseUFsbG9jYXRlZC0+aXNFbXB0eSgpKTsKKyAgICByZXR1cm4gbV9hbGxvY2F0b3It
PmlzRW1wdHkodGhpcyk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFySGFzQW55TWFya2Vk
KCkKQEAgLTQzMiwzMyArNDI1LDYzIEBAIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFySGFzQW55TWFy
a2VkKCkKIAogdm9pZCBNYXJrZWRCbG9jazo6bm90ZU1hcmtlZFNsb3coKQogewotICAgIGhhbmRs
ZSgpLm1fYWxsb2NhdG9yLT5yZXRpcmUoJmhhbmRsZSgpKTsKKyAgICBoYW5kbGUoKS5hbGxvY2F0
b3IoKS0+YXRvbWljU2V0QW5kQ2hlY2tJc01hcmtpbmdSZXRpcmVkKCZoYW5kbGUoKSwgdHJ1ZSk7
CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEpTQwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZW1v
dmVGcm9tQWxsb2NhdG9yKCkKK3sKKyAgICBpZiAoIW1fYWxsb2NhdG9yKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgbV9hbGxvY2F0b3ItPnJlbW92ZUJsb2NrKHRoaXMpOworfQogCi1uYW1l
c3BhY2UgV1RGIHsKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3Io
TWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQo
bV9pbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBBU1NF
UlQoIW1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4ID0gaW5kZXg7CisgICAgbV9hbGxv
Y2F0b3IgPSBhbGxvY2F0b3I7CisgICAgCisgICAgc2l6ZV90IGNlbGxTaXplID0gYWxsb2NhdG9y
LT5jZWxsU2l6ZSgpOworICAgIG1fYXRvbXNQZXJDZWxsID0gKGNlbGxTaXplICsgYXRvbVNpemUg
LSAxKSAvIGF0b21TaXplOworICAgIG1fZW5kQXRvbSA9IGF0b21zUGVyQmxvY2sgLSBtX2F0b21z
UGVyQ2VsbCArIDE7CisgICAgCisgICAgbV9hdHRyaWJ1dGVzID0gYWxsb2NhdG9yLT5hdHRyaWJ1
dGVzKCk7CiAKLXVzaW5nIG5hbWVzcGFjZSBKU0M7CisgICAgaWYgKG1fYXR0cmlidXRlcy5jZWxs
S2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJp
YnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CisgICAgCisgICAg
dW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBjZWxs
U2l6ZTsKKyAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFya2VkQmxv
Y2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jayk7CisgICAgCisgICAgLy8gVGhlIG1hcmsg
Y291bnQgYmlhcyBzaG91bGQgYmUgY29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2UuCisgICAg
UkVMRUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQxNl90Pjo6bWluKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtYXJr
Q291bnRCaWFzIDwgMCk7CisgICAgCisgICAgLy8gVGhpcyBtZWFucyB3ZSBoYXZlbid0IG1hcmtl
ZCBhbnl0aGluZyB5ZXQuCisgICAgYmxvY2soKS5tX2JpYXNlZE1hcmtDb3VudCA9IGJsb2NrKCku
bV9tYXJrQ291bnRCaWFzID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFya0NvdW50Qmlhcyk7Cit9
CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBNYXJrZWRCbG9jazo6Qmxv
Y2tTdGF0ZSBibG9ja1N0YXRlKQordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVG
cm9tQWxsb2NhdG9yKCkKIHsKLSAgICBzd2l0Y2ggKGJsb2NrU3RhdGUpIHsKLSAgICBjYXNlIE1h
cmtlZEJsb2NrOjpOZXc6Ci0gICAgICAgIG91dC5wcmludCgiTmV3Iik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpGcmVlTGlzdGVkOgotICAgICAgICBvdXQucHJpbnQo
IkZyZWVMaXN0ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6OkFs
bG9jYXRlZDoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvY2F0ZWQiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAgb3V0LnByaW50KCJNYXJr
ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIEFTU0VSVChtX2luZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkpOworICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CisgICAgCisgICAgbV9pbmRleCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisgICAgbV9hbGxvY2F0b3IgPSBu
dWxscHRyOworfQorCitib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFw
Q2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gaXNMaXZlKHZtKCktPmhlYXAub2JqZWN0U3BhY2Uo
KS52ZXJzaW9uKCksIGNlbGwpOworfQorCitib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2
ZUNlbGwoY29uc3Qgdm9pZCogcCkKK3sKKyAgICByZXR1cm4gaXNMaXZlQ2VsbCh2bSgpLT5oZWFw
Lm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBwKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV1RGCit9
IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwyMCArNDQsNiBAQCBjbGFzcyBN
YXJrZWRBbGxvY2F0b3I7CiB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogdHlwZWRlZiB1aW50MzJf
dCBIZWFwVmVyc2lvbjsKIAotLy8gU2V0IHRvIGxvZyBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBibG9j
a3MuCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05TIDAKLQotI2lmIEhF
QVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05TCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NU
QVRFX1RSQU5TSVRJT04oaGFuZGxlKSBkbyB7ICAgICAgICAgICAgXAotICAgICAgICBkYXRhTG9n
RiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgICAgICIlczolZCAlczogYmxvY2sgJXMgPSAlcCwgJWRcbiIsICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXywgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICAgICAgI2hhbmRsZSwgJihoYW5kbGUpLT5ibG9jaygpLCAo
aGFuZGxlKS0+bV9zdGF0ZSk7ICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLSNlbHNlCi0jZGVm
aW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oaGFuZGxlKSAoKHZvaWQpMCkKLSNl
bmRpZgotCiAvLyBBIG1hcmtlZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25lZCBjb250YWluZXIgZm9y
IGhlYXAtYWxsb2NhdGVkIG9iamVjdHMuCiAvLyBPYmplY3RzIGFyZSBhbGxvY2F0ZWQgd2l0aGlu
IGNlbGxzIG9mIHRoZSBtYXJrZWQgYmxvY2suIEZvciBhIGdpdmVuCiAvLyBtYXJrZWQgYmxvY2ss
IGFsbCBjZWxscyBoYXZlIHRoZSBzYW1lIHNpemUuIE9iamVjdHMgc21hbGxlciB0aGFuIHRoZQpA
QCAtNzYsOCArNjIsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIYW5k
bGU7CiBwdWJsaWM6Ci0gICAgZW51bSBCbG9ja1N0YXRlIDogdWludDhfdCB7IE5ldywgRnJlZUxp
c3RlZCwgQWxsb2NhdGVkLCBNYXJrZWQgfTsKLSAgICAgICAgCiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBhdG9tU2l6ZSA9IDE2OyAvLyBieXRlcwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxv
Y2tTaXplID0gMTYgKiBLQjsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrTWFzayA9IH4o
YmxvY2tTaXplIC0gMSk7IC8vIGJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgpAQCAt
ODYsMTIgKzcwLDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpY19hc3NlcnQoIShNYXJrZWRCbG9j
azo6YXRvbVNpemUgJiAoTWFya2VkQmxvY2s6OmF0b21TaXplIC0gMSkpLCAiTWFya2VkQmxvY2s6
OmF0b21TaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7CiAgICAgc3RhdGljX2Fzc2VydCgh
KE1hcmtlZEJsb2NrOjpibG9ja1NpemUgJiAoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSAtIDEpKSwg
Ik1hcmtlZEJsb2NrOjpibG9ja1NpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4iKTsKLQorICAg
IAogICAgIHN0cnVjdCBWb2lkRnVuY3RvciB7CiAgICAgICAgIHR5cGVkZWYgdm9pZCBSZXR1cm5U
eXBlOwogICAgICAgICB2b2lkIHJldHVyblZhbHVlKCkgeyB9CiAgICAgfTsKLQorICAgIAogICAg
IGNsYXNzIENvdW50RnVuY3RvciB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIHNpemVf
dCBSZXR1cm5UeXBlOwpAQCAtMTA2LDEwICs5MCw5IEBAIHB1YmxpYzoKICAgICAgICAgbXV0YWJs
ZSBSZXR1cm5UeXBlIG1fY291bnQ7CiAgICAgfTsKICAgICAgICAgCi0gICAgY2xhc3MgSGFuZGxl
IDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPEhhbmRsZT4geworICAgIGNsYXNzIEhhbmRs
ZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7CiAgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgRG91Ymx5TGlua2VkTGlz
dE5vZGU8SGFuZGxlPjsKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgc3Ry
dWN0IFZlcmlmeU1hcmtlZDsKQEAgLTEzMCw2ICsxMTMsMTUgQEAgcHVibGljOgogICAgICAgICBW
TSogdm0oKSBjb25zdDsKICAgICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwogICAgICAgICAgICAg
CisgICAgICAgIC8vIFN3ZWVwaW5nIGVuc3VyZXMgdGhhdCBkZXN0cnVjdG9ycyBnZXQgY2FsbGVk
IGFuZCByZW1vdmVzIHRoZSBibG9jayBmcm9tIHRoZSBzbmFwc2hvdC4KKyAgICAgICAgLy8gU3dl
ZXBpbmcgdG8gZnJlZSBsaXN0IGFsc28gcmVtb3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgZW1wdHkg
c2V0LCBpZiBpdCB3YXMgaW4gdGhhdCBzZXQuCisgICAgICAgIC8vIFN3ZWVwaW5nIHdpdGggU3dl
ZXBPbmx5IG1heSBhZGQgdGhpcyBibG9jayB0byB0aGUgZW1wdHkgc2V0LCBpZiB0aGUgYmxvY2sg
aXMgZm91bmQgdG8KKyAgICAgICAgLy8gYmUgZW1wdHkuCisgICAgICAgIC8vCisgICAgICAgIC8v
IE5vdGUgdGhhdCB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZW1wdHkgYml0IHJlZmxl
Y3RzIHJlYWxpdHkuIElmIGl0J3Mgbm90IHNldAorICAgICAgICAvLyBhbmQgdGhlIGJsb2NrIGlz
IGZyZXNobHkgY3JlYXRlZCwgdGhlbiB3ZSdsbCBtYWtlIHRoZSBtaXN0YWtlIG9mIHJ1bm5pbmcg
ZGVzdHJ1Y3RvcnMgaW4KKyAgICAgICAgLy8gdGhlIGJsb2NrLiBJZiBpdCdzIG5vdCBzZXQgYW5k
IHRoZSBibG9jayBoYXMgbm90aGluZyBtYXJrZWQsIHRoZW4gd2UnbGwgbWFrZSB0aGUKKyAgICAg
ICAgLy8gbWlzdGFrZSBvZiBtYWtpbmcgYSBwb3AgZnJlZWxpc3QgcmF0aGVyIHRoYW4gYSBidW1w
IGZyZWVsaXN0LgogICAgICAgICBlbnVtIFN3ZWVwTW9kZSB7IFN3ZWVwT25seSwgU3dlZXBUb0Zy
ZWVMaXN0IH07CiAgICAgICAgIEZyZWVMaXN0IHN3ZWVwKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7
CiAgICAgICAgIApAQCAtMTUzLDggKzE0NSw2IEBAIHB1YmxpYzoKICAgICAgICAgLy8gYW5kIHdh
cyBzdWNjZXNzZnVsbHkgY2xlYXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICAgICAgICBib29s
IGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgICAgICAgICAgIAotICAgICAgICB2b2lkIGZsaXBG
b3JFZGVuQ29sbGVjdGlvbigpOwotICAgICAgICAgICAgCiAgICAgICAgIHNpemVfdCBjZWxsU2l6
ZSgpOwogICAgICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29u
c3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0OwpAQCAtMTY0
LDkgKzE1NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBtYXJrQ291bnQoKTsKICAgICAg
ICAgc2l6ZV90IHNpemUoKTsKICAgICAgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBpc0xp
dmUoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CisgICAgICAgIGlubGluZSBib29sIGlz
TGl2ZUNlbGwoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKKwogICAgICAgICBib29sIGlzTGl2
ZShjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCop
OworCiAgICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxs
Kik7CisgICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBj
b25zdCBIZWFwQ2VsbCopOwogICAgICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNOZXdseUFsbG9j
YXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgc2V0TmV3bHlBbGxvY2F0ZWQoY29uc3Qg
dm9pZCopOwpAQCAtMTc0LDMxICsxNjksMjUgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAg
Ym9vbCBoYXNBbnlOZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9uZXdseUFsbG9j
YXRlZDsgfQogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBbGxvY2F0ZWQoKSBjb25zdDsK
LSAgICAgICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzRnJlZUxpc3Rl
ZCgpIGNvbnN0OwotICAgICAgICBib29sIG5lZWRzU3dlZXBpbmcoKSBjb25zdDsKLSAgICAgICAg
dm9pZCB3aWxsUmVtb3ZlQmxvY2soKTsKLQogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2
ZUNlbGwoY29uc3QgRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rv
cj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAg
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZv
ckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBG
dW5jdG9yJik7CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBuZWVkc0ZsaXAoKTsKLSAgICAg
ICAgICAgIAotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZl
cnNpb24pOwotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAg
ICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICAKKyAgICAgICAgCiAgICAg
ICAgIHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNP
bkJsb2Nrc1RvU3dlZXAoKSBjb25zdCB7IHJldHVybiBtX2lzT25CbG9ja3NUb1N3ZWVwOyB9Ci0g
ICAgICAgIHZvaWQgc2V0SXNPbkJsb2Nrc1RvU3dlZXAoYm9vbCB2YWx1ZSkgeyBtX2lzT25CbG9j
a3NUb1N3ZWVwID0gdmFsdWU7IH0KKyAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzRnJlZUxpc3RlZDsgfQorICAgICAgICAKKyAgICAgICAgc2l6ZV90IGluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCByZW1v
dmVGcm9tQWxsb2NhdG9yKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGRpZEFkZFRvQWxsb2Nh
dG9yKE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBpbmRleCk7CisgICAgICAgIHZvaWQgZGlkUmVt
b3ZlRnJvbUFsbG9jYXRvcigpOwogICAgICAgICAKLSAgICAgICAgQmxvY2tTdGF0ZSBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICAgICAgICAgIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIEhhbmRsZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBj
b25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiwgdm9pZCopOworICAgICAgICBIYW5kbGUoSGVhcCYs
IHZvaWQqKTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGU+
CiAgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9k
ZSA9IFN3ZWVwT25seSk7CkBAIC0yMDYsMzUgKzE5NSw1MCBAQCBwdWJsaWM6CiAgICAgICAgIGVu
dW0gU2NyaWJibGVNb2RlIHsgRG9udFNjcmliYmxlLCBTY3JpYmJsZSB9OwogICAgICAgICAgICAg
CiAgICAgICAgIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgotICAgICAg
ICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVwTW9kZSA9
IFN3ZWVwT25seSk7CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2Rl
KFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAgICAgICAgICAKKyAgICAgICAgZW51bSBFbXB0
eU1vZGUgeyBJc0VtcHR5LCBOb3RFbXB0eSB9OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8
RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZT4KKyAgICAgICAgRnJlZUxp
c3Qgc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgPSBTd2VlcE9u
bHkpOworICAgICAgICAKICAgICAgICAgZW51bSBOZXdseUFsbG9jYXRlZE1vZGUgeyBIYXNOZXds
eUFsbG9jYXRlZCwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCB9OwotICAgICAgICAgICAgCi0g
ICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBT
Y3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgCisgICAgICAgIHRlbXBs
YXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2Nh
dGVkTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dl
ZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9k
ZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0
ZWRNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCk7Cisg
ICAgICAgIAorICAgICAgICBlbnVtIEZsaXBNb2RlIHsgTmVlZHNGbGlwLCBEb2VzTm90TmVlZEZs
aXAgfTsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBE
ZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlLCBGbGlwTW9k
ZT4KICAgICAgICAgRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAgICAgCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgICAgIHZvaWQgZm9yRWFjaEZyZWVD
ZWxsKGNvbnN0IEZyZWVMaXN0JiwgY29uc3QgRnVuYyYpOwotICAgICAgICAgICAgCisgICAgICAg
IAorICAgICAgICB2b2lkIHNldElzRnJlZUxpc3RlZCgpOworICAgICAgICAKICAgICAgICAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogbV9wcmV2OwogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBt
X25leHQ7CiAgICAgICAgICAgICAKLSAgICAgICAgc2l6ZV90IG1fYXRvbXNQZXJDZWxsOwotICAg
ICAgICBzaXplX3QgbV9lbmRBdG9tOyAvLyBUaGlzIGlzIGEgZnV6enkgZW5kLiBBbHdheXMgdGVz
dCBmb3IgPCBtX2VuZEF0b20uCisgICAgICAgIHNpemVfdCBtX2F0b21zUGVyQ2VsbCB7IHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKKyAgICAgICAgc2l6ZV90IG1fZW5kQXRv
bSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsgLy8gVGhpcyBpcyBhIGZ1
enp5IGVuZC4gQWx3YXlzIHRlc3QgZm9yIDwgbV9lbmRBdG9tLgogICAgICAgICAgICAgCiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4gbV9uZXdseUFs
bG9jYXRlZDsKICAgICAgICAgICAgIAogICAgICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIG1fYXR0
cmlidXRlczsKLSAgICAgICAgQmxvY2tTdGF0ZSBtX3N0YXRlOwotICAgICAgICBib29sIG1faXNP
bkJsb2Nrc1RvU3dlZXAgeyBmYWxzZSB9OworICAgICAgICBib29sIG1faXNGcmVlTGlzdGVkIHsg
ZmFsc2UgfTsKICAgICAgICAgICAgIAotICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2Nh
dG9yOworICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yIHsgbnVsbHB0ciB9Owor
ICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CiAgICAgICAgICAgICAKLSAgICAgICAg
TWFya2VkQmxvY2sqIG1fYmxvY2s7CisgICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrIHsgbnVs
bHB0ciB9OwogICAgIH07CiAgICAgICAgIAotICAgIHN0YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxl
KiB0cnlDcmVhdGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgY29u
c3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOworICAgIHN0YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxl
KiB0cnlDcmVhdGUoSGVhcCYpOwogICAgICAgICAKICAgICBIYW5kbGUmIGhhbmRsZSgpOwogICAg
ICAgICAKQEAgLTI0OCwzNCArMjUyLDM1IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbWFya0NvdW50
KCk7CiAKICAgICBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKKyAgICBib29sIGlzTWFya2Vk
KEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7CisgICAgYm9vbCBpc01hcmtlZENvbmN1cnJlbnRs
eShIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOwogICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChj
b25zdCB2b2lkKik7CiAgICAgICAgIAogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVk
KGNvbnN0IEhlYXBDZWxsKik7CisgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVh
cFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CiAgICAgCi0gICAgYm9vbCBpc01hcmtlZER1cmlu
Z1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKLQogICAgIGJvb2wg
aXNBdG9tKGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsK
LSAgICAgICAgCisgICAgCiAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgY29uc3QgQWxsb2Nh
dG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OwotCisgICAgCiAgICAgYm9vbCBoYXNB
bnlNYXJrZWQoKSBjb25zdDsKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKICAgICAgICAgCiAgICAg
V2Vha1NldCYgd2Vha1NldCgpOwotCisgICAgCiAgICAgYm9vbCBuZWVkc0ZsaXAoSGVhcFZlcnNp
b24pOwogICAgIGJvb2wgbmVlZHNGbGlwKCk7Ci0gICAgICAgIAotICAgIHZvaWQgZmxpcElmTmVj
ZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3Nh
cnkoSGVhcFZlcnNpb24pOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgCisgICAg
dm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lvbik7CiAgICAgICAgIAogICAgIHZvaWQgYXNzZXJ0
RmxpcHBlZCgpOwogICAgICAgICAKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247IH0KLSAgICAgICAgCisgICAgCisgICAgaW5saW5l
IHZvaWQgcmVzZXRWZXJzaW9uKCk7CisgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CiAKQEAgLTI4NCw5ICsyODks
OSBAQCBwcml2YXRlOgogICAgIE1hcmtlZEJsb2NrKFZNJiwgSGFuZGxlJik7CiAgICAgQXRvbSog
YXRvbXMoKTsKICAgICAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5n
U2xvdygpOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5U2xvdygpOworICAgIHZvaWQgYWJvdXRU
b01hcmtTbG93KEhlYXBWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFyTWFya3MoKTsKKyAgICB2b2lk
IGNsZWFyTWFya3MoSGVhcFZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJIYXNBbnlNYXJrZWQoKTsK
ICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWRTbG93KCk7CkBAIC00NjksNDAgKzQ3NCwxMyBAQCBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bmVlZHNGbGlwKEhlYXBWCiAgICAgcmV0dXJuIGhlYXBW
ZXJzaW9uICE9IG1fdmVyc2lvbjsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJ
Zk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKK2lubGluZSB2b2lkIE1hcmtlZEJs
b2NrOjphYm91dFRvTWFyayhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKIHsKICAgICBpZiAoVU5M
SUtFTFkobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkpCi0gICAgICAgIGZsaXBJZk5lY2Vzc2FyeVNs
b3coKTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmlu
Z01hcmtpbmcoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgaWYgKFVOTElLRUxZKG5l
ZWRzRmxpcChoZWFwVmVyc2lvbikpKQotICAgICAgICBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJr
aW5nU2xvdygpOworICAgICAgICBhYm91dFRvTWFya1Nsb3coaGVhcFZlcnNpb24pOwogICAgIFdU
Rjo6bG9hZExvYWRGZW5jZSgpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2so
KS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIGhl
YXBWZXJzaW9uKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyho
ZWFwVmVyc2lvbik7Ci19Ci0KLWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBG
b3JFZGVuQ29sbGVjdGlvbigpCi17Ci0gICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgICAgICAKLSAg
ICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAotICAgIEFTU0VS
VChtX3N0YXRlICE9IE5ldyAmJiBtX3N0YXRlICE9IEZyZWVMaXN0ZWQpOwotICAgIAotICAgIG1f
c3RhdGUgPSBNYXJrZWQ7Ci19Ci0KICNpZiBBU1NFUlRfRElTQUJMRUQKIGlubGluZSB2b2lkIE1h
cmtlZEJsb2NrOjphc3NlcnRGbGlwcGVkKCkKIHsKQEAgLTUxNCw5ICs0OTIsMTYgQEAgaW5saW5l
IHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6YXNzZXJ0RgogICAgIGJsb2NrKCkuYXNzZXJ0Rmxp
cHBlZCgpOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9p
ZCogcCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChIZWFwVmVyc2lvbiBoZWFw
VmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKIHsKLSAgICBhc3NlcnRGbGlwcGVkKCk7CisgICAgcmV0
dXJuIG5lZWRzRmxpcChoZWFwVmVyc2lvbikgPyBmYWxzZSA6IG1fbWFya3MuZ2V0KGF0b21OdW1i
ZXIocCkpOworfQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50
bHkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKG5l
ZWRzRmxpcChoZWFwVmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBXVEY6Omxv
YWRMb2FkRmVuY2UoKTsKICAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7CiB9
CiAKQEAgLTU1MCw0MyArNTM1LDE0IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmNsZWFyTmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkK
LXsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOwotICAgIHJldHVybiBtX2Jsb2NrLT5p
c01hcmtlZChjZWxsKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNl
bGwpKTsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBI
ZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBBU1NFUlQobV9oYW5kbGUubV9zdGF0ZSA9PSBNYXJrZWQp
OwotICAgIHJldHVybiBpc01hcmtlZChjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRl
ZCAmJiBtX2hhbmRsZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKKyAgICByZXR1cm4gbV9ibG9j
ay0+aXNNYXJrZWQodmVyc2lvbiwgY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNOZXds
eUFsbG9jYXRlZChjZWxsKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtl
ZER1cmluZ1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29uc3QgSGVhcENl
bGwqIGNlbGwpCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2Nh
dGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIGlm
IChuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIGlzTWFya2VkKGNlbGwpOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxl
Ojppc0xpdmUoY29uc3QgSGVhcENlbGwqIGNlbGwpCi17Ci0gICAgYXNzZXJ0RmxpcHBlZCgpOwot
ICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgQWxsb2NhdGVkOgotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIGNhc2UgTWFya2VkOgotICAgICAgICByZXR1cm4gaXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKGNlbGwpOwotCi0gICAgY2FzZSBOZXc6Ci0gICAgY2FzZSBGcmVlTGlzdGVk
OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzTWFya2VkKHZlcnNpb24sIGNlbGwpIHx8IChtX2hh
bmRsZS5tX25ld2x5QWxsb2NhdGVkICYmIG1faGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkp
OwogfQogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCkBA
IC02MDMsMTMgKzU1OSw2IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qg
dm8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQotewotICAgIGlmICghbV9ibG9jay0+aXNBdG9t
KHApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2Fz
dDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+
CiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hDZWxs
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CkBAIC02MjIsNjIgKzU3MSw2IEBAIGlubGluZSBJ
dGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmQKICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUg
SXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbChjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhlYXBD
ZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0g
ICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigm
bV9ibG9jay0+YXRvbXMoKVtpXSk7Ci0gICAgICAgIGlmICghaXNMaXZlKGNlbGwpKQotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRl
cmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
RG9uZTsKLSAgICB9Ci0gICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
LXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9h
dHRyaWJ1dGVzLmNlbGxLaW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8
IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBIZWFwQ2VsbCogY2Vs
bCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0p
OwotICAgICAgICBpZiAoaXNMaXZlKGNlbGwpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQot
ICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKLSAgICB9Ci0gICAgcmV0
dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJs
b2NrOjpIYW5kbGU6Om5lZWRzU3dlZXBpbmcoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFy
a2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4g
bV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzQWxsb2NhdGVkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5k
bGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gQWxs
b2NhdGVkOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZCgp
IGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZs
aXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNGcmVlTGlzdGVkKCkgY29uc3QKLXsKLSAg
ICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5
KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gRnJlZUxpc3RlZDsKLX0KLQogaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6Omhhc0FueU1hcmtlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmlhc2Vk
TWFya0NvdW50ICE9IG1fbWFya0NvdW50QmlhczsKQEAgLTcxMSw4ICs2MDQsNiBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6Ok1hcmtlCiAgICAgdHlwZWRlZiBNYXJrZWRCbG9j
a0hhc2ggSGFzaDsKIH07CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6Ok1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlKTsKLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNl
bmRpZiAvLyBNYXJrZWRCbG9ja19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWFya2VkQWxsb2NhdG9yLmgiCisjaW5jbHVkZSAi
TWFya2VkQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBib29sIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCog
Y2VsbCkKK3sKKyAgICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKKyAgICAKKyAgICBpZiAoVU5M
SUtFTFkoaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSkpIHsKKyAgICAgICAgaWYgKGlzTmV3bHlBbGxv
Y2F0ZWQoY2VsbCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAg
TWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+YmxvY2soKTsKKyAgICAKKyAgICBpZiAoYWxsb2Nh
dG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAg
ICBpZiAoYmxvY2submVlZHNGbGlwKHZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQoY2VsbCk7Cit9CisKK2lubGluZSBib29sIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qgdm9p
ZCogcCkKK3sKKyAgICBpZiAoIW1fYmxvY2stPmlzQXRvbShwKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBpc0xpdmUodmVyc2lvbiwgc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENl
bGwqPihwKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgoraW5saW5lIEl0ZXJh
dGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKK3sKKyAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVz
LmNlbGxLaW5kOworICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRv
bTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgeworICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOworICAgICAg
ICBpZiAoIWlzTGl2ZShjZWxsKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlm
IChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CisgICAgfQorICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4K
K2lubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRD
ZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSGVhcENlbGw6OktpbmQga2luZCA9
IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7
IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKKyAgICAgICAgSGVhcENlbGwq
IGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygp
W2ldKTsKKyAgICAgICAgaWYgKGlzTGl2ZShjZWxsKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9u
ZSkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CisgICAgfQorICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworfQorCitpbmxpbmUgdm9pZCBNYXJr
ZWRCbG9jazo6cmVzZXRWZXJzaW9uKCkKK3sKKyAgICBtX3ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6
bnVsbFZlcnNpb247Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJr
ZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlIDx3
dGYvTGlzdER1bXAuaD4KIApAQCAtMTk1LDYgKzE5NiwyMiBAQCBNYXJrZWRTcGFjZTo6TWFya2Vk
U3BhY2UoSGVhcCogaGVhcCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOworICAgIAorICAgIE1hcmtlZEFsbG9j
YXRvciogcHJldmlvdXMgPSBudWxscHRyOworICAgIGZvckVhY2hTdWJzcGFjZSgKKyAgICAgICAg
WyZdIChTdWJzcGFjZSYgc3Vic3BhY2UsIEFsbG9jYXRvckF0dHJpYnV0ZXMpIC0+IEl0ZXJhdGlv
blN0YXR1cyB7CisgICAgICAgICAgICBmb3IgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yIDog
c3Vic3BhY2UuYmFnT2ZBbGxvY2F0b3JzKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2FuIHNl
dCB0aGlzIGluIGFueSBvcmRlci4gVGhlIHBvaW50IGlzIGp1c3QgdGhhdCB3ZSB3YW50IHRvIGJl
IGFibGUgdG8KKyAgICAgICAgICAgICAgICAvLyBjdXJzb3Igb3ZlciBhbGxvY2F0b3JzLgorICAg
ICAgICAgICAgICAgIGFsbG9jYXRvci0+c2V0TmV4dEFsbG9jYXRvcihwcmV2aW91cyk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBhbGxvY2F0b3I7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKKyAgICBtX2ZpcnN0QWxsb2NhdG9yID0gcHJldmlv
dXM7CisgICAgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBwcmV2aW91czsKIH0KIAog
TWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSgpCkBAIC0yMjIsMTUgKzIzOSwyMSBAQCB2b2lkIE1h
cmtlZFNwYWNlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAKIHZvaWQqIE1hcmtlZFNwYWNlOjph
bGxvY2F0ZShTdWJzcGFjZSYgc3Vic3BhY2UsIHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAoTWFy
a2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkK
LSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAgICBpZiAoTWFya2VkQWxs
b2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkgeworICAg
ICAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgICAgIC8vZGF0
YUxvZygiQWxsb2NhdGVkICIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQogICAgIHJldHVybiBhbGxvY2F0ZUxhcmdlKHN1YnNwYWNlLCBi
eXRlcyk7CiB9CiAKIHZvaWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZShTdWJzcGFjZSYgc3Vi
c3BhY2UsIHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0
b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9j
YXRvci0+dHJ5QWxsb2NhdGUoKTsKKyAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3Ig
PSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkgeworICAgICAgICB2b2lkKiByZXN1bHQg
PSBhbGxvY2F0b3ItPnRyeUFsbG9jYXRlKCk7CisgICAgICAgIC8vZGF0YUxvZygiVHJ5LWFsbG9j
YXRlZCAiLCBSYXdQb2ludGVyKHJlc3VsdCksICJcbiIpOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KICAgICByZXR1cm4gdHJ5QWxsb2NhdGVMYXJnZShzdWJzcGFjZSwgYnl0ZXMpOwog
fQogCkBAIC0yNTksOSArMjgyLDEwIEBAIHZvaWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZUxh
cmdlKFN1YnMKIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwKCkKIHsKICAgICBtX2hlYXAtPnN3ZWVw
ZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBb
Jl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBibG9jay0+c3dl
ZXAoKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRv
ciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9y
LnN3ZWVwKCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
ICAgICAgICAgfSk7CiB9CiAKQEAgLTI4NCwyOCArMzA4LDE2IEBAIHZvaWQgTWFya2VkU3BhY2U6
OnN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygKICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zm
c2V0ID0gbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsKIH0KIAotdm9pZCBNYXJrZWRTcGFjZTo6
em9tYmlmeVN3ZWVwKCkKLXsKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0
YUxvZygiWm9tYmlmeWluZyBzd2VlcC4uLiIpOwotICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxs
RmluaXNoU3dlZXBpbmcoKTsKLSAgICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNTd2Vl
cGluZygpKQotICAgICAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwotICAgICAgICB9KTsKLX0K
LQotdm9pZCBNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgTWFya2VkU3BhY2U6
OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAg
ICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewot
ICAgICAgICAgICAgYWxsb2NhdG9yLnJlc2V0KCk7CisgICAgICAgICAgICBhbGxvY2F0b3IucHJl
cGFyZUZvckFsbG9jYXRpb24oKTsKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOwogICAgICAgICB9KTsKIAotICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHMuY2xl
YXIoKTsKICAgICBtX2FjdGl2ZVdlYWtTZXRzLnRha2VGcm9tKG1fbmV3QWN0aXZlV2Vha1NldHMp
OworICAgIAogICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29s
bGVjdGlvbikKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVw
ID0gbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCkBAIC00MTAsMTEg
KzQyMiwxMSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpmcmVlT3JTaHJpbmtCbG9jayhNYXJrCiAKIHZv
aWQgTWFya2VkU3BhY2U6OnNocmluaygpCiB7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBb
Jl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBmcmVlT3JTaHJp
bmtCbG9jayhibG9jayk7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJr
ZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAg
IGFsbG9jYXRvci5zaHJpbmsoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOwogICAgICAgICB9KTsKLSAgICAvLyBGb3IgTGFyZ2VBbGxvY2F0aW9ucywgd2Ug
ZG8gdGhlIG1vcmFsIGVxdWl2YWxlbnQgaW4gc3dlZXBMYXJnZUFsbG9jYXRpb25zKCkuCiB9CiAK
IHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQpAQCAtNDI5LDU3ICs0NDEs
NjEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkg
PCBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0
aW9uc1tpXS0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAot
ICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykgewotICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsK
LSAgICAgICAgfSk7Ci0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1f
bGFyZ2VBbGxvY2F0aW9ucykKLSAgICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT5pc05ld2x5QWxs
b2NhdGVkKCkpOwotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKLX0KLQotI2lmbmRlZiBOREVC
VUcgCi1zdHJ1Y3QgVmVyaWZ5TWFya2VkIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsgCi0g
ICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdAotICAg
IHsKLSAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgc3dpdGNoIChibG9jay0+bV9zdGF0ZSkgewotICAgICAgICBjYXNlIE1hcmtlZEJs
b2NrOjpNYXJrZWQ6Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9CisgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAg
WyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgeworICAgICAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQoYmxvY2ssICFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAKKyAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRp
b24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9j
YXRpb24sICFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwogICAgIH0KLX07IAotI2Vu
ZGlmIAorfQogCi12b2lkIE1hcmtlZFNwYWNlOjpmbGlwKCkKK3ZvaWQgTWFya2VkU3BhY2U6OmJl
Z2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09
IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Js
b2Nrc1dpdGhOZXdPYmplY3RzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9ibG9ja3NXaXRo
TmV3T2JqZWN0c1tpXS0+ZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24gPSBtX3ZlcnNpb24gKyAxOwotICAgICAgICBp
ZiAoVU5MSUtFTFkobmV4dFZlcnNpb24gPT0gaW5pdGlhbFZlcnNpb24pKSB7Ci0gICAgICAgICAg
ICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgZmxpcHBp
bmcgYWxsIGJsb2Nrcy4gVGhpcyBoYXBwZW5zCi0gICAgICAgICAgICAvLyBzdXBlciByYXJlbHks
IHByb2JhYmx5IG5ldmVyIGZvciBtb3N0IHVzZXJzLgorICAgIGlmIChtX2hlYXAtPm9wZXJhdGlv
bkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2Nh
dG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRl
cmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3IuYmVnaW5NYXJraW5nRm9y
RnVsbENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIG1fdmVyc2lvbiA9IG5leHRW
ZXJzaW9uKG1fdmVyc2lvbik7CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkobV92ZXJz
aW9uID09IGluaXRpYWxWZXJzaW9uKSkgeworICAgICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24g
d3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5IHNldHRpbmcgYWxsIGJsb2NrIHZlcnNpb25z
IHRvIG51bGwuCiAgICAgICAgICAgICBmb3JFYWNoQmxvY2soCiAgICAgICAgICAgICAgICAgWyZd
IChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlLT5mbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9j
aygpLnJlc2V0VmVyc2lvbigpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAg
ICAgIG1fdmVyc2lvbiA9IG5leHRWZXJzaW9uOyAvLyBIZW5jZWZvcnRoLCBmbGlwSWZOZWNlc3Nh
cnkoKSB3aWxsIHRyaWdnZXIgb24gYWxsIGJsb2Nrcy4KKyAgICAgICAgCiAgICAgICAgIGZvciAo
TGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQogICAgICAg
ICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAgIH0KIAotI2lmbmRlZiBOREVCVUcKLSAgICBW
ZXJpZnlNYXJrZWQgdmVyaWZ5RnVuY3RvcjsKLSAgICBmb3JFYWNoQmxvY2sodmVyaWZ5RnVuY3Rv
cik7Ci0jZW5kaWYKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3JFYWNo
QmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgp
KTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICBtX2lzTWFya2luZyA9IHRydWU7
Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmVuZE1hcmtpbmcoKQoreworICAgIGZvckVhY2hBbGxv
Y2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJh
dGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxvY2F0b3IuZW5kTWFya2luZygpOworICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAg
IAorICAgIG1faXNNYXJraW5nID0gZmFsc2U7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OndpbGxT
dGFydEl0ZXJhdGluZygpCkBAIC01NDAsMTkgKzU1Niw2NiBAQCB2b2lkIE1hcmtlZFNwYWNlOjph
ZGRBY3RpdmVXZWFrU2V0KFdlYWtTCiAKIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFkZEJsb2NrKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogeworICAgIC8vIFdBUk5JTkc6IFRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGJlZm9yZSBibG9jayBpcyBmdWxseSBpbml0aWFsaXplZC4gVGhlIGJsb2Nr
IHdpbGwgbm90IGtub3cKKyAgICAvLyBpdHMgY2VsbFNpemUoKSBvciBhdHRyaWJ1dGVzKCkuIFRo
ZSBsYXR0ZXIgaW1wbGllcyB0aGF0IHlvdSBjYW4ndCBhc2sgdGhpbmdzIGxpa2UKKyAgICAvLyBu
ZWVkc0Rlc3RydWN0aW9uKCkuCiAgICAgbV9jYXBhY2l0eSArPSBNYXJrZWRCbG9jazo6YmxvY2tT
aXplOwogICAgIG1fYmxvY2tzLmFkZCgmYmxvY2stPmJsb2NrKCkpOwogfQogCiB2b2lkIE1hcmtl
ZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7
Ci0gICAgYmxvY2stPmFzc2VydEZsaXBwZWQoKTsKLSAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3Rz
LmFwcGVuZChibG9jayk7Ci0gICAgCiAgICAgaWYgKGJsb2NrLT53ZWFrU2V0KCkuaXNPbkxpc3Qo
KSkgewogICAgICAgICBibG9jay0+d2Vha1NldCgpLnJlbW92ZSgpOwogICAgICAgICBtX25ld0Fj
dGl2ZVdlYWtTZXRzLmFwcGVuZCgmYmxvY2stPndlYWtTZXQoKSk7CiAgICAgfQogfQogCitNYXJr
ZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2soKQoreworICAgIGZv
ciAoOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbjsgbV9hbGxvY2F0b3JGb3JFbXB0eUFs
bG9jYXRpb24gPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+bmV4dEFsbG9jYXRvcigp
KSB7CisgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYWxsb2NhdG9y
Rm9yRW1wdHlBbGxvY2F0aW9uLT5maW5kRW1wdHlCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJu
IGJsb2NrOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRTcGFj
ZTo6c25hcHNob3QoKQoreworICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9
PSBFZGVuQ29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAg
ICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsK
KyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RGb3JFZGVuQ29sbGVjdGlvbigpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAg
ICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAg
ICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1
cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24o
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAg
ICAgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBNYXJrZWRTcGFjZTo6YXNzZXJ0U25hcHNo
b3RFbXB0eSgpCit7CisgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxv
Y2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxvY2F0b3IuYXNzZXJ0
U25hcHNob3RFbXB0eSgpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7CisgICAgICAgIH0pOworfQorCit2b2lkIE1hcmtlZFNwYWNlOjpkdW1wQml0cyhQcmlu
dFN0cmVhbSYgb3V0KQoreworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFy
a2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAg
ICBvdXQucHJpbnQoIkJpdHMgZm9yICIsIGFsbG9jYXRvciwgIjpcbiIpOworICAgICAgICAgICAg
YWxsb2NhdG9yLmR1bXBCaXRzKG91dCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NSw3ICs2NSwxNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IG51bVNpemVDbGFzc2VzID0gbGFyZ2VDdXRvZmYgLyBzaXplU3RlcDsKICAgICAKLSAgICBz
dGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSA0MjsgIC8vIFRoaXMgY2Fu
IGJlIGFueSB2YWx1ZSwgaW5jbHVkaW5nIHJhbmRvbSBnYXJiYWdlLCBzbyBsb25nIGFzIGl0J3Mg
Y29uc2lzdGVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLgorICAgIHN0YXRpYyBj
b25zdCBIZWFwVmVyc2lvbiBudWxsVmVyc2lvbiA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9mIGZyZXNo
bHkgYWxsb2NhdGVkIGJsb2Nrcy4KKyAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlh
bFZlcnNpb24gPSAxOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0
aC4KKyAgICAKKyAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9u
KQorICAgIHsKKyAgICAgICAgdmVyc2lvbisrOworICAgICAgICBpZiAodmVyc2lvbiA9PSBudWxs
VmVyc2lvbikKKyAgICAgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgcmV0dXJuIHZlcnNpb247
CisgICAgfQogICAgIAogICAgIHN0YXRpYyBzaXplX3Qgc2l6ZUNsYXNzVG9JbmRleChzaXplX3Qg
c2l6ZSkKICAgICB7CkBAIC0xMTQsNyArMTIzLDcgQEAgcHVibGljOgogICAgIFN1YnNwYWNlJiBz
dWJzcGFjZUZvck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbm9ybWFsU3Bh
Y2U7IH0KICAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCkgeyByZXR1cm4g
bV9hdXhpbGlhcnlTcGFjZTsgfQogICAgIAotICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7Cisg
ICAgdm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogCiAgICAgdm9pZCB2aXNpdFdlYWtTZXRz
KEhlYXBSb290VmlzaXRvciYpOwogICAgIHZvaWQgcmVhcFdlYWtTZXRzKCk7CkBAIC0xNDQsMTEg
KzE1MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFya2VkQmxv
Y2s6OkhhbmRsZSopOwogICAgIHZvaWQgZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpI
YW5kbGUqKTsKIAotICAgIHZvaWQgZmxpcCgpOworICAgIHZvaWQgYmVnaW5NYXJraW5nKCk7Cisg
ICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdCgpOwogICAgIHZvaWQgY2xl
YXJOZXdseUFsbG9jYXRlZCgpOwogICAgIHZvaWQgc3dlZXAoKTsKICAgICB2b2lkIHN3ZWVwTGFy
Z2VBbGxvY2F0aW9ucygpOwotICAgIHZvaWQgem9tYmlmeVN3ZWVwKCk7CisgICAgdm9pZCBhc3Nl
cnRTbmFwc2hvdEVtcHR5KCk7CiAgICAgc2l6ZV90IG9iamVjdENvdW50KCk7CiAgICAgc2l6ZV90
IHNpemUoKTsKICAgICBzaXplX3QgY2FwYWNpdHkoKTsKQEAgLTE1Nyw4ICsxNjgsNiBAQCBwdWJs
aWM6CiAgICAgCiAgICAgSGVhcFZlcnNpb24gdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVy
c2lvbjsgfQogCi0gICAgY29uc3QgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tz
V2l0aE5ld09iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOyB9
Ci0gICAgCiAgICAgY29uc3QgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQg
bGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxs
b2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc09m
ZnNldEZvclRoaXNDb2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25z
T2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IH0KQEAgLTE2OSwxMyArMTc4LDE2IEBAIHB1YmxpYzoK
ICAgICBMYXJnZUFsbG9jYXRpb24qKiBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25F
bmQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVu
ZDsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUo
KSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemU7
IH0KICAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIGZpcnN0QWxsb2NhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdEFsbG9jYXRvcjsgfQorICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
Rm9yRW1wdHlBbGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0b3JGb3JFbXB0eUFs
bG9jYXRpb247IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9j
aygpOworICAgIAogICAgIC8vIFdoZW4gdGhpcyBpcyB0cnVlIGl0IG1lYW5zIHRoYXQgd2UgaGF2
ZSBmbGlwcGVkIGJ1dCB0aGUgbWFyayBiaXRzIGhhdmVuJ3QgY29udmVyZ2VkIHlldC4KICAgICBi
b29sIGlzTWFya2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNNYXJraW5nOyB9CiAgICAgCi0gICAg
Ly8gRklYTUU6IEFmdGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjE1ODEsIE1hcmtlZFNwYWNlIHdpbGwgY29udHJvbCB0aGlzCi0gICAgLy8gZmxhZyBkaXJlY3Rs
eS4KLSAgICB2b2lkIHNldElzTWFya2luZyhib29sIHZhbHVlKSB7IG1faXNNYXJraW5nID0gdmFs
dWU7IH0KLQorICAgIHZvaWQgZHVtcEJpdHMoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgp
KTsKKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMTkwLDggKzIwMiw4IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgdm9pZCBpbml0aWFsaXplU3Vic3BhY2UoU3Vic3BhY2UmKTsKIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9y
Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Vic3BhY2Uo
Y29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2
b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZvckVhY2hTdWJzcGFjZShjb25zdCBGdW5jdG9yJik7
CiAgICAgCiAgICAgdm9pZCBhZGRBY3RpdmVXZWFrU2V0KFdlYWtTZXQqKTsKIApAQCAtMjA1LDcg
KzIxNyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9p
c01hcmtpbmcgeyBmYWxzZSB9OwogICAgIE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOwotICAgIFZl
Y3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsKICAgICBW
ZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4gbV9sYXJnZUFsbG9jYXRpb25zOwogICAgIHVuc2lnbmVk
IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9s
YXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24geyAwIH07CkBAIC0yMTUsNDAg
KzIyNiwxMSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRo
aXNDb2xsZWN0aW9uU2l6ZSB7IDAgfTsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8V2Vha1NldCwg
QmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+IG1fYWN0aXZlV2Vha1NldHM7CiAgICAgU2Vu
dGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBt
X25ld0FjdGl2ZVdlYWtTZXRzOworICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogbV9maXJzdEFs
bG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yRm9y
RW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0
aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIEFTU0VSVChpc0l0ZXJh
dGluZygpKTsKLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwot
ICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hMaXZlQ2Vs
bChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFs
bG9jYXRpb25zKSB7Ci0gICAgICAgIGlmIChhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewotICAgICAg
ICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1
dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlv
blNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBBU1NFUlQoaXNJdGVyYXRp
bmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAg
ICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoRGVhZENlbGwo
ZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxv
Y2F0aW9ucykgewotICAgICAgICBpZiAoIWFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7Ci0gICAgICAg
ICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0
ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQogaW5saW5lIE1hcmtlZEFsbG9jYXRvciog
TWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihTdWJzcGFjZSYgc3BhY2UsIHNpemVfdCBieXRlcykK
IHsKICAgICBBU1NFUlQoYnl0ZXMpOwpAQCAtMzA0LDE1ICsyODYsMTAgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+
CiB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCiB7Ci0gICAgZm9yRWFjaFN1YnNwYWNlKAotICAgICAgICBbJl0gKFN1YnNwYWNlJiBzdWJz
cGFjZSwgQWxsb2NhdG9yQXR0cmlidXRlcykgLT4gSXRlcmF0aW9uU3RhdHVzIHsKLSAgICAgICAg
ICAgIGZvciAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgOiBzdWJzcGFjZS5iYWdPZkFsbG9j
YXRvcnMpIHsKLSAgICAgICAgICAgICAgICBpZiAoZnVuY3RvcigqYWxsb2NhdG9yKSA9PSBJdGVy
YXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkRvbmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotICAgICAgICB9KTsKKyAgICBmb3IgKE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gbV9maXJzdEFsbG9jYXRvcjsgYWxsb2NhdG9yOyBh
bGxvY2F0b3IgPSBhbGxvY2F0b3ItPm5leHRBbGxvY2F0b3IoKSkgeworICAgICAgICBpZiAoZnVu
Y3RvcigqYWxsb2NhdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtl
ZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFj
ZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCit7CisgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOworICAgIEJsb2NrSXRlcmF0b3Ig
ZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0g
bV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgo
Kml0KS0+aGFuZGxlKCkuZm9yRWFjaExpdmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1
czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChMYXJnZUFsbG9j
YXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKKyAgICAgICAgaWYgKGFs
bG9jYXRpb24tPmlzTGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9u
LT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6
OmZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQoreworICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVu
ZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1f
YmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoKCpp
dCktPmhhbmRsZSgpLmZvckVhY2hEZWFkQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6
OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoTGFyZ2VBbGxvY2F0
aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7CisgICAgICAgIGlmICghYWxs
b2NhdGlvbi0+aXNMaXZlKCkpIHsKKyAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24t
PmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25T
dGF0dXM6OkRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5
LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogICAgIHZhbGlk
YXRlKGNlbGwpOwogI2VuZGlmCiAgICAgCisgICAgLy9kYXRhTG9nKCIgICAgTWFya2luZyAiLCBS
YXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKKyAgICAKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9j
YXRpb24oKSkKICAgICAgICAgc2V0TWFya2VkQW5kQXBwZW5kVG9NYXJrU3RhY2soY2VsbC0+bGFy
Z2VBbGxvY2F0aW9uKCksIGNlbGwpOwogICAgIGVsc2UKQEAgLTE5OCw3ICsyMDAsNyBAQCB2b2lk
IFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRBbmRBcHBlbmRUb01hCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b250YWluZXJUeXBlPgogQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRB
bmRBcHBlbmRUb01hcmtTdGFjayhDb250YWluZXJUeXBlJiBjb250YWluZXIsIEpTQ2VsbCogY2Vs
bCkKIHsKLSAgICBjb250YWluZXIuZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhtX3ZlcnNp
b24pOworICAgIGNvbnRhaW5lci5hYm91dFRvTWFyayhtX3ZlcnNpb24pOwogICAgIAogICAgIGlm
IChjb250YWluZXIudGVzdEFuZFNldE1hcmtlZChjZWxsKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjQ2LDEwICsyNDgsOCBAQCB2b2lkIFNsb3RWaXNpdG9yOjptYXJrQXV4aWxpYXJ5KGNvbnN0IHZv
CiAgICAgCiAgICAgQVNTRVJUKGNlbGwtPmhlYXAoKSA9PSBoZWFwKCkpOwogICAgIAotICAgIGlm
IChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1fdmVyc2lvbiwgY2VsbCkpIHsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkoY2VsbCkpOworICAgIGlmIChI
ZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1fdmVyc2lvbiwgY2VsbCkpCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAgICAgCiAgICAgbm90ZUxpdmVBdXhpbGlhcnlDZWxsKGNlbGwpOwogfQpAQCAtMjk0
LDYgKzI5NCw4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGkKIHsK
ICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkoY2VsbCkpOwogICAgIAorICAg
IC8vZGF0YUxvZygiVmlzaXRpbmcgIiwgUmF3UG9pbnRlcihjZWxsKSwgIlxuIik7CisKICAgICBT
ZXRDdXJyZW50Q2VsbFNjb3BlIGN1cnJlbnRDZWxsU2NvcGUoKnRoaXMsIGNlbGwpOwogICAgIAog
ICAgIG1fY3VycmVudE9iamVjdENlbGxTdGF0ZUJlZm9yZVZpc2l0aW5nID0gY2VsbC0+Y2VsbFN0
YXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCShyZXZpc2lvbiAyMDYwMzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2luY2x1ZGUgIkpTRXhwb3J0
TWFjcm9zLmgiCiAjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3JUcmFp
dHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTkzLDQgKzk1LDIzIEBAIHByaXZhdGU6CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IFZlY3RvclRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NWZWN0
b3JUcmFpdHMgeworICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0g
ZmFsc2U7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6
OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4geworICAgIHR5
cGVkZWYgSlNDOjpXZWFrPFQ+IFN0b3JhZ2VUeXBlOworCisgICAgdHlwZWRlZiBzdGQ6Om51bGxw
dHJfdCBFbXB0eVZhbHVlVHlwZTsKKyAgICBzdGF0aWMgRW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1
ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHR5cGVkZWYgVCogUGVla1R5cGU7CisgICAg
c3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5nZXQoKTsgfQorICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKEVtcHR5VmFsdWVUeXBlKSB7
IHJldHVybiBQZWVrVHlwZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlm
IC8vIFdlYWtfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3Bw
CShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBXZWFrQmxvY2s6
OnNwZWNpYWxpemVkVmlzaXQoQ29udGFpbgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgY29uc3QgSlNWYWx1ZSYganNWYWx1ZSA9IHdlYWtJbXBsLT5qc1ZhbHVlKCk7Ci0gICAgICAg
IGlmIChjb250YWluZXIuaXNNYXJrZWREdXJpbmdXZWFrVmlzaXRpbmcodmVyc2lvbiwganNWYWx1
ZS5hc0NlbGwoKSkpCisgICAgICAgIGlmIChjb250YWluZXIuaXNNYXJrZWRDb25jdXJyZW50bHko
dmVyc2lvbiwganNWYWx1ZS5hc0NlbGwoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgCiAgICAgICAgIGlmICghd2Vha0hhbmRsZU93bmVyLT5pc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhIYW5kbGU8VW5rbm93bj46OndyYXBTbG90KCZjb25zdF9jYXN0PEpTVmFsdWUmPihqc1Zh
bHVlKSksIHdlYWtJbXBsLT5jb250ZXh0KCksIHZpc2l0b3IpKQpAQCAtMTQ3LDE3ICsxNDcsMTQg
QEAgdm9pZCBXZWFrQmxvY2s6OnJlYXAoKQogICAgIC8vIElmIHRoaXMgV2Vha0Jsb2NrIGRvZXNu
J3QgYmVsb25nIHRvIGEgQ2VsbENvbnRhaW5lciwgd2Ugd29uJ3QgZXZlbiBiZSBoZXJlLgogICAg
IEFTU0VSVChtX2NvbnRhaW5lcik7CiAgICAgCi0gICAgbV9jb250YWluZXIuZmxpcElmTmVjZXNz
YXJ5KCk7Ci0KLSAgICAvLyBXZSBvbmx5IHJlYXAgYWZ0ZXIgbWFya2luZy4KLSAgICBBU1NFUlQo
bV9jb250YWluZXIuaXNNYXJrZWQoKSk7CisgICAgSGVhcFZlcnNpb24gdmVyc2lvbiA9IG1fY29u
dGFpbmVyLmhlYXAoKS0+b2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHdlYWtJbXBsQ291bnQoKTsgKytpKSB7CiAgICAgICAgIFdlYWtJbXBsKiB3
ZWFrSW1wbCA9ICZ3ZWFrSW1wbHMoKVtpXTsKICAgICAgICAgaWYgKHdlYWtJbXBsLT5zdGF0ZSgp
ID4gV2Vha0ltcGw6OkRlYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAo
bV9jb250YWluZXIuaXNNYXJrZWQod2Vha0ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkpIHsKKyAg
ICAgICAgaWYgKG1fY29udGFpbmVyLmlzTWFya2VkKHZlcnNpb24sIHdlYWtJbXBsLT5qc1ZhbHVl
KCkuYXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQod2Vha0ltcGwtPnN0YXRlKCkgPT0g
V2Vha0ltcGw6OkxpdmUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAkocmV2aXNpb24gMjA2MDMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpT
Q2VsbC5oIgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMTQ5LDIzICsxNDgsNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCB3
ZWFrQ2xlCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IFZlY3RvclRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxl
Q2xhc3NWZWN0b3JUcmFpdHMgewotICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRo
TWVtY21wID0gZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRy
YWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4g
ewotICAgIHR5cGVkZWYgSlNDOjpXZWFrPFQ+IFN0b3JhZ2VUeXBlOwotCi0gICAgdHlwZWRlZiBz
dGQ6Om51bGxwdHJfdCBFbXB0eVZhbHVlVHlwZTsKLSAgICBzdGF0aWMgRW1wdHlWYWx1ZVR5cGUg
ZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHR5cGVkZWYgVCogUGVla1R5
cGU7Ci0gICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7
IHJldHVybiB2YWx1ZS5nZXQoKTsgfQotICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKEVtcHR5VmFs
dWVUeXBlKSB7IHJldHVybiBQZWVrVHlwZSgpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYK
LQogI2VuZGlmIC8vIFdlYWtJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRUaHVua3MuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVk
ZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSAiV2Vha0hh
bmRsZU93bmVyLmgiCi0jaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx0dXBsZT4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcg
QEAKICNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1hcEl0ZXJhdG9yUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiTWFya2VkU3Bh
Y2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aE9iamVjdC5oIgogI2luY2x1ZGUgIk1pY3JvdGFz
ay5oIgogI2luY2x1ZGUgIk1vZHVsZUxvYWRlclByb3RvdHlwZS5oIgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcs
NiArMTg3LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNp
Z25lZCwgbGFyZ2VBbGxvY2F0aW9uQ3V0b2ZmLCAxMDAwMDAsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIHYoYm9vbCwgZHVtcFNpemVDbGFzc2VzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihib29sLCB1c2VCdW1wQWxsb2NhdG9yLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAg
ICB2KGJvb2wsIGxvb2tGb3JFbXB0eUJsb2Nrc0luT3RoZXJBbGxvY2F0b3JzLCB0cnVlLCBOb3Jt
YWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGVhZ2VybHlVcGRhdGVUb3BDYWxsRnJhbWUsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdihib29sLCB1c2VPU1JFbnRyeVRv
REZHLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsOCBAQAogI2lmbmRlZiBQcm90b3R5cGVNYXBfaAogI2RlZmluZSBQcm90b3R5cGVN
YXBfaAogCisjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5o
IgogI2luY2x1ZGUgIldlYWtHQ01hcC5oIgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNp
bmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlBDVG9Db2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3Iu
aCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNiBAQAogI2RlZmluZSBXZWFrR0NNYXBfaAogCiAjaW5jbHVkZSAiV2Vhay5oIgotI2lu
Y2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk1Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogI2luY2x1ZGUgPHd0
Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkluZGV4OiBT
b3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNiBAQAorMjAxNi0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2UgTWFya2VkQmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBv
dmVybGFwcGVkIGFsbG9jYXRpb24gYW5kIG1hcmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gY2hhbmdlIGhl
cmUgaXMgdG8gYnJpbmcgYmFjayBGYXN0Qml0VmVjdG9yLmNwcCwgc28gdGhhdCBJIGNvdWxkIG91
dGxpbmUgc29tZQorICAgICAgICBsYXJnZSBzbG93IHBhdGggZnVuY3Rpb25zLiBUaGlzIGFsc28g
YWRkcyBzb21lIHV0aWxpdGllcywgbGlrZSBhdG9taWNTZXRBbmRDaGVjaygpIGFuZAorICAgICAg
ICBpc0VtcHR5KCkuIFRoZSBHQyB1c2VzIHRoZXNlLgorCisgICAgICAgICogV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkZhc3RCaXRW
ZWN0b3JXb3JkT3duZXI6OnNldEVxdWFsc1Nsb3cpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVj
dG9yV29yZE93bmVyOjpyZXNpemVTbG93KToKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5o
OgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpvcGVyYXRvcj0pOgorICAg
ICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpyZXNpemUpOgorICAgICAgICAoV1RG
OjpGYXN0Qml0VmVjdG9ySW1wbDo6aXNFbXB0eSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0
b3I6OmF0b21pY1NldEFuZENoZWNrKToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6b3Bl
cmF0b3JbXSk6IERlbGV0ZWQuCisKIDIwMTYtMDktMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggaXNWYWxpZEVudW0gdG8gd29yayB3aXRoIG9s
ZGVyIHZlcnNpb25zIG9mIEdDQwpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAJCTBGNDU3
MDQzMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9t
aW5hdG9ycy5oICovOyB9OwogCQkwRjQ1NzA0NTFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29y
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcw
NDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLzsgfTsKIAkJMEY3MjVDQUMxQzUw
NDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAq
LzsgfTsKKwkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjUxRDg4
NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjgyNEE2ODFCNzQ0
M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xv
dC5jcHAgKi87IH07CiAJCTBGODI0QTY5MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NTFC
NzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oICovOyB9OwogCQkwRjg3MTA1QTE2NjQzRjE5
MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY4NzEwNTkxNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAq
LzsgfTsKQEAgLTM2Niw2ICszNjcsNyBAQAogCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyog
RG9taW5hdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb21pbmF0b3Jz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDQ0MUJFODM0NDEwMDYyQTYy
OSAvKiBCdWJibGVTb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1YmJs
ZVNvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MjVDQUIxQzUwNDYxNjAw
QUQ5NDNBIC8qIFJhbmdlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJh
bmdlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI1MUQ4ODVDRjIw
MDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJraW5nTG90LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFya2luZ0xvdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXdQb2ludGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODAsNiArODgyLDcgQEAKIAkJCQlBOEE0NzI5ODE1
MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5oICovLAogCQkJCTFBRUE4OEUxMUQ2QkJDRjQwMEU1QUQ2
NCAvKiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJQThBNDcyOUYxNTFBODI1QTAwNDEyM0ZGIC8qIEV4
cG9ydE1hY3Jvcy5oICovLAorCQkJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0
VmVjdG9yLmNwcCAqLywKIAkJCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZl
Y3Rvci5oICovLAogCQkJCUE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNw
cCAqLywKIAkJCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovLApA
QCAtMTU5NCw2ICsxNTk3LDcgQEAKIAkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVk
aWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0VDMTUxQTgyNUIwMDQxMjNGRiAv
KiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y0MTUxQTgyNUIw
MDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGN0M1RkI2
MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJs
b2NrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDIwNjAzMSkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xODEsNiArMTgxLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgRGF0YUxvZy5jcHAKICAg
ICBEYXRlTWF0aC5jcHAKICAgICBEZWNpbWFsTnVtYmVyLmNwcAorICAgIEZhc3RCaXRWZWN0b3Iu
Y3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKICAgICBGaWxlUHJpbnRTdHJlYW0uY3BwCiAgICAgRnVu
Y3Rpb25EaXNwYXRjaGVyLmNwcApJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmFzdEJpdFZlY3Rvci5o
IgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpzZXRF
cXVhbHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKQoreworICAgIHVp
bnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oCisgICAgICAgIGZhc3RD
YWxsb2Mob3RoZXIuYXJyYXlMZW5ndGgoKSwgc2l6ZW9mKHVpbnQzMl90KSkpOworICAgIG1lbWNw
eShuZXdBcnJheSwgb3RoZXIubV93b3Jkcywgb3RoZXIuYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1
aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRzKQorICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsK
KyAgICBtX3dvcmRzID0gbmV3QXJyYXk7CisgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRz
OworfQorCit2b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZVNsb3coc2l6ZV90IG51
bUJpdHMpCit7CisgICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0
aChudW1CaXRzKTsKKyAgICAKKyAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RS
ZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KKyAgICAvLyB1c2UgY2FzZSBmb3Ig
dGhpcyBtZXRob2QgdG8gYmUgaW5pdGlhbGl6aW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3Iu
CisgICAgCisgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihm
YXN0Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOworICAgIG1lbWNweShuZXdB
cnJheSwgbV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAgIGlm
IChtX3dvcmRzKQorICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKKyAgICBtX3dvcmRzID0gbmV3
QXJyYXk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9G
YXN0Qml0VmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rv
ci5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KQEAgLTkxLDE3ICs5MiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgRmFz
dEJpdFZlY3RvcldvcmRPd25lciYgb3BlcmF0b3I9KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3du
ZXImIG90aGVyKQogICAgIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IG90aGVyLmFycmF5TGVu
Z3RoKCk7Ci0gICAgICAgIGlmIChsZW5ndGggPT0gYXJyYXlMZW5ndGgoKSkgewotICAgICAgICAg
ICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJf
dCkpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICBpZiAoYXJyYXlMZW5ndGgo
KSAhPSBvdGhlci5hcnJheUxlbmd0aCgpKQorICAgICAgICAgICAgc2V0RXF1YWxzU2xvdyhvdGhl
cik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1f
d29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICAgICAgICAgIG1f
bnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKICAgICAgICAgfQotICAgICAgICB1aW50MzJfdCog
bmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobGVuZ3RoLCBzaXpl
b2YodWludDMyX3QpKSk7Ci0gICAgICAgIG1lbWNweShuZXdBcnJheSwgb3RoZXIubV93b3Jkcywg
bGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAgICAg
ICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsKLSAg
ICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwogICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgfQogICAgIApAQCAtMTQwLDE4ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9p
ZCByZXNpemUoc2l6ZV90IG51bUJpdHMpCiAgICAgewotICAgICAgICBpZiAobnVtQml0cyA9PSBt
X251bUJpdHMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICAvLyBVc2Ug
ZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBj
b21tb24KLSAgICAgICAgLy8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxp
emluZyB0aGUgc2l6ZSBvZiB0aGUgYml0dmVjdG9yLgotICAgICAgICAKLSAgICAgICAgc2l6ZV90
IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsKLSAgICAgICAg
dWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKG5l
d0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwotICAgICAgICBtZW1jcHkobmV3QXJyYXksIG1f
d29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgaWYgKG1f
d29yZHMpCi0gICAgICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAgbV93b3JkcyA9
IG5ld0FycmF5OworICAgICAgICBpZiAoYXJyYXlMZW5ndGgoKSAhPSBmYXN0Qml0VmVjdG9yQXJy
YXlMZW5ndGgobnVtQml0cykpCisgICAgICAgICAgICByZXNpemVTbG93KG51bUJpdHMpOwogICAg
ICAgICBtX251bUJpdHMgPSBudW1CaXRzOwogICAgIH0KICAgICAKQEAgLTE3MSw2ICsxNTcsOSBA
QCBwdWJsaWM6CiAgICAgdWludDMyX3QqIHdvcmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQogCiBw
cml2YXRlOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEVxdWFsc1Nsb3coY29uc3Qg
RmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHJlc2l6ZVNsb3coc2l6ZV90IG51bUJpdHMpOworICAgIAogICAgIHVpbnQzMl90KiBtX3dv
cmRzIHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9OwpAQCAtMzIw
LDYgKzMwOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBp
bmRleCA9IGFycmF5TGVuZ3RoKCk7IGluZGV4LS07KSB7CisgICAgICAgICAgICBpZiAobV93b3Jk
cy53b3JkKGluZGV4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyV29yZHM+CiAgICAgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3RvckFuZFdvcmRz
PHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSwgdHlwZW5hbWUgT3RoZXJXb3Jkczo6Vmlld1R5cGU+
PiBvcGVyYXRvciYoY29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKSBj
b25zdAogICAgIHsKQEAgLTM4MCw3ICszNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHdyaXR0
ZW4gdGhpcyB3YXkgc28gdGhhdCBpdCBwZXJmb3JtcyB3ZWxsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhl
ciB2YWx1ZSBpcyBhIGNvbnN0YW50LgogICAgICAgICB1aW50MzJfdCBza2lwVmFsdWUgPSAtKHN0
YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkgXiAxKTsKICAgICAgICAgCi0gICAgICAgIHNpemVf
dCBudW1Xb3JkcyA9IG1fd29yZHMuYXJyYXlMZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90IG51bVdv
cmRzID0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG1fd29yZHMubnVtQml0cygpKTsKICAgICAg
ICAgCiAgICAgICAgIHNpemVfdCB3b3JkSW5kZXggPSBzdGFydEluZGV4IC8gMzI7CiAgICAgICAg
IHNpemVfdCBzdGFydEluZGV4SW5Xb3JkID0gc3RhcnRJbmRleCAtIHdvcmRJbmRleCAqIDMyOwpA
QCAtNDcxLDYgKzQ2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV93b3Jkcy5jbGVhckFsbCgpOwog
ICAgIH0KIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29udGVudHMgb2YgdGhpcyBiaXR2
ZWN0b3IgY2hhbmdlZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIGJv
b2wgc2V0QW5kQ2hlY2soY29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVy
KQogICAgIHsKQEAgLTU1MCw2ICs1NDksMjggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIGF0KGluZGV4KTsKICAgICB9CisgICAgCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBj
b250ZW50cyBjaGFuZ2VkLgorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdG9taWNTZXRBbmRDaGVj
ayhzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICB1aW50MzJfdCogcG9p
bnRlciA9ICZtX3dvcmRzLndvcmQoaW5kZXggPj4gNSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sg
PSAxIDw8IChpbmRleCAmIDMxKTsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgdWlu
dDMyX3Qgb2xkVmFsdWUgPSAqcG9pbnRlcjsKKyAgICAgICAgICAgIHVpbnQzMl90IG5ld1ZhbHVl
OworICAgICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKG9sZFZhbHVl
ICYgbWFzaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUgfCBtYXNrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIShvbGRWYWx1ZSAmIG1hc2spKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSAmIH5t
YXNrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdlYWtDb21wYXJlQW5kU3dhcChw
b2ludGVyLCBvbGRWYWx1ZSwgbmV3VmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289177</attachid>
            <date>2016-09-17 12:47:36 -0700</date>
            <delta_ts>2016-09-17 15:41:01 -0700</delta_ts>
            <desc>looking quite nice indeed</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>143927</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAxNi0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgTWFya2VkQmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9j
YXRpb24gYW5kIG1hcmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgQ29uY3VycmVudCBHQ3MgbXVzdCBhbGxvdyBmb3IgbXV0
YXRpb24gYW5kIGFsbG9jYXRpb24gZHVyaW5nIGNvbGxlY3Rpb24uIFdlIGFscmVhZHkga25vdwor
ICAgICAgICBob3cgdG8gbXV0YXRlIGR1cmluZyBjb2xsZWN0aW9uLiBXZSBoYXZlIGEgd3JpdGUg
YmFycmllciBmb3IgdGhhdC4gQWxsb2NhdGlvbiBkdXJpbmcKKyAgICAgICAgY29sbGVjdGlvbiBp
cyBtb3JlIGludm9sdmVkOiB0aGUgY29sbGVjdG9yIG1vZGlmaWVzIHRoZSB0aGUgbWFyayBiaXRz
LCBhcyB3ZWxsIGFzIG90aGVyCisgICAgICAgIGtpbmRzIG9mIE1hcmtlZEJsb2NrIHN0YXRlLCBp
bi1wbGFjZSBkdXJpbmcgYSBjb2xsZWN0aW9uLiBUaGUgYWxsb2NhdG9yIHVzZXMgdGhhdCBzYW1l
CisgICAgICAgIE1hcmtlZEJsb2NrIHN0YXRlIHRvIGRlY2lkZSB3aGljaCByZWdpb25zIG9mIG1l
bW9yeSBhcmUgZnJlZS4gVGhpcyB3b3JrcyBpZiB0aGUgYWxsb2NhdG9yCisgICAgICAgIG5ldmVy
IHJ1bnMgd2hpbGUgdGhlIGNvbGxlY3RvciBpcyBydW5uaW5nLCBidXQgaWYgd2Ugd2FudCB0byBh
bGxvdyB0aGVtIHRvIHJ1biBhdCB0aGUgc2FtZQorICAgICAgICB0aW1lLCB0aGVuIHdlIG5lZWQg
dG8gaGF2ZSB0d28gdmVyc2lvbnMgb2YgdGhlIHN0YXRlOiBvbmUgdmVyc2lvbiBidWlsdCB1cCBi
eSB0aGUKKyAgICAgICAgY29sbGVjdG9yIGFuZCBhbm90aGVyIGNvbnN1bWVkIGJ5IHRoZSBhbGxv
Y2F0b3IuIFdlIGNsZWFyIHRoZSBjb2xsZWN0b3Igc3RhdGUgYXQgdGhlCisgICAgICAgIGJlZ2lu
bmluZyBvZiBjb2xsZWN0aW9uLCBhbmQgc3BsYXQgdGhlIGNvbGxlY3RvciBzdGF0ZSBvbnRvIHRo
ZSBhbGxvY2F0b3Igc3RhdGUgYWZ0ZXIKKyAgICAgICAgY29sbGVjdGlvbi4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgY291bGQgYmUgc3VwZXIgZXhwZW5zaXZlLCBidXQgd2UgY2FuIG1ha2UgaXQg
Y2hlYXAgd2l0aCBzb21lIGNsZXZlcm5lc3MuIFRoZSBiaWdnZXN0CisgICAgICAgIG9ic2VydmF0
aW9uIGlzIGp1c3QgdGhhdCBtb3N0IG9mIHRoZSBzdGF0ZSBpcyBhIGhhbmRmdWwgb2YgYml0cyBw
ZXIgYmxvY2s6IGlzIHRoZSBibG9jaworICAgICAgICBmcmVlLWxpc3RlZD8gaXMgaXQgY29tcGxl
dGVseSBmdWxsPyBjb21wbGV0ZWx5IGVtcHR5PyBpbiB0aGUgaW5jcmVtZW50YWwgc3dlZXBlcidz
CisgICAgICAgIHNuYXBzaG90PyBpcyBpdCByZXRpcmVkPyBpcyBpdCBpbiBlZGVuPyBUaGVyZSBp
cyBhbHNvIHN0YXRlIGluc2lkZSBibG9ja3MsIGxpa2UgdGhlIG1hcmsKKyAgICAgICAgYml0cywg
YnV0IEkgaGF2ZSBhIHNvbGlkIHBsYW4gdGhlcmUgYW5kIEknbGwgc2F2ZSBpdCBmb3IgYW5vdGhl
ciBwYXRjaC4gT25jZSB3ZSB2aWV3IHRoZQorICAgICAgICBzdGF0ZSBvZiBibG9ja3MgYXMgYml0
cywgd2UgY2FuIHB1dCB0aGF0IHN0YXRlIGludG8gYml0dmVjdG9ycywgc28gdGhhdCBpZiB0aGUg
Y29sbGVjdG9yCisgICAgICAgIG5lZWRzIHRvIHRyYW5zZm9ybSB0aGUgc3RhdGUgb2Ygc29tZSBi
bG9ja3MsIGl0IGNhbiBkbyBpdCB3aXRoIGEgc2luZ2xlIG9wZXJhdGlvbiBvdmVyCisgICAgICAg
IGJpdHZlY3RvcnMuIEkgbGlrZSB0byB0aGluayBvZiB0aGlzIGFzIDMyLXdheSBwYXJhbGxlbGl6
aW5nIGJsb2NrIG9wZXJhdGlvbnMsIHNpbmNlCisgICAgICAgIGRvaW5nIG9uZSBvcGVyYXRpb24g
b24gYSAzMi1iaXQgd29yZCBpbiBvbmUgb2YgdGhvc2UgYml0dmVjdG9ycyBpbnN0YW50bHkgYWZm
ZWN0cyAzMgorICAgICAgICBibG9ja3MuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBj
b252ZXJ0cyBhbGwgcHJldmlvdXMgY29sbGVjdGlvbnMgb2YgTWFya2VkQmxvY2tzLCBhbG9uZyB3
aXRoIHRoZSBNYXJrZWRCbG9jaworICAgICAgICBzdGF0ZSwgaW50byA4IGJpdHZlY3RvcnMgKGxp
dmUsIGVtcHR5LCBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlLCBlZGVuLCBzbmFwc2hvdCwKKyAgICAg
ICAgbWFya2luZ05vdEVtcHR5LCBhbmQgbWFya2luZ1JldGlyZWQpLiBUaGUgYml0dmVjdG9ycyBz
ZXBhcmF0ZSBhbGxvY2F0b3Igc3RhdGUgKGVtcHR5LAorICAgICAgICBhbGxvY2F0ZWQsIGNhbkFs
bG9jYXRlKSBmcm9tIG1hcmtpbmcgc3RhdGUgKG1hcmtpbmdOb3RFbXB0eSwgbWFya2luZ1JldGly
ZWQpLgorICAgICAgICAKKyAgICAgICAgQXMgYSBuaWNlIHNpZGUtZWZmZWN0IG9mIHN3aXRjaGlu
ZyB0byBiaXR2ZWN0b3JzLCB3ZSBnZXQgc2l6ZSBjbGFzcyByZWJhbGFuY2luZyBmb3IgZnJlZS4K
KyAgICAgICAgSXQgdXNlZCB0byBiZSB0aGF0IGlmIGEgTWFya2VkQWxsb2NhdG9yIGhhZCBhbiBl
bXB0eSBibG9jaywgd2Ugd291bGQgb25seSBhbGxvdyB0aGF0CisgICAgICAgIG1lbW9yeSB0byBi
ZSByZXVzZWQgYnkgYSBkaWZmZXJlbnQgTWFya2VkQWxsb2NhdG9yIGlmIHdlIGRpZCBhbiBpbmNy
ZW1lbnRhbCBzd2VlcCBvciBhCisgICAgICAgIGZ1bGwgZWFnZXIgc3dlZXAuIE5vdyB3ZSBodW50
IGRvd24gYWxsIGRlc3RydWN0b3JsZXNzIGVtcHR5IGJsb2NrcyBiZWZvcmUgYWxsb2NhdGluZyBu
ZXcKKyAgICAgICAgTWFya2VkQmxvY2tzLiBJdCB3b3VsZCBiZSByZWxhdGl2ZWx5IGVhc3kgdG8g
YWxzbyBodW50IGRvd24gZGVzdHJ1Y3RvciBlbXB0eSBibG9ja3MsIGJ1dAorICAgICAgICB0aGUg
dGhlb3J5IGlzIHRoYXQgdGhvc2UgbWlnaHQgYmUgZXhwZW5zaXZlIHRvIHN3ZWVwLCBzbyBpdCBt
aWdodCBzdGlsbCBiZSBiZXR0ZXIgdG8gbGVhdmUKKyAgICAgICAgdGhvc2UgdG8gdGhlIGluY3Jl
bWVudGFsIHN3ZWVwZXIuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBpcyBwZXJmLW5l
dXRyYWwgYWxsIGFyb3VuZC4gSSBkaWQgc29tZSB0ZXN0cyB3aXRoIHR3byBkaWZmZXJlbnQga2lu
ZHMgb2YKKyAgICAgICAgYWxsb2NhdGlvbiBzdHJhdGVnaWVzIC0gc29tZXRoaW5nIHRoYXQgaXMg
c29tZXdoYXQgZWFzaWVyIHRvIGRvIG5vdyB0aGF0IHlvdSBjYW4gbG9vayBmb3IKKyAgICAgICAg
YmxvY2tzIHRoYXQgYXJlIGNhbmRpZGF0ZXMgZm9yIGFsbG9jYXRpb24gYnkganVzdCBzY2Fubmlu
ZyBzb21lIGJpdHZlY3RvcnMuIEkgdHJpZWQgdHdvCisgICAgICAgIHZhcmlhbnRzOgorICAgICAg
ICAKKyAgICAgICAgLSBBbGxvY2F0ZSBvdXQgb2Ygbm9uLWVtcHR5IGJsb2NrcyBmaXJzdCwgbGVh
dmluZyBlbXB0eSBibG9ja3MgZm9yIGxhc3QgaW4gY2FzZSBhCisgICAgICAgICAgZGlmZmVyZW50
IGFsbG9jYXRvciBuZWVkZWQgdGhlbS4gVGhpcyBpcyBzb3J0IG9mIGEgYmVzdC1maXQgc3RyYXRl
Z3kuIEkgdHJpZWQgdGhpcworICAgICAgICAgIGZpcnN0LCBhbmQgaXQgY2FuIGJlIGV4cHJlc3Nl
ZCBhczoKKyAgICAgICAgICAKKyAgICAgICAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSBtX2NhbkFs
bG9jYXRlLmZpbmRCaXQobV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKQorICAgICAgICAKKyAgICAg
ICAgLSBBbGxvY2F0ZSBvdXQgb2YgbG93ZXItaW5kZXhlZCBibG9ja3MgZmlyc3QsIHRyZWF0aW5n
IGVtcHR5IGFuZCBub24tZW1wdHktYnV0LW5vdC1yZXRpcmVkCisgICAgICAgICAgKGkuZS4gY2Fu
QWxsb2NhdGUpIGJsb2NrcyBlcXVhbGx5LiBUaGlzIGlzIHNvcnQgb2YgYSBmaXJzdC1maXQgc3Ry
YXRlZ3kuIFRoaXMgaXMgd2hhdAorICAgICAgICAgIEkgZW5kZWQgdXAgc2V0dGxpbmcgb24sIGFu
ZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFzOgorICAgICAgICAgIAorICAgICAgICAgIG1fYWxsb2Nh
dGlvbkN1cnNvciA9IChtX2NhbkFsbG9jYXRlIHwgbV9lbXB0eSkuZmluZEJpdChtX2FsbG9jYXRp
b25DdXJzb3IsIHRydWUpCisgICAgICAgIAorICAgICAgICBUaGUgYmVzdC1maXQgc3RyYXRlZ3kg
bWVhbnQgMSUgcmVncmVzc2lvbnMgaW4gTG9uZ1NwaWRlciBhbmQgT2N0YW5lIG92ZXJhbGwsIGFu
ZCBhIDExJQorICAgICAgICByZWdyZXNzaW9uIG9uIE9jdGFuZS9lYXJsZXkuIEZpcnN0LWZpdCBt
ZWFucyBwZXJmLW5ldXRyYWxpdHkuIE1vc3QgZ3JlYXQgYWxsb2NhdG9ycyBza2V3CisgICAgICAg
IHRvd2FyZHMgZmlyc3QtZml0IGJlY2F1c2UgaXQncyBlbXBpcmljYWxseSBiZXR0ZXIsIHNvIHRo
aXMgcmVzdWx0IGlzIG5vdCBzdXJwcmlzaW5nLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5j
cHA6CisgICAgICAgICogaGVhcC9DZWxsQ29udGFpbmVyLmg6CisgICAgICAgICogaGVhcC9DZWxs
Q29udGFpbmVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjp2bSk6Cisg
ICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmhlYXApOgorICAgICAgICAoSlNDOjpDZWxsQ29u
dGFpbmVyOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpDZWxsQ29u
dGFpbmVyOjphYm91dFRvTWFyayk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmlzTWFy
a2VkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6ZmxpcElmTmVjZXNz
YXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcDoKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpiZWdpbk1hcmtpbmcp
OgorICAgICAgICAoSlNDOjpIZWFwOjplbmRNYXJraW5nKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
Y29sbGVjdEFsbEdhcmJhZ2UpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0SW1wbCk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OnNuYXBzaG90TWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnpvbWJpZnlE
ZWFkT2JqZWN0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yOjpN
YXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrU25hcHNob3RGdW5jdG9yOjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SGVhcDo6cmVzZXRBbGxvY2F0b3JzKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlYXAu
aDoKKyAgICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6Omlz
TWFya2VkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkpOgorICAg
ICAgICAoSlNDOjpIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKToKKyAgICAgICAgKiBoZWFwL0hlYXBT
dGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXBVdGlsLmg6CisgICAgICAgIChKU0M6
OkhlYXBVdGlsOjpmaW5kR0NPYmplY3RQb2ludGVyc0Zvck1hcmtpbmcpOgorICAgICAgICAoSlND
OjpIZWFwVXRpbDo6aXNQb2ludGVyR0NPYmplY3RKU0NlbGwpOgorICAgICAgICAqIGhlYXAvSGVh
cFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHA6Cisg
ICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKToKKyAg
ICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6
SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jayk6CisgICAgICAgIChKU0M6OkluY3Jl
bWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFs
U3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKToKKyAgICAgICAgKiBoZWFwL0luY3JlbWVudGFs
U3dlZXBlci5oOgorICAgICAgICAqIGhlYXAvTGFyZ2VBbGxvY2F0aW9uLmg6CisgICAgICAgIChK
U0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJrZWQpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9j
YXRpb246OmlzTWFya2VkQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0
aW9uOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9j
YXRpb246OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjppc01h
cmtlZER1cmluZ1dlYWtWaXNpdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkxhcmdlQWxs
b2NhdGlvbjo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGFyZ2VB
bGxvY2F0aW9uOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9j
YXRvcjo6TWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpp
c1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmaW5kRW1wdHlCbG9j
ayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29s
bGVjdGluZ0ltcGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlSW4p
OgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSW4pOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2VJbXBsKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxv
Y2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxp
emUpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0
aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjplbmRNYXJraW5nKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZvckVkZW5Db2xsZWN0aW9uKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmaW5kQmxvY2tUb1N3ZWVwKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFs
bG9jYXRvcjo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphc3NlcnRT
bmFwc2hvdEVtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkdW1wKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkdW1wQml0cyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6cmV0aXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjpmaWx0ZXJOZXh0QmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dlZXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEFs
bG9jYXRvci5oOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCaXRWZWN0
b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCaXRWZWN0b3JXaXRo
TmFtZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6bmV4dEFsbG9jYXRvcik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEFsbG9jYXRvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnRyeUNyZWF0ZSk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6TWFya2VkQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpz
cGVjaWFsaXplZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVj
dFNjcmliYmxlTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVw
SGVscGVyU2VsZWN0RW1wdHlNb2RlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZSk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnVuc3dlZXBXaXRoTm9OZXdseUFsbG9j
YXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNldElzRnJlZUxpc3Rl
ZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENv
bnN1bWVGcmVlTGlzdCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjptYXJrQ291bnQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc0VtcHR5KToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2Vl
cEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlTbG93KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmdTbG93KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6d2lsbFJlbW92ZUJsb2Nr
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAg
ICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc0ZyZWVMaXN0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
bmRleCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphYm91dFRvTWFyayk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
Ojppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
Ojppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjppc09uQmxvY2tzVG9Td2VlcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnNldElzT25CbG9ja3NUb1N3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnlEdXJp
bmdNYXJraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
ZmxpcEZvckVkZW5Db2xsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRzU3dlZXBpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc0FsbG9jYXRlZCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OmZvckVhY2hMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OmZvckVhY2hEZWFkQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpyZXNldFZlcnNp
b24pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2Nh
dGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cHJl
cGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c2hyaW5rKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZGlkQWxsb2Nh
dGVJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZpbmRFbXB0eUJsb2NrKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90KToKKyAgICAgICAgKEpTQzo6TWFy
a2VkU3BhY2U6OmFzc2VydFNuYXBzaG90RW1wdHkpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6ZHVtcEJpdHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlZlcmlmeU1hcmtlZDo6b3BlcmF0b3IoKSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmbGlwKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
ZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpuZXh0VmVyc2lv
bik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmaXJzdEFsbG9jYXRvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24pOgorICAgICAg
ICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpibG9ja3NXaXRoTmV3T2JqZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpzZXRJc01hcmtpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmZvckVhY2hEZWFkQ2VsbCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZUlubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNo
TGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKToK
KyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0
b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKToKKyAgICAgICAgKEpTQzo6U2xvdFZp
c2l0b3I6Om1hcmtBdXhpbGlhcnkpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogaGVhcC9XZWFrLmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFp
dHM8SlNDOjpXZWFrPFQ+Pjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8
SlNDOjpXZWFrPFQ+Pjo6cGVlayk6CisgICAgICAgICogaGVhcC9XZWFrQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpXZWFrQmxvY2s6OnNwZWNpYWxpemVkVmlzaXQpOgorICAgICAgICAoSlNDOjpX
ZWFrQmxvY2s6OnJlYXApOgorICAgICAgICAqIGhlYXAvV2Vha0lubGluZXMuaDoKKyAgICAgICAg
KFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+OjplbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+OjpwZWVrKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVNYXAuaDoKKyAgICAgICAgKiBydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDTWFwLmg6
CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA6CisKIDIwMTYtMDktMTYg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0MjYy
OiBWYXJpb3VzIENvbnN0cnVjdG9ycyBsZW5ndGggcHJvcGVydGllcyBzaG91bGQgYmUgY29uZmln
dXJhYmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2MDMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5OCw2ICs0OTgsOCBAQAogCQkwRjdDMzlG
QjFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJl
Z0V4cElubGluZXMuaCAqLzsgfTsKIAkJMEY3QzM5RkQxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4
cE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmgg
Ki87IH07CiAJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZFMUM5MEM1NUIw
MDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLzsgfTsKKwkJMEY3QzVGQjgxRDg4OEEwQzAwNDRGNUUy
IC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5s
aW5lcy5oICovOyB9OworCQkwRjdDNUZCQTFEODg5NTA3MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggKi87IH07CiAJ
CTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAv
KiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgz
MzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07
CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2
MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNzMxLDYgKzI3MzMsOCBAQAog
CQkwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdElubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkUxQzkwQzU1QjAwNDgw
MTUxIC8qIERGR09wSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdP
cEluZm8uaDsgcGF0aCA9IGRmZy9ERkdPcEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRCbG9ja0lubGluZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1h
cmtlZFNwYWNlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJr
ZWRTcGFjZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkx
NjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCeVZhbEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1
QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTUzMzgsOSArNTM0MiwxMSBAQAogCQkJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAvKiBN
YXJrZWRBbGxvY2F0b3IuaCAqLywKIAkJCQkxNDJENkYwNjEzNTM5QTI4MDBCMDJFODYgLyogTWFy
a2VkQmxvY2suY3BwICovLAogCQkJCTE0MkQ2RjA3MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRC
bG9jay5oICovLAorCQkJCTBGN0M1RkI3MUQ4ODhBMDEwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lu
bGluZXMuaCAqLywKIAkJCQkxNDE0NDhDQTEzQTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxvY2tT
ZXQuaCAqLywKIAkJCQkxNEQyRjNEODEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3Bw
ICovLAogCQkJCTE0RDJGM0Q5MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5oICovLAor
CQkJCTBGN0M1RkI5MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLywK
IAkJCQkxNDJENkYwRTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLywKIAkJCQkx
NDJENkYwRjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggKi8sCiAJCQkJQUREQjFGNjIx
OEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RTZXQuaCAqLywKQEAgLTczOTQsNiArNzQwMCw3
IEBACiAJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRkI5MjE4MTZEMDJFQjIwMDU1QTVEQiAvKiBERkdBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTQ2MTUzNENCQUYwMDBGOTQ1NiAvKiBERkdB
cmd1bWVudFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDNUZCODFEODg4QTBDMDA0
NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgx
MjFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyREQ4MTQxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIxODc3NTA1NjAwODNCNjg3IC8q
IERGR0FyaXRoTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTExLDYgKzc5MTgsNyBAQAogCQkJ
CUE1MDNGQTJBMTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUEyMjgzNjFEMzVENzFGMDBEOEUwNjcgLyogQXJp
dGhQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQg
LyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0M1RkJBMUQ4
ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MTNFNUMyMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ0MkNCMjUxQTZDREI4QzAwNUQzRDdDIC8qIEpTSW5w
dXRzLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGODE3QjZCNUFCMDBBN0FFM0YgLyog
SlNJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlu
bGluZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm90ZWN0LmgiCiAjaW5j
bHVkZSAiVk1FbnRyeVNjb3BlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
ZWxsQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q2VsbENvbnRhaW5lci5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9DZWxsQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMiBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBDZWxsOwogY2xh
c3MgTGFyZ2VBbGxvY2F0aW9uOwogY2xhc3MgTWFya2VkQmxvY2s7CiBjbGFzcyBXZWFrU2V0Owor
Y2xhc3MgVk07CiAKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKQEAgLTU2LDYgKzU4
LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCisgICAgVk0qIHZtKCkgY29uc3Q7Cisg
ICAgSGVhcCogaGVhcCgpIGNvbnN0OworICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAhIW1fZW5jb2RlZFBvaW50ZXI7IH0KICAgICAKICAgICBib29sIGlz
TWFya2VkQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRQb2ludGVyICYmICEobV9lbmNv
ZGVkUG9pbnRlciAmIGlzTGFyZ2VBbGxvY2F0aW9uQml0KTsgfQpAQCAtNzMsMTMgKzc4LDEzIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8TGFyZ2VBbGxvY2F0aW9uKj4o
bV9lbmNvZGVkUG9pbnRlciAtIGlzTGFyZ2VBbGxvY2F0aW9uQml0KTsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24pOwotICAgIHZvaWQgZmxpcElmTmVj
ZXNzYXJ5KCk7CisgICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lvbik7CiAgICAgYm9vbCBu
ZWVkc0ZsaXAoKSBjb25zdDsKICAgICAKLSAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc01hcmtlZChIZWFwQ2VsbCopIGNvbnN0OworICAgIGJvb2wgaXNNYXJrZWQoSGVhcFZl
cnNpb24sIEhlYXBDZWxsKikgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQoSGVhcENlbGwqKSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChI
ZWFwVmVyc2lvbiwgSGVhcENlbGwqKSBjb25zdDsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWQo
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXJJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENv
bnRhaW5lcklubGluZXMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQg
KzI5LDIwIEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJWTS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoKSBjb25zdAor
aW5saW5lIFZNKiBDZWxsQ29udGFpbmVyOjp2bSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGFyZ2VB
bGxvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtYXJrZWRCbG9j
aygpLmhhbmRsZSgpLmlzTWFya2VkKCk7CisgICAgICAgIHJldHVybiBsYXJnZUFsbG9jYXRpb24o
KS52bSgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLnZtKCk7Cit9CisKK2lubGluZSBIZWFw
KiBDZWxsQ29udGFpbmVyOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJnZtKCktPmhlYXA7
CiB9CiAKIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXBDZWxsKiBjZWxs
KSBjb25zdApAQCAtNDYsNiArNTIsMTMgQEAgaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNN
YXJrZWQoSGVhcAogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkKGNlbGwpOwogfQog
CitpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwVmVyc2lvbiB2ZXJzaW9u
LCBIZWFwQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkK
KyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CisgICAgcmV0dXJu
IG1hcmtlZEJsb2NrKCkuaXNNYXJrZWQodmVyc2lvbiwgY2VsbCk7Cit9CisKIGlubGluZSBib29s
IENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCogY2VsbCkg
Y29uc3QKIHsKICAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKQEAgLTUzLDYgKzY2LDEzIEBA
IGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXcKICAgICByZXR1cm4gbWFy
a2VkQmxvY2soKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiB9CiAKK2lubGluZSBi
b29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2
ZXJzaW9uLCBIZWFwQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaXNMYXJnZUFsbG9jYXRp
b24oKSkKKyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkT3JOZXdseUFs
bG9jYXRlZCgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZCh2ZXJzaW9uLCBjZWxsKTsKK30KKwogaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6bm90
ZU1hcmtlZCgpCiB7CiAgICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlvbigpKQpAQCAtNzMsMTYgKzkz
LDEwIEBAIGlubGluZSBXZWFrU2V0JiBDZWxsQ29udGFpbmVyOjp3ZWFrU2V0KCkKICAgICByZXR1
cm4gbWFya2VkQmxvY2soKS53ZWFrU2V0KCk7CiB9CiAKLWlubGluZSB2b2lkIENlbGxDb250YWlu
ZXI6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBpZiAo
IWlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIG1hcmtlZEJsb2NrKCkuZmxpcElmTmVjZXNz
YXJ5KGhlYXBWZXJzaW9uKTsKLX0KLQotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6ZmxpcElm
TmVjZXNzYXJ5KCkKK2lubGluZSB2b2lkIENlbGxDb250YWluZXI6OmFib3V0VG9NYXJrKEhlYXBW
ZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24oKSkKLSAg
ICAgICAgbWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgbWFya2VkQmxv
Y2soKS5hYm91dFRvTWFyayhoZWFwVmVyc2lvbik7CiB9CiAKIGlubGluZSBib29sIENlbGxDb250
YWluZXI6Om5lZWRzRmxpcCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lu
bGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0
b3IuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIw
NjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKKyNp
bmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVy
LmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5o
IgpAQCAtNTI2LDExICs1MjcsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgfQog
ICAgIAogICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0
aGlzLCAibV9vYmplY3RTcGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2Uu
ZmxpcCgpOworICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMs
ICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29iamVjdFNwYWNlLmJl
Z2luTWFya2luZygpOwogICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2lu
Zyh0cnVlKTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCkBA
IC03NzksNyArNzc4LDcgQEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAgICBBU1NFUlQobV9z
aGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJz
LnJlbW92ZUFsbCgpOwogICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKGZhbHNl
KTsKKyAgICBtX29iamVjdFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9i
amVjdENvdW50KCkKQEAgLTkzOSw3ICs5MzgsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJi
YWdlKCkKICAgICAgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNw
YWNlLnNocmluaygpOwogICAgIH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBzaG90LmlzRW1wdHko
KSk7CisgICAgbV9vYmplY3RTcGFjZS5hc3NlcnRTbmFwc2hvdEVtcHR5KCk7CiAKICAgICBzd2Vl
cEFsbExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrcygpOwogfQpAQCAtMTA0OCw3ICsxMDQ3LDcgQEAg
TkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3Jl
bWVudGFsU3dlZXBlcigpOwogICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVC
bG9ja3MoKTsKIAotICAgIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0
aW9uKCk7CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxl
Y3Rpb24oZ2NTdGFydFRpbWUpOwogICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTA2
Myw2ICsxMDYyLDExIEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXAK
ICAgICAgICAgZG91YmxlIGFmdGVyID0gY3VycmVudFRpbWVNUygpOwogICAgICAgICBkYXRhTG9n
KGFmdGVyIC0gYmVmb3JlLCAiIG1zXVxuIik7CiAgICAgfQorICAgIAorICAgIGlmIChmYWxzZSkg
eworICAgICAgICBkYXRhTG9nKCJIZWFwIHN0YXRlIGFmdGVyIEdDOlxuIik7CisgICAgICAgIG1f
b2JqZWN0U3BhY2UuZHVtcEJpdHMoKTsKKyAgICB9CiB9CiAKIHZvaWQgSGVhcDo6c3dlZXBMYXJn
ZUFsbG9jYXRpb25zKCkKQEAgLTExNjIsNDQgKzExNjYsMTAgQEAgdm9pZCBIZWFwOjpzd2VlcEFy
cmF5QnVmZmVycygpCiAgICAgbV9hcnJheUJ1ZmZlcnMuc3dlZXAoKTsKIH0KIAotc3RydWN0IE1h
cmtlZEJsb2NrU25hcHNob3RGdW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3Rv
ciB7Ci0gICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IoVmVjdG9yPE1hcmtlZEJsb2NrOjpI
YW5kbGUqPiYgYmxvY2tzKSAKLSAgICAgICAgOiBtX2luZGV4KDApIAotICAgICAgICAsIG1fYmxv
Y2tzKGJsb2NrcykKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdAotICAgIHsKLSAgICAgICAgYmxvY2stPnNldElzT25C
bG9ja3NUb1N3ZWVwKHRydWUpOwotICAgICAgICBtX2Jsb2Nrc1ttX2luZGV4KytdID0gYmxvY2s7
Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgYSBtdXRhYmxlIGZpZWxkIGJlY2F1ZSB0
aGlzIGlzbid0IGEgQysrIGxhbWJkYS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5NjQ0Ci0gICAgbXV0YWJsZSBzaXplX3QgbV9pbmRleDsKLSAgICBW
ZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBtX2Jsb2NrczsKLX07Ci0KIHZvaWQgSGVhcDo6
c25hcHNob3RNYXJrZWRTcGFjZSgpCiB7CiAgICAgVGltaW5nU2NvcGUgdGltaW5nU2NvcGUoKnRo
aXMsICJIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlIik7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHByb2JhYmx5IGJlIHJlbmFtZWQuIEl0J3Mgbm90IGFjdHVhbGx5IHNuYXBzaG90dGluZyBh
bGwgb2YgTWFya2VkU3BhY2UuCi0gICAgLy8gVGhpcyBpcyB1c2VkIGJ5IEluY3JlbWVudGFsU3dl
ZXBlciwgc28gaXQgb25seSBuZWVkcyB0byBzbmFwc2hvdCBibG9ja3MuIEhvd2V2ZXIsIGlmIHdl
IGV2ZXIKLSAgICAvLyB3YW50ZWQgdG8gYWRkIG90aGVyIHNuYXBzaG90dGluZyBsb2dpbiwgd2Un
ZCBwcm9iYWJseSBwdXQgaXQgaGVyZS4KLSAgICAKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dy
ZXNzID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6OkhhbmRs
ZSogaGFuZGxlIDogbV9vYmplY3RTcGFjZS5ibG9ja3NXaXRoTmV3T2JqZWN0cygpKSB7Ci0gICAg
ICAgICAgICBpZiAoaGFuZGxlLT5pc09uQmxvY2tzVG9Td2VlcCgpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgbV9ibG9ja1NuYXBzaG90LmFwcGVuZChoYW5kbGUpOwot
ICAgICAgICAgICAgaGFuZGxlLT5zZXRJc09uQmxvY2tzVG9Td2VlcCh0cnVlKTsKLSAgICAgICAg
fQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fYmxvY2tTbmFwc2hvdC5yZXNpemVUb0ZpdChtX29i
amVjdFNwYWNlLmJsb2NrcygpLnNldCgpLnNpemUoKSk7Ci0gICAgICAgIE1hcmtlZEJsb2NrU25h
cHNob3RGdW5jdG9yIGZ1bmN0b3IobV9ibG9ja1NuYXBzaG90KTsKLSAgICAgICAgbV9vYmplY3RT
cGFjZS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgfQorICAgIG1fb2JqZWN0U3BhY2Uuc25h
cHNob3QoKTsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpCkBA
IC0xMjIyLDkgKzExOTIsOSBAQCB2b2lkIEhlYXA6OndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1
dGluCiAgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2Rl
QmxvY2tzKHRoaXMpOwogfQogCi12b2lkIEhlYXA6OnJlc2V0QWxsb2NhdG9ycygpCit2b2lkIEhl
YXA6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKLSAgICBtX29iamVjdFNwYWNlLnJlc2V0QWxs
b2NhdG9ycygpOworICAgIG1fb2JqZWN0U3BhY2UucHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIH0K
IAogdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKQEAgLTE0NzMsNyArMTQ0Myw3
IEBAIHB1YmxpYzoKIHZvaWQgSGVhcDo6em9tYmlmeURlYWRPYmplY3RzKCkKIHsKICAgICAvLyBT
d2VlcCBub3cgYmVjYXVzZSBkZXN0cnVjdG9ycyB3aWxsIGNyYXNoIG9uY2Ugd2UncmUgem9tYmlm
aWVkLgotICAgIG1fb2JqZWN0U3BhY2Uuem9tYmlmeVN3ZWVwKCk7CisgICAgbV9vYmplY3RTcGFj
ZS5zd2VlcCgpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7
CiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENlbGwoaXRlcmF0aW9uU2NvcGUsIFpvbWJp
ZnkoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzMSw3ICszMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlU291cmNlUHJvdmlk
ZXJDYWNoZXMoKTsKICAgICB2b2lkIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwogICAgIHZv
aWQgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOwotICAgIHZvaWQg
cmVzZXRBbGxvY2F0b3JzKCk7CisgICAgdm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAg
IHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzKCk7CiAgICAgdm9pZCBjbGVhclVubWFya2VkRXhlY3V0YWJsZXMoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkocmV2aXNpb24g
MjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtODEsOSArODEsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNN
YXJrZWQoY29uc3QgCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAg
IHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwogICAgIE1hcmtlZEJs
b2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgaWYgKGJsb2NrLm5lZWRzRmxp
cChibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKKyAgICByZXR1cm4g
YmxvY2suaXNNYXJrZWQoCisgICAgICAgIGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52
ZXJzaW9uKCksIGNlbGwpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWRD
b25jdXJyZW50bHkoY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTkyLDEwICs5MSw4IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZENvbmN1cnIKICAgICBpZiAoY2VsbC0+aXNMYXJn
ZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlz
TWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsK
LSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52
ZXJzaW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV1RGOjpsb2FkTG9hZEZlbmNl
KCk7Ci0gICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5p
c01hcmtlZENvbmN1cnJlbnRseSgKKyAgICAgICAgYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLnZlcnNpb24oKSwgY2VsbCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjp0ZXN0
QW5kU2V0TWFya2VkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IHZvaWQqIHJhd0NlbGwpCkBA
IC0xMDQsNyArMTAxLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJr
ZQogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gY2Vs
bC0+bGFyZ2VBbGxvY2F0aW9uKCkudGVzdEFuZFNldE1hcmtlZCgpOwogICAgIE1hcmtlZEJsb2Nr
JiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgYmxvY2suZmxpcElmTmVjZXNzYXJ5
RHVyaW5nTWFya2luZyh2ZXJzaW9uKTsKKyAgICBibG9jay5hYm91dFRvTWFyayh2ZXJzaW9uKTsK
ICAgICByZXR1cm4gYmxvY2sudGVzdEFuZFNldE1hcmtlZChjZWxsKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24g
MjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlv
blNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgog
I2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw5ICs4NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghZmlsdGVyLnJ1bGVPdXQoYml0
d2lzZV9jYXN0PEJpdHM+KHByZXZpb3VzQ2FuZGlkYXRlKSkKICAgICAgICAgICAgICAgICAmJiBz
ZXQuY29udGFpbnMocHJldmlvdXNDYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgJiYgcHJldmlv
dXNDYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgPT0gSGVhcENlbGw6OkF1eGlsaWFyeSkg
ewotICAgICAgICAgICAgICAgIHByZXZpb3VzQ2FuZGlkYXRlLT5mbGlwSWZOZWNlc3NhcnkoaGVh
cFZlcnNpb24pOwogICAgICAgICAgICAgICAgIHByZXZpb3VzUG9pbnRlciA9IHN0YXRpY19jYXN0
PGNoYXIqPihwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEFsaWduKHByZXZpb3VzUG9p
bnRlcikpOwotICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCku
aXNMaXZlQ2VsbChwcmV2aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91
c0NhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcHJldmlvdXNQb2lu
dGVyKSkKICAgICAgICAgICAgICAgICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC05OSwxMCArOTgsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlm
ICghc2V0LmNvbnRhaW5zKGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IAotICAgICAgICBjYW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7Ci0KICAg
ICAgICAgYXV0byB0cnlQb2ludGVyID0gWyZdICh2b2lkKiBwb2ludGVyKSB7Ci0gICAgICAgICAg
ICBpZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQorICAgICAgICAg
ICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcG9pbnRl
cikpCiAgICAgICAgICAgICAgICAgZnVuYyhwb2ludGVyKTsKICAgICAgICAgfTsKICAgICAKQEAg
LTE3MCw3ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgp
LmNlbGxLaW5kKCkgIT0gSGVhcENlbGw6OkpTQ2VsbCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgCi0gICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5KCk7CiAgICAg
ICAgIGlmICghY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBWZXJpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5s
aW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgc3dlZXBUaW1l
TXVsdGlwbGllciAKICNpZiBVU0UoQ0YpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFs
U3dlZXBlcihIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICA6IEhlYXBUaW1l
cihoZWFwLT52bSgpLCBydW5Mb29wKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxv
Y2tTbmFwc2hvdCkKIHsKIH0KIApAQCAtNjYsNyArNjUsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dl
ZXBlcjo6Y2FuY2VsVGltZXIoKQogI2VsaWYgUExBVEZPUk0oRUZMKQogSW5jcmVtZW50YWxTd2Vl
cGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCkKICAgICA6IEhlYXBUaW1lcihoZWFw
LT52bSgpKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKIHsK
IH0KIApAQCAtODYsNyArODQsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGlt
ZXIoKQogI2VsaWYgVVNFKEdMSUIpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dl
ZXBlcihIZWFwKiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAgLCBtX2Js
b2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQogewogfQogCkBAIC0xMjEsMTkgKzEx
OCwyMCBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZG9Td2VlcChkb3VibGUgCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsKICAgICBjYW5j
ZWxUaW1lcigpOwogfQogCiBib29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2so
KQogewotICAgIHdoaWxlICghbV9ibG9ja3NUb1N3ZWVwLmlzRW1wdHkoKSkgewotICAgICAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcC50YWtlTGFzdCgpOwot
ICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAoZmFsc2UpOwotCi0gICAgICAgIGlm
ICghYmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAoOyBt
X2N1cnJlbnRBbGxvY2F0b3I7IG1fY3VycmVudEFsbG9jYXRvciA9IG1fY3VycmVudEFsbG9jYXRv
ci0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGJsb2NrID0gbV9jdXJyZW50QWxsb2NhdG9y
LT5maW5kQmxvY2tUb1N3ZWVwKCk7CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoYmxvY2spIHsKICAgICAgICAgRGVmZXJHQ0ZvckFX
aGlsZSBkZWZlckdDKG1fdm0tPmhlYXApOwogICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgICAg
ICAgbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKQEAg
LTE0NiwxMSArMTQ0LDEyIEBAIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9j
aygKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKCkKIHsKICAgICBzY2hl
ZHVsZVRpbWVyKCk7CisgICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbV92bS0+aGVhcC5vYmplY3RT
cGFjZSgpLmZpcnN0QWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3
aWxsRmluaXNoU3dlZXBpbmcoKQogewotICAgIG1fYmxvY2tzVG9Td2VlcC5jbGVhcigpOworICAg
IG1fY3VycmVudEFsbG9jYXRvciA9IG51bGxwdHI7CiAgICAgaWYgKG1fdm0pCiAgICAgICAgIGNh
bmNlbFRpbWVyKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1l
bnRhbFN3ZWVwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEz
ICsyNywxMiBAQAogI2RlZmluZSBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogCiAjaW5jbHVkZSAiSGVh
cFRpbWVyLmgiCi0jaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwotY2xhc3MgTWFya2VkQmxvY2s7
CitjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAKIGNsYXNzIEluY3JlbWVudGFsU3dlZXBlciA6IHB1
YmxpYyBIZWFwVGltZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyAr
NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVUaW1lcigpOwogICAgIHZvaWQgY2Fu
Y2VsVGltZXIoKTsKICAgICAKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBtX2Js
b2Nrc1RvU3dlZXA7CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2N1cnJlbnRBbGxvY2F0b3I7CiAj
ZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2Nh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxs
b2NhdGlvbi5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9MYXJnZUFsbG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsOSArNzAsMTAgQEAgcHVi
bGljOgogICAgIAogICAgIGJvb2wgaXNOZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNOZXdseUFsbG9jYXRlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc01hcmtlZCgpIHsg
cmV0dXJuIG1faXNNYXJrZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc01hcmtlZChIZWFwQ2VsbCopIHsgcmV0dXJuIG1faXNNYXJr
ZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVy
biBtX2lzTWFya2VkLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7IH0KICAgICBib29s
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpIHsgcmV0dXJuIGlzTWFya2VkKCkgfHwgaXNOZXds
eUFsbG9jYXRlZCgpOyB9CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENl
bGwqKSB7IHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsgfQotICAgIGJvb2wgaXNN
YXJrZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24sIEhlYXBDZWxsKikgeyByZXR1cm4g
aXNNYXJrZWQoKTsgfQogICAgIGJvb2wgaXNMaXZlKCkgeyByZXR1cm4gaXNNYXJrZWRPck5ld2x5
QWxsb2NhdGVkKCk7IH0KICAgICAKICAgICBib29sIGhhc1ZhbGlkQ2VsbCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzVmFsaWRDZWxsOyB9CkBAIC0xMDYsOCArMTA3LDcgQEAgcHVibGljOgogICAgIAog
ICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZXM7IH0KICAgICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSh1aW50NjRf
dCkgeyB9Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKHVpbnQ2NF90KSB7
IH0KKyAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKSB7IH0KICAgICAKICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgdGVzdEFuZFNldE1hcmtlZCgpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1
ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNp
bmNsdWRlICJWTS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMzksNyArNDAs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKEhl
YXAqIGhlYXAsIE1hcmtlZFNwYWNlKiBtYXJrZWRTcGFjZSwgc2l6ZV90IGNlbGxTaXplLCBjb25z
dCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogICAgIDogbV9jdXJyZW50QmxvY2so
MCkKICAgICAsIG1fbGFzdEFjdGl2ZUJsb2NrKDApCi0gICAgLCBtX25leHRCbG9ja1RvU3dlZXAo
bnVsbHB0cikKICAgICAsIG1fY2VsbFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNlbGxTaXpl
KSkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQogICAgICwgbV9oZWFwKGhlYXApCkBA
IC01MCwxMSArNTAsMTMgQEAgTWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoSGVhcCog
aAogYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQogewog
ICAgIHVuc2lnbmVkIGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID0gMDsKLSAgICBNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jayA9IG1fYmxvY2tMaXN0LmJlZ2luKCk7Ci0gICAgd2hpbGUgKGJsb2Nr
KSB7Ci0gICAgICAgIGJsb2NrID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotICAg
ICAgICBpZiAoYmxvY2spCi0gICAgICAgICAgICBibG9jay0+ZmxpcElmTmVjZXNzYXJ5KCk7IC8v
IEZvcmNlcyB1cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRoZSBibG9jaywgYnV0IGhhcyBubyBz
ZW1hbnRpYyBlZmZlY3QuCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxv
Y2tzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
ayA9IG1fYmxvY2tzW2luZGV4XTsKKyAgICAgICAgaWYgKGJsb2NrKSB7CisgICAgICAgICAgICAv
LyBGb3JjZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8g
c2VtYW50aWMgZWZmZWN0LgorICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKKyAg
ICAgICAgICAgICAgICBibG9jay0+YmxvY2soKS5yZXNldFZlcnNpb24oKTsKKyAgICAgICAgfQog
ICAgICAgICArK2l0ZXJzU2luY2VMYXN0VGltZUNoZWNrOwogICAgICAgICBpZiAoaXRlcnNTaW5j
ZUxhc3RUaW1lQ2hlY2sgPj0gSGVhcDo6c190aW1lQ2hlY2tSZXNvbHV0aW9uKSB7CiAgICAgICAg
ICAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpOwpAQCAtNjYsODQgKzY4LDc2IEBAIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0
KGRvdWJsZSAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTWFya2VkQWxsb2NhdG9yOjpy
ZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCi17Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsgLy8gVGhpcyB3aWxsIGJlIGNhbGxlZCBpbiBwYXJhbGxlbCBkdXJpbmcgR0Mu
Ci0gICAgaWYgKGJsb2NrID09IG1fY3VycmVudEJsb2NrKSB7Ci0gICAgICAgIC8vIFRoaXMgaGFw
cGVucyB3aGVuIHRoZSBtdXRhdG9yIGlzIHJ1bm5pbmcuIFdlIGZpbmlzaGVkIGEgZnVsbCBHQyBh
bmQgbWFya2VkIHRvbyBmZXcgdGhpbmdzCi0gICAgICAgIC8vIHRvIHJldGlyZS4gVGhlbiB3ZSBz
dGFydGVkIGFsbG9jYXRpbmcgaW4gdGhpcyBibG9jay4gVGhlbiBhIGJhcnJpZXIgcmFuLCB3aGlj
aCBtYXJrZWQgYW4KLSAgICAgICAgLy8gb2JqZWN0IGluIHRoaXMgYmxvY2ssIHdoaWNoIHB1dCBp
dCBvdmVyIHRoZSByZXRpcmVtZW50IHRocmVzaG9sZC4gSXQncyBPSyB0byBzaW1wbHkgZG8KLSAg
ICAgICAgLy8gbm90aGluZyBpbiB0aGF0IGNhc2UuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGJsb2NrID09IG1fbGFzdEFjdGl2ZUJsb2NrKSB7Ci0gICAgICAgIC8vIFRoaXMgY2Fu
IGVhc2lseSBoYXBwZW4gZHVyaW5nIG1hcmtpbmcuIEl0IHdvdWxkIGJlIGVhc3kgdG8gaGFuZGxl
IHRoaXMgY2FzZSwgYnV0IGl0J3MKLSAgICAgICAgLy8ganVzdCBhcyBlYXN5IHRvIGlnbm9yZSBp
dC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+aXNP
bkxpc3QoKSk7Ci0gICAgaWYgKGJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCkKLSAgICAgICAg
bV9uZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotICAg
IGJsb2NrLT5yZW1vdmUoKTsKLSAgICBtX3JldGlyZWRCbG9ja3MucHVzaChibG9jayk7Ci19Ci0K
LU1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmlsdGVyTmV4dEJsb2NrKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxs
b2NhdG9yOjpmaW5kRW1wdHlCbG9jaygpCiB7Ci0gICAgaWYgKGJsb2NrID09IG1fYmxvY2tMaXN0
LmVuZCgpKQorICAgIG1fZW1wdHlDdXJzb3IgPSBtX2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1cnNv
ciwgdHJ1ZSk7CisgICAgaWYgKG1fZW1wdHlDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYmxvY2s7Ci19Ci0KLXZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpzZXROZXh0QmxvY2tUb1N3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KQotewotICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IGZpbHRlck5leHRCbG9jayhibG9jayk7Cisg
ICAgcmV0dXJuIG1fYmxvY2tzW21fZW1wdHlDdXJzb3JdOwogfQogCiB2b2lkKiBNYXJrZWRBbGxv
Y2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCkKIHsKICAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0gICAgaWYgKG1fY3Vy
cmVudEJsb2NrKSB7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9PSBtX25leHRCbG9j
a1RvU3dlZXApOworICAgIGlmIChtX2N1cnJlbnRCbG9jaykKICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmRpZENvbnN1bWVGcmVlTGlzdCgpOwotICAgICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1f
Y3VycmVudEJsb2NrLT5uZXh0KCkpOwotICAgIH0KICAgICAKICAgICBzZXRGcmVlTGlzdChGcmVl
TGlzdCgpKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKG1fbmV4dEJsb2NrVG9Td2VlcCAhPSBtX2Js
b2NrTGlzdC5lbmQoKSk7Ci0KLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBuZXh0OwotICAgIGZv
ciAoTWFya2VkQmxvY2s6OkhhbmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9j
azsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2st
Pm5leHQoKSk7Ci0KLSAgICAgICAgLy8gSXQgd291bGQgYmUgc3VwZXIgd2VpcmQgaWYgdGhlIGJs
b2NrcyB3ZSBhcmUgc3dlZXBpbmcgaGF2ZSBhbnl0aGluZyBhbGxvY2F0ZWQgZHVyaW5nIHRoaXMK
LSAgICAgICAgLy8gY3ljbGUuCi0gICAgICAgIEFTU0VSVCghYmxvY2stPmhhc0FueU5ld2x5QWxs
b2NhdGVkKCkpOwotICAgICAgICAKLSAgICAgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+
c3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsKKyAgICBtX2N1cnJl
bnRCbG9jayA9IG51bGxwdHI7CisgICAgCisgICAgZm9yICg7OykgeworICAgICAgICBtX2FsbG9j
YXRpb25DdXJzb3IgPSAobV9jYW5BbGxvY2F0ZSB8IG1fZW1wdHkpLmZpbmRCaXQobV9hbGxvY2F0
aW9uQ3Vyc29yLCB0cnVlKTsKKyAgICAgICAgaWYgKG1fYWxsb2NhdGlvbkN1cnNvciA+PSBtX2Js
b2Nrcy5zaXplKCkpCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIC8vIEl0
J3MgcG9zc2libGUgdG8gc3R1bWJsZSBvbiBhIGNvbXBsZXRlLWZ1bGwgYmxvY2suIE1hcmtpbmcg
dHJpZXMgdG8gcmV0aXJlIHRoZXNlLCBidXQKLSAgICAgICAgLy8gdGhhdCBhbGdvcml0aG0gaXMg
cmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCi0gICAgICAgIGlmIChmcmVl
TGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSkgewotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5p
c0ZyZWVMaXN0ZWQoKSk7Ci0gICAgICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxs
b2NhdGVkKCk7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzTWFya2VkKCkpOwotICAgICAg
ICAgICAgcmV0aXJlKGJsb2NrKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Cisg
ICAgICAgIHNldElzQ2FuQWxsb2NhdGUobV9hbGxvY2F0aW9uQ3Vyc29yLCBmYWxzZSk7CiAKLSAg
ICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jazsKLSAgICAgICAgc2V0RnJlZUxpc3QoZnJlZUxp
c3QpOwotICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9j
YXRlSW4obV9ibG9ja3NbbV9hbGxvY2F0aW9uQ3Vyc29yXSkpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KICAgICAKLSAgICBpZiAoIW1fZnJlZUxpc3QpIHsKLSAgICAgICAgbV9j
dXJyZW50QmxvY2sgPSAwOwotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoT3B0aW9uczo6bG9v
a0ZvckVtcHR5QmxvY2tzSW5PdGhlckFsbG9jYXRvcnMoKSkgeworICAgICAgICBpZiAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX21hcmtlZFNwYWNlLT5maW5kRW1wdHlCbG9jaygpKSB7
CisgICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAgICAgICAgICAgIGJsb2NrLT5yZW1vdmVG
cm9tQWxsb2NhdG9yKCk7CisgICAgICAgICAgICBhZGRCbG9jayhibG9jayk7CisgICAgICAgICAg
ICByZXR1cm4gYWxsb2NhdGVJbihibG9jayk7CisgICAgICAgIH0KICAgICB9CisgICAgCisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CiAKK3ZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbihN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK3sKKyAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxv
Y2F0ZUluKGJsb2NrKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3ZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbihNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jaykKK3sKKyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCgh
YmxvY2stPmhhc0FueU5ld2x5QWxsb2NhdGVkKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRnJl
ZUxpc3RlZCgpKTsKKyAgICAKKyAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChN
YXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOworICAgIAorICAgIC8vIEl0J3Mg
cG9zc2libGUgdG8gc3R1bWJsZSBvbiBhIGNvbXBsZXRlbHkgZnVsbCBibG9jay4gTWFya2luZyB0
cmllcyB0byByZXRpcmUgdGhlc2UsIGJ1dAorICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kg
YW5kIG1heSBmb3JnZXQgdG8gZG8gaXQgc29tZXRpbWVzLgorICAgIGlmIChmcmVlTGlzdC5hbGxv
Y2F0aW9uV2lsbEZhaWwoKSkgeworICAgICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgp
KTsKKyAgICAgICAgYmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOworICAgICAg
ICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgICAgIEFTU0VSVCghaXNFbXB0
eShibG9jaykpOworICAgICAgICBBU1NFUlQoIWlzQ2FuQWxsb2NhdGUoYmxvY2spKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAorICAgIG1fY3VycmVudEJsb2NrID0gYmxv
Y2s7CisgICAgc2V0RnJlZUxpc3QoZnJlZUxpc3QpOworICAgIAogICAgIHZvaWQqIHJlc3VsdDsK
ICAgICBpZiAobV9mcmVlTGlzdC5yZW1haW5pbmcpIHsKICAgICAgICAgdW5zaWduZWQgY2VsbFNp
emUgPSBtX2NlbGxTaXplOwpAQCAtMTU1LDYgKzE0OSw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRv
cjo6dHJ5QWxsb2NhdGVXaXRob3UKICAgICAgICAgcmVzdWx0ID0gaGVhZDsKICAgICB9CiAgICAg
UkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICBzZXRJc0VkZW4obV9jdXJyZW50QmxvY2ssIHRy
dWUpOwogICAgIG1fbWFya2VkU3BhY2UtPmRpZEFsbG9jYXRlSW5CbG9jayhtX2N1cnJlbnRCbG9j
ayk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIyNyw4ICsyMjIsNyBAQCB2b2lkKiBNYXJr
ZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2VJCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAgICAgYWRkQmxvY2soYmxvY2spOwotICAgICAgICAKLSAgICByZXN1bHQgPSB0
cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CisgICAgcmVzdWx0ID0gYWxsb2NhdGVJbihi
bG9jayk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI0
OSwzNyArMjQzLDc1IEBAIHNpemVfdCBNYXJrZWRBbGxvY2F0b3I6OmJsb2NrU2l6ZUZvckJ5dGUK
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVCbG9jaygp
CiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAg
IHJldHVybiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIHRoaXMsIG1fY2VsbFNpemUs
IG1fYXR0cmlidXRlcyk7CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlID0g
TWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9oZWFwKTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2so
aGFuZGxlKTsKKyAgICAKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCiB2b2lkIE1hcmtlZEFsbG9j
YXRvcjo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7Ci0gICAgQVNTRVJU
KCFtX2N1cnJlbnRCbG9jayk7Ci0gICAgQVNTRVJUKCFtX2ZyZWVMaXN0KTsKKyAgICBzaXplX3Qg
aW5kZXg7CisgICAgaWYgKG1fZnJlZUJsb2NrSW5kaWNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aW5kZXggPSBtX2Jsb2Nrcy5zaXplKCk7CisKKyAgICAgICAgc2l6ZV90IG9sZENhcGFjaXR5ID0g
bV9ibG9ja3MuY2FwYWNpdHkoKTsKKyAgICAgICAgbV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsKKyAg
ICAgICAgaWYgKG1fYmxvY2tzLmNhcGFjaXR5KCkgIT0gb2xkQ2FwYWNpdHkpIHsKKyAgICAgICAg
ICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9y
JiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsIHZl
Y3Rvci5udW1CaXRzKCkgPT0gb2xkQ2FwYWNpdHkpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9sZENh
cGFjaXR5KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAg
ICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAg
ICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5KCkpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW5kZXggPSBtX2ZyZWVC
bG9ja0luZGljZXMudGFrZUxhc3QoKTsKKyAgICAgICAgQVNTRVJUKCFtX2Jsb2Nrc1tpbmRleF0p
OworICAgICAgICBtX2Jsb2Nrc1tpbmRleF0gPSBibG9jazsKKyAgICB9CisgICAgCisgICAgZm9y
RWFjaEJpdFZlY3RvcigKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQodmVjdG9yLCAhdmVjdG9yW2luZGV4XSk7CisgICAgICAg
IH0pOworCisgICAgLy8gVGhpcyBpcyB0aGUgcG9pbnQgYXQgd2hpY2ggdGhlIGJsb2NrIGxlYXJu
cyBvZiBpdHMgY2VsbFNpemUoKSBhbmQgYXR0cmlidXRlcygpLgorICAgIGJsb2NrLT5kaWRBZGRU
b0FsbG9jYXRvcih0aGlzLCBpbmRleCk7CiAgICAgCi0gICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJs
b2NrKTsKLSAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKGJsb2NrKTsKLSAgICBtX21hcmtlZFNwYWNl
LT5kaWRBZGRCbG9jayhibG9jayk7CisgICAgc2V0SXNMaXZlKGluZGV4LCB0cnVlKTsKKyAgICBz
ZXRJc0VtcHR5KGluZGV4LCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlbW92
ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlmIChtX2N1cnJlbnRC
bG9jayA9PSBibG9jaykgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZpbHRlck5leHRCbG9j
ayhtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3Qo
KSk7Ci0gICAgfQotICAgIGlmIChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxvY2spCi0gICAgICAg
IHNldE5leHRCbG9ja1RvU3dlZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0KCkpOworICAgIEFT
U0VSVChibG9jay0+YWxsb2NhdG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fYmxvY2tzW2Js
b2NrLT5pbmRleCgpXSA9PSBibG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJlbW92ZUJsb2NrKCk7
Ci0gICAgbV9ibG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc1tibG9jay0+aW5k
ZXgoKV0gPSBudWxscHRyOworICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2stPmlu
ZGV4KCkpOworICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJp
dFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCldID0g
ZmFsc2U7CisgICAgICAgIH0pOworICAgIAorICAgIGJsb2NrLT5kaWRSZW1vdmVGcm9tQWxsb2Nh
dG9yKCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCiB7Ci0g
ICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKQot
ICAgICAgICBtX2Jsb2NrTGlzdC50YWtlRnJvbShtX3JldGlyZWRCbG9ja3MpOwotCisgICAgaWYg
KGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1hcmtlZEFsbG9j
YXRvcjo6c3RvcEFsbG9jYXRpbmchXG4iKTsKICAgICBBU1NFUlQoIW1fbGFzdEFjdGl2ZUJsb2Nr
KTsKICAgICBpZiAoIW1fY3VycmVudEJsb2NrKSB7CiAgICAgICAgIEFTU0VSVCghbV9mcmVlTGlz
dCk7CkBAIC0yOTIsMjkgKzMyNCwyNSBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9j
YXRpbmcoKQogICAgIG1fZnJlZUxpc3QgPSBGcmVlTGlzdCgpOwogfQogCi12b2lkIE1hcmtlZEFs
bG9jYXRvcjo6cmVzZXQoKQordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnByZXBhcmVGb3JBbGxvY2F0
aW9uKCkKIHsKLSAgICBtX2xhc3RBY3RpdmVCbG9jayA9IDA7Ci0gICAgbV9jdXJyZW50QmxvY2sg
PSAwOworICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKKyAgICBtX2N1cnJlbnRCbG9j
ayA9IG51bGxwdHI7CiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7CiAKLSAgICBzZXROZXh0
QmxvY2tUb1N3ZWVwKG1fYmxvY2tMaXN0LmJlZ2luKCkpOworICAgIG1fYWxsb2NhdGlvbkN1cnNv
ciA9IDA7CisgICAgbV9lbXB0eUN1cnNvciA9IDA7CisgICAgbV9zbmFwc2hvdEN1cnNvciA9IDA7
CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6OkhhbmRsZSomIGJsb2NrID0gbV9uZXh0
QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgICAgICBuZXh0ID0g
ZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgICAgICBGcmVlTGlzdCBm
cmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxp
c3QpOwotICAgICAgICAgICAgYmxvY2stPnphcChmcmVlTGlzdCk7Ci0gICAgICAgICAgICByZXRp
cmUoYmxvY2spOwotICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBUaGluZ3M/CiAgICAgfQog
fQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewotICAg
IG1fYmxvY2tMaXN0LnRha2VGcm9tKG1fcmV0aXJlZEJsb2Nrcyk7CiAgICAgZm9yRWFjaEJsb2Nr
KAogICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CiAgICAgICAgICAg
ICBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTMyNiw0ICszNTQsMTIxIEBAIHZv
aWQgTWFya2VkQWxsb2NhdG9yOjpzZXRGcmVlTGlzdChjb25zdCAKICAgICBtX2ZyZWVMaXN0ID0g
ZnJlZUxpc3Q7CiB9CiAKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkK
K3sKKyAgICBpZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICBt
X2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOworICAgIG1fbGFzdEFjdGl2ZUJsb2Nr
ID0gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmJlZ2luTWFya2luZ0ZvckZ1
bGxDb2xsZWN0aW9uKCkKK3sKKyAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28gaXMg
b3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBmdWxs
CisgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xsZWN0
aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKKyAgICAvLyBhcyB0aGUg
bmV4dCBvbmUgaXMgZWRlbi4KKyAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVhckFsbCgpOworICAg
IG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6
OmVuZE1hcmtpbmcoKQoreworICAgIG1fYWxsb2NhdGVkLmNsZWFyQWxsKCk7CisgICAgCisgICAg
Ly8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBjb21wcmVoZW5kLCBidXQgdGhl
IGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bworICAgIC8vIGtub3cgd2hhdCBr
aW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdlIGlzIGFscmVhZHkgZW5jb2Rl
ZCBpbiB0aGUgbV9tYXJraW5nWFlaCisgICAgLy8gdmVjdG9ycy4KKyAgICAKKyAgICBpZiAobmVl
ZHNEZXN0cnVjdGlvbigpKSB7CisgICAgICAgIC8vIElmIGJsb2NrcyBuZWVkIGRlc3RydWN0aW9u
IHRoZW4gbm90aGluZyBpcyBlbXB0eSEgVGhpcyBpcyBhIGNvcnJlY3QgYXNzZXJ0aW9uIGJ1dCBt
YXkKKyAgICAgICAgLy8gYmVjb21lIHdyb25nIG9uY2Ugd2UgZ28gZnVsbCBjb25jdXJyZW50OiB3
aGVuIHdlIGNyZWF0ZSBhIG5ldyBibG9jaywgaXQgd2lsbCBmbGlja2VyCisgICAgICAgIC8vIGlu
dG8gdGhlIGVtcHR5IHNldCBmb3IgYSB0aW55IG1vbWVudC4gT24gdGhlIG90aGVyIGhhbmQsIHRo
aXMgY29kZSBpcyBsaWtlbHkgdG8gYmUgcnVuCisgICAgICAgIC8vIGluIHN0b3BUaGVXb3JsZC4K
KyAgICAgICAgQVNTRVJUKG1fZW1wdHkuaXNFbXB0eSgpKTsKKyAgICAgICAgbV9jYW5BbGxvY2F0
ZSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIG1fZW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHk7CisgICAgbV9j
YW5BbGxvY2F0ZSA9IG1fbGl2ZSAmIG1fbWFya2luZ05vdEVtcHR5ICYgfm1fbWFya2luZ1JldGly
ZWQ7CisgICAgCisgICAgaWYgKGZhbHNlKSB7CisgICAgICAgIGRhdGFMb2coIkJpdHMgZm9yICIs
IG1fY2VsbFNpemUsICIsICIsIG1fYXR0cmlidXRlcywgIiBhZnRlciBlbmRNYXJraW5nOlxuIik7
CisgICAgICAgIGR1bXBCaXRzKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgfQorfQorCit2b2lkIE1h
cmtlZEFsbG9jYXRvcjo6c25hcHNob3RGb3JFZGVuQ29sbGVjdGlvbigpCit7CisgICAgbV9zbmFw
c2hvdCB8PSBtX2VkZW47Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZvckZ1
bGxDb2xsZWN0aW9uKCkKK3sKKyAgICBtX3NuYXBzaG90ID0gbV9saXZlOworfQorCitNYXJrZWRC
bG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1RvU3dlZXAoKQoreworICAg
IG1fc25hcHNob3RDdXJzb3IgPSBtX3NuYXBzaG90LmZpbmRCaXQobV9zbmFwc2hvdEN1cnNvciwg
dHJ1ZSk7CisgICAgaWYgKG1fc25hcHNob3RDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV9zbmFwc2hvdEN1cnNv
cl07Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzd2VlcCgpCit7CisgICAgbV9zbmFwc2hv
dC5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAg
ICAgbV9ibG9ja3NbaW5kZXhdLT5zd2VlcCgpOworICAgICAgICB9KTsKK30KKwordm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnNocmluaygpCit7CisgICAgbV9lbXB0eS5mb3JFYWNoU2V0Qml0KAorICAg
ICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgbV9tYXJrZWRTcGFjZS0+ZnJl
ZUJsb2NrKG1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIH0pOworfQorCit2b2lkIE1hcmtlZEFs
bG9jYXRvcjo6YXNzZXJ0U25hcHNob3RFbXB0eSgpCit7CisgICAgaWYgKEFTU0VSVF9ESVNBQkxF
RCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChtX3NuYXBzaG90LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGRhdGFMb2coIkFzc2VydGlvbiBmYWlsZWQ6IHNu
YXBzaG90IG5vdCBlbXB0eSBpbiAiLCAqdGhpcywgIi5cbiIpOworICAgIGR1bXBCaXRzKCk7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KFJhd1BvaW50ZXIodGhp
cyksICI6IiwgbV9jZWxsU2l6ZSwgIi8iLCBtX2F0dHJpYnV0ZXMpOworfQorCit2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICB1bnNpZ25lZCBt
YXhOYW1lTGVuZ3RoID0gMDsKKyAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCisgICAgICAg
IFsmXSAoRmFzdEJpdFZlY3RvciYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmxlbihuYW1lKTsKKyAgICAgICAgICAgIG1heE5hbWVMZW5ndGgg
PSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBsZW5ndGgpOworICAgICAgICB9KTsKKyAgICAKKyAg
ICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYg
dmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAi
LCBuYW1lLCAiOiAiKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1heE5hbWVMZW5n
dGggLSBzdHJsZW4obmFtZSk7IGktLTspCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIik7
CisgICAgICAgICAgICBvdXQucHJpbnQodmVjdG9yLCAiXG4iKTsKKyAgICAgICAgfSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDkgQEAKICNpbmNsdWRlICJBbGxvY2F0b3JBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRnJlZUxp
c3QuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM5LDEzNCBAQCBjbGFz
cyBIZWFwOwogY2xhc3MgTWFya2VkU3BhY2U7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKKyNkZWZpbmUgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQobWFjcm8pIFwKKyAgICBt
YWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBoYXZlIGFj
dHVhbCBibG9ja3MuICovXAorICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVjdHMgYW5kIG5vdGhpbmcgdG8gZGVzdHJv
eS4gKi8gXAorICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9mIGFs
bGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCisgICAgbWFjcm8oY2Fu
QWxsb2NhdGUsIENhbkFsbG9jYXRlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjYW4g
YmUgYWxsb2NhdGVkIGluIHJpZ2h0IG5vdy4gKi8gXAorICAgIG1hY3JvKGVkZW4sIEVkZW4pIC8q
IFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhlIGxh
c3QgR0MuICovXAorICAgIG1hY3JvKHNuYXBzaG90LCBTbmFwc2hvdCkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIu
ICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcuICov
XAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisgICAgbWFjcm8obWFya2lu
Z1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBh
cmUgcmV0aXJlZC4gKi8KKworLy8gTm90ZSB0aGF0IHRoaXMgY29sbGVjdG9yIHN1cHBvcnRzIG92
ZXJsYXBwaW5nIGFsbG9jYXRvciBzdGF0ZSB3aXRoIG1hcmtpbmcgc3RhdGUsIHNpbmNlIGluIGEK
Ky8vIGNvbmN1cnJlbnQgY29sbGVjdG9yIHlvdSBhbGxvdyBhbGxvY2F0aW9uIHdoaWxlIG1hcmtp
bmcgaXMgcnVubmluZy4gU28gaXQncyBiZXN0IHRvIHZpc3VhbGl6ZSBhCisvLyBmdWxsIG11dGFi
bGUtPmVkZW4gY29sbGVjdC0+bXV0YXRlLT5mdWxsIGNvbGxlY3QgY3ljbGUgYW5kIHNlZSBob3cg
dGhlIGJpdHMgYWJvdmUgZ2V0IGFmZmVjdGVkLgorLy8gVGhlIGV4YW1wbGUgYmVsb3cgdHJpZXMg
dG8gYmUgZXhoYXVzdGl2ZSBhYm91dCB3aGF0IGhhcHBlbnMgdG8gdGhlIGJpdHMsIGJ1dCBvbWl0
cyBhIGxvdCBvZgorLy8gdGhpbmdzIHRoYXQgaGFwcGVuIHRvIG90aGVyIHN0YXRlLgorLy8KKy8v
IENyZWF0ZSBhbGxvY2F0b3IKKy8vIC0gYWxsIGJpdHMgYXJlIGVtcHR5CisvLyBTdGFydCBhbGxv
Y2F0aW5nIGluIHNvbWUgYmxvY2sKKy8vIC0gYWxsb2NhdGUgdGhlIGJsb2NrIGFuZCBzZXQgdGhl
IGxpdmUgYml0LgorLy8gLSB0aGUgZW1wdHkgYml0IGZvciB0aGUgYmxvY2sgZmxpY2tlcnMgb24g
YW5kIHRoZW4gZ2V0cyBpbW1lZGlhdGVseSBjbGVhcmVkIGJ5IHN3ZWVwaW5nLgorLy8gLSBzZXQg
dGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgaW4gdGhhdCBibG9jaworLy8gLSBz
ZXQgdGhlIGFsbG9jYXRlZCBiaXQuCisvLyBEbyB0aGF0IHRvIGEgbG90IG9mIGJsb2NrcyBhbmQg
dGhlbiBzdGFydCBhbiBlZGVuIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygpIGhhcyBu
b3RoaW5nIHRvIGRvLgorLy8gLSBieSBkZWZhdWx0IHdlIGhhdmUgY2xlYXIgbWFya2luZ05vdEVt
cHR5L21hcmtpbmdSZXRpcmVkIGJpdHMuCisvLyAtIG1hcmtpbmcgYnVpbGRzIHVwIG1hcmtpbmdO
b3RFbXB0eS9tYXJraW5nUmV0aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAt
IGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gZm9yIGRlc3RydWN0b3IgYmxvY2tzOiBj
YW5BbGxvY2F0ZSA9IGxpdmUgJiB+bWFya2luZ1JldGlyZWQKKy8vIC0gZm9yIG5vbi1kZXN0cnVj
dG9yIGJsb2NrczoKKy8vICAgICAgIGVtcHR5ID0gbGl2ZSAmIH5tYXJraW5nTm90RW1wdHkKKy8v
ICAgICAgIGNhbkFsbG9jYXRlID0gbGl2ZSAmIG1hcmtpbmdOb3RFbXB0eSAmIH5tYXJraW5nUmV0
aXJlZAorLy8gU25hcHNob3R0aW5nLgorLy8gLSBzbmFwc2hvdCB8PSBlZGVuCisvLyBQcmVwYXJl
IGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBlZGVuCisvLyBGaW5pc2ggY29sbGVjdGlvbi4K
Ky8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCBoYWQgc29tZSBmcmVlIGFuZCBzb21lIGxp
dmUgb2JqZWN0cy4KKy8vIC0gY2xlYXIgdGhlIGNhbkFsbG9jYXRlIGJpdAorLy8gLSBjbGVhciB0
aGUgc25hcHNob3QgYml0CisvLyAtIHNldCB0aGUgZWRlbiBiaXQKKy8vIEZpbmlzaCBhbGxvY2F0
aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9jayB0
aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5LgorLy8gLSBjbGVhciB0aGUgZW1wdHkgYml0CisvLyAt
IGNsZWFyIHRoZSBzbmFwc2hvdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlz
aCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4gc29t
ZSBibG9jayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5IGluIGFub3RoZXIgYWxsb2NhdG9yLgor
Ly8gLSBjbGVhciB0aGUgZW1wdHkgYml0CisvLyAtIGNsZWFyIGFsbCBiaXRzIGluIHRoYXQgYWxs
b2NhdG9yCisvLyAtIHNldCB0aGUgbGl2ZSBiaXQgaW4gYW5vdGhlciBhbGxvY2F0b3IgYW5kIHRo
ZSBlbXB0eSBiaXQuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSwgc25hcHNob3QgYml0cy4KKy8vIC0g
c2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRl
ZCBiaXQpLgorLy8gU3RhcnQgYSBmdWxsIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygp
IGNsZWFycyBtYXJraW5nTm90RW1wdHksIG1hcmtpbmdSZXRpcmVkCisvLyAtIHRoZSBoZWFwIHZl
cnNpb24gaXMgaW5jcmVtZW50ZWQKKy8vIC0gbWFya2luZyByZWJ1aWxkcyBtYXJraW5nTm90RW1w
dHkvbWFya2luZ3JldGlyZWQgYml0cy4KKy8vIFdlIGRvIGVuZE1hcmtpbmcoKQorLy8gLSBjbGVh
ciBhbGwgYWxsb2NhdGVkIGJpdHMuCisvLyAtIHNldCBjYW5BbGxvY2F0ZS9lbXB0eSB0aGUgc2Ft
ZSB3YXkgYXMgaW4gZWRlbiBjb2xsZWN0aW9uLgorLy8gU25hcHNob3R0aW5nLgorLy8gLSBzbmFw
c2hvdCB8PSBsaXZlCisvLyBwcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBlZGVu
LgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLworLy8gTm90aWNlIGhvdyBpbiB0aGlzIHNjaGVt
ZSwgdGhlIGVtcHR5L2NhbkFsbG9jYXRlIHN0YXRlIHN0YXlzIHNlcGFyYXRlIGZyb20gdGhlIG1h
cmtpbmdOb3RFbXB0eS8KKy8vIG1hcmtpbmdSZXRpcmVkIHN0YXRlLiBUaGlzIGlzIG9uZSBzdGVw
IHRvd2FyZHMgaGF2aW5nIHNlcGFyYXRlZCBhbGxvY2F0aW9uIGFuZCBtYXJraW5nIHN0YXRlLgor
Ly8KKy8vIEFmdGVyIHRoaXMsIHdlIGp1c3QgbmVlZCB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9uOiB3
aGF0IGRvZXMgYW4gb2JqZWN0IGFsbG9jYXRlZCBkdXJpbmcgZWRlbiBHQworLy8gbG9vayBsaWtl
IHRvIHRoZSBHQz8KKy8vCisvLyBJJ3ZlIGNvbWUgdXAgd2l0aCB0d28gY29tcGVsbGluZyBhbnN3
ZXJzLgorLy8KKy8vIDEuIEFMTE9DQVRFIEJMQUNLCisvLworLy8gSSB0aGluayB0aGF0IHRoZSBl
YXNpZXN0IGFuc3dlciBpcyB0byBhbGxvY2F0ZSB0aGUgb2JqZWN0IHdoaXRlIGFuZCB0aGVuCisv
LyBpbW1lZGlhdGVseSBtYXJrIGl0LiBUaGlzIG1ha2VzIHRoZSBvYmplY3QgYmVoYXZlIGFzIGlm
IGl0IHdhcyBhbGxvY2F0ZWQganVzdCBiZWZvcmUgdGhlIHN0YXJ0CisvLyBvZiBHQyBhbmQgaXQg
d2FzIG9uIHRoZSBzdGFjayBhdCB0aGUgYmVnaW5uaW5nIG9mIEdDLiBXZSB3b3VsZG4ndCBoYXZl
IHRvIGRvIGFueXRoaW5nIGRpZmZlcmVudAorLy8gd2l0aCB0aGUgdmFyaW91cyBibG9jayBiaXRz
IHdoZW4gYWxsb2NhdGluZyBkdXJpbmcgR0M6IHdlIGNvdWxkIHN0aWxsIHNldCBlZGVuIGFuZCBh
bGxvY2F0ZWQKKy8vIHNpbmNlIHRoZXkgd2lsbCBiZSBjbGVhcmVkIGFueXdheS4KKy8vCisvLyBC
dXQgdGhpcyBtZWFucyB0aGF0IHRoZSBvYmplY3Qgd29uJ3QgYmUgZWxpZ2libGUgZm9yIGZyZWVp
bmcgdW50aWwgdGhlIG5leHQgZnVsbCBHQy4gSWRlYWxseQorLy8gd2UnZCBtYWtlIHRoZSBvYmpl
Y3QgaXMgZWxpZ2libGUgZm9yIGZyZWVpbmcgYXQgdGhlIG5leHQgZWRlbiBHQy4gVGhlcmUncyBh
IGJ1bmNoIG9mIHRoaW5ncyB3ZQorLy8gY291bGQgZG8gdG8gbWFrZSB0aGlzIGhhcHBlbi4gSGVy
ZSBhcmUgc29tZSBpZGVhczoKKy8vCisvLyAtIEludHJvZHVjZSBhIG5ldyBDZWxsU3RhdGUsIGNh
bGxlZCBGbG9hdCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdhcyBhbGxvY2F0ZWQgZHVy
aW5nIHRoZQorLy8gICBHQy4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgbWFya2luZyBkb2VzIG5v
dGhpbmcgZm9yIEZsb2F0cy4gVGhpcyB3b3VsZCBtYWtlIG1hcmtpbmcgYSB0aW55CisvLyAgIGJp
dCBtb3JlIGV4cGVuc2l2ZS4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgdGhlIGJhcnJpZXIgcmVj
b2duaXplcyBzdG9yZXMgdG8gYSBGbG9hdCB0aGUgc2FtZQorLy8gICB3YXkgdGhhdCBpdCBzZWVz
IGEgc3RvcmUgdG8gT2xkQmxhY2s6IGl0IHB1dHMgdGhlIG9iamVjdCBvbiB0aGUgbWFyayBzdGFj
ay4gRmxvYXRzIHdvdWxkIGJlCisvLyAgIHB1dCBvbiB0aGUgbWFyayBzdGFjayBhcyBGbG9hdEdy
ZXkgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IHdpbGwgYmUgc2Nhbm5lZCBieSB0aGUgR0MgYnV0IHRo
YXQKKy8vICAgdGhleSBhcmVuJ3QgYWN0dWFsbHkgbWFya2VkLgorLy8KKy8vICAgTm90ZSB0aGF0
IHRoaXMgaW1wbGllcyBoYXZpbmcgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aG9zZSBjZWxscyBm
cm9tIEZsb2F0IHRvIHNvbWV0aGluZyBlbHNlCisvLyAgIGF0IHRoZSBlbmQgb2YgR0MuICBJJ20g
bm90IHN1cmUgdGhhdCB0aGlzIGlzIHNvIGdyZWF0LgorLy8KKy8vIC0gTWFyayB0aGUgb2JqZWN0
cyBhZnRlciBhbGxvY2F0aW9uLCBidXQgYWxzbyBzZXQgc29tZSBvdGhlciBiaXRzIHRvIGluZGlj
YXRlIHRoYXQgdGhlIHRob3NlCisvLyAgIG9iamVjdHMgc2hvdWxkIGJlIHVubWFya2VkIGF0IHRo
ZSBlbmQgb2YgdGhlIEdDLgorLy8KKy8vIEVpdGhlciBvZiB0aGVzZSBhcHByb2FjaGVzIHdvdWxk
IG1ha2UgY29sbGVjdGlvbnMgbW9yZSBleHBlbnNpdmUsIGJ1dCBpdCBmZWVscyBsaWtlIHRoZSBs
YXR0ZXIKKy8vIGFwcHJvYWNoIHdvdWxkIGJlIGEgcHJvZml0YWJsZSBvcHRpbWl6YXRpb24uIEkn
bSBhbHNvIHJlYWxseSBnZXR0aW5nIHdvcnJpZWQgYWJvdXQgaG93IHRoaXMgR0MKKy8vIGV4cGVy
aWVuY2VzIGJhY2t3YXJkcyB0aW1lIHRyYXZlbCwgd2l0aCBhbGwgdGhlIHJlbWFya2luZyBvZiB0
aGluZ3MgbGlrZSBuZXcgb2JqZWN0cyBhbmQKKy8vIHdoYXRub3QuCisvLworLy8gMi4gQUxMT0NB
VEUgV0hJVEUKKy8vCisvLyBJIGRvbid0IGtub3cgaWYgdGhpcyBpcyBzb3VuZCwgYnV0IGlmIGl0
IHdhcyB0aGVuIGl0IHdvdWxkIGJlIHRoZSBvcHRpbWFsIHNvbHV0aW9uLiBBbGxvY2F0aW9uCisv
LyB3b3VsZCB3b3JrIGFzIG5vdyBhbmQgY29uc2VxdWVudGx5LCBldmVyeXRoaW5nIHdlIGtub3cg
YWJvdXQgd2hhdCB3YXMgYWxsb2NhdGVkIGR1cmluZyBhIEdDIGlzCisvLyBmb3Jnb3R0ZW4gYXQg
dGhlIGVuZCBvZiBHQy4gQnV0IHRoYXQncyBmaW5lLiBFbmQgb2YgR0MgbXVzdCByZXNjYW4gYW55
IGhlYXAgbG9jYXRpb25zIHRoYXQgZ290CisvLyBzdG9yZWQgaW50byBhbmQgaXQgbXVzdCByZXNj
YW4gdGhlIHN0YWNrLiBTbywgd2hpdGUgb2JqZWN0cyBhbGxvY2F0ZWQgZHVyaW5nIEdDIHdvdWxk
IGdldAorLy8gbWFya2VkIGlmIHRoZXkgc29tZWhvdyBzdXJ2aXZlZC4KKy8vCisvLyBUaGlzIG1l
YW5zIHRoYXQgZm9yIGV4YW1wbGUgaWYgdGhlcmUgaXMgYSBmaWVsZCB0aGF0IG9mdGVuIGdldHMg
c3RvcmVkIHRvIHdpdGggbmV3IG9iamVjdHMsIHRoZQorLy8gR0Mgd2lsbCBub3Qgc2VlIGFsbCBv
ZiB0aGUgdmFsdWVzIGluIHRoYXQgZmllbGQgYnV0IGluc3RlYWQgaXQgd291bGQgcG9sbCB0aGF0
IGZpZWxkLCBob3BlZnVsbHkKKy8vIHNvbWV3aGF0IHJhcmVseS4gV2UgY2FuIG1ha2UgaXQgdmVy
eSByYXJlIGJ5IG9ubHkgaW5mcmVxdWVudGx5IGRvbmF0aW5nIGZyb20gdGhlIG1haW4gdGhyZWFk
J3MKKy8vIHNsb3QgdmlzaXRvciB0byBhbnkgb2YgdGhlIG90aGVycy4gU28sIHdlIHdvdWxkIG9u
bHkgbWFyayBzb21lIG9mIHRoZSBuZXcgb2JqZWN0cyB0aGF0IGdvdAorLy8gc3RvcmVkIGludG8g
dGhhdCBmaWVsZC4gSXQgYWxzbyBtZWFucyB0aGF0IGFueSBvYmplY3QgYWxsb2NhdGVkIGR1cmlu
ZyB0aGUgR0MgdGhhdCBkaWRuJ3QgZ2V0CisvLyBzdG9yZWQgaW50byBhbnkgb2JqZWN0IHRoYXQg
d2FzIGxpdmUgc2luY2UgYmVmb3JlIHRoZSBzdGFydCBvZiBHQyB3b3VsZCBzaW1wbHkgZGlzYXBw
ZWFyLiBUaGlzCisvLyBtZWFucyBtdWNoIGxlc3MgcmVzY2FubmluZyB0aGFuIGFueSBvZiB0aGUg
b3RoZXIgcHJvcG9zYWxzLgorLy8KKy8vIEkgcmVhbGx5IHdhbnQgdG8gZ28gd2l0aCB0aGUgYWxs
b2NhdGUtd2hpdGUgYXBwcm9hY2gsIGJ1dCBJIG5lZWQgdG8gdGhpbmsgbW9yZSBkZWVwbHkgYWJv
dXQgaXQKKy8vIGJlZm9yZSBJIGNvbW1pdCB0byBpdC4KKwogY2xhc3MgTWFya2VkQWxsb2NhdG9y
IHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCkBAIC00Niw5ICsx
NzYsMTYgQEAgcHVibGljOgogCiAgICAgTWFya2VkQWxsb2NhdG9yKEhlYXAqLCBNYXJrZWRTcGFj
ZSosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwogICAgIHZv
aWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKLSAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBw
cmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKICAgICB2
b2lkIHJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZ0ZvckZ1bGxDb2xs
ZWN0aW9uKCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdEZvckVk
ZW5Db2xsZWN0aW9uKCk7CisgICAgdm9pZCBzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKCk7Cisg
ICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc2hyaW5rKCk7CisgICAgdm9pZCBhc3NlcnRTbmFw
c2hvdEVtcHR5KCk7CiAgICAgc2l6ZV90IGNlbGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jZWxs
U2l6ZTsgfQogICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25z
dCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlv
bjsgfQpAQCAtNzIsNiArMjA5LDQ2IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91
YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJsb2NrU2l6ZUZvckJ5dGVz
KHNpemVfdCk7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUyhs
b3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2FwaXRh
bEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWVb
aW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+
aW5kZXgoKSk7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGlu
ZGV4LCBib29sIHZhbHVlKSB7IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1ZTsgfSBc
CisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+aW5kZXgo
KSwgdmFsdWUpOyB9IFwKKyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMgIyMgY2FwaXRhbEJp
dE5hbWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5h
bWUuYXRvbWljU2V0QW5kQ2hlY2soaW5kZXgsIHZhbHVlKTsgfSBcCisgICAgYm9vbCBhdG9taWNT
ZXRBbmRDaGVja0lzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
LCBib29sIHZhbHVlKSB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWUuYXRvbWljU2V0QW5kQ2hl
Y2soYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQorICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FU
T1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUykKKyN1bmRlZiBNQVJLRURfQUxM
T0NBVE9SX0JJVF9BQ0NFU1NPUlMKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAg
dm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworI2RlZmluZSBN
QVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1l
KSBcCisgICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAgICAgRk9SX0VBQ0hf
TUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0spOworI3Vu
ZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoY29u
c3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExC
QUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgZnVuYyhtXyAjIyBs
b3dlckJpdE5hbWUsICNjYXBpdGFsQml0TmFtZSk7CisgICAgICAgIEZPUl9FQUNIX01BUktFRF9B
TExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKTsKKyN1bmRlZiBNQVJL
RURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0
b3IqIG5leHRBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25leHRBbGxvY2F0b3I7IH0KKyAg
ICAKKyAgICAvLyBNYXJrZWRTcGFjZSBjYWxscyB0aGlzIGR1cmluZyBpbml0LgorICAgIHZvaWQg
c2V0TmV4dEFsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcikgeyBtX25leHRBbGxv
Y2F0b3IgPSBhbGxvY2F0b3I7IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5k
RW1wdHlCbG9jaygpOworICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9ja1Rv
U3dlZXAoKTsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2
b2lkIGR1bXBCaXRzKFByaW50U3RyZWFtJiA9IFdURjo6ZGF0YUZpbGUoKSk7CiAgICAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwpAQCAtODIsMjUgKzI1OSwzNyBAQCBw
cml2YXRlOgogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAgICB2
b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpOwogICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUluKE1h
cmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkKiBhbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpI
YW5kbGUqKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRl
ZCgpOwotICAgIHZvaWQgcmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKICAgICB2
b2lkIHNldEZyZWVMaXN0KGNvbnN0IEZyZWVMaXN0Jik7CiAgICAgCi0gICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogZmlsdGVyTmV4dEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKLSAgICB2b2lk
IHNldE5leHRCbG9ja1RvU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSopOwotICAgIAogICAgIEZy
ZWVMaXN0IG1fZnJlZUxpc3Q7CisgICAgCisgICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUq
PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsKKyAg
ICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1l
LCBjYXBpdGFsQml0TmFtZSkgXAorICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1l
OworICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklU
X0RFQ0xBUkFUSU9OKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OCisg
ICAgCisgICAgLy8gQWZ0ZXIgeW91IGRvIHNvbWV0aGluZyB0byBhIGJsb2NrIGJhc2VkIG9uIG9u
ZSBvZiB0aGVzZSBjdXJzb3JzLCB5b3UgY2xlYXIgdGhlIGJpdCBpbiB0aGUKKyAgICAvLyBjb3Jy
ZXNwb25kaW5nIGJpdHZlY3RvciBhbmQgbGVhdmUgdGhlIGN1cnNvciB3aGVyZSBpdCB3YXMuCisg
ICAgc2l6ZV90IG1fYWxsb2NhdGlvbkN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0
IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGFsbG9jYXRpb24uCisgICAgc2l6ZV90IG1f
ZW1wdHlDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEg
Y2FuZGlkYXRlIGZvciBlbXB0eSBhbGxvY2F0aW9uIChhbGxvY2F0aW5nIGluIGVtcHR5IGJsb2Nr
cykuCisgICAgc2l6ZV90IG1fc25hcHNob3RDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUg
bmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBpbmNyZW1lbnRhbCBzd2VlcGluZy4K
KyAgICAKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2N1cnJlbnRCbG9jazsKICAgICBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBtX25leHRCbG9ja1RvU3dlZXA7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJs
b2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBt
X2Jsb2NrTGlzdDsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSwg
QmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fcmV0aXJlZEJsb2Nr
czsKKwogICAgIExvY2sgbV9sb2NrOwogICAgIHVuc2lnbmVkIG1fY2VsbFNpemU7CiAgICAgQWxs
b2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1h
cmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9uZXh0QWxs
b2NhdG9yOwogfTsKIAogaW5saW5lIHB0cmRpZmZfdCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9m
RnJlZUxpc3QoKQpAQCAtMTQ5LDIwICszMzgsMTIgQEAgQUxXQVlTX0lOTElORSB2b2lkKiBNYXJr
ZWRBbGxvY2F0b3I6OmFsbAogICAgIHJldHVybiBoZWFkOwogfQogCi1pbmxpbmUgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcoKQotewotICAgIGlmICghbV9sYXN0QWN0aXZl
QmxvY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZnJlZUxpc3QgPSBtX2xhc3RBY3RpdmVC
bG9jay0+cmVzdW1lQWxsb2NhdGluZygpOwotICAgIG1fY3VycmVudEJsb2NrID0gbV9sYXN0QWN0
aXZlQmxvY2s7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotfQotCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQmxvY2so
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX2Jsb2NrTGlzdC5mb3JFYWNoKGZ1bmN0
b3IpOwotICAgIG1fcmV0aXJlZEJsb2Nrcy5mb3JFYWNoKGZ1bmN0b3IpOworICAgIG1fbGl2ZS5m
b3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAg
ZnVuY3RvcihtX2Jsb2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3Bw
CShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdXBl
clNhbXBsZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNiw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBKU0Mgewogc3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBmYWxzZTsKIHN0YXRp
YyBzaXplX3QgYmFsYW5jZTsKIAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRy
eUNyZWF0ZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNl
bGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorTWFya2VkQmxv
Y2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwKQogewogICAgIGlm
IChjb21wdXRlQmFsYW5jZSkgewogICAgICAgICBiYWxhbmNlKys7CkBAIC00OCwyNiArNDksMTcg
QEAgTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBpZiAoc2NyaWJibGVGcmVlQ2VsbHMoKSkKICAgICAgICAgc2NyaWJi
bGUoYmxvY2tTcGFjZSwgYmxvY2tTaXplKTsKLSAgICByZXR1cm4gbmV3IEhhbmRsZShoZWFwLCBh
bGxvY2F0b3IsIGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBibG9ja1NwYWNlKTsKKyAgICByZXR1cm4g
bmV3IEhhbmRsZShoZWFwLCBibG9ja1NwYWNlKTsKIH0KIAotTWFya2VkQmxvY2s6OkhhbmRsZTo6
SGFuZGxlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2Vs
bFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIHZvaWQqIGJsb2Nr
U3BhY2UpCi0gICAgOiBtX2F0b21zUGVyQ2VsbCgoY2VsbFNpemUgKyBhdG9tU2l6ZSAtIDEpIC8g
YXRvbVNpemUpCi0gICAgLCBtX2VuZEF0b20oYXRvbXNQZXJCbG9jayAtIG1fYXRvbXNQZXJDZWxs
ICsgMSkKLSAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQotICAgICwgbV9zdGF0ZShOZXcp
IC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCi0gICAgLCBtX2FsbG9jYXRvcihhbGxv
Y2F0b3IpCi0gICAgLCBtX3dlYWtTZXQoYWxsb2NhdG9yLT5oZWFwKCktPnZtKCksIENlbGxDb250
YWluZXIoKSkKK01hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCB2b2lkKiBi
bG9ja1NwYWNlKQorICAgIDogbV93ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENvbnRhaW5lcigpKQog
ewogICAgIG1fYmxvY2sgPSBuZXcgKE5vdE51bGwsIGJsb2NrU3BhY2UpIE1hcmtlZEJsb2NrKCpo
ZWFwLnZtKCksICp0aGlzKTsKICAgICAKICAgICBtX3dlYWtTZXQuc2V0Q29udGFpbmVyKCptX2Js
b2NrKTsKICAgICAKICAgICBoZWFwLmRpZEFsbG9jYXRlQmxvY2soYmxvY2tTaXplKTsKLSAgICBI
RUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIEFTU0VSVChhbGxvY2F0
b3IpOwotICAgIGlmIChtX2F0dHJpYnV0ZXMuY2VsbEtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24pOwogfQogCiBNYXJrZWRCbG9jazo6SGFuZGxlOjp+SGFuZGxlKCkK
QEAgLTc4LDYgKzcwLDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgICAg
IGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBC
YWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9CisgICAgcmVtb3ZlRnJvbUFsbG9jYXRv
cigpOwogICAgIG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwogICAgIGZhc3RBbGlnbmVkRnJlZSht
X2Jsb2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1NpemUpOwpAQCAtODUsMzggKzc4
LDI4IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQogCiBNYXJrZWRCbG9jazo6TWFy
a2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmIGhhbmRsZSkKICAgICA6IG1fbmVlZHNEZXN0cnVjdGlv
bihoYW5kbGUubmVlZHNEZXN0cnVjdGlvbigpKQotICAgICwgbV92ZXJzaW9uKHZtLmhlYXAub2Jq
ZWN0U3BhY2UoKS52ZXJzaW9uKCkpCisgICAgLCBtX3ZlcnNpb24oTWFya2VkU3BhY2U6Om51bGxW
ZXJzaW9uKQogICAgICwgbV9oYW5kbGUoaGFuZGxlKQogICAgICwgbV92bSgmdm0pCiB7Ci0gICAg
dW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBoYW5k
bGUuY2VsbFNpemUoKTsKLSAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWlu
TWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jayk7Ci0gICAgCi0gICAgLy8g
VGhlIG1hcmsgY291bnQgYmlhcyBzaG91bGQgYmUgY29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFu
Z2UuCi0gICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJs
ZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90Pjo6bWluKCkpKTsKLSAgICBSRUxFQVNFX0FT
U0VSVChtYXJrQ291bnRCaWFzIDwgMCk7Ci0gICAgCi0gICAgbV9tYXJrQ291bnRCaWFzID0gc3Rh
dGljX2Nhc3Q8aW50MTZfdD4obWFya0NvdW50Qmlhcyk7Ci0gICAgCi0gICAgbV9iaWFzZWRNYXJr
Q291bnQgPSBtX21hcmtDb3VudEJpYXM7IC8vIFRoaXMgbWVhbnMgd2UgaGF2ZW4ndCBtYXJrZWQg
YW55dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9j
a1N0YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVj
dGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1v
ZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUg
bmV3bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlN
b2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwg
RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2Ny
aWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0
ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6RmxpcE1vZGUg
ZmxpcE1vZGU+CiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVw
KCkKIHsKLSAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0g
ICAgQVNTRVJUKGJsb2NrU3RhdGUgPT0gTmV3IHx8IGJsb2NrU3RhdGUgPT0gTWFya2VkKTsKLSAg
ICBBU1NFUlQoIShkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBz
d2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIShkZXN0cnVjdGlv
bk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5
KSk7CiAgICAgCi0gICAgYXNzZXJ0RmxpcHBlZCgpOworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKwogICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMt
PmJsb2NrKCk7CiAgICAgCi0gICAgYm9vbCBpc05ld0Jsb2NrID0gYmxvY2tTdGF0ZSA9PSBOZXc7
Ci0gICAgYm9vbCBpc0VtcHR5QmxvY2sgPSAhYmxvY2suaGFzQW55TWFya2VkKCkKLSAgICAgICAg
JiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQKLSAgICAg
ICAgJiYgZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb247Ci0gICAgaWYg
KE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKSAmJiAoaXNOZXdCbG9jayB8fCBpc0VtcHR5Qmxv
Y2spKSB7Ci0gICAgICAgIEFTU0VSVChibG9jay5tX21hcmtzLmlzRW1wdHkoKSk7CisgICAgaWYg
KGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAhXG4iKTsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6
dXNlQnVtcEFsbG9jYXRvcigpCisgICAgICAgICYmIGVtcHR5TW9kZSA9PSBJc0VtcHR5CisgICAg
ICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkKSB7
CisgICAgICAgIEFTU0VSVChmbGlwTW9kZSA9PSBOZWVkc0ZsaXApOwogICAgICAgICAKICAgICAg
ICAgY2hhciogc3RhcnRPZkxhc3RDZWxsID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihi
bG9jay5hdG9tcygpICsgbV9lbmRBdG9tIC0gMSkpOwogICAgICAgICBjaGFyKiBwYXlsb2FkRW5k
ID0gc3RhcnRPZkxhc3RDZWxsICsgY2VsbFNpemUoKTsKQEAgLTEyNCw3ICsxMDcsMTAgQEAgRnJl
ZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgICAgICBjaGFyKiBwYXls
b2FkQmVnaW4gPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGJsb2NrLmF0b21zKCkgKyBmaXJzdEF0b20o
KSk7CiAgICAgICAgIGlmIChzY3JpYmJsZU1vZGUgPT0gU2NyaWJibGUpCiAgICAgICAgICAgICBz
Y3JpYmJsZShwYXlsb2FkQmVnaW4sIHBheWxvYWRFbmQgLSBwYXlsb2FkQmVnaW4pOwotICAgICAg
ICBtX3N0YXRlID0gKChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSA/IEZyZWVMaXN0ZWQg
OiBNYXJrZWQpOworICAgICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAg
ICAgICAgICAgIHNldElzRnJlZUxpc3RlZCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVlKTsKICAgICAgICAgRnJlZUxpc3QgcmVz
dWx0ID0gRnJlZUxpc3Q6OmJ1bXAocGF5bG9hZEVuZCwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdp
bik7CiAgICAgICAgIGlmIChmYWxzZSkKICAgICAgICAgICAgIGRhdGFMb2coIlF1aWNrbHkgc3dl
cHQgYmxvY2sgIiwgUmF3UG9pbnRlcih0aGlzKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6
ZSgpLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcmVzdWx0LCAiXG4i
KTsKQEAgLTEzNywxNCArMTIzLDE0IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNw
ZWNpYWxpemUKICAgICBGcmVlQ2VsbCogaGVhZCA9IDA7CiAgICAgc2l6ZV90IGNvdW50ID0gMDsK
ICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9h
dG9tc1BlckNlbGwpIHsKLSAgICAgICAgaWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkCi0gICAgICAg
ICAgICAmJiAoYmxvY2subV9tYXJrcy5nZXQoaSkKKyAgICAgICAgaWYgKGVtcHR5TW9kZSA9PSBO
b3RFbXB0eQorICAgICAgICAgICAgJiYgKChmbGlwTW9kZSA9PSBEb2VzTm90TmVlZEZsaXAgJiYg
YmxvY2subV9tYXJrcy5nZXQoaSkpCiAgICAgICAgICAgICAgICAgfHwgKG5ld2x5QWxsb2NhdGVk
TW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5QWxsb2NhdGVkLT5nZXQoaSkpKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgIAogICAgICAgICBIZWFwQ2VsbCogY2Vs
bCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmJsb2NrLmF0b21zKClbaV0pOwog
Ci0gICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNEZXN0cnVjdGlvbiAmJiBibG9j
a1N0YXRlICE9IE5ldykKKyAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3Ry
dWN0aW9uICYmIGVtcHR5TW9kZSA9PSBOb3RFbXB0eSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0
PEpTQ2VsbCo+KGNlbGwpLT5jYWxsRGVzdHJ1Y3Rvcigqdm0oKSk7CiAKICAgICAgICAgaWYgKHN3
ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKQEAgLTE2Myw3ICsxNDksMTMgQEAgRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgICAgICBtX25ld2x5QWxsb2Nh
dGVkID0gbnVsbHB0cjsKIAogICAgIEZyZWVMaXN0IHJlc3VsdCA9IEZyZWVMaXN0OjpsaXN0KGhl
YWQsIGNvdW50ICogY2VsbFNpemUoKSk7Ci0gICAgbV9zdGF0ZSA9IChzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0ID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7CisgICAgaWYgKHN3ZWVwTW9kZSA9
PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHNldElzRnJlZUxpc3RlZCgpOworICAgIGVsc2Ug
eworICAgICAgICB1bnNpZ25lZCBjZWxsc1BlckJsb2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5
bG9hZCAvIGNlbGxTaXplKCk7CisgICAgICAgIGlmIChjb3VudCA9PSBjZWxsc1BlckJsb2NrKQor
ICAgICAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgdHJ1ZSk7CisgICAgfQog
ICAgIGlmIChmYWxzZSkKICAgICAgICAgZGF0YUxvZygiU2xvd2x5IHN3ZXB0IGJsb2NrICIsIFJh
d1BvaW50ZXIoJmJsb2NrKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSgpLCAiIGFuZCBh
dHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcmVzdWx0LCAiXG4iKTsKICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtMTcxLDE1ICsxNjMsMjAgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3BlY2lhbGl6ZQogCiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcChT
d2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOworICAgIG1fYWxs
b2NhdG9yLT5zZXRJc1NuYXBzaG90KHRoaXMsIGZhbHNlKTsKICAgICAKLSAgICBIRUFQX0xPR19C
TE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotCiAgICAgbV93ZWFrU2V0LnN3ZWVwKCk7CiAK
ICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwT25seSAmJiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rp
b24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7
CiAKKyAgICBpZiAoVU5MSUtFTFkobV9pc0ZyZWVMaXN0ZWQpKSB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOworICAgICAgICByZXR1cm4gRnJl
ZUxpc3QoKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKCFtX2FsbG9jYXRvci0+aXNBbGxvY2F0
ZWQodGhpcykpOworICAgIAogICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVl
ZHNEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVN
b2RlPE5lZWRzRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVy
U2VsZWN0U2NyaWJibGVNb2RlPERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CkBA
IC0xODksNDcgKzE4Niw1OSBAQCB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25N
b2RlCiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFNjcmli
YmxlTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxs
cygpKQotICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZTxk
ZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOwotICAgIHJldHVybiBzd2VlcEhl
bHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgRG9udFNjcmliYmxl
Pihzd2VlcE1vZGUpOworICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGU8
ZGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBI
ZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJibGU+KHN3ZWVw
TW9kZSk7CiB9CiAKIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+Ci1GcmVlTGlzdCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3
ZWVwTW9kZSBzd2VlcE1vZGUpCitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhl
bHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIHN3aXRjaCAo
bV9zdGF0ZSkgewotICAgIGNhc2UgTmV3OgotICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3
ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPE5ldywgU3dl
ZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVO
ZXdseUFsbG9jYXRlZD4oKTsKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAgIC8vIEhhcHBl
bnMgd2hlbiBhIGJsb2NrIHRyYW5zaXRpb25zIHRvIGZ1bGx5IGFsbG9jYXRlZC4KLSAgICAgICAg
QVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICByZXR1cm4gRnJl
ZUxpc3QoKTsKLSAgICBjYXNlIEFsbG9jYXRlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7Ci0gICAgY2FzZSBNYXJrZWQ6
Ci0gICAgICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3dl
ZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRT
d2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1v
ZGUsIEhhc05ld2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3
ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFz
TmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4g
c3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8gc3BlY2lhbGl6
ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJs
ZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAgICAgICA6IHNw
ZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZyZWVMaXN0KCk7
CisgICAgLy8gSXQncyBub3Qgb2J2aW91cywgYnV0IHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGtu
b3cgaWYgdGhlIGJsb2NrIGlzIGVtcHR5LiBJdCdzIHRoZSBvbmx5CisgICAgLy8gYml0IHRoYXQg
Y2FwdHVyZXMgdGhlc2UgY2F2ZWF0czoKKyAgICAvLyAtIEl0J3MgdHJ1ZSB3aGVuIHRoZSBibG9j
ayBpcyBmcmVzaGx5IGFsbG9jYXRlZC4KKyAgICAvLyAtIEl0J3MgdHJ1ZSBpZiB0aGUgYmxvY2sg
aGFkIGJlZW4gc3dlcHQgaW4gdGhlIHBhc3QsIGFsbCBkZXN0cnVjdG9ycyB3ZXJlIGNhbGxlZCwg
YW5kIHRoYXQKKyAgICAvLyAgIHN3ZWVwIHByb3ZlZCB0aGF0IHRoZSBibG9jayBpcyBlbXB0eS4K
KyAgICAvLyAtIEl0J3MgZmFsc2UgaWYgdGhlcmUgYXJlIGFueSBkZXN0cnVjdG9ycyB0aGF0IG5l
ZWQgdG8gYmUgY2FsbGVkLCBldmVuIGlmIHRoZSBibG9jayBoYXMgbm8KKyAgICAvLyAgIGxpdmUg
b2JqZWN0cy4KKyAgICBpZiAobV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcykpCisgICAgICAgIHJl
dHVybiBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPElzRW1wdHksIGRlc3RydWN0
aW9uTW9kZSwgc2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBl
clNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPE5vdEVtcHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmli
YmxlTW9kZT4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6
RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KK0ZyZWVMaXN0IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dl
ZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAg
cmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25N
b2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworICAgIHJl
dHVybiBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOwor
fQorCit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBE
ZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3Jp
YmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRl
ZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBp
ZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVs
cGVyU2VsZWN0RmxpcE1vZGU8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9u
TW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHN3
ZWVwSGVscGVyU2VsZWN0RmxpcE1vZGU8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9u
TW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7Cit9CisKK3RlbXBsYXRl
PE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1v
ZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitG
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCkK
K3sKKyAgICBpZiAobmVlZHNGbGlwKCkpCisgICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVw
PGVtcHR5TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3
bHlBbGxvY2F0ZWRNb2RlLCBOZWVkc0ZsaXA+KCk7CisgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dl
ZXA8ZW1wdHlNb2RlLCBzd2VlcE1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBu
ZXdseUFsbG9jYXRlZE1vZGUsIERvZXNOb3ROZWVkRmxpcD4oKTsKIH0KIAogdm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjp1bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKQogewotICAgIGZsaXBJ
Zk5lY2Vzc2FyeSgpOwotICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04o
dGhpcyk7Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsK
LSAgICBtX3N0YXRlID0gTWFya2VkOworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNGcmVlTGlzdGVk
KTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnNldElzRnJlZUxpc3RlZCgpCit7CisgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHko
dGhpcywgZmFsc2UpOworICAgIG1faXNGcmVlTGlzdGVkID0gdHJ1ZTsKIH0KIAogY2xhc3MgU2V0
TmV3bHlBbGxvY2F0ZWRGdW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7
CkBAIC0yNTIsMjYgKzI2MSwxNyBAQCBwcml2YXRlOgogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnN0b3BBbGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKIHsKLSAgICBmbGlw
SWZOZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMp
OworICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBN
YXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZyFcbiIpOworICAgIEFTU0VSVCghYWxs
b2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAgIGlmIChtX3N0YXRlID09IE1hcmtl
ZCkgewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4gdGhlIE1hcmtlZCBzdGF0ZSB0aGVu
IHdlIGtub3cgdGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAgLy8gY29uZGl0aW9ucyBob2xkczoK
LSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90IHVzZWQgZm9yIGFsbG9jYXRpb24g
ZHVyaW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xlLgotICAgICAgICAvLyAgIEl0IG1h
eSBoYXZlIGRlYWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25vdyB0aGVtIHRvIGJlIGRlYWQgYnkg
dGhlCi0gICAgICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1hcmsgYml0cyBhcmUgdW5zZXQuCi0g
ICAgICAgIC8vCi0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxv
Y2F0aW5nKCksIGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAgICAgICAgLy8gICBoZWFwIGl0ZXJh
dGlvbiwgYW5kIHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAgIC8vIEhlbmNlIGlmIHRoZSBibG9j
ayBpcyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJrZWQuCisgICAgaWYgKCFpc0ZyZWVM
aXN0ZWQoKSkgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgZWl0aGVyIGRpZG4ndCB1
c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24gc2luY2UgbGFzdCBHQywKKyAgICAg
ICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCkgYmVmb3Jl
LgogICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQp
OwotICAgIAogICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVyZW50IHN0YXRlIGZvciBIZWFwIGlu
dHJvc3BlY3Rpb24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxsb2NhdGVkIGZyb20gb3VyIGZyZWUg
bGlzdCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQgYW5vdGhlcgogICAgIC8v
IHdheSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApAQCAtMjkwLDExICsyOTAsMTIgQEAg
dm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgICAgICAgICAgY2xl
YXJOZXdseUFsbG9jYXRlZChjZWxsKTsKICAgICAgICAgfSk7CiAgICAgCi0gICAgbV9zdGF0ZSA9
IE1hcmtlZDsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOwogfQogCiB2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKKyAgICBhbGxvY2F0b3IoKS0+
c2V0SXNBbGxvY2F0ZWQodGhpcywgZmFsc2UpOwogICAgIG1fYmxvY2stPmNsZWFyTWFya3MoKTsK
ICAgICBtX3dlYWtTZXQubGFzdENoYW5jZVRvRmluYWxpemUoKTsKIApAQCAtMzA0LDE0ICszMDUs
MTEgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaQogCiBGcmVlTGlz
dCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKLSAgICBmbGlwSWZO
ZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwot
Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKKyAgICBBU1NFUlQoIWFsbG9jYXRvcigp
LT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAKICAg
ICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgLy8gV2UgZGlkbid0IGhhdmUgdG8g
Y3JlYXRlIGEgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwLiBUaGF0IG1lYW5zIHdlIHdlcmUgYWxy
ZWFkeSBNYXJrZWQKLSAgICAgICAgLy8gd2hlbiB3ZSBsYXN0IHN0b3BwZWQgYWxsb2NhdGlvbiwg
c28gcmV0dXJuIGFuIGVtcHR5IGZyZWUgbGlzdCBhbmQgc3RheSBpbiB0aGUgTWFya2VkIHN0YXRl
LgorICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgYmxv
Y2sgd2hlbiB3ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgp
OwogICAgIH0KIApAQCAtMzQ1LDQwICszNDMsMjggQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
Ojpmb3JFYWNoRnJlZUNlbAogICAgIH0KIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVj
ZXNzYXJ5KCkKLXsKLSAgICBmbGlwSWZOZWNlc3Nhcnkodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgp
LnZlcnNpb24oKSk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNz
YXJ5KCkKLXsKLSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeSgpOwotfQotCi12b2lkIE1hcmtl
ZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlTbG93KCkKLXsKLSAgICBBU1NFUlQobmVlZHNGbGlwKCkp
OwotICAgIEFTU0VSVCghdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsKLSAg
ICBjbGVhck1hcmtzKCk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1
cmluZ01hcmtpbmdTbG93KCkKK3ZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyhIZWFw
VmVyc2lvbiBoZWFwVmVyc2lvbikKIHsKICAgICBBU1NFUlQodm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLmlzTWFya2luZygpKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwotICAgIGlm
IChuZWVkc0ZsaXAoKSkKLSAgICAgICAgY2xlYXJNYXJrcygpOworICAgIGlmIChuZWVkc0ZsaXAo
aGVhcFZlcnNpb24pKSB7CisgICAgICAgIGNsZWFyTWFya3MoaGVhcFZlcnNpb24pOworICAgICAg
ICAvLyBUaGlzIG1lYW5zIHdlJ3JlIHRoZSBmaXJzdCBvbmVzIHRvIG1hcmsgYW55IG9iamVjdCBp
biB0aGlzIGJsb2NrLgorICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5k
Q2hlY2tJc01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOworICAgIH0KIH0KIAogdm9p
ZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcygpCiB7CisgICAgY2xlYXJNYXJrcyh2bSgpLT5oZWFw
Lm9iamVjdFNwYWNlKCkudmVyc2lvbigpKTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJN
YXJrcyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKK3sKICAgICBtX21hcmtzLmNsZWFyQWxsKCk7
CiAgICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICAvLyBUaGlzIHdpbGwgYmVjb21lIHRydWUg
YXQgdGhlIGVuZCBvZiB0aGUgbWFyayBwaGFzZS4gV2Ugc2V0IGl0IG5vdyB0bwotICAgIC8vIGF2
b2lkIGFuIGV4dHJhIHBhc3MgdG8gZG8gc28gbGF0ZXIuCi0gICAgaGFuZGxlKCkubV9zdGF0ZSA9
IE1hcmtlZDsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotICAgIG1fdmVyc2lvbiA9IHZt
KCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CisgICAgbV92ZXJzaW9uID0gaGVhcFZl
cnNpb247CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0zOTgsMzEgKzM4NCwzOCBAQCBi
b29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRzRmxpcCgpCiAgICAgcmV0dXJuIG1fYmxvY2st
Pm5lZWRzRmxpcCgpOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OndpbGxSZW1vdmVC
bG9jaygpCitib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25zdCB2b2lkKiBwKQogewotICAg
IGZsaXBJZk5lY2Vzc2FyeSgpOworICAgIHJldHVybiBpc01hcmtlZCh2bSgpLT5oZWFwLm9iamVj
dFNwYWNlKCkudmVyc2lvbigpLCBwKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpk
aWRDb25zdW1lRnJlZUxpc3QoKQorYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgZmxpcElmTmVjZXNz
YXJ5KCk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICAK
LSAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKKyAgICByZXR1cm4gaXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwp
OworfQogCi0gICAgbV9zdGF0ZSA9IEFsbG9jYXRlZDsKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFy
a2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4g
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9u
KCksIGNlbGwpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVl
TGlzdCgpCit7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhp
cyksICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCFcbiIpOworICAg
IEFTU0VSVChpc0ZyZWVMaXN0ZWQoKSk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKKyAg
ICBhbGxvY2F0b3IoKS0+c2V0SXNBbGxvY2F0ZWQodGhpcywgdHJ1ZSk7CiB9CiAKIHNpemVfdCBN
YXJrZWRCbG9jazo6bWFya0NvdW50KCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBy
ZXR1cm4gbV9tYXJrcy5jb3VudCgpOworICAgIHJldHVybiBuZWVkc0ZsaXAoKSA/IDAgOiBtX21h
cmtzLmNvdW50KCk7CiB9CiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNFbXB0eSgpCiB7
Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkICYm
ICFibG9jaygpLmhhc0FueU1hcmtlZCgpICYmIG1fd2Vha1NldC5pc0VtcHR5KCkgJiYgKCFtX25l
d2x5QWxsb2NhdGVkIHx8IG1fbmV3bHlBbGxvY2F0ZWQtPmlzRW1wdHkoKSk7CisgICAgcmV0dXJu
IG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMpOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVh
ckhhc0FueU1hcmtlZCgpCkBAIC00MzIsMzMgKzQyNSw2MyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpj
bGVhckhhc0FueU1hcmtlZCgpCiAKIHZvaWQgTWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KCkK
IHsKLSAgICBoYW5kbGUoKS5tX2FsbG9jYXRvci0+cmV0aXJlKCZoYW5kbGUoKSk7CisgICAgaGFu
ZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nUmV0aXJlZCgmaGFu
ZGxlKCksIHRydWUpOwogfQogCi19IC8vIG5hbWVzcGFjZSBKU0MKK3ZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAgaWYgKCFtX2FsbG9jYXRvcikK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fYWxsb2NhdG9yLT5yZW1vdmVCbG9jayh0aGlz
KTsKK30KIAotbmFtZXNwYWNlIFdURiB7Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFk
ZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgaW5kZXgpCit7
CisgICAgQVNTRVJUKG1faW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSk7CisgICAgQVNTRVJUKCFtX2FsbG9jYXRvcik7CisgICAgCisgICAgbV9pbmRleCA9IGluZGV4
OworICAgIG1fYWxsb2NhdG9yID0gYWxsb2NhdG9yOworICAgIAorICAgIHNpemVfdCBjZWxsU2l6
ZSA9IGFsbG9jYXRvci0+Y2VsbFNpemUoKTsKKyAgICBtX2F0b21zUGVyQ2VsbCA9IChjZWxsU2l6
ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZTsKKyAgICBtX2VuZEF0b20gPSBhdG9tc1BlckJs
b2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxOworICAgIAorICAgIG1fYXR0cmlidXRlcyA9IGFsbG9j
YXRvci0+YXR0cmlidXRlcygpOwogCi11c2luZyBuYW1lc3BhY2UgSlNDOworICAgIGlmIChtX2F0
dHJpYnV0ZXMuY2VsbEtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24p
OworICAgIAorICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQ
YXlsb2FkIC8gY2VsbFNpemU7CisgICAgZG91YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6
Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxzUGVyQmxvY2spOworICAgIAorICAg
IC8vIFRoZSBtYXJrIGNvdW50IGJpYXMgc2hvdWxkIGJlIGNvbWZvcnRhYmx5IHdpdGhpbiB0aGlz
IHJhbmdlLgorICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtDb3VudEJpYXMgPiBzdGF0aWNfY2FzdDxk
b3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MTZfdD46Om1pbigpKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQobWFya0NvdW50QmlhcyA8IDApOworICAgIAorICAgIC8vIFRoaXMgbWVhbnMgd2Ug
aGF2ZW4ndCBtYXJrZWQgYW55dGhpbmcgeWV0LgorICAgIGJsb2NrKCkubV9iaWFzZWRNYXJrQ291
bnQgPSBibG9jaygpLm1fbWFya0NvdW50QmlhcyA9IHN0YXRpY19jYXN0PGludDE2X3Q+KG1hcmtD
b3VudEJpYXMpOworfQogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTWFy
a2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSkKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpCiB7Ci0gICAgc3dpdGNoIChibG9ja1N0YXRlKSB7
Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TmV3OgotICAgICAgICBvdXQucHJpbnQoIk5ldyIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6RnJlZUxpc3RlZDoKLSAgICAg
ICAgb3V0LnByaW50KCJGcmVlTGlzdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1h
cmtlZEJsb2NrOjpBbGxvY2F0ZWQ6Ci0gICAgICAgIG91dC5wcmludCgiQWxsb2NhdGVkIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6Ci0gICAgICAgIG91
dC5wcmludCgiTWFya2VkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBBU1NFUlQobV9pbmRleCAhPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworICAgIAor
ICAgIG1faW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworICAgIG1f
YWxsb2NhdG9yID0gbnVsbHB0cjsKK30KKworYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xp
dmUoY29uc3QgSGVhcENlbGwqIGNlbGwpCit7CisgICAgcmV0dXJuIGlzTGl2ZSh2bSgpLT5oZWFw
Lm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKK30KKworYm9vbCBNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCit7CisgICAgcmV0dXJuIGlzTGl2ZUNl
bGwodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgcCk7CiB9CiAKLX0gLy8gbmFt
ZXNwYWNlIFdURgorfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjAgKzQ0
LDYgQEAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5
cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKLS8vIFNldCB0byBsb2cgc3RhdGUgdHJhbnNp
dGlvbnMgb2YgYmxvY2tzLgotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9O
UyAwCi0KLSNpZiBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwotI2RlZmluZSBIRUFQ
X0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgZG8geyAgICAgICAgICAgIFwKLSAg
ICAgICAgZGF0YUxvZ0YoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICAiJXM6JWQgJXM6IGJsb2NrICVzID0gJXAsICVkXG4iLCAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNU
SU9OX18sICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICNoYW5kbGUsICYoaGFuZGxl
KS0+YmxvY2soKSwgKGhhbmRsZSktPm1fc3RhdGUpOyAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2Up
Ci0jZWxzZQotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkg
KCh2b2lkKTApCi0jZW5kaWYKLQogLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFsaWduZWQg
Y29udGFpbmVyIGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgogLy8gT2JqZWN0cyBhcmUgYWxs
b2NhdGVkIHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogLy8g
bWFya2VkIGJsb2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXplLiBPYmplY3RzIHNtYWxs
ZXIgdGhhbiB0aGUKQEAgLTc2LDggKzYyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgSGFuZGxlOwogcHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0ZSA6IHVpbnQ4X3Qg
eyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAgIAogICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBi
bG9ja01hc2sgPSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVzdCBiZSBhIHBvd2Vy
IG9mIHR3by4KQEAgLTg2LDEyICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWNfYXNzZXJ0
KCEoTWFya2VkQmxvY2s6OmF0b21TaXplICYgKE1hcmtlZEJsb2NrOjphdG9tU2l6ZSAtIDEpKSwg
Ik1hcmtlZEJsb2NrOjphdG9tU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwogICAgIHN0
YXRpY19hc3NlcnQoIShNYXJrZWRCbG9jazo6YmxvY2tTaXplICYgKE1hcmtlZEJsb2NrOjpibG9j
a1NpemUgLSAxKSksICJNYXJrZWRCbG9jazo6YmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0
d28uIik7Ci0KKyAgICAKICAgICBzdHJ1Y3QgVm9pZEZ1bmN0b3IgewogICAgICAgICB0eXBlZGVm
IHZvaWQgUmV0dXJuVHlwZTsKICAgICAgICAgdm9pZCByZXR1cm5WYWx1ZSgpIHsgfQogICAgIH07
Ci0KKyAgICAKICAgICBjbGFzcyBDb3VudEZ1bmN0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAg
dHlwZWRlZiBzaXplX3QgUmV0dXJuVHlwZTsKQEAgLTEwNiwxMCArOTAsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIG11dGFibGUgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgIH07CiAgICAgICAgIAotICAg
IGNsYXNzIEhhbmRsZSA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxIYW5kbGU+IHsKKyAg
ICBjbGFzcyBIYW5kbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5kbGUpOwog
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIERv
dWJseUxpbmtlZExpc3ROb2RlPEhhbmRsZT47CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAg
ICAgZnJpZW5kIHN0cnVjdCBWZXJpZnlNYXJrZWQ7CkBAIC0xMzAsNiArMTEzLDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgVk0qIHZtKCkgY29uc3Q7CiAgICAgICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsK
ICAgICAgICAgICAgIAorICAgICAgICAvLyBTd2VlcGluZyBlbnN1cmVzIHRoYXQgZGVzdHJ1Y3Rv
cnMgZ2V0IGNhbGxlZCBhbmQgcmVtb3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgc25hcHNob3QuCisg
ICAgICAgIC8vIFN3ZWVwaW5nIHRvIGZyZWUgbGlzdCBhbHNvIHJlbW92ZXMgdGhlIGJsb2NrIGZy
b20gdGhlIGVtcHR5IHNldCwgaWYgaXQgd2FzIGluIHRoYXQgc2V0LgorICAgICAgICAvLyBTd2Vl
cGluZyB3aXRoIFN3ZWVwT25seSBtYXkgYWRkIHRoaXMgYmxvY2sgdG8gdGhlIGVtcHR5IHNldCwg
aWYgdGhlIGJsb2NrIGlzIGZvdW5kIHRvCisgICAgICAgIC8vIGJlIGVtcHR5LgorICAgICAgICAv
LworICAgICAgICAvLyBOb3RlIHRoYXQgeW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGVt
cHR5IGJpdCByZWZsZWN0cyByZWFsaXR5LiBJZiBpdCdzIG5vdCBzZXQKKyAgICAgICAgLy8gYW5k
IHRoZSBibG9jayBpcyBmcmVzaGx5IGNyZWF0ZWQsIHRoZW4gd2UnbGwgbWFrZSB0aGUgbWlzdGFr
ZSBvZiBydW5uaW5nIGRlc3RydWN0b3JzIGluCisgICAgICAgIC8vIHRoZSBibG9jay4gSWYgaXQn
cyBub3Qgc2V0IGFuZCB0aGUgYmxvY2sgaGFzIG5vdGhpbmcgbWFya2VkLCB0aGVuIHdlJ2xsIG1h
a2UgdGhlCisgICAgICAgIC8vIG1pc3Rha2Ugb2YgbWFraW5nIGEgcG9wIGZyZWVsaXN0IHJhdGhl
ciB0aGFuIGEgYnVtcCBmcmVlbGlzdC4KICAgICAgICAgZW51bSBTd2VlcE1vZGUgeyBTd2VlcE9u
bHksIFN3ZWVwVG9GcmVlTGlzdCB9OwogICAgICAgICBGcmVlTGlzdCBzd2VlcChTd2VlcE1vZGUg
PSBTd2VlcE9ubHkpOwogICAgICAgICAKQEAgLTE1Myw4ICsxNDUsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIGFuZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4K
ICAgICAgICAgYm9vbCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgdm9pZCBmbGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsKLSAgICAgICAgICAgIAogICAgICAgICBz
aXplX3QgY2VsbFNpemUoKTsKICAgICAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0
cmlidXRlcygpIGNvbnN0OwogICAgICAgICBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb24oKSBj
b25zdDsKQEAgLTE2NCw5ICsxNTQsMTQgQEAgcHVibGljOgogICAgICAgICBzaXplX3QgbWFya0Nv
dW50KCk7CiAgICAgICAgIHNpemVfdCBzaXplKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgaW5s
aW5lIGJvb2wgaXNMaXZlKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOworICAgICAgICBp
bmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7CisKICAgICAg
ICAgYm9vbCBpc0xpdmUoY29uc3QgSGVhcENlbGwqKTsKICAgICAgICAgYm9vbCBpc0xpdmVDZWxs
KGNvbnN0IHZvaWQqKTsKKwogICAgICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChj
b25zdCBIZWFwQ2VsbCopOworICAgICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChI
ZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKICAgICAgICAgICAgIAogICAgICAgICBib29s
IGlzTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIHNldE5ld2x5QWxs
b2NhdGVkKGNvbnN0IHZvaWQqKTsKQEAgLTE3NCwzMSArMTY5LDI1IEBAIHB1YmxpYzoKICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSBjb25zdCB7IHJldHVybiAh
IW1fbmV3bHlBbGxvY2F0ZWQ7IH0KICAgICAgICAgICAgIAotICAgICAgICBib29sIGlzQWxsb2Nh
dGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKLSAgICAgICAgYm9v
bCBpc0ZyZWVMaXN0ZWQoKSBjb25zdDsKLSAgICAgICAgYm9vbCBuZWVkc1N3ZWVwaW5nKCkgY29u
c3Q7Ci0gICAgICAgIHZvaWQgd2lsbFJlbW92ZUJsb2NrKCk7Ci0KICAgICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoQ2VsbChjb25zdCBGdW5j
dG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0
dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVu
Y3RvciYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJh
dGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYpOworICAgICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVh
ZENlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICAgICAgCiAgICAgICAgIGJvb2wgbmVlZHNG
bGlwKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdN
YXJraW5nKEhlYXBWZXJzaW9uKTsKLSAgICAgICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoSGVhcFZl
cnNpb24pOwotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgCisg
ICAgICAgIAogICAgICAgICB2b2lkIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAgICAgIAotICAg
ICAgICBib29sIGlzT25CbG9ja3NUb1N3ZWVwKCkgY29uc3QgeyByZXR1cm4gbV9pc09uQmxvY2tz
VG9Td2VlcDsgfQotICAgICAgICB2b2lkIHNldElzT25CbG9ja3NUb1N3ZWVwKGJvb2wgdmFsdWUp
IHsgbV9pc09uQmxvY2tzVG9Td2VlcCA9IHZhbHVlOyB9CisgICAgICAgIGJvb2wgaXNGcmVlTGlz
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyZWVMaXN0ZWQ7IH0KKyAgICAgICAgCisgICAgICAg
IHNpemVfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICAgICAgCisgICAg
ICAgIHZvaWQgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAgICAKKyAgICAgICAgdm9pZCBk
aWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgaW5kZXgpOworICAgICAg
ICB2b2lkIGRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKICAgICAgICAgCi0gICAgICAgIEJsb2Nr
U3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0gICAgICAgICAgICAKICAg
ICBwcml2YXRlOgotICAgICAgICBIYW5kbGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVf
dCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYsIHZvaWQqKTsKKyAgICAgICAg
SGFuZGxlKEhlYXAmLCB2b2lkKik7CiAgICAgICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8RGVz
dHJ1Y3Rpb25Nb2RlPgogICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxl
TW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwpAQCAtMjA2LDM1ICsxOTUsNTAgQEAgcHVibGlj
OgogICAgICAgICBlbnVtIFNjcmliYmxlTW9kZSB7IERvbnRTY3JpYmJsZSwgU2NyaWJibGUgfTsK
ICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxl
TW9kZT4KLSAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9k
ZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNl
bGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAgICAgCisgICAg
ICAgIGVudW0gRW1wdHlNb2RlIHsgSXNFbXB0eSwgTm90RW1wdHkgfTsKKyAgICAgICAgCisgICAg
ICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGU+Cisg
ICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dlZXBN
b2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCiAgICAgICAgIGVudW0gTmV3bHlBbGxvY2F0ZWRN
b2RlIHsgSGFzTmV3bHlBbGxvY2F0ZWQsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQgfTsKLSAg
ICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRlLCBTd2VlcE1vZGUsIERlc3Ry
dWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIAor
ICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2Rl
LCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0
U3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAorICAgICAgICB0ZW1w
bGF0ZTxFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUs
IE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RG
bGlwTW9kZSgpOworICAgICAgICAKKyAgICAgICAgZW51bSBGbGlwTW9kZSB7IE5lZWRzRmxpcCwg
RG9lc05vdE5lZWRGbGlwIH07CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUs
IFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVk
TW9kZSwgRmxpcE1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHNwZWNpYWxpemVkU3dlZXAoKTsKICAg
ICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgICAgICB2b2lk
IGZvckVhY2hGcmVlQ2VsbChjb25zdCBGcmVlTGlzdCYsIGNvbnN0IEZ1bmMmKTsKLSAgICAgICAg
ICAgIAorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAgICAgICAg
CiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fcHJldjsKICAgICAgICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogbV9uZXh0OwogICAgICAgICAgICAgCi0gICAgICAgIHNpemVfdCBtX2F0b21z
UGVyQ2VsbDsKLSAgICAgICAgc2l6ZV90IG1fZW5kQXRvbTsgLy8gVGhpcyBpcyBhIGZ1enp5IGVu
ZC4gQWx3YXlzIHRlc3QgZm9yIDwgbV9lbmRBdG9tLgorICAgICAgICBzaXplX3QgbV9hdG9tc1Bl
ckNlbGwgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CisgICAgICAgIHNp
emVfdCBtX2VuZEF0b20geyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07IC8v
IFRoaXMgaXMgYSBmdXp6eSBlbmQuIEFsd2F5cyB0ZXN0IGZvciA8IG1fZW5kQXRvbS4KICAgICAg
ICAgICAgIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9j
az4+IG1fbmV3bHlBbGxvY2F0ZWQ7CiAgICAgICAgICAgICAKICAgICAgICAgQWxsb2NhdG9yQXR0
cmlidXRlcyBtX2F0dHJpYnV0ZXM7Ci0gICAgICAgIEJsb2NrU3RhdGUgbV9zdGF0ZTsKLSAgICAg
ICAgYm9vbCBtX2lzT25CbG9ja3NUb1N3ZWVwIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2lz
RnJlZUxpc3RlZCB7IGZhbHNlIH07CiAgICAgICAgICAgICAKLSAgICAgICAgTWFya2VkQWxsb2Nh
dG9yKiBtX2FsbG9jYXRvcjsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvciB7
IG51bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OwogICAgICAgICAg
ICAgCi0gICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrOworICAgICAgICBNYXJrZWRCbG9jayog
bV9ibG9jayB7IG51bGxwdHIgfTsKICAgICB9OwogICAgICAgICAKLSAgICBzdGF0aWMgTWFya2Vk
QmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3Qg
Y2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgTWFya2Vk
QmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmKTsKICAgICAgICAgCiAgICAgSGFuZGxlJiBo
YW5kbGUoKTsKICAgICAgICAgCkBAIC0yNDgsMzQgKzI1MiwzNSBAQCBwdWJsaWM6CiAgICAgc2l6
ZV90IG1hcmtDb3VudCgpOwogCiAgICAgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7CisgICAg
Ym9vbCBpc01hcmtlZChIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOworICAgIGJvb2wgaXNNYXJr
ZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKICAgICBib29sIHRlc3RB
bmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICAKICAgICBib29sIGlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOworICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5
QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwogICAgIAotICAgIGJvb2wg
aXNNYXJrZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7
Ci0KICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAgdm9pZCBjbGVhck1hcmtlZChj
b25zdCB2b2lkKik7Ci0gICAgICAgIAorICAgIAogICAgIHNpemVfdCBjZWxsU2l6ZSgpOwogICAg
IGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKLQorICAgIAog
ICAgIGJvb2wgaGFzQW55TWFya2VkKCkgY29uc3Q7CiAgICAgdm9pZCBub3RlTWFya2VkKCk7CiAg
ICAgICAgIAogICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKLQorICAgIAogICAgIGJvb2wgbmVlZHNG
bGlwKEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxpcCgpOwotICAgICAgICAKLSAgICB2
b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24pOwotICAgIHZvaWQg
ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSgp
OworICAgIAorICAgIHZvaWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24pOwogICAgICAgICAKICAg
ICB2b2lkIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAgCiAgICAgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9Ci0gICAgICAgIAorICAg
IAorICAgIGlubGluZSB2b2lkIHJlc2V0VmVyc2lvbigpOworICAgIAogcHJpdmF0ZToKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOwogCkBA
IC0yODQsOSArMjg5LDkgQEAgcHJpdmF0ZToKICAgICBNYXJrZWRCbG9jayhWTSYsIEhhbmRsZSYp
OwogICAgIEF0b20qIGF0b21zKCk7CiAgICAgICAgIAotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5
RHVyaW5nTWFya2luZ1Nsb3coKTsKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeVNsb3coKTsKKyAg
ICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbik7CiAgICAgdm9pZCBjbGVhck1hcmtz
KCk7CisgICAgdm9pZCBjbGVhck1hcmtzKEhlYXBWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFySGFz
QW55TWFya2VkKCk7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xvdygpOwpAQCAtNDY5LDQw
ICs0NzQsMTMgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Om5lZWRzRmxpcChIZWFwVgogICAg
IHJldHVybiBoZWFwVmVyc2lvbiAhPSBtX3ZlcnNpb247CiB9CiAKLWlubGluZSB2b2lkIE1hcmtl
ZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCitpbmxpbmUg
dm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiB7
CiAgICAgaWYgKFVOTElLRUxZKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpKQotICAgICAgICBmbGlw
SWZOZWNlc3NhcnlTbG93KCk7Ci19Ci0KLWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZO
ZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQotewotICAgIGlm
IChVTkxJS0VMWShuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKSkKLSAgICAgICAgZmxpcElmTmVjZXNz
YXJ5RHVyaW5nTWFya2luZ1Nsb3coKTsKKyAgICAgICAgYWJvdXRUb01hcmtTbG93KGhlYXBWZXJz
aW9uKTsKICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKIH0KIAotaW5saW5lIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQot
ewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLX0KLQotaW5saW5l
IHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhI
ZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeUR1
cmluZ01hcmtpbmcoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpmbGlwRm9yRWRlbkNvbGxlY3Rpb24oKQotewotICAgIGFzc2VydEZsaXBwZWQoKTsK
LSAgICAgICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAg
ICAKLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBOZXcgJiYgbV9zdGF0ZSAhPSBGcmVlTGlzdGVkKTsK
LSAgICAKLSAgICBtX3N0YXRlID0gTWFya2VkOwotfQotCiAjaWYgQVNTRVJUX0RJU0FCTEVECiBp
bmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YXNzZXJ0RmxpcHBlZCgpCiB7CkBAIC01MTQsOSArNDky
LDE2IEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFzc2VydEYKICAgICBibG9j
aygpLmFzc2VydEZsaXBwZWQoKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFy
a2VkKGNvbnN0IHZvaWQqIHApCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoSGVh
cFZlcnNpb24gaGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqIHApCiB7Ci0gICAgYXNzZXJ0RmxpcHBl
ZCgpOworICAgIHJldHVybiBuZWVkc0ZsaXAoaGVhcFZlcnNpb24pID8gZmFsc2UgOiBtX21hcmtz
LmdldChhdG9tTnVtYmVyKHApKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFy
a2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKiBwKQor
eworICAgIGlmIChuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgcmV0dXJuIG1fbWFya3MuZ2V0KGF0b21O
dW1iZXIocCkpOwogfQogCkBAIC01NTAsNDMgKzUzNSwxNCBAQCBpbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpjbGVhck5lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVh
cENlbGwqIGNlbGwpCi17Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKLSAgICByZXR1
cm4gbV9ibG9jay0+aXNNYXJrZWQoY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNOZXds
eUFsbG9jYXRlZChjZWxsKSk7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtl
ZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVy
c2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgQVNTRVJUKG1faGFuZGxlLm1fc3Rh
dGUgPT0gTWFya2VkKTsKLSAgICByZXR1cm4gaXNNYXJrZWQoY2VsbCkgfHwgKG1faGFuZGxlLm1f
bmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CisgICAg
cmV0dXJuIG1fYmxvY2stPmlzTWFya2VkKHZlcnNpb24sIGNlbGwpIHx8IChtX25ld2x5QWxsb2Nh
dGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6aXNNYXJrZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24s
IGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2Vs
bCkKIHsKLSAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiBpc01hcmtlZChjZWxsKTsKLX0KLQotaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQotewotICAgIGFzc2Vy
dEZsaXBwZWQoKTsKLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBjYXNlIEFsbG9jYXRlZDoK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIE1hcmtlZDoKLSAgICAgICAgcmV0dXJu
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKLQotICAgIGNhc2UgTmV3OgotICAgIGNh
c2UgRnJlZUxpc3RlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc01hcmtlZCh2ZXJzaW9uLCBj
ZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBtX2hhbmRsZS5pc05ld2x5QWxs
b2NhdGVkKGNlbGwpKTsKIH0KIAogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25z
dCB2b2lkKiBwKQpAQCAtNjAzLDEzICs1NTksNiBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6
aXNBdG9tKGNvbnN0IHZvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKLXsKLSAgICBpZiAoIW1f
YmxvY2stPmlzQXRvbShwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc0xp
dmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPgogaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxl
Ojpmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewpAQCAtNjIyLDYyICs1NzEs
NiBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kCiAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPgotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNo
TGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBmbGlwSWZOZWNlc3Nhcnko
KTsKLSAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOwotICAg
IGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21z
UGVyQ2VsbCkgewotICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOwotICAgICAgICBpZiAoIWlzTGl2ZShj
ZWxsKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmdW5jdG9yKGNlbGws
IGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLWlubGluZSBJdGVyYXRp
b25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgSGVhcENlbGw6Oktp
bmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKLSAgICBmb3IgKHNpemVfdCBpID0gZmly
c3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAg
SGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2Nr
LT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKGlzTGl2ZShjZWxsKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0
YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0g
ICAgfQotICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotfQotCi1pbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc1N3ZWVwaW5nKCkgY29uc3QKLXsKLSAgICBj
b25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7
Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjppc0FsbG9jYXRlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJr
ZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBt
X3N0YXRlID09IEFsbG9jYXRlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNNYXJrZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRs
ZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJr
ZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRnJlZUxpc3RlZCgp
IGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZs
aXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IEZyZWVMaXN0ZWQ7Ci19Ci0K
IGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpoYXNBbnlNYXJrZWQoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2JpYXNlZE1hcmtDb3VudCAhPSBtX21hcmtDb3VudEJpYXM7CkBAIC03MTEsOCArNjA0
LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpNYXJrZQogICAgIHR5cGVk
ZWYgTWFya2VkQmxvY2tIYXNoIEhhc2g7CiB9OwogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSk7Ci0KIH0gLy8gbmFtZXNw
YWNlIFdURgogCiAjZW5kaWYgLy8gTWFya2VkQmxvY2tfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5o
IgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29u
c3QgSGVhcENlbGwqIGNlbGwpCit7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CisgICAg
CisgICAgaWYgKFVOTElLRUxZKGhhc0FueU5ld2x5QWxsb2NhdGVkKCkpKSB7CisgICAgICAgIGlm
IChpc05ld2x5QWxsb2NhdGVkKGNlbGwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIAorICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7CisgICAgCisg
ICAgaWYgKGFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgCisgICAgaWYgKGJsb2NrLm5lZWRzRmxpcCh2ZXJzaW9uKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworfQorCitpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKEhlYXBWZXJzaW9uIHZlcnNp
b24sIGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20ocCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNMaXZlKHZlcnNpb24sIHN0YXRpY19jYXN0
PGNvbnN0IEhlYXBDZWxsKj4ocCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4K
K2lubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExpdmVD
ZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSGVhcENlbGw6OktpbmQga2luZCA9
IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7
IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKKyAgICAgICAgSGVhcENlbGwq
IGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygp
W2ldKTsKKyAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRv
bmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOworICAgIH0KKyAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+CitpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEhlYXBDZWxs
OjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChzaXplX3QgaSA9
IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CisgICAg
ICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9i
bG9jay0+YXRvbXMoKVtpXSk7CisgICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRp
b25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25l
OworICAgIH0KKyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKK30KKworaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OnJlc2V0VmVyc2lvbigpCit7CisgICAgbV92ZXJzaW9uID0g
TWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24g
MjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2Vl
cGVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgi
CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKQEAgLTE5NSw2ICsxOTYsMjIgQEAgTWFya2Vk
U3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKKyAgICAKKyAg
ICBNYXJrZWRBbGxvY2F0b3IqIHByZXZpb3VzID0gbnVsbHB0cjsKKyAgICBmb3JFYWNoU3Vic3Bh
Y2UoCisgICAgICAgIFsmXSAoU3Vic3BhY2UmIHN1YnNwYWNlLCBBbGxvY2F0b3JBdHRyaWJ1dGVz
KSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgZm9yIChNYXJrZWRBbGxvY2F0b3Iq
IGFsbG9jYXRvciA6IHN1YnNwYWNlLmJhZ09mQWxsb2NhdG9ycykgeworICAgICAgICAgICAgICAg
IC8vIFdlIGNhbiBzZXQgdGhpcyBpbiBhbnkgb3JkZXIuIFRoZSBwb2ludCBpcyBqdXN0IHRoYXQg
d2Ugd2FudCB0byBiZSBhYmxlIHRvCisgICAgICAgICAgICAgICAgLy8gY3Vyc29yIG92ZXIgYWxs
b2NhdG9ycy4KKyAgICAgICAgICAgICAgICBhbGxvY2F0b3ItPnNldE5leHRBbGxvY2F0b3IocHJl
dmlvdXMpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHByZXZpb3VzID0gYWxs
b2NhdG9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7CisgICAgbV9maXJzdEFsbG9j
YXRvciA9IHByZXZpb3VzOworICAgIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gcHJl
dmlvdXM7CiB9CiAKIE1hcmtlZFNwYWNlOjp+TWFya2VkU3BhY2UoKQpAQCAtMjIyLDE1ICsyMzks
MjEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogCiB2b2lkKiBN
YXJrZWRTcGFjZTo6YWxsb2NhdGUoU3Vic3BhY2UmIHN1YnNwYWNlLCBzaXplX3QgYnl0ZXMpCiB7
Ci0gICAgaWYgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNw
YWNlLCBieXRlcykpCi0gICAgICAgIHJldHVybiBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAg
aWYgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNwYWNlLCBi
eXRlcykpIHsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwor
ICAgICAgICAvL2RhdGFMb2coIkFsbG9jYXRlZCAiLCBSYXdQb2ludGVyKHJlc3VsdCksICJcbiIp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICByZXR1cm4gYWxsb2NhdGVMYXJn
ZShzdWJzcGFjZSwgYnl0ZXMpOwogfQogCiB2b2lkKiBNYXJrZWRTcGFjZTo6dHJ5QWxsb2NhdGUo
U3Vic3BhY2UmIHN1YnNwYWNlLCBzaXplX3QgYnl0ZXMpCiB7Ci0gICAgaWYgKE1hcmtlZEFsbG9j
YXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNwYWNlLCBieXRlcykpCi0gICAgICAg
IHJldHVybiBhbGxvY2F0b3ItPnRyeUFsbG9jYXRlKCk7CisgICAgaWYgKE1hcmtlZEFsbG9jYXRv
ciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNwYWNlLCBieXRlcykpIHsKKyAgICAgICAg
dm9pZCogcmVzdWx0ID0gYWxsb2NhdG9yLT50cnlBbGxvY2F0ZSgpOworICAgICAgICAvL2RhdGFM
b2coIlRyeS1hbGxvY2F0ZWQgIiwgUmF3UG9pbnRlcihyZXN1bHQpLCAiXG4iKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgcmV0dXJuIHRyeUFsbG9jYXRlTGFyZ2Uoc3Vic3Bh
Y2UsIGJ5dGVzKTsKIH0KIApAQCAtMjU5LDkgKzI4MiwxMCBAQCB2b2lkKiBNYXJrZWRTcGFjZTo6
dHJ5QWxsb2NhdGVMYXJnZShTdWJzCiB2b2lkIE1hcmtlZFNwYWNlOjpzd2VlcCgpCiB7CiAgICAg
bV9oZWFwLT5zd2VlcGVyKCktPndpbGxGaW5pc2hTd2VlcGluZygpOwotICAgIGZvckVhY2hCbG9j
aygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAg
ICAgYmxvY2stPnN3ZWVwKCk7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChN
YXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAg
ICAgIGFsbG9jYXRvci5zd2VlcCgpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1
czo6Q29udGludWU7CiAgICAgICAgIH0pOwogfQogCkBAIC0yODQsMjggKzMwOCwxNiBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpzd2VlcExhcmdlQWxsb2NhdGlvbnMoCiAgICAgbV9sYXJnZUFsbG9jYXRp
b25zTnVyc2VyeU9mZnNldCA9IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7CiB9CiAKLXZvaWQg
TWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCgpCi17Ci0gICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkp
Ci0gICAgICAgIGRhdGFMb2coIlpvbWJpZnlpbmcgc3dlZXAuLi4iKTsKLSAgICBtX2hlYXAtPnN3
ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAg
ICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAoYmxv
Y2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAgICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKLSAg
ICAgICAgfSk7Ci19Ci0KLXZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCit2b2lk
IE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7CiAgICAgZm9yRWFjaEFsbG9j
YXRvcigKICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKLSAgICAgICAgICAgIGFsbG9jYXRvci5yZXNldCgpOworICAgICAgICAgICAg
YWxsb2NhdG9yLnByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CiAKLSAgICBtX2Jsb2Nrc1dpdGhO
ZXdPYmplY3RzLmNsZWFyKCk7CiAgICAgbV9hY3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0Fj
dGl2ZVdlYWtTZXRzKTsKKyAgICAKICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCkgPT0gRWRlbkNvbGxlY3Rpb24pCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlP
ZmZzZXRGb3JTd2VlcCA9IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7CiAgICAgZWxz
ZQpAQCAtNDEwLDExICs0MjIsMTEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZnJlZU9yU2hyaW5rQmxv
Y2soTWFyawogCiB2b2lkIE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogewotICAgIGZvckVhY2hCbG9j
aygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAg
ICAgZnJlZU9yU2hyaW5rQmxvY2soYmxvY2spOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAg
ICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7
CisgICAgICAgICAgICBhbGxvY2F0b3Iuc2hyaW5rKCk7CisgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7Ci0gICAgLy8gRm9yIExhcmdlQWxs
b2NhdGlvbnMsIHdlIGRvIHRoZSBtb3JhbCBlcXVpdmFsZW50IGluIHN3ZWVwTGFyZ2VBbGxvY2F0
aW9ucygpLgogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKQEAg
LTQyOSw1NyArNDQxLDYxIEBAIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQo
KQogICAgIGZvciAodW5zaWduZWQgaSA9IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXND
b2xsZWN0aW9uOyBpIDwgbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsgKytpKQogICAgICAgICBt
X2xhcmdlQWxsb2NhdGlvbnNbaV0tPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlB
bGxvY2F0ZWQoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFs
bG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCi0gICAgICAgIEFTU0VSVCghYWxsb2NhdGlv
bi0+aXNOZXdseUFsbG9jYXRlZCgpKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi19Ci0K
LSNpZm5kZWYgTkRFQlVHIAotc3RydWN0IFZlcmlmeU1hcmtlZCA6IE1hcmtlZEJsb2NrOjpWb2lk
RnVuY3RvciB7IAotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHN3aXRjaCAoYmxvY2stPm1fc3RhdGUpIHsKLSAgICAgICAg
Y2FzZSBNYXJrZWRCbG9jazo6TWFya2VkOgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgfQorICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygK
KyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKKyAgICAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGJsb2NrLCAhYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQo
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0
aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQorICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChhbGxvY2F0aW9uLCAhYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9jYXRlZCgpKTsKICAg
ICB9Ci19OyAKLSNlbmRpZiAKK30KIAotdm9pZCBNYXJrZWRTcGFjZTo6ZmxpcCgpCit2b2lkIE1h
cmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbklu
UHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
IG1fYmxvY2tzV2l0aE5ld09iamVjdHNbaV0tPmZsaXBGb3JFZGVuQ29sbGVjdGlvbigpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIEhlYXBWZXJzaW9uIG5leHRWZXJzaW9uID0gbV92ZXJzaW9uICsg
MTsKLSAgICAgICAgaWYgKFVOTElLRUxZKG5leHRWZXJzaW9uID09IGluaXRpYWxWZXJzaW9uKSkg
ewotICAgICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0
aGlzIGJ5IGZsaXBwaW5nIGFsbCBibG9ja3MuIFRoaXMgaGFwcGVucwotICAgICAgICAgICAgLy8g
c3VwZXIgcmFyZWx5LCBwcm9iYWJseSBuZXZlciBmb3IgbW9zdCB1c2Vycy4KKyAgICBpZiAobV9o
ZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICAgICAg
Zm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxv
Y2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLmJl
Z2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBtX3Zl
cnNpb24gPSBuZXh0VmVyc2lvbihtX3ZlcnNpb24pOworICAgICAgICAKKyAgICAgICAgaWYgKFVO
TElLRUxZKG1fdmVyc2lvbiA9PSBpbml0aWFsVmVyc2lvbikpIHsKKyAgICAgICAgICAgIC8vIE9o
IG5vISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBzZXR0aW5nIGFsbCBi
bG9jayB2ZXJzaW9ucyB0byBudWxsLgogICAgICAgICAgICAgZm9yRWFjaEJsb2NrKAogICAgICAg
ICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGhhbmRsZS0+ZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgICAgICAgICAgICAgICAg
IGhhbmRsZS0+YmxvY2soKS5yZXNldFZlcnNpb24oKTsKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfQotICAgICAgICBtX3ZlcnNpb24gPSBuZXh0VmVyc2lvbjsgLy8gSGVuY2Vmb3J0aCwg
ZmxpcElmTmVjZXNzYXJ5KCkgd2lsbCB0cmlnZ2VyIG9uIGFsbCBibG9ja3MuCisgICAgICAgIAog
ICAgICAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0
aW9ucykKICAgICAgICAgICAgIGFsbG9jYXRpb24tPmZsaXAoKTsKICAgICB9CiAKLSNpZm5kZWYg
TkRFQlVHCi0gICAgVmVyaWZ5TWFya2VkIHZlcmlmeUZ1bmN0b3I7Ci0gICAgZm9yRWFjaEJsb2Nr
KHZlcmlmeUZ1bmN0b3IpOwotI2VuZGlmCisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAg
ICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaykgeworICAgICAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWJsb2NrLT5p
c0ZyZWVMaXN0ZWQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgbV9pc01h
cmtpbmcgPSB0cnVlOworfQorCit2b2lkIE1hcmtlZFNwYWNlOjplbmRNYXJraW5nKCkKK3sKKyAg
ICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2Nh
dG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLmVuZE1hcmtp
bmcoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAg
ICAgICB9KTsKKyAgICAKKyAgICBtX2lzTWFya2luZyA9IGZhbHNlOwogfQogCiB2b2lkIE1hcmtl
ZFNwYWNlOjp3aWxsU3RhcnRJdGVyYXRpbmcoKQpAQCAtNTQwLDE5ICs1NTYsNjYgQEAgdm9pZCBN
YXJrZWRTcGFjZTo6YWRkQWN0aXZlV2Vha1NldChXZWFrUwogCiB2b2lkIE1hcmtlZFNwYWNlOjpk
aWRBZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIHsKKyAgICAvLyBXQVJOSU5H
OiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgYmxvY2sgaXMgZnVsbHkgaW5pdGlhbGl6
ZWQuIFRoZSBibG9jayB3aWxsIG5vdCBrbm93CisgICAgLy8gaXRzIGNlbGxTaXplKCkgb3IgYXR0
cmlidXRlcygpLiBUaGUgbGF0dGVyIGltcGxpZXMgdGhhdCB5b3UgY2FuJ3QgYXNrIHRoaW5ncyBs
aWtlCisgICAgLy8gbmVlZHNEZXN0cnVjdGlvbigpLgogICAgIG1fY2FwYWNpdHkgKz0gTWFya2Vk
QmxvY2s6OmJsb2NrU2l6ZTsKICAgICBtX2Jsb2Nrcy5hZGQoJmJsb2NrLT5ibG9jaygpKTsKIH0K
IAogdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGJsb2NrKQogewotICAgIGJsb2NrLT5hc3NlcnRGbGlwcGVkKCk7Ci0gICAgbV9ibG9ja3NX
aXRoTmV3T2JqZWN0cy5hcHBlbmQoYmxvY2spOwotICAgIAogICAgIGlmIChibG9jay0+d2Vha1Nl
dCgpLmlzT25MaXN0KCkpIHsKICAgICAgICAgYmxvY2stPndlYWtTZXQoKS5yZW1vdmUoKTsKICAg
ICAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5hcHBlbmQoJmJsb2NrLT53ZWFrU2V0KCkpOwogICAg
IH0KIH0KIAorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkU3BhY2U6OmZpbmRFbXB0eUJsb2Nr
KCkKK3sKKyAgICBmb3IgKDsgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IG1fYWxsb2Nh
dG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPm5l
eHRBbGxvY2F0b3IoKSkgeworICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sg
PSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+ZmluZEVtcHR5QmxvY2soKSkKKyAgICAg
ICAgICAgIHJldHVybiBibG9jazsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Zv
aWQgTWFya2VkU3BhY2U6OnNuYXBzaG90KCkKK3sKKyAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25J
blByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRv
cigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJh
dGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90Rm9yRWRlbkNv
bGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250
aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hBbGxv
Y2F0b3IoCisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJ
dGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFwc2hvdEZvckZ1
bGxDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CisgICAgICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6
OmFzc2VydFNuYXBzaG90RW1wdHkoKQoreworICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCisgICAg
ICAgIHJldHVybjsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFs
bG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxs
b2NhdG9yLmFzc2VydFNuYXBzaG90RW1wdHkoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6
ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAg
ICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMg
eworICAgICAgICAgICAgb3V0LnByaW50KCJCaXRzIGZvciAiLCBhbGxvY2F0b3IsICI6XG4iKTsK
KyAgICAgICAgICAgIGFsbG9jYXRvci5kdW1wQml0cyhvdXQpOworICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsMTYgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBudW1TaXplQ2xhc3NlcyA9IGxhcmdlQ3V0b2ZmIC8gc2l6ZVN0ZXA7
CiAgICAgCi0gICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gNDI7
ICAvLyBUaGlzIGNhbiBiZSBhbnkgdmFsdWUsIGluY2x1ZGluZyByYW5kb20gZ2FyYmFnZSwgc28g
bG9uZyBhcyBpdCdzIGNvbnNpc3RlbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJvY2Vzcy4K
KyAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gbnVsbFZlcnNpb24gPSAwOyAvLyBUaGUgdmVy
c2lvbiBvZiBmcmVzaGx5IGFsbG9jYXRlZCBibG9ja3MuCisgICAgc3RhdGljIGNvbnN0IEhlYXBW
ZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gMTsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUgaGVhcCBz
dGFydHMgb3V0IHdpdGguCisgICAgCisgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24oSGVhcFZl
cnNpb24gdmVyc2lvbikKKyAgICB7CisgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgaWYgKHZl
cnNpb24gPT0gbnVsbFZlcnNpb24pCisgICAgICAgICAgICB2ZXJzaW9uKys7CisgICAgICAgIHJl
dHVybiB2ZXJzaW9uOworICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90IHNpemVDbGFzc1Rv
SW5kZXgoc2l6ZV90IHNpemUpCiAgICAgewpAQCAtMTE0LDcgKzEyMyw3IEBAIHB1YmxpYzoKICAg
ICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVy
biBtX25vcm1hbFNwYWNlOyB9CiAgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxpYXJ5RGF0
YSgpIHsgcmV0dXJuIG1fYXV4aWxpYXJ5U3BhY2U7IH0KICAgICAKLSAgICB2b2lkIHJlc2V0QWxs
b2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIAogICAgIHZvaWQg
dmlzaXRXZWFrU2V0cyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lkIHJlYXBXZWFrU2V0cygp
OwpAQCAtMTQ0LDExICsxNTMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVM
aXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICB2b2lkIGRpZEFsbG9jYXRlSW5CbG9jayhN
YXJrZWRCbG9jazo6SGFuZGxlKik7CiAKLSAgICB2b2lkIGZsaXAoKTsKKyAgICB2b2lkIGJlZ2lu
TWFya2luZygpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNob3QoKTsK
ICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgICB2b2lkIHN3ZWVwKCk7CiAgICAg
dm9pZCBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKTsKLSAgICB2b2lkIHpvbWJpZnlTd2VlcCgpOwor
ICAgIHZvaWQgYXNzZXJ0U25hcHNob3RFbXB0eSgpOwogICAgIHNpemVfdCBvYmplY3RDb3VudCgp
OwogICAgIHNpemVfdCBzaXplKCk7CiAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CkBAIC0xNTcsOCAr
MTY4LDYgQEAgcHVibGljOgogICAgIAogICAgIEhlYXBWZXJzaW9uIHZlcnNpb24oKSBjb25zdCB7
IHJldHVybiBtX3ZlcnNpb247IH0KIAotICAgIGNvbnN0IFZlY3RvcjxNYXJrZWRCbG9jazo6SGFu
ZGxlKj4mIGJsb2Nrc1dpdGhOZXdPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja3NXaXRo
TmV3T2JqZWN0czsgfQotICAgIAogICAgIGNvbnN0IFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiYg
bGFyZ2VBbGxvY2F0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uczsgfQog
ICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsgfQogICAgIHVuc2lnbmVkIGxhcmdl
QWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFy
Z2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyB9CkBAIC0xNjksMTMgKzE3OCwx
NiBAQCBwdWJsaWM6CiAgICAgTGFyZ2VBbGxvY2F0aW9uKiogbGFyZ2VBbGxvY2F0aW9uc0ZvclRo
aXNDb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhp
c0NvbGxlY3Rpb25FbmQ7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0Nv
bGxlY3Rpb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0Nv
bGxlY3Rpb25TaXplOyB9CiAgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBmaXJzdEFsbG9jYXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RBbGxvY2F0b3I7IH0KKyAgICBNYXJrZWRBbGxvY2F0
b3IqIGFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb2Nh
dG9yRm9yRW1wdHlBbGxvY2F0aW9uOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSog
ZmluZEVtcHR5QmxvY2soKTsKKyAgICAKICAgICAvLyBXaGVuIHRoaXMgaXMgdHJ1ZSBpdCBtZWFu
cyB0aGF0IHdlIGhhdmUgZmxpcHBlZCBidXQgdGhlIG1hcmsgYml0cyBoYXZlbid0IGNvbnZlcmdl
ZCB5ZXQuCiAgICAgYm9vbCBpc01hcmtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzTWFya2luZzsg
fQogICAgIAotICAgIC8vIEZJWE1FOiBBZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYxNTgxLCBNYXJrZWRTcGFjZSB3aWxsIGNvbnRyb2wgdGhpcwotICAgIC8v
IGZsYWcgZGlyZWN0bHkuCi0gICAgdm9pZCBzZXRJc01hcmtpbmcoYm9vbCB2YWx1ZSkgeyBtX2lz
TWFya2luZyA9IHZhbHVlOyB9Ci0KKyAgICB2b2lkIGR1bXBCaXRzKFByaW50U3RyZWFtJiA9IFdU
Rjo6ZGF0YUZpbGUoKSk7CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTE5MCw4ICsyMDIsOCBA
QCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZVN1YnNwYWNlKFN1YnNwYWNlJik7
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3Io
Y29uc3QgRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9y
RWFjaFN1YnNwYWNlKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdm9pZCBmb3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBmb3JFYWNoU3Vic3BhY2UoY29u
c3QgRnVuY3RvciYpOwogICAgIAogICAgIHZvaWQgYWRkQWN0aXZlV2Vha1NldChXZWFrU2V0Kik7
CiAKQEAgLTIwNSw3ICsyMTcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0l0ZXJhdGluZzsK
ICAgICBib29sIG1faXNNYXJraW5nIHsgZmFsc2UgfTsKICAgICBNYXJrZWRCbG9ja1NldCBtX2Js
b2NrczsKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tzV2l0aE5ld09i
amVjdHM7CiAgICAgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+IG1fbGFyZ2VBbGxvY2F0aW9uczsK
ICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0IHsgMCB9OwogICAg
IHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uIHsgMCB9
OwpAQCAtMjE1LDQwICsyMjYsMTEgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxs
b2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUgeyAwIH07CiAgICAgU2VudGluZWxMaW5rZWRM
aXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX2FjdGl2ZVdlYWtT
ZXRzOwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9k
ZTxXZWFrU2V0Pj4gbV9uZXdBY3RpdmVXZWFrU2V0czsKKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0
b3IqIG1fZmlyc3RBbGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgTWFya2VkQWxsb2NhdG9yKiBt
X2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiB7IG51bGxwdHIgfTsKIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNl
bGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBB
U1NFUlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5z
ZXQoKS5lbmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5m
b3JFYWNoTGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlv
biA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewotICAgICAgICBpZiAoYWxsb2NhdGlvbi0+aXNMaXZl
KCkpIHsKLSAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2Nh
dGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxs
KEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgQVNT
RVJUKGlzSXRlcmF0aW5nKCkpOwotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0
KCkuZW5kKCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9y
RWFjaERlYWRDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24g
OiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKLSAgICAgICAgaWYgKCFhbGxvY2F0aW9uLT5pc0xpdmUo
KSkgewotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0
aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIGlubGluZSBNYXJr
ZWRBbGxvY2F0b3IqIE1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3IoU3Vic3BhY2UmIHNwYWNlLCBz
aXplX3QgYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKQEAgLTMwNCwxNSArMjg2LDEwIEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPgogdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQogewotICAgIGZvckVhY2hTdWJzcGFjZSgKLSAgICAgICAgWyZdIChT
dWJzcGFjZSYgc3Vic3BhY2UsIEFsbG9jYXRvckF0dHJpYnV0ZXMpIC0+IEl0ZXJhdGlvblN0YXR1
cyB7Ci0gICAgICAgICAgICBmb3IgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yIDogc3Vic3Bh
Y2UuYmFnT2ZBbGxvY2F0b3JzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZ1bmN0b3IoKmFsbG9j
YXRvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0g
ICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLSAgICAgICAgfSk7
CisgICAgZm9yIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IG1fZmlyc3RBbGxvY2F0b3I7
IGFsbG9jYXRvcjsgYWxsb2NhdG9yID0gYWxsb2NhdG9yLT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAg
ICAgICAgaWYgKGZ1bmN0b3IoKmFsbG9jYXRvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5s
aW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZv
aWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKKyAgICBC
bG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJ
dGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9PSBJ
dGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZv
ciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7Cisg
ICAgICAgIGlmIChhbGxvY2F0aW9uLT5pc0xpdmUoKSkgeworICAgICAgICAgICAgaWYgKGZ1bmN0
b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQp
ID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lk
IE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7CisgICAgQmxv
Y2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRl
cmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRl
cmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3Ig
KExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgeworICAg
ICAgICBpZiAoIWFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoZnVuY3Rv
cihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkg
PT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg5LDYgKzE4OSw4IEBAIHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRv
TWEKICAgICB2YWxpZGF0ZShjZWxsKTsKICNlbmRpZgogICAgIAorICAgIC8vZGF0YUxvZygiICAg
IE1hcmtpbmcgIiwgUmF3UG9pbnRlcihjZWxsKSwgIlxuIik7CisgICAgCiAgICAgaWYgKGNlbGwt
PmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0
YWNrKGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLCBjZWxsKTsKICAgICBlbHNlCkBAIC0xOTgsNyAr
MjAwLDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogdGVtcGxh
dGU8dHlwZW5hbWUgQ29udGFpbmVyVHlwZT4KIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRv
cjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYXJrU3RhY2soQ29udGFpbmVyVHlwZSYgY29udGFpbmVy
LCBKU0NlbGwqIGNlbGwpCiB7Ci0gICAgY29udGFpbmVyLmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01h
cmtpbmcobV92ZXJzaW9uKTsKKyAgICBjb250YWluZXIuYWJvdXRUb01hcmsobV92ZXJzaW9uKTsK
ICAgICAKICAgICBpZiAoY29udGFpbmVyLnRlc3RBbmRTZXRNYXJrZWQoY2VsbCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTI0NiwxMCArMjQ4LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6bWFya0F1eGls
aWFyeShjb25zdCB2bwogICAgIAogICAgIEFTU0VSVChjZWxsLT5oZWFwKCkgPT0gaGVhcCgpKTsK
ICAgICAKLSAgICBpZiAoSGVhcDo6dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKSB7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwp
KTsKKyAgICBpZiAoSGVhcDo6dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQogICAgIAogICAgIG5vdGVMaXZlQXV4aWxpYXJ5Q2VsbChjZWxs
KTsKIH0KQEAgLTI5NCw2ICsyOTQsOCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6
OnZpc2l0Q2hpCiB7CiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwp
KTsKICAgICAKKyAgICAvL2RhdGFMb2coIlZpc2l0aW5nICIsIFJhd1BvaW50ZXIoY2VsbCksICJc
biIpOworCiAgICAgU2V0Q3VycmVudENlbGxTY29wZSBjdXJyZW50Q2VsbFNjb3BlKCp0aGlzLCBj
ZWxsKTsKICAgICAKICAgICBtX2N1cnJlbnRPYmplY3RDZWxsU3RhdGVCZWZvcmVWaXNpdGluZyA9
IGNlbGwtPmNlbGxTdGF0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vh
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkocmV2
aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTIsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpbmNs
dWRlICJKU0V4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yVHJhaXRzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC05Myw0ICs5NSwyMyBA
QCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAorbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNp
bXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db21wYXJl
V2l0aE1lbWNtcCA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhh
c2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8
VD4+IHsKKyAgICB0eXBlZGVmIEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKKworICAgIHR5cGVk
ZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7CisgICAgc3RhdGljIEVtcHR5VmFsdWVU
eXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB0eXBlZGVmIFQqIFBl
ZWtUeXBlOworICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KKyAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0
eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5cGUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKICNlbmRpZiAvLyBXZWFrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWtCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha0Jsb2NrLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV2Vha0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHZv
aWQgV2Vha0Jsb2NrOjpzcGVjaWFsaXplZFZpc2l0KENvbnRhaW4KICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIGNvbnN0IEpTVmFsdWUmIGpzVmFsdWUgPSB3ZWFrSW1wbC0+anNWYWx1
ZSgpOwotICAgICAgICBpZiAoY29udGFpbmVyLmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKHZl
cnNpb24sIGpzVmFsdWUuYXNDZWxsKCkpKQorICAgICAgICBpZiAoY29udGFpbmVyLmlzTWFya2Vk
Q29uY3VycmVudGx5KHZlcnNpb24sIGpzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIAogICAgICAgICBpZiAoIXdlYWtIYW5kbGVPd25lci0+aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+Ojp3cmFwU2xvdCgmY29uc3RfY2FzdDxK
U1ZhbHVlJj4oanNWYWx1ZSkpLCB3ZWFrSW1wbC0+Y29udGV4dCgpLCB2aXNpdG9yKSkKQEAgLTE0
NywxNyArMTQ3LDE0IEBAIHZvaWQgV2Vha0Jsb2NrOjpyZWFwKCkKICAgICAvLyBJZiB0aGlzIFdl
YWtCbG9jayBkb2Vzbid0IGJlbG9uZyB0byBhIENlbGxDb250YWluZXIsIHdlIHdvbid0IGV2ZW4g
YmUgaGVyZS4KICAgICBBU1NFUlQobV9jb250YWluZXIpOwogICAgIAotICAgIG1fY29udGFpbmVy
LmZsaXBJZk5lY2Vzc2FyeSgpOwotCi0gICAgLy8gV2Ugb25seSByZWFwIGFmdGVyIG1hcmtpbmcu
Ci0gICAgQVNTRVJUKG1fY29udGFpbmVyLmlzTWFya2VkKCkpOworICAgIEhlYXBWZXJzaW9uIHZl
cnNpb24gPSBtX2NvbnRhaW5lci5oZWFwKCktPm9iamVjdFNwYWNlKCkudmVyc2lvbigpOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWFrSW1wbENvdW50KCk7ICsraSkgewogICAgICAg
ICBXZWFrSW1wbCogd2Vha0ltcGwgPSAmd2Vha0ltcGxzKClbaV07CiAgICAgICAgIGlmICh3ZWFr
SW1wbC0+c3RhdGUoKSA+IFdlYWtJbXBsOjpEZWFkKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgaWYgKG1fY29udGFpbmVyLmlzTWFya2VkKHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXND
ZWxsKCkpKSB7CisgICAgICAgIGlmIChtX2NvbnRhaW5lci5pc01hcmtlZCh2ZXJzaW9uLCB3ZWFr
SW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKSkgewogICAgICAgICAgICAgQVNTRVJUKHdlYWtJbXBs
LT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHJl
dmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJXZWFrU2V0SW5saW5lcy5oIgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTE0OSwyMyArMTQ4LDQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIHZvaWQgd2Vha0NsZQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAotbmFtZXNwYWNlIFdU
RiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFr
PFQ+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBj
YW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxK
U0M6OldlYWs8VD4+IHsKLSAgICB0eXBlZGVmIEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKLQot
ICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7Ci0gICAgc3RhdGljIEVt
cHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICB0eXBl
ZGVmIFQqIFBlZWtUeXBlOwotICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VU
eXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgUGVla1R5cGUg
cGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5cGUoKTsgfQotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KICNlbmRpZiAvLyBXZWFrSW5saW5lc19oCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwx
MCBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgogI2lu
Y2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgotI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAjaW5j
bHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJN
YXBJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hdGhPYmplY3QuaCIKICNpbmNs
dWRlICJNaWNyb3Rhc2suaCIKICNpbmNsdWRlICJNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCIKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDIwNjAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTg3LDYgKzE4Nyw3IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5n
OwogICAgIHYodW5zaWduZWQsIGxhcmdlQWxsb2NhdGlvbkN1dG9mZiwgMTAwMDAwLCBOb3JtYWws
IG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGR1bXBTaXplQ2xhc3NlcywgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlQnVtcEFsbG9jYXRvciwgdHJ1ZSwgTm9ybWFsLCBu
dWxscHRyKSBcCisgICAgdihib29sLCBsb29rRm9yRW1wdHlCbG9ja3NJbk90aGVyQWxsb2NhdG9y
cywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCBlYWdlcmx5VXBkYXRlVG9w
Q2FsbEZyYW1lLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwg
dXNlT1NSRW50cnlUb0RGRywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAkocmV2aXNpb24gMjA2MDMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgUHJvdG90eXBlTWFwX2gKICNkZWZp
bmUgUHJvdG90eXBlTWFwX2gKIAorI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgorI2luY2x1ZGUg
IkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXZWFrR0NNYXAuaCIKICNpbmNsdWRlIDx3dGYvVHJp
U3RhdGUuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1ZGUgIk1hcmtl
ZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQuaCIKKyNpbmNsdWRlICJNYXJrZWRT
cGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUg
IlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkocmV2aXNpb24gMjA2MDMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2Vha0dDTWFwX2gKIAogI2luY2x1ZGUg
IldlYWsuaCIKLSNpbmNsdWRlICJXZWFrSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3Bl
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIK
ICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYtMDktMTYgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE1hcmtlZEJsb2NrIHN0YXRlIHRyYWNr
aW5nIHN1cHBvcnQgb3ZlcmxhcHBlZCBhbGxvY2F0aW9uIGFuZCBtYXJraW5nIHN0YXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1ODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoZSBt
YWluIGNoYW5nZSBoZXJlIGlzIHRvIGJyaW5nIGJhY2sgRmFzdEJpdFZlY3Rvci5jcHAsIHNvIHRo
YXQgSSBjb3VsZCBvdXRsaW5lIHNvbWUKKyAgICAgICAgbGFyZ2Ugc2xvdyBwYXRoIGZ1bmN0aW9u
cy4gVGhpcyBhbHNvIGFkZHMgc29tZSB1dGlsaXRpZXMsIGxpa2UgYXRvbWljU2V0QW5kQ2hlY2so
KSBhbmQKKyAgICAgICAgaXNFbXB0eSgpLiBUaGUgR0MgdXNlcyB0aGVzZS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V1RGOjpGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpzZXRFcXVhbHNTbG93KToKKyAgICAgICAgKFdU
Rjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXplU2xvdyk6CisgICAgICAgICogd3RmL0Zh
c3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXplKToK
KyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvckltcGw6OmlzRW1wdHkpOgorICAgICAgICAoV1RG
OjpGYXN0Qml0VmVjdG9yOjphdG9taWNTZXRBbmRDaGVjayk6CisgICAgICAgIChXVEY6OkZhc3RC
aXRWZWN0b3I6Om9wZXJhdG9yW10pOiBEZWxldGVkLgorCiAyMDE2LTA5LTE2ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGlzVmFsaWRFbnVtIHRv
IHdvcmsgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBHQ0MKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCQkwRjQ1NzA0MzFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwNDIxQkU1QjU4RjAw
NjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLzsgfTsKIAkJMEY0NTcwNDUxQkU4MzQ0MTAwNjJBNjI5
IC8qIEJ1YmJsZVNvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi87IH07CiAJ
CTBGNzI1Q0FDMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNBIC8q
IFJhbmdlU2V0LmggKi87IH07CisJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0
VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJ
MEY4MjRBNjgxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MjRBNjQxQjc0NDNBMDAwMkUzNDVE
IC8qIFBhcmtpbmdMb3QuY3BwICovOyB9OwogCQkwRjgyNEE2OTFCNzQ0M0EwMDAyRTM0NUQgLyog
UGFya2luZ0xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLzsgfTsKIAkJMEY4
NzEwNUExNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBS
YXdQb2ludGVyLmggKi87IH07CkBAIC0zNjYsNiArMzY3LDcgQEAKIAkJMEY0NTcwNDIxQkU1QjU4
RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ1NzA0NDFC
RTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCdWJibGVTb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzI1
Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSYW5nZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdD
NUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGYXN0Qml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjQxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFya2luZ0xvdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQ
YXJraW5nTG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcmtpbmdMb3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NzEwNTkxNjY0M0YxOTAwOTBCMEFE
IC8qIFJhd1BvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmF3UG9p
bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODgwLDYgKzg4Miw3IEBACiAJ
CQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EuaCAqLywKIAkJCQkxQUVBODhFMTFE
NkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5oICovLAogCQkJCUE4QTQ3MjlGMTUxQTgyNUEw
MDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQkwRjdDNUZCNTFEODg1Q0YyMDA0NEY1
RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8sCiAJCQkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcy
IC8qIEZhc3RCaXRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyog
RmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RN
YWxsb2MuaCAqLywKQEAgLTE1OTQsNiArMTU5Nyw3IEBACiAJCQkJQ0Q1NDk3QUMxNTg1N0QwMzAw
QjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4
MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzNGNDE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzNGNzE1MUE4MjVCMDA0MTIzRkYgLyogT1NBbGxvY2F0b3JQb3Np
eC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyogT1NS
YW5kb21Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MDIxNTFBODI1QjAwNDEy
M0ZGIC8qIFBhZ2VCbG9jay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIERh
dGFMb2cuY3BwCiAgICAgRGF0ZU1hdGguY3BwCiAgICAgRGVjaW1hbE51bWJlci5jcHAKKyAgICBG
YXN0Qml0VmVjdG9yLmNwcAogICAgIEZhc3RNYWxsb2MuY3BwCiAgICAgRmlsZVByaW50U3RyZWFt
LmNwcAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zh
c3RCaXRWZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0
b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZh
c3RCaXRWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgRmFzdEJpdFZlY3Rvcldv
cmRPd25lcjo6c2V0RXF1YWxzU2xvdyhjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhl
cikKK3sKKyAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KAor
ICAgICAgICBmYXN0Q2FsbG9jKG90aGVyLmFycmF5TGVuZ3RoKCksIHNpemVvZih1aW50MzJfdCkp
KTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG90aGVyLm1fd29yZHMsIG90aGVyLmFycmF5TGVuZ3Ro
KCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICBpZiAobV93b3JkcykKKyAgICAgICAgZmFzdEZy
ZWUobV93b3Jkcyk7CisgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAgIG1fbnVtQml0cyA9IG90
aGVyLm1fbnVtQml0czsKK30KKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpyZXNpemVT
bG93KHNpemVfdCBudW1CaXRzKQoreworICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0Qml0VmVj
dG9yQXJyYXlMZW5ndGgobnVtQml0cyk7CisgICAgCisgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5z
dGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCisgICAgLy8g
dXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0
aGUgYml0dmVjdG9yLgorICAgIAorICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0
PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKKyAg
ICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMy
X3QpKTsKKyAgICBpZiAobV93b3JkcykKKyAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7CisgICAg
bV93b3JkcyA9IG5ld0FycmF5OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0Zhc3RCaXRWZWN0b3IuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dURi93dGYvRmFz
dEJpdFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC05MSwxNyArOTIsMTIgQEAgcHVibGljOgog
ICAgIAogICAgIEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG9wZXJhdG9yPShjb25zdCBGYXN0Qml0
VmVjdG9yV29yZE93bmVyJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBv
dGhlci5hcnJheUxlbmd0aCgpOwotICAgICAgICBpZiAobGVuZ3RoID09IGFycmF5TGVuZ3RoKCkp
IHsKLSAgICAgICAgICAgIG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBsZW5ndGggKiBz
aXplb2YodWludDMyX3QpKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgaWYg
KGFycmF5TGVuZ3RoKCkgIT0gb3RoZXIuYXJyYXlMZW5ndGgoKSkKKyAgICAgICAgICAgIHNldEVx
dWFsc1Nsb3cob3RoZXIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweShtX3dv
cmRzLCBvdGhlci5tX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7Cisg
ICAgICAgICAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7CiAgICAgICAgIH0KLSAgICAg
ICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9j
KGxlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwotICAgICAgICBtZW1jcHkobmV3QXJyYXksIG90
aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBpZiAobV93
b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOwotICAgICAgICBtX3dvcmRzID0g
bmV3QXJyYXk7Ci0gICAgICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KICAgICAKQEAgLTE0MCwxOCArMTM2LDggQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgcmVzaXplKHNpemVfdCBudW1CaXRzKQogICAgIHsKLSAgICAgICAgaWYg
KG51bUJpdHMgPT0gbV9udW1CaXRzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAg
ICAgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdl
IGV4cGVjdCB0aGUgY29tbW9uCi0gICAgICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1ldGhvZCB0
byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rvci4KLSAgICAgICAgCi0g
ICAgICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0
cyk7Ci0gICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4o
ZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKLSAgICAgICAgbWVtY3B5
KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0g
ICAgICAgIGlmIChtX3dvcmRzKQotICAgICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Ci0gICAg
ICAgIG1fd29yZHMgPSBuZXdBcnJheTsKKyAgICAgICAgaWYgKGFycmF5TGVuZ3RoKCkgIT0gZmFz
dEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpKQorICAgICAgICAgICAgcmVzaXplU2xvdyhu
dW1CaXRzKTsKICAgICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKICAgICB9CiAgICAgCkBAIC0x
NzEsNiArMTU3LDkgQEAgcHVibGljOgogICAgIHVpbnQzMl90KiB3b3JkcygpIHsgcmV0dXJuIG1f
d29yZHM7IH0KIAogcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRFcXVh
bHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZXNpemVTbG93KHNpemVfdCBudW1CaXRzKTsKKyAgICAKICAgICB1
aW50MzJfdCogbV93b3JkcyB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9
OwogfTsKQEAgLTMyMCw2ICszMDksMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICAgICAKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSBhcnJheUxlbmd0aCgpOyBpbmRleC0tOykgeworICAgICAgICAg
ICAgaWYgKG1fd29yZHMud29yZChpbmRleCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIEZhc3RCaXRWZWN0b3JJbXBsPEZhc3RCaXRW
ZWN0b3JBbmRXb3Jkczx0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUsIHR5cGVuYW1lIE90aGVyV29y
ZHM6OlZpZXdUeXBlPj4gb3BlcmF0b3ImKGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29y
ZHM+JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC0zODAsNyArMzc4LDcgQEAgcHVibGljOgogICAg
ICAgICAvLyB3cml0dGVuIHRoaXMgd2F5IHNvIHRoYXQgaXQgcGVyZm9ybXMgd2VsbCByZWdhcmRs
ZXNzIG9mIHdoZXRoZXIgdmFsdWUgaXMgYSBjb25zdGFudC4KICAgICAgICAgdWludDMyX3Qgc2tp
cFZhbHVlID0gLShzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpIF4gMSk7CiAgICAgICAgIAot
ICAgICAgICBzaXplX3QgbnVtV29yZHMgPSBtX3dvcmRzLmFycmF5TGVuZ3RoKCk7CisgICAgICAg
IHNpemVfdCBudW1Xb3JkcyA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChtX3dvcmRzLm51bUJp
dHMoKSk7CiAgICAgICAgIAogICAgICAgICBzaXplX3Qgd29yZEluZGV4ID0gc3RhcnRJbmRleCAv
IDMyOwogICAgICAgICBzaXplX3Qgc3RhcnRJbmRleEluV29yZCA9IHN0YXJ0SW5kZXggLSB3b3Jk
SW5kZXggKiAzMjsKQEAgLTQ3MSw2ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fd29yZHMu
Y2xlYXJBbGwoKTsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnRz
IG9mIHRoaXMgYml0dmVjdG9yIGNoYW5nZWQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJX
b3Jkcz4KICAgICBib29sIHNldEFuZENoZWNrKGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90aGVy
V29yZHM+JiBvdGhlcikKICAgICB7CkBAIC01NTAsNiArNTQ5LDI4IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBhdChpbmRleCk7CiAgICAgfQorICAgIAorICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgY29udGVudHMgY2hhbmdlZC4KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRv
bWljU2V0QW5kQ2hlY2soc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKQorICAgIHsKKyAgICAgICAg
dWludDMyX3QqIHBvaW50ZXIgPSAmbV93b3Jkcy53b3JkKGluZGV4ID4+IDUpOworICAgICAgICB1
aW50MzJfdCBtYXNrID0gMSA8PCAoaW5kZXggJiAzMSk7CisgICAgICAgIGZvciAoOzspIHsKKyAg
ICAgICAgICAgIHVpbnQzMl90IG9sZFZhbHVlID0gKnBvaW50ZXI7CisgICAgICAgICAgICB1aW50
MzJfdCBuZXdWYWx1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAg
IGlmIChvbGRWYWx1ZSAmIG1hc2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlIHwgbWFzazsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCEob2xkVmFsdWUgJiBtYXNrKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0g
b2xkVmFsdWUgJiB+bWFzazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3ZWFrQ29t
cGFyZUFuZFN3YXAocG9pbnRlciwgb2xkVmFsdWUsIG5ld1ZhbHVlKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdU
Rgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289178</attachid>
            <date>2016-09-17 15:41:01 -0700</date>
            <delta_ts>2016-09-18 14:21:06 -0700</delta_ts>
            <desc>it should build</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>160820</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAxNi0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgTWFya2VkQmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9j
YXRpb24gYW5kIG1hcmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgQ29uY3VycmVudCBHQ3MgbXVzdCBhbGxvdyBmb3IgbXV0
YXRpb24gYW5kIGFsbG9jYXRpb24gZHVyaW5nIGNvbGxlY3Rpb24uIFdlIGFscmVhZHkga25vdwor
ICAgICAgICBob3cgdG8gbXV0YXRlIGR1cmluZyBjb2xsZWN0aW9uLiBXZSBoYXZlIGEgd3JpdGUg
YmFycmllciBmb3IgdGhhdC4gQWxsb2NhdGlvbiBkdXJpbmcKKyAgICAgICAgY29sbGVjdGlvbiBp
cyBtb3JlIGludm9sdmVkOiB0aGUgY29sbGVjdG9yIG1vZGlmaWVzIHRoZSB0aGUgbWFyayBiaXRz
LCBhcyB3ZWxsIGFzIG90aGVyCisgICAgICAgIGtpbmRzIG9mIE1hcmtlZEJsb2NrIHN0YXRlLCBp
bi1wbGFjZSBkdXJpbmcgYSBjb2xsZWN0aW9uLiBUaGUgYWxsb2NhdG9yIHVzZXMgdGhhdCBzYW1l
CisgICAgICAgIE1hcmtlZEJsb2NrIHN0YXRlIHRvIGRlY2lkZSB3aGljaCByZWdpb25zIG9mIG1l
bW9yeSBhcmUgZnJlZS4gVGhpcyB3b3JrcyBpZiB0aGUgYWxsb2NhdG9yCisgICAgICAgIG5ldmVy
IHJ1bnMgd2hpbGUgdGhlIGNvbGxlY3RvciBpcyBydW5uaW5nLCBidXQgaWYgd2Ugd2FudCB0byBh
bGxvdyB0aGVtIHRvIHJ1biBhdCB0aGUgc2FtZQorICAgICAgICB0aW1lLCB0aGVuIHdlIG5lZWQg
dG8gaGF2ZSB0d28gdmVyc2lvbnMgb2YgdGhlIHN0YXRlOiBvbmUgdmVyc2lvbiBidWlsdCB1cCBi
eSB0aGUKKyAgICAgICAgY29sbGVjdG9yIGFuZCBhbm90aGVyIGNvbnN1bWVkIGJ5IHRoZSBhbGxv
Y2F0b3IuIFdlIGNsZWFyIHRoZSBjb2xsZWN0b3Igc3RhdGUgYXQgdGhlCisgICAgICAgIGJlZ2lu
bmluZyBvZiBjb2xsZWN0aW9uLCBhbmQgc3BsYXQgdGhlIGNvbGxlY3RvciBzdGF0ZSBvbnRvIHRo
ZSBhbGxvY2F0b3Igc3RhdGUgYWZ0ZXIKKyAgICAgICAgY29sbGVjdGlvbi4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgY291bGQgYmUgc3VwZXIgZXhwZW5zaXZlLCBidXQgd2UgY2FuIG1ha2UgaXQg
Y2hlYXAgd2l0aCBzb21lIGNsZXZlcm5lc3MuIFRoZSBiaWdnZXN0CisgICAgICAgIG9ic2VydmF0
aW9uIGlzIGp1c3QgdGhhdCBtb3N0IG9mIHRoZSBzdGF0ZSBpcyBhIGhhbmRmdWwgb2YgYml0cyBw
ZXIgYmxvY2s6IGlzIHRoZSBibG9jaworICAgICAgICBmcmVlLWxpc3RlZD8gaXMgaXQgY29tcGxl
dGVseSBmdWxsPyBjb21wbGV0ZWx5IGVtcHR5PyBpbiB0aGUgaW5jcmVtZW50YWwgc3dlZXBlcidz
CisgICAgICAgIHNuYXBzaG90PyBpcyBpdCByZXRpcmVkPyBpcyBpdCBpbiBlZGVuPyBUaGVyZSBp
cyBhbHNvIHN0YXRlIGluc2lkZSBibG9ja3MsIGxpa2UgdGhlIG1hcmsKKyAgICAgICAgYml0cywg
YnV0IEkgaGF2ZSBhIHNvbGlkIHBsYW4gdGhlcmUgYW5kIEknbGwgc2F2ZSBpdCBmb3IgYW5vdGhl
ciBwYXRjaC4gT25jZSB3ZSB2aWV3IHRoZQorICAgICAgICBzdGF0ZSBvZiBibG9ja3MgYXMgYml0
cywgd2UgY2FuIHB1dCB0aGF0IHN0YXRlIGludG8gYml0dmVjdG9ycywgc28gdGhhdCBpZiB0aGUg
Y29sbGVjdG9yCisgICAgICAgIG5lZWRzIHRvIHRyYW5zZm9ybSB0aGUgc3RhdGUgb2Ygc29tZSBi
bG9ja3MsIGl0IGNhbiBkbyBpdCB3aXRoIGEgc2luZ2xlIG9wZXJhdGlvbiBvdmVyCisgICAgICAg
IGJpdHZlY3RvcnMuIEkgbGlrZSB0byB0aGluayBvZiB0aGlzIGFzIDMyLXdheSBwYXJhbGxlbGl6
aW5nIGJsb2NrIG9wZXJhdGlvbnMsIHNpbmNlCisgICAgICAgIGRvaW5nIG9uZSBvcGVyYXRpb24g
b24gYSAzMi1iaXQgd29yZCBpbiBvbmUgb2YgdGhvc2UgYml0dmVjdG9ycyBpbnN0YW50bHkgYWZm
ZWN0cyAzMgorICAgICAgICBibG9ja3MuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBj
b252ZXJ0cyBhbGwgcHJldmlvdXMgY29sbGVjdGlvbnMgb2YgTWFya2VkQmxvY2tzLCBhbG9uZyB3
aXRoIHRoZSBNYXJrZWRCbG9jaworICAgICAgICBzdGF0ZSwgaW50byA4IGJpdHZlY3RvcnMgKGxp
dmUsIGVtcHR5LCBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIGVkZW4sIHVuc3dl
cHQsCisgICAgICAgIG1hcmtpbmdOb3RFbXB0eSwgYW5kIG1hcmtpbmdSZXRpcmVkKS4gVGhlIGJp
dHZlY3RvcnMgc2VwYXJhdGUgYWxsb2NhdG9yIHN0YXRlIChlbXB0eSwKKyAgICAgICAgYWxsb2Nh
dGVkLCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSBmcm9tIG1hcmtpbmcgc3RhdGUgKG1hcmtpbmdO
b3RFbXB0eSwgbWFya2luZ1JldGlyZWQpLgorICAgICAgICAKKyAgICAgICAgQXMgYSBuaWNlIHNp
ZGUtZWZmZWN0IG9mIHN3aXRjaGluZyB0byBiaXR2ZWN0b3JzLCB3ZSBnZXQgc2l6ZSBjbGFzcyBy
ZWJhbGFuY2luZyBmb3IgZnJlZS4KKyAgICAgICAgSXQgdXNlZCB0byBiZSB0aGF0IGlmIGEgTWFy
a2VkQWxsb2NhdG9yIGhhZCBhbiBlbXB0eSBibG9jaywgd2Ugd291bGQgb25seSBhbGxvdyB0aGF0
CisgICAgICAgIG1lbW9yeSB0byBiZSByZXVzZWQgYnkgYSBkaWZmZXJlbnQgTWFya2VkQWxsb2Nh
dG9yIGlmIHdlIGRpZCBhbiBpbmNyZW1lbnRhbCBzd2VlcCBvciBhCisgICAgICAgIGZ1bGwgZWFn
ZXIgc3dlZXAuIE5vdyB3ZSBodW50IGRvd24gYWxsIGRlc3RydWN0b3JsZXNzIGVtcHR5IGJsb2Nr
cyBiZWZvcmUgYWxsb2NhdGluZyBuZXcKKyAgICAgICAgTWFya2VkQmxvY2tzLiBJdCB3b3VsZCBi
ZSByZWxhdGl2ZWx5IGVhc3kgdG8gYWxzbyBodW50IGRvd24gZGVzdHJ1Y3RvciBlbXB0eSBibG9j
a3MsIGJ1dAorICAgICAgICB0aGUgdGhlb3J5IGlzIHRoYXQgdGhvc2UgbWlnaHQgYmUgZXhwZW5z
aXZlIHRvIHN3ZWVwLCBzbyBpdCBtaWdodCBzdGlsbCBiZSBiZXR0ZXIgdG8gbGVhdmUKKyAgICAg
ICAgdGhvc2UgdG8gdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIuCisgICAgICAgIAorICAgICAgICBU
aGlzIGNoYW5nZSBpcyBwZXJmLW5ldXRyYWwgYWxsIGFyb3VuZC4gSSBkaWQgc29tZSB0ZXN0cyB3
aXRoIHR3byBkaWZmZXJlbnQga2luZHMgb2YKKyAgICAgICAgYWxsb2NhdGlvbiBzdHJhdGVnaWVz
IC0gc29tZXRoaW5nIHRoYXQgaXMgc29tZXdoYXQgZWFzaWVyIHRvIGRvIG5vdyB0aGF0IHlvdSBj
YW4gbG9vayBmb3IKKyAgICAgICAgYmxvY2tzIHRoYXQgYXJlIGNhbmRpZGF0ZXMgZm9yIGFsbG9j
YXRpb24gYnkganVzdCBzY2FubmluZyBzb21lIGJpdHZlY3RvcnMuIEkgdHJpZWQgdHdvCisgICAg
ICAgIHZhcmlhbnRzOgorICAgICAgICAKKyAgICAgICAgLSBBbGxvY2F0ZSBvdXQgb2Ygbm9uLWVt
cHR5IGJsb2NrcyBmaXJzdCwgbGVhdmluZyBlbXB0eSBibG9ja3MgZm9yIGxhc3QgaW4gY2FzZSBh
CisgICAgICAgICAgZGlmZmVyZW50IGFsbG9jYXRvciBuZWVkZWQgdGhlbS4gVGhpcyBpcyBzb3J0
IG9mIGEgYmVzdC1maXQgc3RyYXRlZ3kuIEkgdHJpZWQgdGhpcworICAgICAgICAgIGZpcnN0LCBh
bmQgaXQgY2FuIGJlIGV4cHJlc3NlZCBhczoKKyAgICAgICAgICAKKyAgICAgICAgICBtX2FsbG9j
YXRpb25DdXJzb3IgPSBtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkuZmluZEJpdChtX2FsbG9jYXRp
b25DdXJzb3IsIHRydWUpCisgICAgICAgIAorICAgICAgICAtIEFsbG9jYXRlIG91dCBvZiBsb3dl
ci1pbmRleGVkIGJsb2NrcyBmaXJzdCwgdHJlYXRpbmcgZW1wdHkgYW5kIGNhbkFsbG9jYXRlQnV0
Tm90RW1wdHkKKyAgICAgICAgICBibG9ja3MgZXF1YWxseS4gVGhpcyBpcyBzb3J0IG9mIGEgZmly
c3QtZml0IHN0cmF0ZWd5LiBUaGlzIGlzIHdoYXQgSSBlbmRlZCB1cCBzZXR0bGluZworICAgICAg
ICAgIG9uLCBhbmQgaXQgY2FuIGJlIGV4cHJlc3NlZCBhczoKKyAgICAgICAgICAKKyAgICAgICAg
ICBtX2FsbG9jYXRpb25DdXJzb3IgPSAobV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IHwgbV9lbXB0
eSkuZmluZEJpdChtX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpCisgICAgICAgIAorICAgICAgICBU
aGUgYmVzdC1maXQgc3RyYXRlZ3kgbWVhbnQgMSUgcmVncmVzc2lvbnMgaW4gTG9uZ1NwaWRlciBh
bmQgT2N0YW5lIG92ZXJhbGwsIGFuZCBhIDExJQorICAgICAgICByZWdyZXNzaW9uIG9uIE9jdGFu
ZS9lYXJsZXkuIEZpcnN0LWZpdCBtZWFucyBwZXJmLW5ldXRyYWxpdHkuIE1vc3QgZ3JlYXQgYWxs
b2NhdG9ycyBza2V3CisgICAgICAgIHRvd2FyZHMgZmlyc3QtZml0IGJlY2F1c2UgaXQncyBlbXBp
cmljYWxseSBiZXR0ZXIsIHNvIHRoaXMgcmVzdWx0IGlzIG5vdCBzdXJwcmlzaW5nLgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgICogaGVhcC9DZWxsQ29udGFpbmVyLmg6
CisgICAgICAgICogaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpD
ZWxsQ29udGFpbmVyOjp2bSk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmhlYXApOgor
ICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgor
ICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjphYm91dFRvTWFyayk6CisgICAgICAgIChKU0M6
OkNlbGxDb250YWluZXI6OmlzTWFya2VkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2VsbENv
bnRhaW5lcjo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0NvbnNl
cnZhdGl2ZVJvb3RzLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlND
OjpIZWFwOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjplbmRNYXJraW5nKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpjb2xsZWN0SW1wbCk6CisgICAgICAgIChKU0M6OkhlYXA6OnNuYXBzaG90TWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkhlYXA6OnpvbWJpZnlEZWFkT2JqZWN0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrU25hcHNob3RGdW5jdG9yOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yOjpvcGVyYXRvcigpKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6cmVzZXRBbGxvY2F0b3JzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJr
ZWRDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKToK
KyAgICAgICAgKiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXBV
dGlsLmg6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpmaW5kR0NPYmplY3RQb2ludGVyc0Zvck1h
cmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwVXRpbDo6aXNQb2ludGVyR0NPYmplY3RKU0NlbGwp
OgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKiBoZWFwL0luY3Jl
bWVudGFsU3dlZXBlci5jcHA6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5j
cmVtZW50YWxTd2VlcGVyKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3
ZWVwKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jayk6
CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyk6CisgICAg
ICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKToKKyAgICAg
ICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oOgorICAgICAgICAqIGhlYXAvTGFyZ2VBbGxv
Y2F0aW9uLmg6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJrZWQpOgorICAg
ICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2VkQ29uY3VycmVudGx5KToKKyAgICAg
ICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAg
ICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6
TGFyZ2VBbGxvY2F0aW9uOjppc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJr
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjpmaW5kRW1wdHlCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6
dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OmFsbG9jYXRlSW4pOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnRy
eUFsbG9jYXRlSW4pOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xv
d0Nhc2VJbXBsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2Nh
dG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OnJlc3VtZUFsbG9jYXRpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmJlZ2lu
TWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9y
OjplbmRNYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZv
ckVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hv
dEZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmaW5k
QmxvY2tUb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzd2VlcCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQWxsb2NhdG9yOjphc3NlcnRTbmFwc2hvdEVtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpkdW1wKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkdW1wQml0
cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmV0aXJlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmaWx0ZXJOZXh0QmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dlZXApOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxv
Y2F0b3I6OmZvckVhY2hCaXRWZWN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6bmV4dEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4
dEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2Nr
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRl
ZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0
U3dlZXBNb2RlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxw
ZXJTZWxlY3RGbGlwTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnVu
c3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpI
YW5kbGU6OnNldElzRnJlZUxpc3RlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
OjpyZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9N
YXJrU2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjptYXJrQ291bnQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0VtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcik6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlTbG93
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1
cmluZ01hcmtpbmdTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6d2lsbFJlbW92ZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0ZWQpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjppbmRleCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjph
Ym91dFRvTWFyayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc09uQmxvY2tzVG9Td2VlcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNldElzT25CbG9ja3NUb1N3ZWVw
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RhdGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01h
cmtpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlw
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
OjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcEZvckVkZW5Db2xsZWN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFk
Q2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRz
U3dlZXBpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0FsbG9jYXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTWFya2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbCk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpyZXNldFZlcnNpb24pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3Bw
OgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6dHJ5
QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3dlZXApOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNsZWFyTmV3
bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmZpbmRFbXB0eUJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90
KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFzc2VydFNuYXBzaG90RW1wdHkpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZHVtcEJpdHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6em9tYmlmeVN3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OnJlc2V0QWxsb2NhdG9ycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZlcmlmeU1hcmtlZDo6
b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmbGlwKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpuZXh0VmVyc2lvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmaXJz
dEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3JFbXB0
eUFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRv
cik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpibG9ja3NXaXRoTmV3T2JqZWN0cyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzZXRJc01hcmtpbmcpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbCk6IERlbGV0ZWQuCisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6Zm9yRWFjaERlYWRDZWxsKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKToK
KyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6Om1hcmtBdXhpbGlhcnkpOgorICAgICAgICAoSlND
OjpTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogaGVhcC9XZWFrLmg6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+Pjo6ZW1wdHlWYWx1ZSk6CisgICAg
ICAgIChXVEY6Okhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+Pjo6cGVlayk6CisgICAgICAgICogaGVh
cC9XZWFrQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpXZWFrQmxvY2s6OnNwZWNpYWxpemVkVmlz
aXQpOgorICAgICAgICAoSlNDOjpXZWFrQmxvY2s6OnJlYXApOgorICAgICAgICAqIGhlYXAvV2Vh
a0lubGluZXMuaDoKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+OjplbXB0
eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+
OjpwZWVrKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVN
YXAuaDoKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvV2Vha0dDTWFwLmg6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlw
ZS5jcHA6CisKIDIwMTYtMDktMTYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICB0ZXN0MjYyOiBWYXJpb3VzIENvbnN0cnVjdG9ycyBsZW5ndGggcHJvcGVy
dGllcyBzaG91bGQgYmUgY29uZmlndXJhYmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5OCw2
ICs0OTgsOCBAQAogCQkwRjdDMzlGQjFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkEx
QzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLzsgfTsKIAkJMEY3QzM5RkQxQzhG
NjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAv
KiBERkdPcEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLzsgfTsKKwkJMEY3
QzVGQjgxRDg4OEEwQzAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjcxRDg4OEEwMTAwNDRG
NUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovOyB9OworCQkwRjdDNUZCQTFEODg5NTA3MDA0
NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3Bh
Y2VJbmxpbmVzLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbElu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAy
M0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC01NzYsNiArNTc4LDcgQEAKIAkJMEY5RkI0RjQxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNr
TGF5b3V0UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5RkI0RjIxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3Bw
ICovOyB9OwogCQkwRjlGQjRGNTE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkI0
RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCAqLzsgfTsKIAkJMEY5
RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRL
aW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEZBMTMxNzExRDhERDcyQjAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTEzMTcwMUQ4REQ3Mjkw
MEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggKi87IH07CiAJCTBGQTJDMTdCMTdEN0NG
ODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMkMxNzkxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RS
dW5uZXJVdGlscy5jcHAgKi87IH07CiAJCTBGQTJDMTdDMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0
UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQTJDMTdBMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkE1ODFCQTE1MEU5
NTJDMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2Rl
RmxhZ3MuY3BwICovOyB9OwpAQCAtMjczMSw2ICsyNzM0LDggQEAKIAkJMEY3QzM5RkExQzhGNjI5
MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdD
MzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGggPSBk
ZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI3MUQ4
ODhBMDEwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFya2VkQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGN0M1RkI5MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkU3BhY2VJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAv
KiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA4LDYgKzI4MTMs
NyBAQAogCQkwRjlGQjRGMjE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdGFja0xheW91dFBo
YXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkI0RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5
b3V0UGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RhY2tMYXlv
dXRQaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0S2luZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkExMzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBlTWFw
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b3R5cGVNYXBJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTJDMTc5MTdEN0NGODQw
MDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZBMkMxN0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVG
bGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlRmxh
Z3MuY3BwOyBwYXRoID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MzM4LDkgKzUzNDQsMTEgQEAKIAkJCQlDMkI5MTZDMTE0REEwMTRFMDBDQkFD
ODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi8sCiAJCQkJMTQyRDZGMDYxMzUzOUEyODAwQjAyRTg2
IC8qIE1hcmtlZEJsb2NrLmNwcCAqLywKIAkJCQkxNDJENkYwNzEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suaCAqLywKKwkJCQkwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2Vk
QmxvY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQxNDQ4Q0ExM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtl
ZEJsb2NrU2V0LmggKi8sCiAJCQkJMTREMkYzRDgxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNw
YWNlLmNwcCAqLywKIAkJCQkxNEQyRjNEOTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2Uu
aCAqLywKKwkJCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVz
LmggKi8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8s
CiAJCQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAogCQkJCUFE
REIxRjYyMThENzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi8sCkBAIC02MDc2LDYg
KzYwODQsNyBAQAogCQkJCTY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi8s
CiAJCQkJMTREODQ0QTIxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlwZU1hcC5jcHAgKi8sCiAJ
CQkJMTREODQ0QTMxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlwZU1hcC5oICovLAorCQkJCTBG
QTEzMTcwMUQ4REQ3MjkwMEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggKi8sCiAJCQkJ
NzlCMDBDQjgxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuY3BwICovLAogCQkJ
CTc5QjAwQ0I5MUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggKi8sCiAJCQkJ
NzlCMDBDQkExQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5T2JqZWN0LmNwcCAqLywKQEAgLTczOTQs
NiArNzQwMyw3IEBACiAJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5j
eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjE4MTZEMDJFQjIwMDU1QTVEQiAvKiBE
RkdBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTQ2MTUzNENCQUYwMDBGOTQ1
NiAvKiBERkdBcmd1bWVudFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDNUZCODFE
ODg4QTBDMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJERDgxMjFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTQxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0Fy
Z3VtZW50c1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIxODc3NTA1NjAw
ODNCNjg3IC8qIERGR0FyaXRoTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODg3LDYgKzc4OTcs
NyBAQAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMy
QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTEzMTcxMUQ4REQ3MkIwMEVDMTMwQSAvKiBQ
cm90b3R5cGVNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMDE3QjZCNUFC
MDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFG
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIw
MjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtNzkxMSw2ICs3OTIyLDcgQEAKIAkJCQlBNTAzRkEyQTE4OEYxMDU5MDAxMTBGMTQgLyog
SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlB
MjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUxM0U1QzAxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjdDNUZCQTFEODg5NTA3MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyog
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0NDJD
QjI1MUE2Q0RCOEMwMDVEM0Q3QyAvKiBKU0lucHV0cy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19n
ZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJu
YWxzX3dyYXBwZXJfaGVhZGVyLnB5CShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3Jh
cHBlcl9oZWFkZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDggQEAgY2xhc3MgQnVp
bHRpbnNJbnRlcm5hbHNXcmFwcGVySGVhZGVyR2VuZQogCiAgICAgZGVmIGdlbmVyYXRlX3NlY29u
ZGFyeV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CiAgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsK
LSAgICAgICAgICAgIChbIldlYkNvcmUiXSwKLSAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRD
b3JlIiwgInJ1bnRpbWUvVk0uaCIpLAotICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldl
YkNvcmUiXSwgKCJKYXZhU2NyaXB0Q29yZSIsICJoZWFwL1dlYWtJbmxpbmVzLmgiKSksCisgICAg
ICAgICAgICAoWyJXZWJDb3JlIl0sICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIikp
CiAgICAgICAgIF0KICAgICAgICAgZm9yIG9iamVjdCBpbiBzZWxmLmludGVybmFsczoKICAgICAg
ICAgICAgIGhlYWRlcl9pbmNsdWRlcy5hcHBlbmQoKFsiV2ViQ29yZSJdLCAoIldlYkNvcmUiLCBv
YmplY3Qub2JqZWN0X25hbWUgKyAiQnVpbHRpbnMuaCIpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRT
cGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm90ZWN0Lmgi
CiAjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9DZWxsQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ2VsbENvbnRhaW5lci5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsy
OSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBDZWxs
OwogY2xhc3MgTGFyZ2VBbGxvY2F0aW9uOwogY2xhc3MgTWFya2VkQmxvY2s7CiBjbGFzcyBXZWFr
U2V0OworY2xhc3MgVk07CiAKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKQEAgLTU2
LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCisgICAgVk0qIHZtKCkgY29u
c3Q7CisgICAgSGVhcCogaGVhcCgpIGNvbnN0OworICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fZW5jb2RlZFBvaW50ZXI7IH0KICAgICAKICAgICBi
b29sIGlzTWFya2VkQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRQb2ludGVyICYmICEo
bV9lbmNvZGVkUG9pbnRlciAmIGlzTGFyZ2VBbGxvY2F0aW9uQml0KTsgfQpAQCAtNzMsMTMgKzc4
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8TGFyZ2VBbGxvY2F0
aW9uKj4obV9lbmNvZGVkUG9pbnRlciAtIGlzTGFyZ2VBbGxvY2F0aW9uQml0KTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24pOwotICAgIHZvaWQgZmxp
cElmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lvbik7CiAgICAg
Ym9vbCBuZWVkc0ZsaXAoKSBjb25zdDsKICAgICAKLSAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7
CiAgICAgYm9vbCBpc01hcmtlZChIZWFwQ2VsbCopIGNvbnN0OworICAgIGJvb2wgaXNNYXJrZWQo
SGVhcFZlcnNpb24sIEhlYXBDZWxsKikgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlB
bGxvY2F0ZWQoSGVhcENlbGwqKSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSBjb25zdDsKICAgICAKICAgICB2b2lkIG5vdGVN
YXJrZWQoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q2VsbENvbnRhaW5lcklubGluZXMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTQgKzI5LDIwIEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJWTS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoKSBj
b25zdAoraW5saW5lIFZNKiBDZWxsQ29udGFpbmVyOjp2bSgpIGNvbnN0CiB7CiAgICAgaWYgKGlz
TGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtYXJr
ZWRCbG9jaygpLmhhbmRsZSgpLmlzTWFya2VkKCk7CisgICAgICAgIHJldHVybiBsYXJnZUFsbG9j
YXRpb24oKS52bSgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLnZtKCk7Cit9CisKK2lubGlu
ZSBIZWFwKiBDZWxsQ29udGFpbmVyOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJnZtKCkt
PmhlYXA7CiB9CiAKIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXBDZWxs
KiBjZWxsKSBjb25zdApAQCAtNDYsNiArNTIsMTMgQEAgaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5l
cjo6aXNNYXJrZWQoSGVhcAogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkKGNlbGwp
OwogfQogCitpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwVmVyc2lvbiB2
ZXJzaW9uLCBIZWFwQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaXNMYXJnZUFsbG9jYXRp
b24oKSkKKyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CisgICAg
cmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJrZWQodmVyc2lvbiwgY2VsbCk7Cit9CisKIGlubGlu
ZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCog
Y2VsbCkgY29uc3QKIHsKICAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKQEAgLTUzLDYgKzY2
LDEzIEBAIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXcKICAgICByZXR1
cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiB9CiAKK2lu
bGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVy
c2lvbiB2ZXJzaW9uLCBIZWFwQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaXNMYXJnZUFs
bG9jYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZCgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZCh2ZXJzaW9uLCBjZWxsKTsKK30KKwogaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5l
cjo6bm90ZU1hcmtlZCgpCiB7CiAgICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlvbigpKQpAQCAtNzMs
MTYgKzkzLDEwIEBAIGlubGluZSBXZWFrU2V0JiBDZWxsQ29udGFpbmVyOjp3ZWFrU2V0KCkKICAg
ICByZXR1cm4gbWFya2VkQmxvY2soKS53ZWFrU2V0KCk7CiB9CiAKLWlubGluZSB2b2lkIENlbGxD
b250YWluZXI6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAg
ICBpZiAoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIG1hcmtlZEJsb2NrKCkuZmxpcElm
TmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLX0KLQotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6
ZmxpcElmTmVjZXNzYXJ5KCkKK2lubGluZSB2b2lkIENlbGxDb250YWluZXI6OmFib3V0VG9NYXJr
KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24o
KSkKLSAgICAgICAgbWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgbWFy
a2VkQmxvY2soKS5hYm91dFRvTWFyayhoZWFwVmVyc2lvbik7CiB9CiAKIGlubGluZSBib29sIENl
bGxDb250YWluZXI6Om5lZWRzRmxpcCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRC
bG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlIDx3dGYvT1NB
bGxvY2F0b3IuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwu
aCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1By
b2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN1cGVyU2Ft
cGxlci5oIgpAQCAtNTI2LDExICs1MjcsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAg
ICAgfQogICAgIAogICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Nj
b3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1fb2JqZWN0
U3BhY2UuZmxpcCgpOworICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUo
KnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29iamVjdFNw
YWNlLmJlZ2luTWFya2luZygpOwogICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElz
TWFya2luZyh0cnVlKTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNl
dCgpCkBAIC03NzksNyArNzc4LDcgQEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAgICBBU1NF
UlQobV9zaGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXJzLnJlbW92ZUFsbCgpOwogICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5n
KGZhbHNlKTsKKyAgICBtX29iamVjdFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6ZV90IEhl
YXA6Om9iamVjdENvdW50KCkKQEAgLTkzOSw3ICs5MzgsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RB
bGxHYXJiYWdlKCkKICAgICAgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAgICBtX29i
amVjdFNwYWNlLnNocmluaygpOwogICAgIH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBzaG90Lmlz
RW1wdHkoKSk7CisgICAgbV9vYmplY3RTcGFjZS5hc3NlcnROb1Vuc3dlcHQoKTsKIAogICAgIHN3
ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiB9CkBAIC0xMDM5LDcgKzEwMzgsNyBA
QCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAgcmVhcFdlYWtI
YW5kbGVzKCk7CiAgICAgcHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWFwcygpOwogICAgIHN3
ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAgc25hcHNob3RNYXJrZWRTcGFjZSgpOworICAgIHNuYXBz
aG90VW5zd2VwdCgpOwogICAgIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKICAg
ICByZW1vdmVEZWFkQ29tcGlsZXJXb3JrbGlzdEVudHJpZXMoKTsKICAgICBkZWxldGVVbm1hcmtl
ZENvbXBpbGVkQ29kZSgpOwpAQCAtMTA0OCw3ICsxMDQ3LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwog
ICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKIAotICAgIHJl
c2V0QWxsb2NhdG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdXBkYXRl
QWxsb2NhdGlvbkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUp
OwogICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTA2Myw2ICsxMDYyLDExIEBAIE5F
VkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXAKICAgICAgICAgZG91YmxlIGFm
dGVyID0gY3VycmVudFRpbWVNUygpOwogICAgICAgICBkYXRhTG9nKGFmdGVyIC0gYmVmb3JlLCAi
IG1zXVxuIik7CiAgICAgfQorICAgIAorICAgIGlmIChmYWxzZSkgeworICAgICAgICBkYXRhTG9n
KCJIZWFwIHN0YXRlIGFmdGVyIEdDOlxuIik7CisgICAgICAgIG1fb2JqZWN0U3BhY2UuZHVtcEJp
dHMoKTsKKyAgICB9CiB9CiAKIHZvaWQgSGVhcDo6c3dlZXBMYXJnZUFsbG9jYXRpb25zKCkKQEAg
LTExNjIsNDQgKzExNjYsMTAgQEAgdm9pZCBIZWFwOjpzd2VlcEFycmF5QnVmZmVycygpCiAgICAg
bV9hcnJheUJ1ZmZlcnMuc3dlZXAoKTsKIH0KIAotc3RydWN0IE1hcmtlZEJsb2NrU25hcHNob3RG
dW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgTWFya2VkQmxv
Y2tTbmFwc2hvdEZ1bmN0b3IoVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tzKSAK
LSAgICAgICAgOiBtX2luZGV4KDApIAotICAgICAgICAsIG1fYmxvY2tzKGJsb2NrcykKLSAgICB7
Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KSBjb25zdAotICAgIHsKLSAgICAgICAgYmxvY2stPnNldElzT25CbG9ja3NUb1N3ZWVwKHRydWUp
OwotICAgICAgICBtX2Jsb2Nrc1ttX2luZGV4KytdID0gYmxvY2s7Ci0gICAgfQotCi0gICAgLy8g
RklYTUU6IFRoaXMgaXMgYSBtdXRhYmxlIGZpZWxkIGJlY2F1ZSB0aGlzIGlzbid0IGEgQysrIGxh
bWJkYS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5
NjQ0Ci0gICAgbXV0YWJsZSBzaXplX3QgbV9pbmRleDsKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6
OkhhbmRsZSo+JiBtX2Jsb2NrczsKLX07Ci0KLXZvaWQgSGVhcDo6c25hcHNob3RNYXJrZWRTcGFj
ZSgpCit2b2lkIEhlYXA6OnNuYXBzaG90VW5zd2VwdCgpCiB7Ci0gICAgVGltaW5nU2NvcGUgdGlt
aW5nU2NvcGUoKnRoaXMsICJIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlIik7Ci0gICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHJlbmFtZWQuIEl0J3Mgbm90IGFjdHVhbGx5IHNu
YXBzaG90dGluZyBhbGwgb2YgTWFya2VkU3BhY2UuCi0gICAgLy8gVGhpcyBpcyB1c2VkIGJ5IElu
Y3JlbWVudGFsU3dlZXBlciwgc28gaXQgb25seSBuZWVkcyB0byBzbmFwc2hvdCBibG9ja3MuIEhv
d2V2ZXIsIGlmIHdlIGV2ZXIKLSAgICAvLyB3YW50ZWQgdG8gYWRkIG90aGVyIHNuYXBzaG90dGlu
ZyBsb2dpbiwgd2UnZCBwcm9iYWJseSBwdXQgaXQgaGVyZS4KLSAgICAKLSAgICBpZiAobV9vcGVy
YXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIGZvciAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogaGFuZGxlIDogbV9vYmplY3RTcGFjZS5ibG9ja3NXaXRoTmV3T2JqZWN0
cygpKSB7Ci0gICAgICAgICAgICBpZiAoaGFuZGxlLT5pc09uQmxvY2tzVG9Td2VlcCgpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbV9ibG9ja1NuYXBzaG90LmFwcGVu
ZChoYW5kbGUpOwotICAgICAgICAgICAgaGFuZGxlLT5zZXRJc09uQmxvY2tzVG9Td2VlcCh0cnVl
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fYmxvY2tTbmFwc2hvdC5yZXNp
emVUb0ZpdChtX29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgpLnNpemUoKSk7Ci0gICAgICAgIE1h
cmtlZEJsb2NrU25hcHNob3RGdW5jdG9yIGZ1bmN0b3IobV9ibG9ja1NuYXBzaG90KTsKLSAgICAg
ICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgfQorICAgIFRpbWlu
Z1Njb3BlIHRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6c25hcHNob3RVbnN3ZXB0Iik7CisgICAg
bV9vYmplY3RTcGFjZS5zbmFwc2hvdFVuc3dlcHQoKTsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVT
b3VyY2VQcm92aWRlckNhY2hlcygpCkBAIC0xMjIyLDkgKzExOTIsOSBAQCB2b2lkIEhlYXA6Ondy
aXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluCiAgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJp
ZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKHRoaXMpOwogfQogCi12b2lkIEhlYXA6OnJl
c2V0QWxsb2NhdG9ycygpCit2b2lkIEhlYXA6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKLSAg
ICBtX29iamVjdFNwYWNlLnJlc2V0QWxsb2NhdG9ycygpOworICAgIG1fb2JqZWN0U3BhY2UucHJl
cGFyZUZvckFsbG9jYXRpb24oKTsKIH0KIAogdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGlt
aXRzKCkKQEAgLTE0NzMsNyArMTQ0Myw3IEBAIHB1YmxpYzoKIHZvaWQgSGVhcDo6em9tYmlmeURl
YWRPYmplY3RzKCkKIHsKICAgICAvLyBTd2VlcCBub3cgYmVjYXVzZSBkZXN0cnVjdG9ycyB3aWxs
IGNyYXNoIG9uY2Ugd2UncmUgem9tYmlmaWVkLgotICAgIG1fb2JqZWN0U3BhY2Uuem9tYmlmeVN3
ZWVwKCk7CisgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgIEhlYXBJdGVyYXRpb25TY29w
ZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENl
bGwoaXRlcmF0aW9uU2NvcGUsIFpvbWJpZnkoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNywxMSArMzI3LDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZWFwV2Vha0hhbmRsZXMoKTsKICAgICB2b2lkIHBydW5lU3RhbGVFbnRyaWVzRnJv
bVdlYWtHQ01hcHMoKTsKICAgICB2b2lkIHN3ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAgdm9pZCBz
bmFwc2hvdE1hcmtlZFNwYWNlKCk7CisgICAgdm9pZCBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICB2
b2lkIGRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1l
bnRhbFN3ZWVwZXIoKTsKICAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0Nv
ZGVCbG9ja3MoKTsKLSAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFy
ZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAg
IHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwogICAgIHZvaWQgY2xlYXJV
bm1hcmtlZEV4ZWN1dGFibGVzKCk7CkBAIC00MjIsNyArNDIyLDYgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsKICAg
ICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICBWZWN0
b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tTbmFwc2hvdDsKIAogICAgIFZlY3RvcjxI
ZWFwT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw5ICs4MSw4IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZChjb25zdCAKICAgICBpZiAoY2VsbC0+
aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlv
bigpLmlzTWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxv
Y2soKTsKLSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3Bh
Y2UoKS52ZXJzaW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGJsb2Nr
LmlzTWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5pc01hcmtlZCgKKyAgICAgICAgYmxv
Y2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseShjb25zdCB2b2lkKiByYXdD
ZWxsKQpAQCAtOTIsMTAgKzkxLDggQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2Vk
Q29uY3VycgogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1
cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYg
YmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGlmIChibG9jay5uZWVkc0ZsaXAoYmxv
Y2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICByZXR1cm4gYmxvY2suaXNNYXJr
ZWQoY2VsbCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkQ29uY3VycmVudGx5KAorICAgICAg
ICBibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKIH0KIAog
QUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQoSGVhcFZlcnNpb24gdmVy
c2lvbiwgY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTEwNCw3ICsxMDEsNyBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgSGVhcDo6dGVzdEFuZFNldE1hcmtlCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxv
Y2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS50ZXN0QW5k
U2V0TWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2so
KTsKLSAgICBibG9jay5mbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKHZlcnNpb24pOworICAg
IGJsb2NrLmFib3V0VG9NYXJrKHZlcnNpb24pOwogICAgIHJldHVybiBibG9jay50ZXN0QW5kU2V0
TWFya2VkKGNlbGwpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwVXRpbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBV
dGlsLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBVdGlsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDggQEAgcHVibGljOgogICAgICAg
ICAgICAgaWYgKCFmaWx0ZXIucnVsZU91dChiaXR3aXNlX2Nhc3Q8Qml0cz4ocHJldmlvdXNDYW5k
aWRhdGUpKQogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0NhbmRpZGF0
ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtp
bmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXND
YW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7CiAgICAgICAgICAgICAgICAg
cHJldmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5o
YW5kbGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYg
KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHByZXZpb3VzUG9pbnRlcikp
CisgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVD
ZWxsKGhlYXBWZXJzaW9uLCBwcmV2aW91c1BvaW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBm
dW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDEw
ICs5OCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFzZXQuY29udGFpbnMoY2FuZGlkYXRlKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElm
TmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLQogICAgICAgICBhdXRvIHRyeVBvaW50ZXIgPSBbJl0g
KHZvaWQqIHBvaW50ZXIpIHsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlz
TGl2ZUNlbGwocG9pbnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5p
c0xpdmVDZWxsKGhlYXBWZXJzaW9uLCBwb2ludGVyKSkKICAgICAgICAgICAgICAgICBmdW5jKHBv
aW50ZXIpOwogICAgICAgICB9OwogICAgIApAQCAtMTcwLDcgKzE2Nyw2IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtpbmQoKSAhPSBIZWFwQ2VsbDo6SlND
ZWxsKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgY2FuZGlk
YXRlLT5mbGlwSWZOZWNlc3NhcnkoKTsKICAgICAgICAgaWYgKCFjYW5kaWRhdGUtPmhhbmRsZSgp
LmlzTGl2ZUNlbGwocG9pbnRlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCShy
ZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZp
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJh
dGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAg
c3RhdGljIGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVNdWx0aXBsaWVyIAogI2lmIFVTRShDRikKIElu
Y3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXAsIENGUnVuTG9v
cFJlZiBydW5Mb29wKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCksIHJ1bkxvb3ApCi0gICAg
LCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQogewogfQogCkBAIC02Niw3
ICs2NSw2IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxUaW1lcigpCiAjZWxpZiBQ
TEFURk9STShFRkwpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFw
KiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAgLCBtX2Jsb2Nrc1RvU3dl
ZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQogewogfQogCkBAIC04Niw3ICs4NCw2IEBAIHZvaWQg
SW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxUaW1lcigpCiAjZWxpZiBVU0UoR0xJQikKIEluY3Jl
bWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXApCiAgICAgOiBIZWFw
VGltZXIoaGVhcC0+dm0oKSkKLSAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25h
cHNob3QpCiB7CiB9CiAKQEAgLTEyMSwxOSArMTE4LDIwIEBAIHZvaWQgSW5jcmVtZW50YWxTd2Vl
cGVyOjpkb1N3ZWVwKGRvdWJsZSAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmxv
Y2tzVG9Td2VlcC5jbGVhcigpOwogICAgIGNhbmNlbFRpbWVyKCk7CiB9CiAKIGJvb2wgSW5jcmVt
ZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygpCiB7Ci0gICAgd2hpbGUgKCFtX2Jsb2Nrc1Rv
U3dlZXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0g
bV9ibG9ja3NUb1N3ZWVwLnRha2VMYXN0KCk7Ci0gICAgICAgIGJsb2NrLT5zZXRJc09uQmxvY2tz
VG9Td2VlcChmYWxzZSk7Ci0KLSAgICAgICAgaWYgKCFibG9jay0+bmVlZHNTd2VlcGluZygpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9
IG51bGxwdHI7CisgICAgCisgICAgZm9yICg7IG1fY3VycmVudEFsbG9jYXRvcjsgbV9jdXJyZW50
QWxsb2NhdG9yID0gbV9jdXJyZW50QWxsb2NhdG9yLT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAg
ICAgYmxvY2sgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPmZpbmRCbG9ja1RvU3dlZXAoKTsKKyAgICAg
ICAgaWYgKGJsb2NrKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChi
bG9jaykgewogICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MobV92bS0+aGVhcCk7CiAg
ICAgICAgIGJsb2NrLT5zd2VlcCgpOwogICAgICAgICBtX3ZtLT5oZWFwLm9iamVjdFNwYWNlKCku
ZnJlZU9yU2hyaW5rQmxvY2soYmxvY2spOwpAQCAtMTQ2LDExICsxNDQsMTIgQEAgYm9vbCBJbmNy
ZW1lbnRhbFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6
OnN0YXJ0U3dlZXBpbmcoKQogewogICAgIHNjaGVkdWxlVGltZXIoKTsKKyAgICBtX2N1cnJlbnRB
bGxvY2F0b3IgPSBtX3ZtLT5oZWFwLm9iamVjdFNwYWNlKCkuZmlyc3RBbGxvY2F0b3IoKTsKIH0K
IAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2VlcGluZygpCiB7Ci0gICAg
bV9ibG9ja3NUb1N3ZWVwLmNsZWFyKCk7CisgICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbnVsbHB0
cjsKICAgICBpZiAobV92bSkKICAgICAgICAgY2FuY2VsVGltZXIoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZpc2lv
biAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVw
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDEyIEBACiAjZGVmaW5lIEluY3JlbWVu
dGFsU3dlZXBlcl9oCiAKICNpbmNsdWRlICJIZWFwVGltZXIuaCIKLSNpbmNsdWRlICJNYXJrZWRC
bG9jay5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEhlYXA7Ci1jbGFzcyBNYXJrZWRCbG9jazsKK2NsYXNzIE1hcmtlZEFsbG9jYXRvcjsKIAog
Y2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyIDogcHVibGljIEhlYXBUaW1lciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
Y2hlZHVsZVRpbWVyKCk7CiAgICAgdm9pZCBjYW5jZWxUaW1lcigpOwogICAgIAotICAgIFZlY3Rv
cjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIG1fYmxvY2tzVG9Td2VlcDsKKyAgICBNYXJrZWRBbGxv
Y2F0b3IqIG1fY3VycmVudEFsbG9jYXRvcjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgJKHJldmlzaW9uIDIwNjAzMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MCw5ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc05ld2x5
QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc05ld2x5QWxsb2NhdGVkOyB9CiAgICAgQUxX
QVlTX0lOTElORSBib29sIGlzTWFya2VkKCkgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2Vk
KEhlYXBDZWxsKikgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3Jl
bGF4ZWQpOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2VkQ29uY3VycmVudGx5KEhl
YXBWZXJzaW9uLCBIZWFwQ2VsbCopIHsgcmV0dXJuIG1faXNNYXJrZWQubG9hZChzdGQ6Om1lbW9y
eV9vcmRlcl9yZWxheGVkKTsgfQogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCkg
eyByZXR1cm4gaXNNYXJrZWQoKSB8fCBpc05ld2x5QWxsb2NhdGVkKCk7IH0KICAgICBib29sIGlz
TWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCopIHsgcmV0dXJuIGlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZCgpOyB9Ci0gICAgYm9vbCBpc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyhIZWFw
VmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVybiBpc01hcmtlZCgpOyB9CiAgICAgYm9vbCBpc0xp
dmUoKSB7IHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsgfQogICAgIAogICAgIGJv
b2wgaGFzVmFsaWRDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWYWxpZENlbGw7IH0KQEAgLTEw
Niw4ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRl
cyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgIAotICAg
IHZvaWQgZmxpcElmTmVjZXNzYXJ5KHVpbnQ2NF90KSB7IH0KLSAgICB2b2lkIGZsaXBJZk5lY2Vz
c2FyeUR1cmluZ01hcmtpbmcodWludDY0X3QpIHsgfQorICAgIHZvaWQgYWJvdXRUb01hcmsoSGVh
cFZlcnNpb24pIHsgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCB0ZXN0QW5kU2V0TWFy
a2VkKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgog
I2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogTWFya2Vk
QWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoSGVhcCogaGVhcCwgTWFya2VkU3BhY2UqIG1hcmtl
ZFNwYWNlLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMpCiAgICAgOiBtX2N1cnJlbnRCbG9jaygwKQogICAgICwgbV9sYXN0QWN0aXZlQmxvY2so
MCkKLSAgICAsIG1fbmV4dEJsb2NrVG9Td2VlcChudWxscHRyKQogICAgICwgbV9jZWxsU2l6ZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2VsbFNpemUpKQogICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMpCiAgICAgLCBtX2hlYXAoaGVhcCkKQEAgLTUwLDExICs1MCwxMyBAQCBNYXJrZWRBbGxv
Y2F0b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoCiBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQ
YWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiB7CiAgICAgdW5zaWduZWQgaXRlcnNTaW5jZUxhc3RU
aW1lQ2hlY2sgPSAwOwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja0xp
c3QuYmVnaW4oKTsKLSAgICB3aGlsZSAoYmxvY2spIHsKLSAgICAgICAgYmxvY2sgPSBmaWx0ZXJO
ZXh0QmxvY2soYmxvY2stPm5leHQoKSk7Ci0gICAgICAgIGlmIChibG9jaykKLSAgICAgICAgICAg
IGJsb2NrLT5mbGlwSWZOZWNlc3NhcnkoKTsgLy8gRm9yY2VzIHVzIHRvIHRvdWNoIHRoZSBtZW1v
cnkgb2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVjdC4KKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9ibG9ja3Muc2l6ZSgpOyArK2luZGV4KSB7CisgICAg
ICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3NbaW5kZXhdOworICAgICAg
ICBpZiAoYmxvY2spIHsKKyAgICAgICAgICAgIC8vIEZvcmNlcyB1cyB0byB0b3VjaCB0aGUgbWVt
b3J5IG9mIHRoZSBibG9jaywgYnV0IGhhcyBubyBzZW1hbnRpYyBlZmZlY3QuCisgICAgICAgICAg
ICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAgIGJsb2NrLT5ibG9jaygp
LnJlc2V0VmVyc2lvbigpOworICAgICAgICB9CiAgICAgICAgICsraXRlcnNTaW5jZUxhc3RUaW1l
Q2hlY2s7CiAgICAgICAgIGlmIChpdGVyc1NpbmNlTGFzdFRpbWVDaGVjayA+PSBIZWFwOjpzX3Rp
bWVDaGVja1Jlc29sdXRpb24pIHsKICAgICAgICAgICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdU
Rjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CkBAIC02Niw4NCArNjgsODAgQEAgYm9v
bCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJldGlyZShNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaykKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOyAvLyBUaGlzIHdpbGwgYmUg
Y2FsbGVkIGluIHBhcmFsbGVsIGR1cmluZyBHQy4KLSAgICBpZiAoYmxvY2sgPT0gbV9jdXJyZW50
QmxvY2spIHsKLSAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gdGhlIG11dGF0b3IgaXMgcnVu
bmluZy4gV2UgZmluaXNoZWQgYSBmdWxsIEdDIGFuZCBtYXJrZWQgdG9vIGZldyB0aGluZ3MKLSAg
ICAgICAgLy8gdG8gcmV0aXJlLiBUaGVuIHdlIHN0YXJ0ZWQgYWxsb2NhdGluZyBpbiB0aGlzIGJs
b2NrLiBUaGVuIGEgYmFycmllciByYW4sIHdoaWNoIG1hcmtlZCBhbgotICAgICAgICAvLyBvYmpl
Y3QgaW4gdGhpcyBibG9jaywgd2hpY2ggcHV0IGl0IG92ZXIgdGhlIHJldGlyZW1lbnQgdGhyZXNo
b2xkLiBJdCdzIE9LIHRvIHNpbXBseSBkbwotICAgICAgICAvLyBub3RoaW5nIGluIHRoYXQgY2Fz
ZS4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoYmxvY2sgPT0gbV9sYXN0QWN0aXZl
QmxvY2spIHsKLSAgICAgICAgLy8gVGhpcyBjYW4gZWFzaWx5IGhhcHBlbiBkdXJpbmcgbWFya2lu
Zy4gSXQgd291bGQgYmUgZWFzeSB0byBoYW5kbGUgdGhpcyBjYXNlLCBidXQgaXQncwotICAgICAg
ICAvLyBqdXN0IGFzIGVhc3kgdG8gaWdub3JlIGl0LgotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5pc09uTGlzdCgpKTsKLSAgICBpZiAoYmxvY2sgPT0g
bV9uZXh0QmxvY2tUb1N3ZWVwKQotICAgICAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBmaWx0ZXJO
ZXh0QmxvY2soYmxvY2stPm5leHQoKSk7Ci0gICAgYmxvY2stPnJlbW92ZSgpOwotICAgIG1fcmV0
aXJlZEJsb2Nrcy5wdXNoKGJsb2NrKTsKLX0KLQotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2Vk
QWxsb2NhdG9yOjpmaWx0ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCitN
YXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJsb2NrKCkKIHsK
LSAgICBpZiAoYmxvY2sgPT0gbV9ibG9ja0xpc3QuZW5kKCkpCisgICAgbV9lbXB0eUN1cnNvciA9
IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKKyAgICBpZiAobV9lbXB0eUN1
cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBibG9jazsKLX0KLQotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dl
ZXAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCi17Ci0gICAgbV9uZXh0QmxvY2tUb1N3ZWVw
ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrKTsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV9lbXB0eUN1
cnNvcl07CiB9CiAKIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29s
bGVjdGluZ0ltcGwoKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKICAgICAKLSAgICBpZiAobV9jdXJyZW50QmxvY2spIHsKLSAgICAgICAgQVNTRVJU
KG1fY3VycmVudEJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCk7CisgICAgaWYgKG1fY3VycmVu
dEJsb2NrKQogICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7Ci0g
ICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAg
fQogICAgIAogICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotCi0gICAgUkVMRUFTRV9BU1NF
UlQobV9uZXh0QmxvY2tUb1N3ZWVwICE9IG1fYmxvY2tMaXN0LmVuZCgpKTsKLQotICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiYgYmxv
Y2sgPSBtX25leHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAg
bmV4dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAgICAvLyBJdCB3
b3VsZCBiZSBzdXBlciB3ZWlyZCBpZiB0aGUgYmxvY2tzIHdlIGFyZSBzd2VlcGluZyBoYXZlIGFu
eXRoaW5nIGFsbG9jYXRlZCBkdXJpbmcgdGhpcwotICAgICAgICAvLyBjeWNsZS4KLSAgICAgICAg
QVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAgIAotICAgICAg
ICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpT
d2VlcFRvRnJlZUxpc3QpOworICAgIG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsKKyAgICAKKyAg
ICBmb3IgKDs7KSB7CisgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9jYXRl
QnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7
CisgICAgICAgIGlmIChtX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0
dW1ibGUgb24gYSBjb21wbGV0ZS1mdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0
aGVzZSwgYnV0Ci0gICAgICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3Jn
ZXQgdG8gZG8gaXQgc29tZXRpbWVzLgotICAgICAgICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldp
bGxGYWlsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOwot
ICAgICAgICAgICAgYmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOwotICAgICAg
ICAgICAgQVNTRVJUKGJsb2NrLT5pc01hcmtlZCgpKTsKLSAgICAgICAgICAgIHJldGlyZShibG9j
ayk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBzZXRJc0NhbkFs
bG9jYXRlQnV0Tm90RW1wdHkobV9hbGxvY2F0aW9uQ3Vyc29yLCBmYWxzZSk7CiAKLSAgICAgICAg
bV9jdXJyZW50QmxvY2sgPSBibG9jazsKLSAgICAgICAgc2V0RnJlZUxpc3QoZnJlZUxpc3QpOwot
ICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4o
bV9ibG9ja3NbbV9hbGxvY2F0aW9uQ3Vyc29yXSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICAgICAKLSAgICBpZiAoIW1fZnJlZUxpc3QpIHsKLSAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSAwOwotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoT3B0aW9uczo6bG9va0ZvckVt
cHR5QmxvY2tzSW5PdGhlckFsbG9jYXRvcnMoKSkgeworICAgICAgICBpZiAoTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2sgPSBtX21hcmtlZFNwYWNlLT5maW5kRW1wdHlCbG9jaygpKSB7CisgICAg
ICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSXQn
cyBnb29kIHRoYXQgdGhpcyBjbGVhcnMgY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBhcyB3ZWxsIGFz
IGFsbCBvdGhlciBiaXRzLAorICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBhIHJlbW90
ZSBjaGFuY2UgdGhhdCBhIGJsb2NrIG1heSBoYXZlIGJvdGggY2FuQWxsb2NhdGVCdXROb3RFbXB0
eQorICAgICAgICAgICAgLy8gYW5kIGVtcHR5IHNldCBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAg
ICAgICAgYmxvY2stPnJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgICAgIGFkZEJsb2Nr
KGJsb2NrKTsKKyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZUluKGJsb2NrKTsKKyAgICAgICAg
fQogICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAordm9pZCogTWFya2VkQWxs
b2NhdG9yOjphbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIHZv
aWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4oYmxvY2spOworICAgIFJFTEVBU0VfQVNTRVJUKHJl
c3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCogTWFya2VkQWxsb2NhdG9yOjp0
cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIEFTU0VSVChi
bG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAg
QVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIEZyZWVMaXN0IGZyZWVM
aXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7
CisgICAgCisgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGVseSBm
dWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0CisgICAgLy8gdGhh
dCBhbGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCisg
ICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7CisgICAgICAgIEFTU0VSVChi
bG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5
QWxsb2NhdGVkKCk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAg
ICAgICAgQVNTRVJUKCFpc0VtcHR5KGJsb2NrKSk7CisgICAgICAgIEFTU0VSVCghaXNDYW5BbGxv
Y2F0ZUJ1dE5vdEVtcHR5KGJsb2NrKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KyAgICAKKyAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOworICAgIHNldEZyZWVMaXN0KGZyZWVM
aXN0KTsKKyAgICAKICAgICB2b2lkKiByZXN1bHQ7CiAgICAgaWYgKG1fZnJlZUxpc3QucmVtYWlu
aW5nKSB7CiAgICAgICAgIHVuc2lnbmVkIGNlbGxTaXplID0gbV9jZWxsU2l6ZTsKQEAgLTE1NSw2
ICsxNTMsNyBAQCB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91CiAgICAg
ICAgIHJlc3VsdCA9IGhlYWQ7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7Cisg
ICAgc2V0SXNFZGVuKG1fY3VycmVudEJsb2NrLCB0cnVlKTsKICAgICBtX21hcmtlZFNwYWNlLT5k
aWRBbGxvY2F0ZUluQmxvY2sobV9jdXJyZW50QmxvY2spOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0yMjcsOCArMjI2LDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dD
YXNlSQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIGFkZEJsb2NrKGJs
b2NrKTsKLSAgICAgICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGlu
ZygpOworICAgIHJlc3VsdCA9IGFsbG9jYXRlSW4oYmxvY2spOwogICAgIEFTU0VSVChyZXN1bHQp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yNDksMzcgKzI0Nyw3NSBAQCBzaXplX3QgTWFy
a2VkQWxsb2NhdG9yOjpibG9ja1NpemVGb3JCeXRlCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJr
ZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlQmxvY2soKQogewogICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OnRyeUNy
ZWF0ZSgqbV9oZWFwLCB0aGlzLCBtX2NlbGxTaXplLCBtX2F0dHJpYnV0ZXMpOworICAgIAorICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1f
aGVhcCk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAor
ICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJu
IGhhbmRsZTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFT
U0VSVCghbV9mcmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9j
a0luZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOwor
CisgICAgICAgIHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAg
ICAgIG1fYmxvY2tzLmFwcGVuZChibG9jayk7CisgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0
eSgpICE9IG9sZENhcGFjaXR5KSB7CisgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAg
ICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFj
aXR5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNT
RVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0
VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Js
b2Nrcy5jYXBhY2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7Cisg
ICAgICAgIEFTU0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgbV9ibG9ja3NbaW5kZXhd
ID0gYmxvY2s7CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsm
XSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZl
Y3RvciwgIXZlY3RvcltpbmRleF0pOworICAgICAgICB9KTsKKworICAgIC8vIFRoaXMgaXMgdGhl
IHBvaW50IGF0IHdoaWNoIHRoZSBibG9jayBsZWFybnMgb2YgaXRzIGNlbGxTaXplKCkgYW5kIGF0
dHJpYnV0ZXMoKS4KKyAgICBibG9jay0+ZGlkQWRkVG9BbGxvY2F0b3IodGhpcywgaW5kZXgpOwog
ICAgIAotICAgIG1fYmxvY2tMaXN0LmFwcGVuZChibG9jayk7Ci0gICAgc2V0TmV4dEJsb2NrVG9T
d2VlcChibG9jayk7Ci0gICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soYmxvY2spOworICAg
IHNldElzTGl2ZShpbmRleCwgdHJ1ZSk7CisgICAgc2V0SXNFbXB0eShpbmRleCwgdHJ1ZSk7CiB9
CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaykKIHsKLSAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gYmxvY2spIHsKLSAgICAgICAg
bV9jdXJyZW50QmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2sobV9jdXJyZW50QmxvY2stPm5leHQoKSk7
Ci0gICAgICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotICAgIH0KLSAgICBpZiAobV9uZXh0
QmxvY2tUb1N3ZWVwID09IGJsb2NrKQotICAgICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fbmV4
dEJsb2NrVG9Td2VlcC0+bmV4dCgpKTsKKyAgICBBU1NFUlQoYmxvY2stPmFsbG9jYXRvcigpID09
IHRoaXMpOworICAgIEFTU0VSVChtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPT0gYmxvY2spOwog
Ci0gICAgYmxvY2stPndpbGxSZW1vdmVCbG9jaygpOwotICAgIG1fYmxvY2tMaXN0LnJlbW92ZShi
bG9jayk7CisgICAgbV9ibG9ja3NbYmxvY2stPmluZGV4KCldID0gbnVsbHB0cjsKKyAgICBtX2Zy
ZWVCbG9ja0luZGljZXMuYXBwZW5kKGJsb2NrLT5pbmRleCgpKTsKKyAgICAKKyAgICBmb3JFYWNo
Qml0VmVjdG9yKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAg
ICAgICAgdmVjdG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOworICAgICAgICB9KTsKKyAgICAK
KyAgICBibG9jay0+ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogfQogCiB2b2lkIE1hcmtlZEFs
bG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbklu
UHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikKLSAgICAgICAgbV9ibG9ja0xpc3QudGFrZUZy
b20obV9yZXRpcmVkQmxvY2tzKTsKLQorICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhS
YXdQb2ludGVyKHRoaXMpLCAiOiBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nIVxuIik7
CiAgICAgQVNTRVJUKCFtX2xhc3RBY3RpdmVCbG9jayk7CiAgICAgaWYgKCFtX2N1cnJlbnRCbG9j
aykgewogICAgICAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOwpAQCAtMjkyLDI5ICszMjgsMjUgQEAg
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKICAgICBtX2ZyZWVMaXN0ID0g
RnJlZUxpc3QoKTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3ZvaWQgTWFy
a2VkQWxsb2NhdG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9sYXN0QWN0aXZl
QmxvY2sgPSAwOwotICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICBtX2xhc3RBY3RpdmVCbG9j
ayA9IG51bGxwdHI7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogICAgIHNldEZyZWVM
aXN0KEZyZWVMaXN0KCkpOwogCi0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2Jsb2NrTGlzdC5i
ZWdpbigpKTsKKyAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSAwOworICAgIG1fZW1wdHlDdXJzb3Ig
PSAwOworICAgIG1fdW5zd2VwdEN1cnNvciA9IDA7CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxs
KCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7
Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2Vk
QmxvY2s6OkhhbmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sg
PSBuZXh0KSB7Ci0gICAgICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0
KCkpOwotCi0gICAgICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAgICAgYmxvY2stPnph
cChmcmVlTGlzdCk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICB9CisgICAg
ICAgIC8vIEZJWE1FOiBUaGluZ3M/CiAgICAgfQogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
bGFzdENoYW5jZVRvRmluYWxpemUoKQogewotICAgIG1fYmxvY2tMaXN0LnRha2VGcm9tKG1fcmV0
aXJlZEJsb2Nrcyk7CiAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICBbJl0gKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKSB7CiAgICAgICAgICAgICBibG9jay0+bGFzdENoYW5jZVRvRmluYWxp
emUoKTsKQEAgLTMyNiw0ICszNTgsMTIxIEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzZXRGcmVl
TGlzdChjb25zdCAKICAgICBtX2ZyZWVMaXN0ID0gZnJlZUxpc3Q7CiB9CiAKK3ZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKK3sKKyAgICBpZiAoIW1fbGFzdEFjdGl2ZUJs
b2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxv
Y2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2
ZUJsb2NrOworICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKK30KKwordm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICAvLyBN
YXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBX
ZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBmdWxsCisgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlm
IHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5l
eHQgb25lIHNvIGxvbmcKKyAgICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRlbi4KKyAgICBtX21h
cmtpbmdOb3RFbXB0eS5jbGVhckFsbCgpOworICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwo
KTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcoKQoreworICAgIG1fYWxs
b2NhdGVkLmNsZWFyQWxsKCk7CisgICAgCisgICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVz
dHJhdGluZyB0byBjb21wcmVoZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBu
b3QgbmVlZCB0bworICAgIC8vIGtub3cgd2hhdCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRo
YXQga25vd2xlZGdlIGlzIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCisgICAg
Ly8gdmVjdG9ycy4KKyAgICAKKyAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CisgICAgICAg
IC8vIElmIGJsb2NrcyBuZWVkIGRlc3RydWN0aW9uIHRoZW4gbm90aGluZyBpcyBlbXB0eSEgVGhp
cyBpcyBhIGNvcnJlY3QgYXNzZXJ0aW9uIGJ1dCBtYXkKKyAgICAgICAgLy8gYmVjb21lIHdyb25n
IG9uY2Ugd2UgZ28gZnVsbCBjb25jdXJyZW50OiB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBibG9jaywg
aXQgd2lsbCBmbGlja2VyCisgICAgICAgIC8vIGludG8gdGhlIGVtcHR5IHNldCBmb3IgYSB0aW55
IG1vbWVudC4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgY29kZSBpcyBsaWtlbHkgdG8gYmUgcnVu
CisgICAgICAgIC8vIGluIHN0b3BUaGVXb3JsZC4KKyAgICAgICAgQVNTRVJUKG1fZW1wdHkuaXNF
bXB0eSgpKTsKKyAgICAgICAgbV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ID0gbV9saXZlICYgfm1f
bWFya2luZ1JldGlyZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9lbXB0
eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKKyAgICBtX2NhbkFsbG9jYXRlQnV0Tm90
RW1wdHkgPSBtX2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVkOwor
ICAgIAorICAgIGlmIChmYWxzZSkgeworICAgICAgICBkYXRhTG9nKCJCaXRzIGZvciAiLCBtX2Nl
bGxTaXplLCAiLCAiLCBtX2F0dHJpYnV0ZXMsICIgYWZ0ZXIgZW5kTWFya2luZzpcbiIpOworICAg
ICAgICBkdW1wQml0cyhXVEY6OmRhdGFGaWxlKCkpOworICAgIH0KK30KKwordm9pZCBNYXJrZWRB
bGxvY2F0b3I6OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3Vu
c3dlcHQgfD0gbV9lZGVuOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RVbnN3
ZXB0Rm9yRnVsbENvbGxlY3Rpb24oKQoreworICAgIG1fdW5zd2VwdCA9IG1fbGl2ZTsKK30KKwor
TWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaW5kQmxvY2tUb1N3ZWVwKCkK
K3sKKyAgICBtX3Vuc3dlcHRDdXJzb3IgPSBtX3Vuc3dlcHQuZmluZEJpdChtX3Vuc3dlcHRDdXJz
b3IsIHRydWUpOworICAgIGlmIChtX3Vuc3dlcHRDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV91bnN3ZXB0Q3Vy
c29yXTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN3ZWVwKCkKK3sKKyAgICBtX3Vuc3dl
cHQuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAg
ICAgIG1fYmxvY2tzW2luZGV4XS0+c3dlZXAoKTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgTWFy
a2VkQWxsb2NhdG9yOjpzaHJpbmsoKQoreworICAgIG1fZW1wdHkuZm9yRWFjaFNldEJpdCgKKyAg
ICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1fbWFya2VkU3BhY2UtPmZy
ZWVCbG9jayhtX2Jsb2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRB
bGxvY2F0b3I6OmFzc2VydE5vVW5zd2VwdCgpCit7CisgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChtX3Vuc3dlcHQuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgZGF0YUxvZygiQXNzZXJ0aW9uIGZhaWxlZDogdW5zd2Vw
dCBub3QgZW1wdHkgaW4gIiwgKnRoaXMsICIuXG4iKTsKKyAgICBkdW1wQml0cygpOworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAi
OiIsIG1fY2VsbFNpemUsICIvIiwgbV9hdHRyaWJ1dGVzKTsKK30KKwordm9pZCBNYXJrZWRBbGxv
Y2F0b3I6OmR1bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgdW5zaWduZWQgbWF4TmFt
ZUxlbmd0aCA9IDA7CisgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBbJl0g
KEZhc3RCaXRWZWN0b3ImLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdHJsZW4obmFtZSk7CisgICAgICAgICAgICBtYXhOYW1lTGVuZ3RoID0gc3Rk
OjptYXgobWF4TmFtZUxlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgZm9y
RWFjaEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
ciwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgIiwgbmFt
ZSwgIjogIik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXhOYW1lTGVuZ3RoIC0g
c3RybGVuKG5hbWUpOyBpLS07KQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIpOworICAg
ICAgICAgICAgb3V0LnByaW50KHZlY3RvciwgIlxuIik7CisgICAgICAgIH0pOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQWxsb2NhdG9yLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw5IEBA
CiAjaW5jbHVkZSAiQWxsb2NhdG9yQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkZyZWVMaXN0Lmgi
CiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNyw2ICszOSwxNDkgQEAgY2xhc3MgSGVh
cDsKIGNsYXNzIE1hcmtlZFNwYWNlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisj
ZGVmaW5lIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8o
bGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBvZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwg
YmxvY2tzLiAqL1wKKyAgICBtYWNybyhlbXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBvYmplY3RzIGFuZCBub3RoaW5nIHRvIGRlc3Ryb3kuICov
IFwKKyAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGxibG9j
a3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9j
YXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxs
IGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUgbW9yZSB0aGFu
IG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKKyAgICBtYWNybyhlZGVuLCBF
ZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNl
IHRoZSBsYXN0IEdDLiAqL1wKKyAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dl
ZXBlci4gKi9cCisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2lu
Zy4gKi9cCisgICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRo
ZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyht
YXJraW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0
aGF0IGFyZSByZXRpcmVkLiAqLworCisvLyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxvY2F0ZUJ1
dE5vdEVtcHR5IGFuZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6CisvLworLy8gICAgIGNhbkFsbG9j
YXRlQnV0Tm90RW1wdHkgJiBlbXB0eSA9PSAwCisvLworLy8gSW5zdGVhZCBvZiBjYWxsaW5nIGl0
IGNhbkFsbG9jYXRlIGFuZCBtYWtpbmcgaXQgaW5jbHVzaXZlOgorLy8KKy8vICAgICBjYW5BbGxv
Y2F0ZSAmIGVtcHR5ID09IGVtcHR5CisvLworLy8gVGhlIGxhdHRlciBpcyBwcm9iYWJseSBiZXR0
ZXIuIEknbGwgbGVhdmUgaXQgdG8gYSBmdXR1cmUgYnVnIHRvIGZpeCB0aGF0LCBzaW5jZSBicmVh
dGhpbmcgb24KKy8vIHRoaXMgY29kZSBsZWFkcyB0byByZWdyZXNzaW9ucyBmb3IgZGF5cywgYW5k
IGl0J3Mgbm90IGNsZWFyIHRoYXQgbWFraW5nIHRoaXMgY2hhbmdlIHdvdWxkCisvLyBpbXByb3Zl
IHBlcmYgc2luY2UgaXQgd291bGQgbm90IGNoYW5nZSB0aGUgY29sbGVjdG9yJ3MgYmVoYXZpb3Is
IGFuZCBlaXRoZXIgd2F5IHRoZSBhbGxvY2F0b3IKKy8vIGhhcyB0byBsb29rIGF0IGJvdGggYml0
dmVjdG9ycy4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIx
MjEKKworLy8gTm90ZSB0aGF0IHRoaXMgY29sbGVjdG9yIHN1cHBvcnRzIG92ZXJsYXBwaW5nIGFs
bG9jYXRvciBzdGF0ZSB3aXRoIG1hcmtpbmcgc3RhdGUsIHNpbmNlIGluIGEKKy8vIGNvbmN1cnJl
bnQgY29sbGVjdG9yIHlvdSBhbGxvdyBhbGxvY2F0aW9uIHdoaWxlIG1hcmtpbmcgaXMgcnVubmlu
Zy4gU28gaXQncyBiZXN0IHRvIHZpc3VhbGl6ZSBhCisvLyBmdWxsIG11dGFibGUtPmVkZW4gY29s
bGVjdC0+bXV0YXRlLT5mdWxsIGNvbGxlY3QgY3ljbGUgYW5kIHNlZSBob3cgdGhlIGJpdHMgYWJv
dmUgZ2V0IGFmZmVjdGVkLgorLy8gVGhlIGV4YW1wbGUgYmVsb3cgdHJpZXMgdG8gYmUgZXhoYXVz
dGl2ZSBhYm91dCB3aGF0IGhhcHBlbnMgdG8gdGhlIGJpdHMsIGJ1dCBvbWl0cyBhIGxvdCBvZgor
Ly8gdGhpbmdzIHRoYXQgaGFwcGVuIHRvIG90aGVyIHN0YXRlLgorLy8KKy8vIENyZWF0ZSBhbGxv
Y2F0b3IKKy8vIC0gYWxsIGJpdHMgYXJlIGVtcHR5CisvLyBTdGFydCBhbGxvY2F0aW5nIGluIHNv
bWUgYmxvY2sKKy8vIC0gYWxsb2NhdGUgdGhlIGJsb2NrIGFuZCBzZXQgdGhlIGxpdmUgYml0Lgor
Ly8gLSB0aGUgZW1wdHkgYml0IGZvciB0aGUgYmxvY2sgZmxpY2tlcnMgb24gYW5kIHRoZW4gZ2V0
cyBpbW1lZGlhdGVseSBjbGVhcmVkIGJ5IHN3ZWVwaW5nLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0
LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgaW4gdGhhdCBibG9jaworLy8gLSBzZXQgdGhlIGFsbG9j
YXRlZCBiaXQuCisvLyBEbyB0aGF0IHRvIGEgbG90IG9mIGJsb2NrcyBhbmQgdGhlbiBzdGFydCBh
biBlZGVuIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygpIGhhcyBub3RoaW5nIHRvIGRv
LgorLy8gLSBieSBkZWZhdWx0IHdlIGhhdmUgY2xlYXIgbWFya2luZ05vdEVtcHR5L21hcmtpbmdS
ZXRpcmVkIGJpdHMuCisvLyAtIG1hcmtpbmcgYnVpbGRzIHVwIG1hcmtpbmdOb3RFbXB0eS9tYXJr
aW5nUmV0aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBh
bGxvY2F0ZWQgYml0cy4KKy8vIC0gZm9yIGRlc3RydWN0b3IgYmxvY2tzOiBmcmFnbWVudGVkID0g
bGl2ZSAmIH5tYXJraW5nUmV0aXJlZAorLy8gLSBmb3Igbm9uLWRlc3RydWN0b3IgYmxvY2tzOgor
Ly8gICAgICAgZW1wdHkgPSBsaXZlICYgfm1hcmtpbmdOb3RFbXB0eQorLy8gICAgICAgZnJhZ21l
bnRlZCA9IGxpdmUgJiBtYXJraW5nTm90RW1wdHkgJiB+bWFya2luZ1JldGlyZWQKKy8vIFNuYXBz
aG90dGluZy4KKy8vIC0gdW5zd2VwdCB8PSBlZGVuCisvLyBQcmVwYXJlIGZvciBhbGxvY2F0aW9u
LgorLy8gLSBjbGVhciBlZGVuCisvLyBGaW5pc2ggY29sbGVjdGlvbi4KKy8vIEFsbG9jYXRlIGlu
IHNvbWUgYmxvY2sgdGhhdCBoYWQgc29tZSBmcmVlIGFuZCBzb21lIGxpdmUgb2JqZWN0cy4KKy8v
IC0gY2xlYXIgdGhlIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgYml0CisvLyAtIGNsZWFyIHRoZSB1
bnN3ZXB0IGJpdAorLy8gLSBzZXQgdGhlIGVkZW4gYml0CisvLyBGaW5pc2ggYWxsb2NhdGluZyAo
c2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3
YXMgY29tcGxldGVseSBlbXB0eS4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8gLSBjbGVh
ciB0aGUgdW5zd2VwdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxv
Y2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9j
ayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5IGluIGFub3RoZXIgYWxsb2NhdG9yLgorLy8gLSBj
bGVhciB0aGUgZW1wdHkgYml0CisvLyAtIGNsZWFyIGFsbCBiaXRzIGluIHRoYXQgYWxsb2NhdG9y
CisvLyAtIHNldCB0aGUgbGl2ZSBiaXQgaW4gYW5vdGhlciBhbGxvY2F0b3IgYW5kIHRoZSBlbXB0
eSBiaXQuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSwgdW5zd2VwdCBiaXRzLgorLy8gLSBzZXQgdGhl
IGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJpdCku
CisvLyBTdGFydCBhIGZ1bGwgY29sbGVjdGlvbi4KKy8vIC0gYmVnaW5NYXJraW5nKCkgY2xlYXJz
IG1hcmtpbmdOb3RFbXB0eSwgbWFya2luZ1JldGlyZWQKKy8vIC0gdGhlIGhlYXAgdmVyc2lvbiBp
cyBpbmNyZW1lbnRlZAorLy8gLSBtYXJraW5nIHJlYnVpbGRzIG1hcmtpbmdOb3RFbXB0eS9tYXJr
aW5ncmV0aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBh
bGxvY2F0ZWQgYml0cy4KKy8vIC0gc2V0IGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkvZW1wdHkgdGhl
IHNhbWUgd2F5IGFzIGluIGVkZW4gY29sbGVjdGlvbi4KKy8vIFNuYXBzaG90dGluZy4KKy8vIC0g
dW5zd2VwdCA9IGxpdmUKKy8vIHByZXBhcmUgZm9yIGFsbG9jYXRpb24uCisvLyAtIGNsZWFyIGVk
ZW4uCisvLyBGaW5pc2ggY29sbGVjdGlvbi4KKy8vCisvLyBOb3RpY2UgaG93IGluIHRoaXMgc2No
ZW1lLCB0aGUgZW1wdHkvY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBzdGF0ZSBzdGF5cyBzZXBhcmF0
ZSBmcm9tIHRoZQorLy8gbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIHN0YXRlLiBUaGlz
IGlzIG9uZSBzdGVwIHRvd2FyZHMgaGF2aW5nIHNlcGFyYXRlZCBhbGxvY2F0aW9uIGFuZAorLy8g
bWFya2luZyBzdGF0ZS4KKy8vCisvLyBBZnRlciB0aGlzLCB3ZSBqdXN0IG5lZWQgdG8gYW5zd2Vy
IHRoZSBxdWVzdGlvbjogd2hhdCBkb2VzIGFuIG9iamVjdCBhbGxvY2F0ZWQgZHVyaW5nIGVkZW4g
R0MKKy8vIGxvb2sgbGlrZSB0byB0aGUgR0M/CisvLworLy8gSSd2ZSBjb21lIHVwIHdpdGggdHdv
IGNvbXBlbGxpbmcgYW5zd2Vycy4KKy8vCisvLyAxLiBBTExPQ0FURSBCTEFDSworLy8KKy8vIEkg
dGhpbmsgdGhhdCB0aGUgZWFzaWVzdCBhbnN3ZXIgaXMgdG8gYWxsb2NhdGUgdGhlIG9iamVjdCB3
aGl0ZSBhbmQgdGhlbgorLy8gaW1tZWRpYXRlbHkgbWFyayBpdC4gVGhpcyBtYWtlcyB0aGUgb2Jq
ZWN0IGJlaGF2ZSBhcyBpZiBpdCB3YXMgYWxsb2NhdGVkIGp1c3QgYmVmb3JlIHRoZSBzdGFydAor
Ly8gb2YgR0MgYW5kIGl0IHdhcyBvbiB0aGUgc3RhY2sgYXQgdGhlIGJlZ2lubmluZyBvZiBHQy4g
V2Ugd291bGRuJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyBkaWZmZXJlbnQKKy8vIHdpdGggdGhlIHZh
cmlvdXMgYmxvY2sgYml0cyB3aGVuIGFsbG9jYXRpbmcgZHVyaW5nIEdDOiB3ZSBjb3VsZCBzdGls
bCBzZXQgZWRlbiBhbmQgYWxsb2NhdGVkCisvLyBzaW5jZSB0aGV5IHdpbGwgYmUgY2xlYXJlZCBh
bnl3YXkuCisvLworLy8gQnV0IHRoaXMgbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdvbid0IGJlIGVs
aWdpYmxlIGZvciBmcmVlaW5nIHVudGlsIHRoZSBuZXh0IGZ1bGwgR0MuIElkZWFsbHkKKy8vIHdl
J2QgbWFrZSB0aGUgb2JqZWN0IGlzIGVsaWdpYmxlIGZvciBmcmVlaW5nIGF0IHRoZSBuZXh0IGVk
ZW4gR0MuIFRoZXJlJ3MgYSBidW5jaCBvZiB0aGluZ3Mgd2UKKy8vIGNvdWxkIGRvIHRvIG1ha2Ug
dGhpcyBoYXBwZW4uIEhlcmUgYXJlIHNvbWUgaWRlYXM6CisvLworLy8gLSBJbnRyb2R1Y2UgYSBu
ZXcgQ2VsbFN0YXRlLCBjYWxsZWQgRmxvYXQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG9iamVjdCB3
YXMgYWxsb2NhdGVkIGR1cmluZyB0aGUKKy8vICAgR0MuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0
IG1hcmtpbmcgZG9lcyBub3RoaW5nIGZvciBGbG9hdHMuIFRoaXMgd291bGQgbWFrZSBtYXJraW5n
IGEgdGlueQorLy8gICBiaXQgbW9yZSBleHBlbnNpdmUuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0
IHRoZSBiYXJyaWVyIHJlY29nbml6ZXMgc3RvcmVzIHRvIGEgRmxvYXQgdGhlIHNhbWUKKy8vICAg
d2F5IHRoYXQgaXQgc2VlcyBhIHN0b3JlIHRvIE9sZEJsYWNrOiBpdCBwdXRzIHRoZSBvYmplY3Qg
b24gdGhlIG1hcmsgc3RhY2suIEZsb2F0cyB3b3VsZCBiZQorLy8gICBwdXQgb24gdGhlIG1hcmsg
c3RhY2sgYXMgRmxvYXRHcmV5IHRvIGluZGljYXRlIHRoYXQgdGhleSB3aWxsIGJlIHNjYW5uZWQg
YnkgdGhlIEdDIGJ1dCB0aGF0CisvLyAgIHRoZXkgYXJlbid0IGFjdHVhbGx5IG1hcmtlZC4KKy8v
CisvLyAgIE5vdGUgdGhhdCB0aGlzIGltcGxpZXMgaGF2aW5nIHRvIGNoYW5nZSB0aGUgc3RhdGUg
b2YgdGhvc2UgY2VsbHMgZnJvbSBGbG9hdCB0byBzb21ldGhpbmcgZWxzZQorLy8gICBhdCB0aGUg
ZW5kIG9mIEdDLiAgSSdtIG5vdCBzdXJlIHRoYXQgdGhpcyBpcyBzbyBncmVhdC4KKy8vCisvLyAt
IE1hcmsgdGhlIG9iamVjdHMgYWZ0ZXIgYWxsb2NhdGlvbiwgYnV0IGFsc28gc2V0IHNvbWUgb3Ro
ZXIgYml0cyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB0aG9zZQorLy8gICBvYmplY3RzIHNob3VsZCBi
ZSB1bm1hcmtlZCBhdCB0aGUgZW5kIG9mIHRoZSBHQy4KKy8vCisvLyBFaXRoZXIgb2YgdGhlc2Ug
YXBwcm9hY2hlcyB3b3VsZCBtYWtlIGNvbGxlY3Rpb25zIG1vcmUgZXhwZW5zaXZlLCBidXQgaXQg
ZmVlbHMgbGlrZSB0aGUgbGF0dGVyCisvLyBhcHByb2FjaCB3b3VsZCBiZSBhIHByb2ZpdGFibGUg
b3B0aW1pemF0aW9uLiBJJ20gYWxzbyByZWFsbHkgZ2V0dGluZyB3b3JyaWVkIGFib3V0IGhvdyB0
aGlzIEdDCisvLyBleHBlcmllbmNlcyBiYWNrd2FyZHMgdGltZSB0cmF2ZWwsIHdpdGggYWxsIHRo
ZSByZW1hcmtpbmcgb2YgdGhpbmdzIGxpa2UgbmV3IG9iamVjdHMgYW5kCisvLyB3aGF0bm90Lgor
Ly8KKy8vIDIuIEFMTE9DQVRFIFdISVRFCisvLworLy8gSSBkb24ndCBrbm93IGlmIHRoaXMgaXMg
c291bmQsIGJ1dCBpZiBpdCB3YXMgdGhlbiBpdCB3b3VsZCBiZSB0aGUgb3B0aW1hbCBzb2x1dGlv
bi4gQWxsb2NhdGlvbgorLy8gd291bGQgd29yayBhcyBub3cgYW5kIGNvbnNlcXVlbnRseSwgZXZl
cnl0aGluZyB3ZSBrbm93IGFib3V0IHdoYXQgd2FzIGFsbG9jYXRlZCBkdXJpbmcgYSBHQyBpcwor
Ly8gZm9yZ290dGVuIGF0IHRoZSBlbmQgb2YgR0MuIEJ1dCB0aGF0J3MgZmluZS4gRW5kIG9mIEdD
IG11c3QgcmVzY2FuIGFueSBoZWFwIGxvY2F0aW9ucyB0aGF0IGdvdAorLy8gc3RvcmVkIGludG8g
YW5kIGl0IG11c3QgcmVzY2FuIHRoZSBzdGFjay4gU28sIHdoaXRlIG9iamVjdHMgYWxsb2NhdGVk
IGR1cmluZyBHQyB3b3VsZCBnZXQKKy8vIG1hcmtlZCBpZiB0aGV5IHNvbWVob3cgc3Vydml2ZWQu
CisvLworLy8gVGhpcyBtZWFucyB0aGF0IGZvciBleGFtcGxlIGlmIHRoZXJlIGlzIGEgZmllbGQg
dGhhdCBvZnRlbiBnZXRzIHN0b3JlZCB0byB3aXRoIG5ldyBvYmplY3RzLCB0aGUKKy8vIEdDIHdp
bGwgbm90IHNlZSBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGF0IGZpZWxkIGJ1dCBpbnN0ZWFkIGl0
IHdvdWxkIHBvbGwgdGhhdCBmaWVsZCwgaG9wZWZ1bGx5CisvLyBzb21ld2hhdCByYXJlbHkuIFdl
IGNhbiBtYWtlIGl0IHZlcnkgcmFyZSBieSBvbmx5IGluZnJlcXVlbnRseSBkb25hdGluZyBmcm9t
IHRoZSBtYWluIHRocmVhZCdzCisvLyBzbG90IHZpc2l0b3IgdG8gYW55IG9mIHRoZSBvdGhlcnMu
IFNvLCB3ZSB3b3VsZCBvbmx5IG1hcmsgc29tZSBvZiB0aGUgbmV3IG9iamVjdHMgdGhhdCBnb3QK
Ky8vIHN0b3JlZCBpbnRvIHRoYXQgZmllbGQuIEl0IGFsc28gbWVhbnMgdGhhdCBhbnkgb2JqZWN0
IGFsbG9jYXRlZCBkdXJpbmcgdGhlIEdDIHRoYXQgZGlkbid0IGdldAorLy8gc3RvcmVkIGludG8g
YW55IG9iamVjdCB0aGF0IHdhcyBsaXZlIHNpbmNlIGJlZm9yZSB0aGUgc3RhcnQgb2YgR0Mgd291
bGQgc2ltcGx5IGRpc2FwcGVhci4gVGhpcworLy8gbWVhbnMgbXVjaCBsZXNzIHJlc2Nhbm5pbmcg
dGhhbiBhbnkgb2YgdGhlIG90aGVyIHByb3Bvc2Fscy4KKy8vCisvLyBJIHJlYWxseSB3YW50IHRv
IGdvIHdpdGggdGhlIGFsbG9jYXRlLXdoaXRlIGFwcHJvYWNoLCBidXQgSSBuZWVkIHRvIHRoaW5r
IG1vcmUgZGVlcGx5IGFib3V0IGl0CisvLyBiZWZvcmUgSSBjb21taXQgdG8gaXQuCisKIGNsYXNz
IE1hcmtlZEFsbG9jYXRvciB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIApAQCAtNDYsOSArMTkxLDE2IEBAIHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvcihI
ZWFwKiwgTWFya2VkU3BhY2UqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJp
YnV0ZXMmKTsKICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7Ci0gICAgdm9pZCByZXNl
dCgpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIHN0b3BBbGxv
Y2F0aW5nKCk7CiAgICAgdm9pZCByZXN1bWVBbGxvY2F0aW5nKCk7CisgICAgdm9pZCBiZWdpbk1h
cmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZv
aWQgc25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICB2b2lkIHNuYXBzaG90
VW5zd2VwdEZvckZ1bGxDb2xsZWN0aW9uKCk7CisgICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQg
c2hyaW5rKCk7CisgICAgdm9pZCBhc3NlcnROb1Vuc3dlcHQoKTsKICAgICBzaXplX3QgY2VsbFNp
emUoKSBjb25zdCB7IHJldHVybiBtX2NlbGxTaXplOyB9CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0
cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAg
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0
cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uOyB9CkBAIC03Miw2ICsyMjQsNDYgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgIAogICAgIHN0YXRp
YyBzaXplX3QgYmxvY2tTaXplRm9yQnl0ZXMoc2l6ZV90KTsKKyAgICAKKyNkZWZpbmUgTUFSS0VE
X0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAg
ICBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAorICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlz
ICMjIGNhcGl0YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpKTsgfSBcCisgICAgdm9pZCBzZXRJcyAj
IyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV8gIyMgbG93ZXJC
aXROYW1lW2luZGV4XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXRO
YW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzICMjIGNh
cGl0YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWlj
U2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUp
IHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhpbmRleCwgdmFs
dWUpOyB9IFwKKyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMgIyMgY2FwaXRhbEJpdE5hbWUo
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxv
d2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9Cisg
ICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUND
RVNTT1JTKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3IoY29uc3QgRnVu
YyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKGxv
d2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJp
dE5hbWUpOworICAgICAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxM
T0NBVE9SX0JJVF9DQUxMQkFDSyk7CisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJB
Q0sKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZv
ckVhY2hCaXRWZWN0b3JXaXRoTmFtZShjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNkZWZpbmUg
TUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFt
ZSkgXAorICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSwgI2NhcGl0YWxCaXROYW1lKTsK
KyAgICAgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9C
SVRfQ0FMTEJBQ0spOworI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAg
fQorICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogbmV4dEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0
dXJuIG1fbmV4dEFsbG9jYXRvcjsgfQorICAgIAorICAgIC8vIE1hcmtlZFNwYWNlIGNhbGxzIHRo
aXMgZHVyaW5nIGluaXQuCisgICAgdm9pZCBzZXROZXh0QWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRv
ciogYWxsb2NhdG9yKSB7IG1fbmV4dEFsbG9jYXRvciA9IGFsbG9jYXRvcjsgfQorICAgIAorICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRFbXB0eUJsb2NrKCk7CisgICAgCisgICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogZmluZEJsb2NrVG9Td2VlcCgpOworICAgIAorICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZHVtcEJpdHMoUHJpbnRTdHJlYW0mID0gV1RG
OjpkYXRhRmlsZSgpKTsKICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxv
Y2s7CkBAIC04MiwyNSArMjc0LDM3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVX
aXRob3V0Q29sbGVjdGluZygpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3Rp
bmdJbXBsKCk7CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5QWxsb2NhdGVCbG9jaygpOwor
ICAgIHZvaWQqIHRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSopOworICAgIHZvaWQq
IGFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgdm9pZCByZXRpcmUoTWFya2VkQmxv
Y2s6OkhhbmRsZSopOwogICAgIAogICAgIHZvaWQgc2V0RnJlZUxpc3QoY29uc3QgRnJlZUxpc3Qm
KTsKICAgICAKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaWx0ZXJOZXh0QmxvY2soTWFya2Vk
QmxvY2s6OkhhbmRsZSopOwotICAgIHZvaWQgc2V0TmV4dEJsb2NrVG9Td2VlcChNYXJrZWRCbG9j
azo6SGFuZGxlKik7Ci0gICAgCiAgICAgRnJlZUxpc3QgbV9mcmVlTGlzdDsKKyAgICAKKyAgICBW
ZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tzOworICAgIFZlY3Rvcjx1bnNpZ25l
ZD4gbV9mcmVlQmxvY2tJbmRpY2VzOworICAgIAorI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJ
VF9ERUNMQVJBVElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCisgICAgRmFzdEJp
dFZlY3RvciBtXyAjIyBsb3dlckJpdE5hbWU7CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRP
Ul9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04pCisjdW5kZWYgTUFSS0VEX0FM
TE9DQVRPUl9CSVRfREVDTEFSQVRJT04KKyAgICAKKyAgICAvLyBBZnRlciB5b3UgZG8gc29tZXRo
aW5nIHRvIGEgYmxvY2sgYmFzZWQgb24gb25lIG9mIHRoZXNlIGN1cnNvcnMsIHlvdSBjbGVhciB0
aGUgYml0IGluIHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0dmVjdG9yIGFuZCBsZWF2ZSB0
aGUgY3Vyc29yIHdoZXJlIGl0IHdhcy4KKyAgICBzaXplX3QgbV9hbGxvY2F0aW9uQ3Vyc29yIHsg
MCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3Ig
YWxsb2NhdGlvbi4KKyAgICBzaXplX3QgbV9lbXB0eUN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRv
IHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGVtcHR5IGFsbG9jYXRpb24g
KGFsbG9jYXRpbmcgaW4gZW1wdHkgYmxvY2tzKS4KKyAgICBzaXplX3QgbV91bnN3ZXB0Q3Vyc29y
IHsgMCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBm
b3IgaW5jcmVtZW50YWwgc3dlZXBpbmcuCisgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSog
bV9jdXJyZW50QmxvY2s7CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9sYXN0QWN0aXZlQmxv
Y2s7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0QmxvY2tUb1N3ZWVwOwotICAgIFNl
bnRpbmVsTGlua2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9k
ZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4gbV9ibG9ja0xpc3Q7Ci0gICAgU2VudGluZWxMaW5rZWRM
aXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2Nr
OjpIYW5kbGU+PiBtX3JldGlyZWRCbG9ja3M7CisKICAgICBMb2NrIG1fbG9jazsKICAgICB1bnNp
Z25lZCBtX2NlbGxTaXplOwogICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwog
ICAgIEhlYXAqIG1faGVhcDsKICAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAgICBN
YXJrZWRBbGxvY2F0b3IqIG1fbmV4dEFsbG9jYXRvcjsKIH07CiAKIGlubGluZSBwdHJkaWZmX3Qg
TWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0KCkKQEAgLTE0OSwyMCArMzUzLDEyIEBA
IEFMV0FZU19JTkxJTkUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGwKICAgICByZXR1cm4gaGVh
ZDsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkK
LXsKLSAgICBpZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKLSAgICBt
X2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOwotICAgIG1fbGFzdEFjdGl2ZUJsb2Nr
ID0gMDsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAg
bV9ibG9ja0xpc3QuZm9yRWFjaChmdW5jdG9yKTsKLSAgICBtX3JldGlyZWRCbG9ja3MuZm9yRWFj
aChmdW5jdG9yKTsKKyAgICBtX2xpdmUuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXpl
X3QgaW5kZXgpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKKyAgICAg
ICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVP
YmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtMzYsNyArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBib29sIGNvbXB1
dGVCYWxhbmNlID0gZmFsc2U7CiBzdGF0aWMgc2l6ZV90IGJhbGFuY2U7CiAKLU1hcmtlZEJsb2Nr
OjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRl
cyYgYXR0cmlidXRlcykKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmVh
dGUoSGVhcCYgaGVhcCkKIHsKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFs
YW5jZSsrOwpAQCAtNDgsMjYgKzQ5LDE3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJs
b2NrOjp0cnlDcmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNjcmliYmxlRnJl
ZUNlbGxzKCkpCiAgICAgICAgIHNjcmliYmxlKGJsb2NrU3BhY2UsIGJsb2NrU2l6ZSk7Ci0gICAg
cmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYWxsb2NhdG9yLCBjZWxsU2l6ZSwgYXR0cmlidXRlcywg
YmxvY2tTcGFjZSk7CisgICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYmxvY2tTcGFjZSk7CiB9
CiAKLU1hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0
b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCB2b2lkKiBibG9ja1NwYWNlKQotICAgIDogbV9hdG9tc1BlckNlbGwoKGNl
bGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQotICAgICwgbV9lbmRBdG9tKGF0b21z
UGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDEpCi0gICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmli
dXRlcykKLSAgICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2Vk
LgotICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRv
ci0+aGVhcCgpLT52bSgpLCBDZWxsQ29udGFpbmVyKCkpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpI
YW5kbGUoSGVhcCYgaGVhcCwgdm9pZCogYmxvY2tTcGFjZSkKKyAgICA6IG1fd2Vha1NldChoZWFw
LnZtKCksIENlbGxDb250YWluZXIoKSkKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBi
bG9ja1NwYWNlKSBNYXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCiAgICAgbV93
ZWFrU2V0LnNldENvbnRhaW5lcigqbV9ibG9jayk7CiAgICAgCiAgICAgaGVhcC5kaWRBbGxvY2F0
ZUJsb2NrKGJsb2NrU2l6ZSk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0
aGlzKTsKLSAgICBBU1NFUlQoYWxsb2NhdG9yKTsKLSAgICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxL
aW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0cmli
dXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKIH0KIAogTWFya2Vk
QmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCkBAIC03OCw2ICs3MCw3IEBAIE1hcmtlZEJsb2NrOjpI
YW5kbGU6On5IYW5kbGUoKQogICAgICAgICBpZiAoIShiYWxhbmNlICUgMTApKQogICAgICAgICAg
ICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFsYW5jZTogIiwgYmFsYW5jZSwgIlxuIik7CiAgICAg
fQorICAgIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKICAgICBtX2Jsb2NrLT5+TWFya2VkQmxvY2so
KTsKICAgICBmYXN0QWxpZ25lZEZyZWUobV9ibG9jayk7CiAgICAgaGVhcC5kaWRGcmVlQmxvY2so
YmxvY2tTaXplKTsKQEAgLTg1LDM4ICs3OCwyOCBAQCBNYXJrZWRCbG9jazo6SGFuZGxlOjp+SGFu
ZGxlKCkKIAogTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKFZNJiB2bSwgSGFuZGxlJiBoYW5kbGUp
CiAgICAgOiBtX25lZWRzRGVzdHJ1Y3Rpb24oaGFuZGxlLm5lZWRzRGVzdHJ1Y3Rpb24oKSkKLSAg
ICAsIG1fdmVyc2lvbih2bS5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKQorICAgICwgbV92
ZXJzaW9uKE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbikKICAgICAsIG1faGFuZGxlKGhhbmRsZSkK
ICAgICAsIG1fdm0oJnZtKQogewotICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRT
cGFjZTo6YmxvY2tQYXlsb2FkIC8gaGFuZGxlLmNlbGxTaXplKCk7Ci0gICAgZG91YmxlIG1hcmtD
b3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxz
UGVyQmxvY2spOwotICAgIAotICAgIC8vIFRoZSBtYXJrIGNvdW50IGJpYXMgc2hvdWxkIGJlIGNv
bWZvcnRhYmx5IHdpdGhpbiB0aGlzIHJhbmdlLgotICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtDb3Vu
dEJpYXMgPiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MTZfdD46
Om1pbigpKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA8IDApOwotICAgIAot
ICAgIG1fbWFya0NvdW50QmlhcyA9IHN0YXRpY19jYXN0PGludDE2X3Q+KG1hcmtDb3VudEJpYXMp
OwotICAgIAotICAgIG1fYmlhc2VkTWFya0NvdW50ID0gbV9tYXJrQ291bnRCaWFzOyAvLyBUaGlz
IG1lYW5zIHdlIGhhdmVuJ3QgbWFya2VkIGFueXRoaW5nIHlldC4KIH0KIAotdGVtcGxhdGU8TWFy
a2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dl
ZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KK3RlbXBsYXRlPE1h
cmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUs
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OkZsaXBNb2RlIGZsaXBNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6
OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcCgpCiB7Ci0gICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIEFTU0VSVChibG9ja1N0YXRlID09IE5ldyB8fCBi
bG9ja1N0YXRlID09IE1hcmtlZCk7Ci0gICAgQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERv
ZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSkpOworICAgIFJF
TEVBU0VfQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24g
JiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSkpOwogICAgIAotICAgIGFzc2VydEZsaXBwZWQoKTsK
KyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKICAgICBN
YXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOwogICAgIAotICAgIGJvb2wgaXNOZXdC
bG9jayA9IGJsb2NrU3RhdGUgPT0gTmV3OwotICAgIGJvb2wgaXNFbXB0eUJsb2NrID0gIWJsb2Nr
Lmhhc0FueU1hcmtlZCgpCi0gICAgICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90
SGF2ZU5ld2x5QWxsb2NhdGVkCi0gICAgICAgICYmIGRlc3RydWN0aW9uTW9kZSA9PSBEb2VzTm90
TmVlZERlc3RydWN0aW9uOwotICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2NhdG9yKCkgJiYg
KGlzTmV3QmxvY2sgfHwgaXNFbXB0eUJsb2NrKSkgewotICAgICAgICBBU1NFUlQoYmxvY2subV9t
YXJrcy5pc0VtcHR5KCkpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2lu
dGVyKHRoaXMpLCAiOiBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVxuIik7
CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQorICAgICAgICAmJiBl
bXB0eU1vZGUgPT0gSXNFbXB0eQorICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9l
c05vdEhhdmVOZXdseUFsbG9jYXRlZCkgeworICAgICAgICBBU1NFUlQoZmxpcE1vZGUgPT0gTmVl
ZHNGbGlwKTsKICAgICAgICAgCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZMYXN0Q2VsbCA9IHN0YXRp
Y19jYXN0PGNoYXIqPihjZWxsQWxpZ24oYmxvY2suYXRvbXMoKSArIG1fZW5kQXRvbSAtIDEpKTsK
ICAgICAgICAgY2hhciogcGF5bG9hZEVuZCA9IHN0YXJ0T2ZMYXN0Q2VsbCArIGNlbGxTaXplKCk7
CkBAIC0xMjQsNyArMTA3LDEwIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNp
YWxpemUKICAgICAgICAgY2hhciogcGF5bG9hZEJlZ2luID0gYml0d2lzZV9jYXN0PGNoYXIqPihi
bG9jay5hdG9tcygpICsgZmlyc3RBdG9tKCkpOwogICAgICAgICBpZiAoc2NyaWJibGVNb2RlID09
IFNjcmliYmxlKQogICAgICAgICAgICAgc2NyaWJibGUocGF5bG9hZEJlZ2luLCBwYXlsb2FkRW5k
IC0gcGF5bG9hZEJlZ2luKTsKLSAgICAgICAgbV9zdGF0ZSA9ICgoc3dlZXBNb2RlID09IFN3ZWVw
VG9GcmVlTGlzdCkgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICAgICAgaWYgKHN3ZWVwTW9k
ZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgdHJ1
ZSk7CiAgICAgICAgIEZyZWVMaXN0IHJlc3VsdCA9IEZyZWVMaXN0OjpidW1wKHBheWxvYWRFbmQs
IHBheWxvYWRFbmQgLSBwYXlsb2FkQmVnaW4pOwogICAgICAgICBpZiAoZmFsc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCJRdWlja2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIodGhpcyksICIg
d2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJp
YnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xMzcsMTQgKzEyMywxNCBAQCBGcmVlTGlz
dCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgRnJlZUNlbGwqIGhlYWQgPSAw
OwogICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgp
OyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIGlmIChibG9j
a1N0YXRlID09IE1hcmtlZAotICAgICAgICAgICAgJiYgKGJsb2NrLm1fbWFya3MuZ2V0KGkpCisg
ICAgICAgIGlmIChlbXB0eU1vZGUgPT0gTm90RW1wdHkKKyAgICAgICAgICAgICYmICgoZmxpcE1v
ZGUgPT0gRG9lc05vdE5lZWRGbGlwICYmIGJsb2NrLm1fbWFya3MuZ2V0KGkpKQogICAgICAgICAg
ICAgICAgIHx8IChuZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYgbV9u
ZXdseUFsbG9jYXRlZC0+Z2V0KGkpKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAg
ICAKICAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2Vs
bCo+KCZibG9jay5hdG9tcygpW2ldKTsKIAotICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09
IE5lZWRzRGVzdHJ1Y3Rpb24gJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCisgICAgICAgIGlmIChkZXN0
cnVjdGlvbk1vZGUgPT0gTmVlZHNEZXN0cnVjdGlvbiAmJiBlbXB0eU1vZGUgPT0gTm90RW1wdHkp
CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKS0+Y2FsbERlc3RydWN0b3Io
KnZtKCkpOwogCiAgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CkBA
IC0xNjMsNyArMTQ5LDE5IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxp
emUKICAgICAgICAgbV9uZXdseUFsbG9jYXRlZCA9IG51bGxwdHI7CiAKICAgICBGcmVlTGlzdCBy
ZXN1bHQgPSBGcmVlTGlzdDo6bGlzdChoZWFkLCBjb3VudCAqIGNlbGxTaXplKCkpOwotICAgIG1f
c3RhdGUgPSAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCA/IEZyZWVMaXN0ZWQgOiBNYXJr
ZWQpOworICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICBzZXRJ
c0ZyZWVMaXN0ZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5zaWduZWQgY2VsbHNQZXJCbG9j
ayA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBjZWxsU2l6ZSgpOworICAgICAgICBpZiAo
Y291bnQgPT0gY2VsbHNQZXJCbG9jaykgeworICAgICAgICAgICAgLy8gT2RkbHksIHRoaXMgbWF5
IHNldCBlbXB0eSBvbiBhIGJsb2NrIHRoYXQgYWxzbyBoYXMgbV9jYW5BbGxvY2F0ZUJ1dE5vdEVt
cHR5IHNldC4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9uZSBjb3JuZXIgY2FzZSB3aGVy
ZSBib3RoIGJpdHMgbWF5IGJlIHNldCBhdCB0aGUgc2FtZSB0aW1lLiBUaGlzIG1ha2VzCisgICAg
ICAgICAgICAvLyB0aGUgYmxvY2sgZWxpZ2libGUgZm9yIHVzZSBieSBzb21lIG90aGVyIGFsbG9j
YXRvci4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgYWxzbyByZXNldCB0
aGUgZW1wdHkgY3Vyc29yIHdoZW4gdGhpcyBoYXBwZW5zLgorICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjEyMgorICAgICAgICAgICAgbV9h
bGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAg
aWYgKGZhbHNlKQogICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9p
bnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJp
YnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0xNzEsMTUgKzE2OSwyMCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpzcGVjaWFsaXplCiAKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKFN3ZWVw
TW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgbV9hbGxvY2F0
b3ItPnNldElzVW5zd2VwdCh0aGlzLCBmYWxzZSk7CiAgICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tf
U1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLQogICAgIG1fd2Vha1NldC5zd2VlcCgpOwogCiAgICAg
aWYgKHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkgJiYgbV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09
IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogCisg
ICAgaWYgKFVOTElLRUxZKG1faXNGcmVlTGlzdGVkKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAgICAgcmV0dXJuIEZyZWVMaXN0
KCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVCghbV9hbGxvY2F0b3ItPmlzQWxsb2NhdGVkKHRo
aXMpKTsKKyAgICAKICAgICBpZiAobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IE5lZWRzRGVz
dHJ1Y3Rpb24pCiAgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZTxO
ZWVkc0Rlc3RydWN0aW9uPihzd2VlcE1vZGUpOwogICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVj
dFNjcmliYmxlTW9kZTxEb2VzTm90TmVlZERlc3RydWN0aW9uPihzd2VlcE1vZGUpOwpAQCAtMTg5
LDQ3ICsxOTIsNTkgQEAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZQog
RnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1v
ZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKICAgICBpZiAoc2NyaWJibGVGcmVlQ2VsbHMoKSkK
LSAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGU8ZGVzdHJ1
Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsKLSAgICByZXR1cm4gc3dlZXBIZWxwZXJT
ZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZTxkZXN0cnVjdGlvbk1vZGUsIERvbnRTY3JpYmJsZT4oc3dl
ZXBNb2RlKTsKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlPGRlc3Ry
dWN0aW9uTW9kZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVy
U2VsZWN0RW1wdHlNb2RlPGRlc3RydWN0aW9uTW9kZSwgRG9udFNjcmliYmxlPihzd2VlcE1vZGUp
OwogfQogCiB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgotRnJlZUxpc3QgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZShTd2VlcE1v
ZGUgc3dlZXBNb2RlKQorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJT
ZWxlY3RFbXB0eU1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKLSAgICBzd2l0Y2ggKG1fc3Rh
dGUpIHsKLSAgICBjYXNlIE5ldzoKLSAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRv
RnJlZUxpc3QpOwotICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxOZXcsIFN3ZWVwVG9G
cmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlB
bGxvY2F0ZWQ+KCk7Ci0gICAgY2FzZSBGcmVlTGlzdGVkOgotICAgICAgICAvLyBIYXBwZW5zIHdo
ZW4gYSBibG9jayB0cmFuc2l0aW9ucyB0byBmdWxseSBhbGxvY2F0ZWQuCi0gICAgICAgIEFTU0VS
VChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0
KCk7Ci0gICAgY2FzZSBBbGxvY2F0ZWQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAgIGNhc2UgTWFya2VkOgotICAg
ICAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAgICAgcmV0dXJuIHN3ZWVwTW9k
ZSA9PSBTd2VlcFRvRnJlZUxpc3QKLSAgICAgICAgICAgICAgICA/IHNwZWNpYWxpemVkU3dlZXA8
TWFya2VkLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBI
YXNOZXdseUFsbG9jYXRlZD4oKQotICAgICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxN
YXJrZWQsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5
QWxsb2NhdGVkPigpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHN3ZWVw
TW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKLSAgICAgICAgICAgICAgICA/IHNwZWNpYWxpemVkU3dl
ZXA8TWFya2VkLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2Rl
LCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAgICAgICAgOiBzcGVjaWFs
aXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9k
ZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBGcmVlTGlzdCgpOworICAg
IC8vIEl0J3Mgbm90IG9idmlvdXMsIGJ1dCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBrbm93IGlm
IHRoZSBibG9jayBpcyBlbXB0eS4gSXQncyB0aGUgb25seQorICAgIC8vIGJpdCB0aGF0IGNhcHR1
cmVzIHRoZXNlIGNhdmVhdHM6CisgICAgLy8gLSBJdCdzIHRydWUgd2hlbiB0aGUgYmxvY2sgaXMg
ZnJlc2hseSBhbGxvY2F0ZWQuCisgICAgLy8gLSBJdCdzIHRydWUgaWYgdGhlIGJsb2NrIGhhZCBi
ZWVuIHN3ZXB0IGluIHRoZSBwYXN0LCBhbGwgZGVzdHJ1Y3RvcnMgd2VyZSBjYWxsZWQsIGFuZCB0
aGF0CisgICAgLy8gICBzd2VlcCBwcm92ZWQgdGhhdCB0aGUgYmxvY2sgaXMgZW1wdHkuCisgICAg
Ly8gLSBJdCdzIGZhbHNlIGlmIHRoZXJlIGFyZSBhbnkgZGVzdHJ1Y3RvcnMgdGhhdCBuZWVkIHRv
IGJlIGNhbGxlZCwgZXZlbiBpZiB0aGUgYmxvY2sgaGFzIG5vCisgICAgLy8gICBsaXZlIG9iamVj
dHMuCisgICAgaWYgKG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMpKQorICAgICAgICByZXR1cm4g
c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxJc0VtcHR5LCBkZXN0cnVjdGlvbk1v
ZGUsIHNjcmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxl
Y3RIYXNOZXdseUFsbG9jYXRlZDxOb3RFbXB0eSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1v
ZGU+KHN3ZWVwTW9kZSk7Cit9CisKK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5
TW9kZSBlbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+CitGcmVlTGlzdCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9k
ZSBzd2VlcE1vZGUpCit7CisgICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQpCisgICAgICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwg
c2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4g
c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNj
cmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKK30KKwor
dGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1
Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVN
b2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2Rl
IG5ld2x5QWxsb2NhdGVkTW9kZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVw
SGVscGVyU2VsZWN0U3dlZXBNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCit7CisgICAgaWYgKHN3
ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNl
bGVjdEZsaXBNb2RlPGVtcHR5TW9kZSwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUs
IHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlPigpOworICAgIHJldHVybiBzd2VlcEhl
bHBlclNlbGVjdEZsaXBNb2RlPGVtcHR5TW9kZSwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUs
IHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlPigpOworfQorCit0ZW1wbGF0ZTxNYXJr
ZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZSgpCit7Cisg
ICAgaWYgKG5lZWRzRmxpcCgpKQorICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxlbXB0
eU1vZGUsIHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxs
b2NhdGVkTW9kZSwgTmVlZHNGbGlwPigpOworICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPGVt
cHR5TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlB
bGxvY2F0ZWRNb2RlLCBEb2VzTm90TmVlZEZsaXA+KCk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCkKIHsKLSAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMp
OwotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0gICAg
bV9zdGF0ZSA9IE1hcmtlZDsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lzRnJlZUxpc3RlZCk7Cisg
ICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpzZXRJc0ZyZWVMaXN0ZWQoKQoreworICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMs
IGZhbHNlKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IHRydWU7CiB9CiAKIGNsYXNzIFNldE5ld2x5
QWxsb2NhdGVkRnVuY3RvciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewpAQCAt
MjUyLDI2ICsyNjcsMTcgQEAgcHJpdmF0ZToKIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
dG9wQWxsb2NhdGluZyhjb25zdCBGcmVlTGlzdCYgZnJlZUxpc3QpCiB7Ci0gICAgZmxpcElmTmVj
ZXNzYXJ5KCk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKKyAg
ICBpZiAoZmFsc2UpCisgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmchXG4iKTsKKyAgICBBU1NFUlQoIWFsbG9jYXRv
cigpLT5pc0FsbG9jYXRlZCh0aGlzKSk7CiAKLSAgICBpZiAobV9zdGF0ZSA9PSBNYXJrZWQpIHsK
LSAgICAgICAgLy8gSWYgdGhlIGJsb2NrIGlzIGluIHRoZSBNYXJrZWQgc3RhdGUgdGhlbiB3ZSBr
bm93IHRoYXQgb25lIG9mIHRoZXNlCi0gICAgICAgIC8vIGNvbmRpdGlvbnMgaG9sZHM6Ci0gICAg
ICAgIC8vCi0gICAgICAgIC8vIC0gSXQgd2FzIG5vdCB1c2VkIGZvciBhbGxvY2F0aW9uIGR1cmlu
ZyB0aGUgcHJldmlvdXMgYWxsb2NhdGlvbiBjeWNsZS4KLSAgICAgICAgLy8gICBJdCBtYXkgaGF2
ZSBkZWFkIG9iamVjdHMsIGFuZCB3ZSBvbmx5IGtub3cgdGhlbSB0byBiZSBkZWFkIGJ5IHRoZQot
ICAgICAgICAvLyAgIGZhY3QgdGhhdCB0aGVpciBtYXJrIGJpdHMgYXJlIHVuc2V0LgotICAgICAg
ICAvLwotICAgICAgICAvLyAtIFNvbWVvbmUgaGFkIGFscmVhZHkgZG9uZSBzdG9wQWxsb2NhdGlu
ZygpLCBmb3IgZXhhbXBsZSBiZWNhdXNlIG9mCi0gICAgICAgIC8vICAgaGVhcCBpdGVyYXRpb24s
IGFuZCB0aGV5IGhhZCBhbHJlYWR5IAotICAgICAgICAvLyBIZW5jZSBpZiB0aGUgYmxvY2sgaXMg
TWFya2VkIHdlIG5lZWQgdG8gbGVhdmUgaXQgTWFya2VkLgorICAgIGlmICghaXNGcmVlTGlzdGVk
KCkpIHsKKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIGVpdGhlciBkaWRuJ3QgdXNlIHRo
aXMgYmxvY2sgYXQgYWxsIGZvciBhbGxvY2F0aW9uIHNpbmNlIGxhc3QgR0MsCisgICAgICAgIC8v
IG9yIHNvbWVvbmUgaGFkIGFscmVhZHkgZG9uZSBzdG9wQWxsb2NhdGluZygpIGJlZm9yZS4KICAg
ICAgICAgQVNTRVJUKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAg
ICAKICAgICAvLyBSb2xsIGJhY2sgdG8gYSBjb2hlcmVudCBzdGF0ZSBmb3IgSGVhcCBpbnRyb3Nw
ZWN0aW9uLiBDZWxscyBuZXdseQogICAgIC8vIGFsbG9jYXRlZCBmcm9tIG91ciBmcmVlIGxpc3Qg
YXJlIG5vdCBjdXJyZW50bHkgbWFya2VkLCBzbyB3ZSBuZWVkIGFub3RoZXIKICAgICAvLyB3YXkg
dG8gdGVsbCB3aGF0J3MgbGl2ZSB2cyBkZWFkLiAKQEAgLTI5MCwxMSArMjk2LDEyIEBAIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAgICAgICAgIGNsZWFyTmV3
bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAgICAgIH0pOwogICAgIAotICAgIG1fc3RhdGUgPSBNYXJr
ZWQ7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7CisgICAgYWxsb2NhdG9yKCktPnNldElz
QWxsb2NhdGVkKHRoaXMsIGZhbHNlKTsKICAgICBtX2Jsb2NrLT5jbGVhck1hcmtzKCk7CiAgICAg
bV93ZWFrU2V0Lmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CiAKQEAgLTMwNCwxNCArMzExLDExIEBA
IHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmkKIAogRnJlZUxpc3QgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxsb2NhdGluZygpCiB7Ci0gICAgZmxpcElmTmVjZXNz
YXJ5KCk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLQotICAg
IEFTU0VSVChtX3N0YXRlID09IE1hcmtlZCk7CisgICAgQVNTRVJUKCFhbGxvY2F0b3IoKS0+aXNB
bGxvY2F0ZWQodGhpcykpOworICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwogCiAgICAgaWYg
KCFtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgIC8vIFdlIGRpZG4ndCBoYXZlIHRvIGNyZWF0
ZSBhICJuZXdseSBhbGxvY2F0ZWQiIGJpdG1hcC4gVGhhdCBtZWFucyB3ZSB3ZXJlIGFscmVhZHkg
TWFya2VkCi0gICAgICAgIC8vIHdoZW4gd2UgbGFzdCBzdG9wcGVkIGFsbG9jYXRpb24sIHNvIHJl
dHVybiBhbiBlbXB0eSBmcmVlIGxpc3QgYW5kIHN0YXkgaW4gdGhlIE1hcmtlZCBzdGF0ZS4KKyAg
ICAgICAgLy8gVGhpcyBtZWFucyB3ZSBoYWQgYWxyZWFkeSBleGhhdXN0ZWQgdGhlIGJsb2NrIHdo
ZW4gd2Ugc3RvcHBlZCBhbGxvY2F0aW9uLgogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKICAg
ICB9CiAKQEAgLTM0NSw0MCArMzQ5LDI4IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9y
RWFjaEZyZWVDZWwKICAgICB9CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2Fy
eSgpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJz
aW9uKCkpOwotfQotCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSgp
Ci17Ci0gICAgYmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9j
azo6ZmxpcElmTmVjZXNzYXJ5U2xvdygpCi17Ci0gICAgQVNTRVJUKG5lZWRzRmxpcCgpKTsKLSAg
ICBBU1NFUlQoIXZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7Ci0gICAgY2xl
YXJNYXJrcygpOwotfQotCi12b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdN
YXJraW5nU2xvdygpCit2b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZlcnNp
b24gaGVhcFZlcnNpb24pCiB7CiAgICAgQVNTRVJUKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5p
c01hcmtpbmcoKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKLSAgICBpZiAobmVl
ZHNGbGlwKCkpCi0gICAgICAgIGNsZWFyTWFya3MoKTsKKyAgICBpZiAobmVlZHNGbGlwKGhlYXBW
ZXJzaW9uKSkgeworICAgICAgICBjbGVhck1hcmtzKGhlYXBWZXJzaW9uKTsKKyAgICAgICAgLy8g
VGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3QgaW4gdGhp
cyBibG9jay4KKyAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNr
SXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICB9CiB9CiAKIHZvaWQgTWFy
a2VkQmxvY2s6OmNsZWFyTWFya3MoKQogeworICAgIGNsZWFyTWFya3Modm0oKS0+aGVhcC5vYmpl
Y3RTcGFjZSgpLnZlcnNpb24oKSk7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3Mo
SGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCit7CiAgICAgbV9tYXJrcy5jbGVhckFsbCgpOwogICAg
IGNsZWFySGFzQW55TWFya2VkKCk7Ci0gICAgLy8gVGhpcyB3aWxsIGJlY29tZSB0cnVlIGF0IHRo
ZSBlbmQgb2YgdGhlIG1hcmsgcGhhc2UuIFdlIHNldCBpdCBub3cgdG8KLSAgICAvLyBhdm9pZCBh
biBleHRyYSBwYXNzIHRvIGRvIHNvIGxhdGVyLgotICAgIGhhbmRsZSgpLm1fc3RhdGUgPSBNYXJr
ZWQ7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBtX3ZlcnNpb24gPSB2bSgpLT5o
ZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpOworICAgIG1fdmVyc2lvbiA9IGhlYXBWZXJzaW9u
OwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMzk4LDMxICszOTAsMzggQEAgYm9vbCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc0ZsaXAoKQogICAgIHJldHVybiBtX2Jsb2NrLT5uZWVk
c0ZsaXAoKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxsUmVtb3ZlQmxvY2so
KQorYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkKIHsKLSAgICBmbGlw
SWZOZWNlc3NhcnkoKTsKKyAgICByZXR1cm4gaXNNYXJrZWQodm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLnZlcnNpb24oKSwgcCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29u
c3VtZUZyZWVMaXN0KCkKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5
QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgp
OwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgCi0gICAg
QVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7CisgICAgcmV0dXJuIGlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKK30K
IAotICAgIG1fc3RhdGUgPSBBbGxvY2F0ZWQ7Citib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCit7CisgICAgcmV0dXJuIGlzTWFy
a2VkT3JOZXdseUFsbG9jYXRlZCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBj
ZWxsKTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3Qo
KQoreworICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAi
OiBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QhXG4iKTsKKyAgICBBU1NF
UlQoaXNGcmVlTGlzdGVkKCkpOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7CisgICAgYWxs
b2NhdG9yKCktPnNldElzQWxsb2NhdGVkKHRoaXMsIHRydWUpOwogfQogCiBzaXplX3QgTWFya2Vk
QmxvY2s6Om1hcmtDb3VudCgpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJu
IG1fbWFya3MuY291bnQoKTsKKyAgICByZXR1cm4gbmVlZHNGbGlwKCkgPyAwIDogbV9tYXJrcy5j
b3VudCgpOwogfQogCiBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkoKQogewotICAg
IGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZCAmJiAhYmxv
Y2soKS5oYXNBbnlNYXJrZWQoKSAmJiBtX3dlYWtTZXQuaXNFbXB0eSgpICYmICghbV9uZXdseUFs
bG9jYXRlZCB8fCBtX25ld2x5QWxsb2NhdGVkLT5pc0VtcHR5KCkpOworICAgIHJldHVybiBtX2Fs
bG9jYXRvci0+aXNFbXB0eSh0aGlzKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJIYXNB
bnlNYXJrZWQoKQpAQCAtNDMyLDMzICs0MzEsNjMgQEAgdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJI
YXNBbnlNYXJrZWQoKQogCiB2b2lkIE1hcmtlZEJsb2NrOjpub3RlTWFya2VkU2xvdygpCiB7Ci0g
ICAgaGFuZGxlKCkubV9hbGxvY2F0b3ItPnJldGlyZSgmaGFuZGxlKCkpOworICAgIGhhbmRsZSgp
LmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ1JldGlyZWQoJmhhbmRsZSgp
LCB0cnVlKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgSlNDCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnJlbW92ZUZyb21BbGxvY2F0b3IoKQoreworICAgIGlmICghbV9hbGxvY2F0b3IpCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBtX2FsbG9jYXRvci0+cmVtb3ZlQmxvY2sodGhpcyk7Cit9
CisKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQoIW1fYWxs
b2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4ID0gaW5kZXg7CisgICAgbV9hbGxvY2F0b3IgPSBh
bGxvY2F0b3I7CisgICAgCisgICAgc2l6ZV90IGNlbGxTaXplID0gYWxsb2NhdG9yLT5jZWxsU2l6
ZSgpOworICAgIG1fYXRvbXNQZXJDZWxsID0gKGNlbGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0
b21TaXplOworICAgIG1fZW5kQXRvbSA9IGF0b21zUGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCAr
IDE7CisgICAgCisgICAgbV9hdHRyaWJ1dGVzID0gYWxsb2NhdG9yLT5hdHRyaWJ1dGVzKCk7CiAK
LW5hbWVzcGFjZSBXVEYgeworICAgIGlmIChtX2F0dHJpYnV0ZXMuY2VsbEtpbmQgIT0gSGVhcENl
bGw6OkpTQ2VsbCkKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hdHRyaWJ1dGVzLmRlc3RydWN0
aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pOworICAgIAorICAgIHVuc2lnbmVkIGNlbGxz
UGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gY2VsbFNpemU7CisgICAgZG91
YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24o
KSAqIGNlbGxzUGVyQmxvY2spOworICAgIAorICAgIC8vIFRoZSBtYXJrIGNvdW50IGJpYXMgc2hv
dWxkIGJlIGNvbWZvcnRhYmx5IHdpdGhpbiB0aGlzIHJhbmdlLgorICAgIFJFTEVBU0VfQVNTRVJU
KG1hcmtDb3VudEJpYXMgPiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MTZfdD46Om1pbigpKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA8IDAp
OworICAgIAorICAgIC8vIFRoaXMgbWVhbnMgd2UgaGF2ZW4ndCBtYXJrZWQgYW55dGhpbmcgeWV0
LgorICAgIGJsb2NrKCkubV9iaWFzZWRNYXJrQ291bnQgPSBibG9jaygpLm1fbWFya0NvdW50Qmlh
cyA9IHN0YXRpY19jYXN0PGludDE2X3Q+KG1hcmtDb3VudEJpYXMpOworfQogCi11c2luZyBuYW1l
c3BhY2UgSlNDOwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVGcm9tQWxsb2Nh
dG9yKCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpKTsKKyAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworICAgIAorICAgIG1faW5kZXgg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworICAgIG1fYWxsb2NhdG9yID0g
bnVsbHB0cjsKK30KIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE1hcmtl
ZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUpCitib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBzd2l0Y2ggKGJsb2NrU3RhdGUp
IHsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpOZXc6Ci0gICAgICAgIG91dC5wcmludCgiTmV3Iik7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpGcmVlTGlzdGVkOgotICAg
ICAgICBvdXQucHJpbnQoIkZyZWVMaXN0ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
TWFya2VkQmxvY2s6OkFsbG9jYXRlZDoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvY2F0ZWQiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAg
b3V0LnByaW50KCJNYXJrZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBpc0xpdmUodm0oKS0+aGVhcC5vYmpl
Y3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7Cit9CisKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQoreworICAgIHJldHVybiBpc0xpdmVDZWxsKHZt
KCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIHApOwogfQogCi19IC8vIG5hbWVzcGFj
ZSBXVEYKK30gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIwICs0NCw2IEBA
IGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKIHR5cGVkZWYgdWludHB0cl90IEJpdHM7CiB0eXBlZGVm
IHVpbnQzMl90IEhlYXBWZXJzaW9uOwogCi0vLyBTZXQgdG8gbG9nIHN0YXRlIHRyYW5zaXRpb25z
IG9mIGJsb2Nrcy4KLSNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTlMgMAot
Ci0jaWYgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTlMKLSNkZWZpbmUgSEVBUF9MT0df
QkxPQ0tfU1RBVEVfVFJBTlNJVElPTihoYW5kbGUpIGRvIHsgICAgICAgICAgICBcCi0gICAgICAg
IGRhdGFMb2dGKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICAgICAgIiVzOiVkICVzOiBibG9jayAlcyA9ICVwLCAlZFxuIiwgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgX19GVU5DVElPTl9f
LCAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAjaGFuZGxlLCAmKGhhbmRsZSktPmJs
b2NrKCksIChoYW5kbGUpLT5tX3N0YXRlKTsgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQotI2Vs
c2UKLSNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTihoYW5kbGUpICgodm9p
ZCkwKQotI2VuZGlmCi0KIC8vIEEgbWFya2VkIGJsb2NrIGlzIGEgcGFnZS1hbGlnbmVkIGNvbnRh
aW5lciBmb3IgaGVhcC1hbGxvY2F0ZWQgb2JqZWN0cy4KIC8vIE9iamVjdHMgYXJlIGFsbG9jYXRl
ZCB3aXRoaW4gY2VsbHMgb2YgdGhlIG1hcmtlZCBibG9jay4gRm9yIGEgZ2l2ZW4KIC8vIG1hcmtl
ZCBibG9jaywgYWxsIGNlbGxzIGhhdmUgdGhlIHNhbWUgc2l6ZS4gT2JqZWN0cyBzbWFsbGVyIHRo
YW4gdGhlCkBAIC03Niw4ICs2Miw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIEhhbmRsZTsKIHB1YmxpYzoKLSAgICBlbnVtIEJsb2NrU3RhdGUgOiB1aW50OF90IHsgTmV3
LCBGcmVlTGlzdGVkLCBBbGxvY2F0ZWQsIE1hcmtlZCB9OwotICAgICAgICAKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGF0b21TaXplID0gMTY7IC8vIGJ5dGVzCiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBibG9ja1NpemUgPSAxNiAqIEtCOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tN
YXNrID0gfihibG9ja1NpemUgLSAxKTsgLy8gYmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0
d28uCkBAIC04NiwxMiArNzAsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljX2Fzc2VydCghKE1h
cmtlZEJsb2NrOjphdG9tU2l6ZSAmIChNYXJrZWRCbG9jazo6YXRvbVNpemUgLSAxKSksICJNYXJr
ZWRCbG9jazo6YXRvbVNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4iKTsKICAgICBzdGF0aWNf
YXNzZXJ0KCEoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSAmIChNYXJrZWRCbG9jazo6YmxvY2tTaXpl
IC0gMSkpLCAiTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIp
OwotCisgICAgCiAgICAgc3RydWN0IFZvaWRGdW5jdG9yIHsKICAgICAgICAgdHlwZWRlZiB2b2lk
IFJldHVyblR5cGU7CiAgICAgICAgIHZvaWQgcmV0dXJuVmFsdWUoKSB7IH0KICAgICB9OwotCisg
ICAgCiAgICAgY2xhc3MgQ291bnRGdW5jdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVk
ZWYgc2l6ZV90IFJldHVyblR5cGU7CkBAIC0xMDYsMTAgKzkwLDkgQEAgcHVibGljOgogICAgICAg
ICBtdXRhYmxlIFJldHVyblR5cGUgbV9jb3VudDsKICAgICB9OwogICAgICAgICAKLSAgICBjbGFz
cyBIYW5kbGUgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8SGFuZGxlPiB7CisgICAgY2xh
c3MgSGFuZGxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsKICAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBEb3VibHlM
aW5rZWRMaXN0Tm9kZTxIYW5kbGU+OwogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZy
aWVuZCBzdHJ1Y3QgVmVyaWZ5TWFya2VkOwpAQCAtMTMwLDYgKzExMywxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIFZNKiB2bSgpIGNvbnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAgICAg
ICAgICAgICAKKyAgICAgICAgLy8gU3dlZXBpbmcgZW5zdXJlcyB0aGF0IGRlc3RydWN0b3JzIGdl
dCBjYWxsZWQgYW5kIHJlbW92ZXMgdGhlIGJsb2NrIGZyb20gdGhlIHVuc3dlcHQKKyAgICAgICAg
Ly8gc2V0LiBTd2VlcGluZyB0byBmcmVlIGxpc3QgYWxzbyByZW1vdmVzIHRoZSBibG9jayBmcm9t
IHRoZSBlbXB0eSBzZXQsIGlmIGl0IHdhcyBpbiB0aGF0CisgICAgICAgIC8vIHNldC4gU3dlZXBp
bmcgd2l0aCBTd2VlcE9ubHkgbWF5IGFkZCB0aGlzIGJsb2NrIHRvIHRoZSBlbXB0eSBzZXQsIGlm
IHRoZSBibG9jayBpcyBmb3VuZAorICAgICAgICAvLyB0byBiZSBlbXB0eS4KKyAgICAgICAgLy8K
KyAgICAgICAgLy8gTm90ZSB0aGF0IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBlbXB0
eSBiaXQgcmVmbGVjdHMgcmVhbGl0eS4gSWYgaXQncyBub3Qgc2V0CisgICAgICAgIC8vIGFuZCB0
aGUgYmxvY2sgaXMgZnJlc2hseSBjcmVhdGVkLCB0aGVuIHdlJ2xsIG1ha2UgdGhlIG1pc3Rha2Ug
b2YgcnVubmluZyBkZXN0cnVjdG9ycyBpbgorICAgICAgICAvLyB0aGUgYmxvY2suIElmIGl0J3Mg
bm90IHNldCBhbmQgdGhlIGJsb2NrIGhhcyBub3RoaW5nIG1hcmtlZCwgdGhlbiB3ZSdsbCBtYWtl
IHRoZQorICAgICAgICAvLyBtaXN0YWtlIG9mIG1ha2luZyBhIHBvcCBmcmVlbGlzdCByYXRoZXIg
dGhhbiBhIGJ1bXAgZnJlZWxpc3QuCiAgICAgICAgIGVudW0gU3dlZXBNb2RlIHsgU3dlZXBPbmx5
LCBTd2VlcFRvRnJlZUxpc3QgfTsKICAgICAgICAgRnJlZUxpc3Qgc3dlZXAoU3dlZXBNb2RlID0g
U3dlZXBPbmx5KTsKICAgICAgICAgCkBAIC0xNTMsOCArMTQ1LDYgQEAgcHVibGljOgogICAgICAg
ICAvLyBhbmQgd2FzIHN1Y2Nlc3NmdWxseSBjbGVhcmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAg
ICAgICAgIGJvb2wgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwogICAgICAgICAgICAgCi0gICAgICAg
IHZvaWQgZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgc2l6
ZV90IGNlbGxTaXplKCk7CiAgICAgICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29u
c3Q7CkBAIC0xNjQsOSArMTU0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG1hcmtDb3Vu
dCgpOwogICAgICAgICBzaXplX3Qgc2l6ZSgpOwogICAgICAgICAgICAgCisgICAgICAgIGlubGlu
ZSBib29sIGlzTGl2ZShIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgaW5s
aW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOworCiAgICAgICAg
IGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChj
b25zdCB2b2lkKik7CisKICAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29u
c3QgSGVhcENlbGwqKTsKKyAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVh
cFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBp
c05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBzZXROZXdseUFsbG9j
YXRlZChjb25zdCB2b2lkKik7CkBAIC0xNzQsMzEgKzE2OSwyNSBAQCBwdWJsaWM6CiAgICAgICAg
IAogICAgICAgICBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFt
X25ld2x5QWxsb2NhdGVkOyB9CiAgICAgICAgICAgICAKLSAgICAgICAgYm9vbCBpc0FsbG9jYXRl
ZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wg
aXNGcmVlTGlzdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgbmVlZHNTd2VlcGluZygpIGNvbnN0
OwotICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwotCiAgICAgICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3Rv
ciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVz
IGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0
b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRp
b25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRD
ZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgICAgIAogICAgICAgICBib29sIG5lZWRzRmxp
cCgpOwotICAgICAgICAgICAgCi0gICAgICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFy
a2luZyhIZWFwVmVyc2lvbik7Ci0gICAgICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJz
aW9uKTsKLSAgICAgICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIAorICAg
ICAgICAKICAgICAgICAgdm9pZCBhc3NlcnRGbGlwcGVkKCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgYm9vbCBpc09uQmxvY2tzVG9Td2VlcCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPbkJsb2Nrc1Rv
U3dlZXA7IH0KLSAgICAgICAgdm9pZCBzZXRJc09uQmxvY2tzVG9Td2VlcChib29sIHZhbHVlKSB7
IG1faXNPbkJsb2Nrc1RvU3dlZXAgPSB2YWx1ZTsgfQorICAgICAgICBib29sIGlzRnJlZUxpc3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGcmVlTGlzdGVkOyB9CisgICAgICAgIAorICAgICAgICBz
aXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAgIAorICAgICAg
ICB2b2lkIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgZGlk
QWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGluZGV4KTsKKyAgICAgICAg
dm9pZCBkaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAgICAgICAgIAotICAgICAgICBCbG9ja1N0
YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQotICAgICAgICAgICAgCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgSGFuZGxlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3Qg
Y2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmLCB2b2lkKik7CisgICAgICAgIEhh
bmRsZShIZWFwJiwgdm9pZCopOwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERlc3Ry
dWN0aW9uTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1v
ZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKQEAgLTIwNiwzNSArMTk1LDUwIEBAIHB1YmxpYzoK
ICAgICAgICAgZW51bSBTY3JpYmJsZU1vZGUgeyBEb250U2NyaWJibGUsIFNjcmliYmxlIH07CiAg
ICAgICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1v
ZGU+Ci0gICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGUo
U3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxl
Y3RFbXB0eU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgICAgIAorICAgICAg
ICBlbnVtIEVtcHR5TW9kZSB7IElzRW1wdHksIE5vdEVtcHR5IH07CisgICAgICAgIAorICAgICAg
ICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgorICAg
ICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9k
ZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAogICAgICAgICBlbnVtIE5ld2x5QWxsb2NhdGVkTW9k
ZSB7IEhhc05ld2x5QWxsb2NhdGVkLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkIH07Ci0gICAg
ICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBEZXN0cnVj
dGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICAKKyAg
ICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwg
TmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFN3
ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICAKKyAgICAgICAgdGVtcGxh
dGU8RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBO
ZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0Rmxp
cE1vZGUoKTsKKyAgICAgICAgCisgICAgICAgIGVudW0gRmxpcE1vZGUgeyBOZWVkc0ZsaXAsIERv
ZXNOb3ROZWVkRmxpcCB9OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBT
d2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1v
ZGUsIEZsaXBNb2RlPgogICAgICAgICBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVwKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICAgICAgdm9pZCBm
b3JFYWNoRnJlZUNlbGwoY29uc3QgRnJlZUxpc3QmLCBjb25zdCBGdW5jJik7Ci0gICAgICAgICAg
ICAKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIAog
ICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX3ByZXY7CiAgICAgICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIG1fbmV4dDsKICAgICAgICAgICAgIAotICAgICAgICBzaXplX3QgbV9hdG9tc1Bl
ckNlbGw7Ci0gICAgICAgIHNpemVfdCBtX2VuZEF0b207IC8vIFRoaXMgaXMgYSBmdXp6eSBlbmQu
IEFsd2F5cyB0ZXN0IGZvciA8IG1fZW5kQXRvbS4KKyAgICAgICAgc2l6ZV90IG1fYXRvbXNQZXJD
ZWxsIHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OworICAgICAgICBzaXpl
X3QgbV9lbmRBdG9tIHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OyAvLyBU
aGlzIGlzIGEgZnV6enkgZW5kLiBBbHdheXMgdGVzdCBmb3IgPCBtX2VuZEF0b20uCiAgICAgICAg
ICAgICAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+
PiBtX25ld2x5QWxsb2NhdGVkOwogICAgICAgICAgICAgCiAgICAgICAgIEFsbG9jYXRvckF0dHJp
YnV0ZXMgbV9hdHRyaWJ1dGVzOwotICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7Ci0gICAgICAg
IGJvb2wgbV9pc09uQmxvY2tzVG9Td2VlcCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9pc0Zy
ZWVMaXN0ZWQgeyBmYWxzZSB9OwogICAgICAgICAgICAgCi0gICAgICAgIE1hcmtlZEFsbG9jYXRv
ciogbV9hbGxvY2F0b3I7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3IgeyBu
dWxscHRyIH07CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsKICAgICAgICAgICAg
IAotICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jazsKKyAgICAgICAgTWFya2VkQmxvY2sqIG1f
YmxvY2sgeyBudWxscHRyIH07CiAgICAgfTsKICAgICAgICAgCi0gICAgc3RhdGljIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNl
bGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7CisgICAgc3RhdGljIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJik7CiAgICAgICAgIAogICAgIEhhbmRsZSYgaGFu
ZGxlKCk7CiAgICAgICAgIApAQCAtMjQ4LDM0ICsyNTIsMzUgQEAgcHVibGljOgogICAgIHNpemVf
dCBtYXJrQ291bnQoKTsKIAogICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOworICAgIGJv
b2wgaXNNYXJrZWQoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKKyAgICBib29sIGlzTWFya2Vk
Q29uY3VycmVudGx5KEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7CiAgICAgYm9vbCB0ZXN0QW5k
U2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgCiAgICAgYm9vbCBpc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFs
bG9jYXRlZChIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKICAgICAKLSAgICBib29sIGlz
TWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwot
CiAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgIHZvaWQgY2xlYXJNYXJrZWQoY29u
c3Qgdm9pZCopOwotICAgICAgICAKKyAgICAKICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAgICBj
b25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7Ci0KKyAgICAKICAg
ICBib29sIGhhc0FueU1hcmtlZCgpIGNvbnN0OwogICAgIHZvaWQgbm90ZU1hcmtlZCgpOwogICAg
ICAgICAKICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7Ci0KKyAgICAKICAgICBib29sIG5lZWRzRmxp
cChIZWFwVmVyc2lvbik7CiAgICAgYm9vbCBuZWVkc0ZsaXAoKTsKLSAgICAgICAgCi0gICAgdm9p
ZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZs
aXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsK
KyAgICAKKyAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKTsKICAgICAgICAgCiAgICAg
dm9pZCBhc3NlcnRGbGlwcGVkKCk7CiAgICAgICAgIAogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNEZXN0cnVjdGlvbjsgfQotICAgICAgICAKKyAgICAK
KyAgICBpbmxpbmUgdm9pZCByZXNldFZlcnNpb24oKTsKKyAgICAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKIApAQCAt
Mjg0LDkgKzI4OSw5IEBAIHByaXZhdGU6CiAgICAgTWFya2VkQmxvY2soVk0mLCBIYW5kbGUmKTsK
ICAgICBBdG9tKiBhdG9tcygpOwogICAgICAgICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1
cmluZ01hcmtpbmdTbG93KCk7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlTbG93KCk7CisgICAg
dm9pZCBhYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJNYXJrcygp
OworICAgIHZvaWQgY2xlYXJNYXJrcyhIZWFwVmVyc2lvbik7CiAgICAgdm9pZCBjbGVhckhhc0Fu
eU1hcmtlZCgpOwogICAgIAogICAgIHZvaWQgbm90ZU1hcmtlZFNsb3coKTsKQEAgLTQ2OSw0MCAr
NDc0LDEzIEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpuZWVkc0ZsaXAoSGVhcFYKICAgICBy
ZXR1cm4gaGVhcFZlcnNpb24gIT0gbV92ZXJzaW9uOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRC
bG9jazo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQoraW5saW5lIHZv
aWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewog
ICAgIGlmIChVTkxJS0VMWShuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKSkKLSAgICAgICAgZmxpcElm
TmVjZXNzYXJ5U2xvdygpOwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVj
ZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBpZiAo
VU5MSUtFTFkobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkpCi0gICAgICAgIGZsaXBJZk5lY2Vzc2Fy
eUR1cmluZ01hcmtpbmdTbG93KCk7CisgICAgICAgIGFib3V0VG9NYXJrU2xvdyhoZWFwVmVyc2lv
bik7CiAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsK
LSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7Ci19Ci0KLWlubGluZSB2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVh
cFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2soKS5mbGlwSWZOZWNlc3NhcnlEdXJp
bmdNYXJraW5nKGhlYXBWZXJzaW9uKTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6ZmxpcEZvckVkZW5Db2xsZWN0aW9uKCkKLXsKLSAgICBhc3NlcnRGbGlwcGVkKCk7Ci0g
ICAgICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAg
Ci0gICAgQVNTRVJUKG1fc3RhdGUgIT0gTmV3ICYmIG1fc3RhdGUgIT0gRnJlZUxpc3RlZCk7Ci0g
ICAgCi0gICAgbV9zdGF0ZSA9IE1hcmtlZDsKLX0KLQogI2lmIEFTU0VSVF9ESVNBQkxFRAogaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OmFzc2VydEZsaXBwZWQoKQogewpAQCAtNTE0LDkgKzQ5Miwx
NiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjphc3NlcnRGCiAgICAgYmxvY2so
KS5hc3NlcnRGbGlwcGVkKCk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtl
ZChjb25zdCB2b2lkKiBwKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKEhlYXBW
ZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKiBwKQogewotICAgIGFzc2VydEZsaXBwZWQo
KTsKKyAgICByZXR1cm4gbmVlZHNGbGlwKGhlYXBWZXJzaW9uKSA/IGZhbHNlIDogbV9tYXJrcy5n
ZXQoYXRvbU51bWJlcihwKSk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtl
ZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKK3sK
KyAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVt
YmVyKHApKTsKIH0KIApAQCAtNTUwLDQzICs1MzUsMTQgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6Y2xlYXJOZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBD
ZWxsKiBjZWxsKQotewotICAgIEFTU0VSVChtX3N0YXRlID09IE1hcmtlZCk7Ci0gICAgcmV0dXJu
IG1fYmxvY2stPmlzTWFya2VkKGNlbGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlB
bGxvY2F0ZWQoY2VsbCkpOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNp
b24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIEFTU0VSVChtX2hhbmRsZS5tX3N0YXRl
ID09IE1hcmtlZCk7Ci0gICAgcmV0dXJuIGlzTWFya2VkKGNlbGwpIHx8IChtX2hhbmRsZS5tX25l
d2x5QWxsb2NhdGVkICYmIG1faGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOworICAgIHJl
dHVybiBtX2Jsb2NrLT5pc01hcmtlZCh2ZXJzaW9uLCBjZWxsKSB8fCAobV9uZXdseUFsbG9jYXRl
ZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBj
b25zdCBIZWFwQ2VsbCogY2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwp
CiB7Ci0gICAgaWYgKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gaXNNYXJrZWQoY2VsbCk7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCogY2VsbCkKLXsKLSAgICBhc3NlcnRG
bGlwcGVkKCk7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBBbGxvY2F0ZWQ6Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAgIHJldHVybiBp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7Ci0KLSAgICBjYXNlIE5ldzoKLSAgICBjYXNl
IEZyZWVMaXN0ZWQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNNYXJrZWQodmVyc2lvbiwgY2Vs
bCkgfHwgKG1faGFuZGxlLm1fbmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXdseUFsbG9j
YXRlZChjZWxsKSk7CiB9CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qg
dm9pZCogcCkKQEAgLTYwMywxMyArNTU5LDYgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omlz
QXRvbShjb25zdCB2bwogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCi17Ci0gICAgaWYgKCFtX2Js
b2NrLT5pc0F0b20ocCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNMaXZl
KHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rvcj4KIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6
Zm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKQEAgLTYyMiw2MiArNTcxLDYg
QEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZAogICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rv
cj4KLWlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExp
dmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7
Ci0gICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKLSAgICBm
b3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1Bl
ckNlbGwpIHsKLSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxI
ZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKCFpc0xpdmUoY2Vs
bCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBr
aW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpEb25lOwotICAgIH0KLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250
aW51ZTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgSXRlcmF0aW9u
U3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhlYXBDZWxsOjpLaW5k
IGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IGZpcnN0
QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIEhl
YXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+
YXRvbXMoKVtpXSk7Ci0gICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0
dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAg
IH0KLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLX0KLQotaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNTd2VlcGluZygpIGNvbnN0Ci17Ci0gICAgY29u
c3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwot
ICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNBbGxvY2F0ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2Vk
QmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9z
dGF0ZSA9PSBBbGxvY2F0ZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTWFya2VkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUq
Pih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2Vk
OwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0ZWQoKSBj
b25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlw
SWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBGcmVlTGlzdGVkOwotfQotCiBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aGFzQW55TWFya2VkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9iaWFzZWRNYXJrQ291bnQgIT0gbV9tYXJrQ291bnRCaWFzOwpAQCAtNzExLDggKzYwNCw2
IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6TWFya2UKICAgICB0eXBlZGVm
IE1hcmtlZEJsb2NrSGFzaCBIYXNoOwogfTsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUpOwotCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAogI2VuZGlmIC8vIE1hcmtlZEJsb2NrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIK
KyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0
IEhlYXBDZWxsKiBjZWxsKQoreworICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOworICAgIAor
ICAgIGlmIChVTkxJS0VMWShoYXNBbnlOZXdseUFsbG9jYXRlZCgpKSkgeworICAgICAgICBpZiAo
aXNOZXdseUFsbG9jYXRlZChjZWxsKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICAKKyAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOworICAgIAorICAg
IGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIAorICAgIGlmIChibG9jay5uZWVkc0ZsaXAodmVyc2lvbikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKK30KKworaW5saW5l
IGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiB2ZXJzaW9u
LCBjb25zdCB2b2lkKiBwKQoreworICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzTGl2ZSh2ZXJzaW9uLCBzdGF0aWNfY2FzdDxj
b25zdCBIZWFwQ2VsbCo+KHApKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Citp
bmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2Vs
bChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBt
X2F0dHJpYnV0ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBp
IDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CisgICAgICAgIEhlYXBDZWxsKiBj
ZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtp
XSk7CisgICAgICAgIGlmICghaXNMaXZlKGNlbGwpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25l
KQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKKyAgICB9CisgICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPgoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpm
b3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBIZWFwQ2VsbDo6
S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOworICAgIGZvciAoc2l6ZV90IGkgPSBm
aXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgeworICAgICAg
ICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxv
Y2stPmF0b21zKClbaV0pOworICAgICAgICBpZiAoaXNMaXZlKGNlbGwpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsK
KyAgICB9CisgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisKK2lubGlu
ZSB2b2lkIE1hcmtlZEJsb2NrOjpyZXNldFZlcnNpb24oKQoreworICAgIG1fdmVyc2lvbiA9IE1h
cmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIw
NjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBl
ci5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgog
I2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCkBAIC0xOTUsNiArMTk2LDIyIEBAIE1hcmtlZFNw
YWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CisgICAgCisgICAg
TWFya2VkQWxsb2NhdG9yKiBwcmV2aW91cyA9IG51bGxwdHI7CisgICAgZm9yRWFjaFN1YnNwYWNl
KAorICAgICAgICBbJl0gKFN1YnNwYWNlJiBzdWJzcGFjZSwgQWxsb2NhdG9yQXR0cmlidXRlcykg
LT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGZvciAoTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3IgOiBzdWJzcGFjZS5iYWdPZkFsbG9jYXRvcnMpIHsKKyAgICAgICAgICAgICAgICAv
LyBXZSBjYW4gc2V0IHRoaXMgaW4gYW55IG9yZGVyLiBUaGUgcG9pbnQgaXMganVzdCB0aGF0IHdl
IHdhbnQgdG8gYmUgYWJsZSB0bworICAgICAgICAgICAgICAgIC8vIGN1cnNvciBvdmVyIGFsbG9j
YXRvcnMuCisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLT5zZXROZXh0QWxsb2NhdG9yKHByZXZp
b3VzKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGFsbG9j
YXRvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAgIG1fZmlyc3RBbGxvY2F0
b3IgPSBwcmV2aW91czsKKyAgICBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IHByZXZp
b3VzOwogfQogCiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKCkKQEAgLTIyMiwxNSArMjM5LDIx
IEBAIHZvaWQgTWFya2VkU3BhY2U6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIAogdm9pZCogTWFy
a2VkU3BhY2U6OmFsbG9jYXRlKFN1YnNwYWNlJiBzdWJzcGFjZSwgc2l6ZV90IGJ5dGVzKQogewot
ICAgIGlmIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFj
ZSwgYnl0ZXMpKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOworICAgIGlm
IChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0
ZXMpKSB7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAg
ICAgICAgLy9kYXRhTG9nKCJBbGxvY2F0ZWQgIiwgUmF3UG9pbnRlcihyZXN1bHQpLCAiXG4iKTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgcmV0dXJuIGFsbG9jYXRlTGFyZ2Uo
c3Vic3BhY2UsIGJ5dGVzKTsKIH0KIAogdm9pZCogTWFya2VkU3BhY2U6OnRyeUFsbG9jYXRlKFN1
YnNwYWNlJiBzdWJzcGFjZSwgc2l6ZV90IGJ5dGVzKQogewotICAgIGlmIChNYXJrZWRBbGxvY2F0
b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0ZXMpKQotICAgICAgICBy
ZXR1cm4gYWxsb2NhdG9yLT50cnlBbGxvY2F0ZSgpOworICAgIGlmIChNYXJrZWRBbGxvY2F0b3Iq
IGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0ZXMpKSB7CisgICAgICAgIHZv
aWQqIHJlc3VsdCA9IGFsbG9jYXRvci0+dHJ5QWxsb2NhdGUoKTsKKyAgICAgICAgLy9kYXRhTG9n
KCJUcnktYWxsb2NhdGVkICIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQogICAgIHJldHVybiB0cnlBbGxvY2F0ZUxhcmdlKHN1YnNwYWNl
LCBieXRlcyk7CiB9CiAKQEAgLTI1OSw5ICsyODIsMTAgQEAgdm9pZCogTWFya2VkU3BhY2U6OnRy
eUFsbG9jYXRlTGFyZ2UoU3Vicwogdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXAoKQogewogICAgIG1f
aGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAgICBmb3JFYWNoQmxvY2so
Ci0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAg
IGJsb2NrLT5zd2VlcCgpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFy
a2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAg
ICBhbGxvY2F0b3Iuc3dlZXAoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOwogICAgICAgICB9KTsKIH0KIApAQCAtMjg0LDI4ICszMDgsMTYgQEAgdm9pZCBN
YXJrZWRTcGFjZTo6c3dlZXBMYXJnZUFsbG9jYXRpb25zKAogICAgIG1fbGFyZ2VBbGxvY2F0aW9u
c051cnNlcnlPZmZzZXQgPSBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOwogfQogCi12b2lkIE1h
cmtlZFNwYWNlOjp6b21iaWZ5U3dlZXAoKQotewotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQot
ICAgICAgICBkYXRhTG9nKCJab21iaWZ5aW5nIHN3ZWVwLi4uIik7Ci0gICAgbV9oZWFwLT5zd2Vl
cGVyKCktPndpbGxGaW5pc2hTd2VlcGluZygpOwotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAg
WyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgaWYgKGJsb2Nr
LT5uZWVkc1N3ZWVwaW5nKCkpCi0gICAgICAgICAgICAgICAgYmxvY2stPnN3ZWVwKCk7Ci0gICAg
ICAgIH0pOwotfQotCi12b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMoKQordm9pZCBN
YXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewogICAgIGZvckVhY2hBbGxvY2F0
b3IoCiAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlv
blN0YXR1cyB7Ci0gICAgICAgICAgICBhbGxvY2F0b3IucmVzZXQoKTsKKyAgICAgICAgICAgIGFs
bG9jYXRvci5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOwogCi0gICAgbV9ibG9ja3NXaXRoTmV3
T2JqZWN0cy5jbGVhcigpOwogICAgIG1fYWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9uZXdBY3Rp
dmVXZWFrU2V0cyk7CisgICAgCiAgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygp
ID09IEVkZW5Db2xsZWN0aW9uKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zm
c2V0Rm9yU3dlZXAgPSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UK
QEAgLTQxMCwxMSArNDIyLDExIEBAIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVPclNocmlua0Jsb2Nr
KE1hcmsKIAogdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKIHsKLSAgICBmb3JFYWNoQmxvY2so
Ci0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAg
IGZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAg
ICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewor
ICAgICAgICAgICAgYWxsb2NhdG9yLnNocmluaygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOwotICAgIC8vIEZvciBMYXJnZUFsbG9j
YXRpb25zLCB3ZSBkbyB0aGUgbW9yYWwgZXF1aXZhbGVudCBpbiBzd2VlcExhcmdlQWxsb2NhdGlv
bnMoKS4KIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCkBAIC00
MjksNTcgKzQ0MSw2MSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29s
bGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgbV9s
YXJnZUFsbG9jYXRpb25zW2ldLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECi0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWJsb2NrLT5jbGVhck5ld2x5QWxs
b2NhdGVkKCkpOwotICAgICAgICB9KTsKLQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxv
Y2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQotICAgICAgICBBU1NFUlQoIWFsbG9jYXRpb24t
PmlzTmV3bHlBbGxvY2F0ZWQoKSk7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfQotCi0j
aWZuZGVmIE5ERUJVRyAKLXN0cnVjdCBWZXJpZnlNYXJrZWQgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1
bmN0b3IgeyAKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sp
IGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBzd2l0Y2ggKGJsb2NrLT5tX3N0YXRlKSB7Ci0gICAgICAgIGNh
c2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IH0KKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisg
ICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChibG9jaywgIWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICBmb3IgKExhcmdlQWxsb2NhdGlv
biogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKKyAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQoYWxsb2NhdGlvbiwgIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7CiAgICAg
fQotfTsgCi0jZW5kaWYgCit9CiAKLXZvaWQgTWFya2VkU3BhY2U6OmZsaXAoKQordm9pZCBNYXJr
ZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblBy
b2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBt
X2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT5mbGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbiA9IG1fdmVyc2lvbiArIDE7
Ci0gICAgICAgIGlmIChVTkxJS0VMWShuZXh0VmVyc2lvbiA9PSBpbml0aWFsVmVyc2lvbikpIHsK
LSAgICAgICAgICAgIC8vIE9oIG5vISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5kbGUgdGhp
cyBieSBmbGlwcGluZyBhbGwgYmxvY2tzLiBUaGlzIGhhcHBlbnMKLSAgICAgICAgICAgIC8vIHN1
cGVyIHJhcmVseSwgcHJvYmFibHkgbmV2ZXIgZm9yIG1vc3QgdXNlcnMuCisgICAgaWYgKG1faGVh
cC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgICAgIGZv
ckVhY2hBbGxvY2F0b3IoCisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2Nh
dG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5iZWdp
bk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgbV92ZXJz
aW9uID0gbmV4dFZlcnNpb24obV92ZXJzaW9uKTsKKyAgICAgICAgCisgICAgICAgIGlmIChVTkxJ
S0VMWShtX3ZlcnNpb24gPT0gaW5pdGlhbFZlcnNpb24pKSB7CisgICAgICAgICAgICAvLyBPaCBu
byEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgc2V0dGluZyBhbGwgYmxv
Y2sgdmVyc2lvbnMgdG8gbnVsbC4KICAgICAgICAgICAgIGZvckVhY2hCbG9jaygKICAgICAgICAg
ICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgewotICAgICAgICAgICAg
ICAgICAgICBoYW5kbGUtPmZsaXBJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgICAgICAgICBo
YW5kbGUtPmJsb2NrKCkucmVzZXRWZXJzaW9uKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KLSAgICAgICAgbV92ZXJzaW9uID0gbmV4dFZlcnNpb247IC8vIEhlbmNlZm9ydGgsIGZs
aXBJZk5lY2Vzc2FyeSgpIHdpbGwgdHJpZ2dlciBvbiBhbGwgYmxvY2tzLgorICAgICAgICAKICAg
ICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlv
bnMpCiAgICAgICAgICAgICBhbGxvY2F0aW9uLT5mbGlwKCk7CiAgICAgfQogCi0jaWZuZGVmIE5E
RUJVRwotICAgIFZlcmlmeU1hcmtlZCB2ZXJpZnlGdW5jdG9yOwotICAgIGZvckVhY2hCbG9jayh2
ZXJpZnlGdW5jdG9yKTsKLSNlbmRpZgorICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2spIHsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+aXNG
cmVlTGlzdGVkKCkpOworICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIG1faXNNYXJr
aW5nID0gdHJ1ZTsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6ZW5kTWFya2luZygpCit7CisgICAg
Zm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
cikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5lbmRNYXJraW5n
KCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAg
ICAgfSk7CisgICAgCisgICAgbV9pc01hcmtpbmcgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJrZWRT
cGFjZTo6d2lsbFN0YXJ0SXRlcmF0aW5nKCkKQEAgLTU0MCwxOSArNTU2LDY2IEBAIHZvaWQgTWFy
a2VkU3BhY2U6OmFkZEFjdGl2ZVdlYWtTZXQoV2Vha1MKIAogdm9pZCBNYXJrZWRTcGFjZTo6ZGlk
QWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7CisgICAgLy8gV0FSTklORzog
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGJsb2NrIGlzIGZ1bGx5IGluaXRpYWxpemVk
LiBUaGUgYmxvY2sgd2lsbCBub3Qga25vdworICAgIC8vIGl0cyBjZWxsU2l6ZSgpIG9yIGF0dHJp
YnV0ZXMoKS4gVGhlIGxhdHRlciBpbXBsaWVzIHRoYXQgeW91IGNhbid0IGFzayB0aGluZ3MgbGlr
ZQorICAgIC8vIG5lZWRzRGVzdHJ1Y3Rpb24oKS4KICAgICBtX2NhcGFjaXR5ICs9IE1hcmtlZEJs
b2NrOjpibG9ja1NpemU7CiAgICAgbV9ibG9ja3MuYWRkKCZibG9jay0+YmxvY2soKSk7CiB9CiAK
IHZvaWQgTWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaykKIHsKLSAgICBibG9jay0+YXNzZXJ0RmxpcHBlZCgpOwotICAgIG1fYmxvY2tzV2l0
aE5ld09iamVjdHMuYXBwZW5kKGJsb2NrKTsKLSAgICAKICAgICBpZiAoYmxvY2stPndlYWtTZXQo
KS5pc09uTGlzdCgpKSB7CiAgICAgICAgIGJsb2NrLT53ZWFrU2V0KCkucmVtb3ZlKCk7CiAgICAg
ICAgIG1fbmV3QWN0aXZlV2Vha1NldHMuYXBwZW5kKCZibG9jay0+d2Vha1NldCgpKTsKICAgICB9
CiB9CiAKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZFNwYWNlOjpmaW5kRW1wdHlCbG9jaygp
Cit7CisgICAgZm9yICg7IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyBtX2FsbG9jYXRv
ckZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5uZXh0
QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0g
bV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPmZpbmRFbXB0eUJsb2NrKCkpCisgICAgICAg
ICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lk
IE1hcmtlZFNwYWNlOjpzbmFwc2hvdFVuc3dlcHQoKQoreworICAgIGlmIChtX2hlYXAtPm9wZXJh
dGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxs
b2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4g
SXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RVbnN3
ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9u
U3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAg
IGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxs
b2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5z
bmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgfSk7CisgICAgfQorfQor
Cit2b2lkIE1hcmtlZFNwYWNlOjphc3NlcnROb1Vuc3dlcHQoKQoreworICAgIGlmIChBU1NFUlRf
RElTQUJMRUQpCisgICAgICAgIHJldHVybjsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAg
ICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewor
ICAgICAgICAgICAgYWxsb2NhdG9yLmFzc2VydE5vVW5zd2VwdCgpOworICAgICAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworfQorCit2b2lkIE1h
cmtlZFNwYWNlOjpkdW1wQml0cyhQcmludFN0cmVhbSYgb3V0KQoreworICAgIGZvckVhY2hBbGxv
Y2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJh
dGlvblN0YXR1cyB7CisgICAgICAgICAgICBvdXQucHJpbnQoIkJpdHMgZm9yICIsIGFsbG9jYXRv
ciwgIjpcbiIpOworICAgICAgICAgICAgYWxsb2NhdG9yLmR1bXBCaXRzKG91dCk7CisgICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSwxNiBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG51bVNpemVDbGFzc2VzID0gbGFyZ2VDdXRvZmYg
LyBzaXplU3RlcDsKICAgICAKLSAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZl
cnNpb24gPSA0MjsgIC8vIFRoaXMgY2FuIGJlIGFueSB2YWx1ZSwgaW5jbHVkaW5nIHJhbmRvbSBn
YXJiYWdlLCBzbyBsb25nIGFzIGl0J3MgY29uc2lzdGVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRo
ZSBwcm9jZXNzLgorICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBudWxsVmVyc2lvbiA9IDA7
IC8vIFRoZSB2ZXJzaW9uIG9mIGZyZXNobHkgYWxsb2NhdGVkIGJsb2Nrcy4KKyAgICBzdGF0aWMg
Y29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAxOyAvLyBUaGUgdmVyc2lvbiB0aGF0
IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4KKyAgICAKKyAgICBIZWFwVmVyc2lvbiBuZXh0VmVy
c2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQorICAgIHsKKyAgICAgICAgdmVyc2lvbisrOworICAg
ICAgICBpZiAodmVyc2lvbiA9PSBudWxsVmVyc2lvbikKKyAgICAgICAgICAgIHZlcnNpb24rKzsK
KyAgICAgICAgcmV0dXJuIHZlcnNpb247CisgICAgfQogICAgIAogICAgIHN0YXRpYyBzaXplX3Qg
c2l6ZUNsYXNzVG9JbmRleChzaXplX3Qgc2l6ZSkKICAgICB7CkBAIC0xMTQsNyArMTIzLDcgQEAg
cHVibGljOgogICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRob3V0RGVzdHJ1Y3Rv
cigpIHsgcmV0dXJuIG1fbm9ybWFsU3BhY2U7IH0KICAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JB
dXhpbGlhcnlEYXRhKCkgeyByZXR1cm4gbV9hdXhpbGlhcnlTcGFjZTsgfQogICAgIAotICAgIHZv
aWQgcmVzZXRBbGxvY2F0b3JzKCk7CisgICAgdm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwog
CiAgICAgdm9pZCB2aXNpdFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYpOwogICAgIHZvaWQgcmVh
cFdlYWtTZXRzKCk7CkBAIC0xNDQsMTEgKzE1MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRD
b25zdW1lRnJlZUxpc3QoTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIHZvaWQgZGlkQWxsb2Nh
dGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKIAotICAgIHZvaWQgZmxpcCgpOworICAg
IHZvaWQgYmVnaW5NYXJraW5nKCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBz
bmFwc2hvdFVuc3dlcHQoKTsKICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgICB2
b2lkIHN3ZWVwKCk7CiAgICAgdm9pZCBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKTsKLSAgICB2b2lk
IHpvbWJpZnlTd2VlcCgpOworICAgIHZvaWQgYXNzZXJ0Tm9VbnN3ZXB0KCk7CiAgICAgc2l6ZV90
IG9iamVjdENvdW50KCk7CiAgICAgc2l6ZV90IHNpemUoKTsKICAgICBzaXplX3QgY2FwYWNpdHko
KTsKQEAgLTE1Nyw4ICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgSGVhcFZlcnNpb24gdmVy
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogCi0gICAgY29uc3QgVmVjdG9yPE1h
cmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tzV2l0aE5ld09iamVjdHMoKSBjb25zdCB7IHJldHVy
biBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOyB9Ci0gICAgCiAgICAgY29uc3QgVmVjdG9yPExhcmdl
QWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFs
bG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OyB9CiAgICAg
dW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IH0KQEAg
LTE2OSwxMyArMTc4LDE2IEBAIHB1YmxpYzoKICAgICBMYXJnZUFsbG9jYXRpb24qKiBsYXJnZUFs
bG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxs
b2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZDsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2Nh
dGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2Nh
dGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemU7IH0KICAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3Iq
IGZpcnN0QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdEFsbG9jYXRvcjsgfQorICAg
IE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IH0KKyAgICAKKyAgICBNYXJrZWRC
bG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9jaygpOworICAgIAogICAgIC8vIFdoZW4gdGhpcyBp
cyB0cnVlIGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSBmbGlwcGVkIGJ1dCB0aGUgbWFyayBiaXRzIGhh
dmVuJ3QgY29udmVyZ2VkIHlldC4KICAgICBib29sIGlzTWFya2luZygpIGNvbnN0IHsgcmV0dXJu
IG1faXNNYXJraW5nOyB9CiAgICAgCi0gICAgLy8gRklYTUU6IEFmdGVyIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1ODEsIE1hcmtlZFNwYWNlIHdpbGwgY29udHJv
bCB0aGlzCi0gICAgLy8gZmxhZyBkaXJlY3RseS4KLSAgICB2b2lkIHNldElzTWFya2luZyhib29s
IHZhbHVlKSB7IG1faXNNYXJraW5nID0gdmFsdWU7IH0KLQorICAgIHZvaWQgZHVtcEJpdHMoUHJp
bnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAt
MTkwLDggKzIwMiw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplU3Vic3Bh
Y2UoU3Vic3BhY2UmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9y
RWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVu
Y3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZvckVh
Y2hTdWJzcGFjZShjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBhZGRBY3RpdmVXZWFr
U2V0KFdlYWtTZXQqKTsKIApAQCAtMjA1LDcgKzIxNyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9OwogICAgIE1hcmtl
ZEJsb2NrU2V0IG1fYmxvY2tzOwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9i
bG9ja3NXaXRoTmV3T2JqZWN0czsKICAgICBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4gbV9sYXJn
ZUFsbG9jYXRpb25zOwogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZz
ZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0Nv
bGxlY3Rpb24geyAwIH07CkBAIC0yMTUsNDAgKzIyNiwxMSBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSB7IDAgfTsKICAgICBT
ZW50aW5lbExpbmtlZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+
IG1fYWN0aXZlV2Vha1NldHM7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2lj
UmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX25ld0FjdGl2ZVdlYWtTZXRzOworICAgIAorICAg
IE1hcmtlZEFsbG9jYXRvciogbV9maXJzdEFsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICBNYXJr
ZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0ciB9Owog
fTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6
OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQotewotICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKLSAgICBCbG9ja0l0ZXJhdG9yIGVu
ZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1f
YmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoKCpp
dCktPmhhbmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6
OkRvbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoTGFyZ2VBbGxvY2F0
aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7Ci0gICAgICAgIGlmIChhbGxv
Y2F0aW9uLT5pc0xpdmUoKSkgewotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+
Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0
YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpm
b3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKLXsKLSAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQg
PSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Js
b2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQp
LT5oYW5kbGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpE
b25lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlv
biogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewotICAgICAgICBpZiAoIWFsbG9j
YXRpb24tPmlzTGl2ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5j
ZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0K
LQogaW5saW5lIE1hcmtlZEFsbG9jYXRvciogTWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihTdWJz
cGFjZSYgc3BhY2UsIHNpemVfdCBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwpAQCAtMzA0
LDE1ICsyODYsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoQWxs
b2NhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgZm9yRWFjaFN1YnNwYWNlKAot
ICAgICAgICBbJl0gKFN1YnNwYWNlJiBzdWJzcGFjZSwgQWxsb2NhdG9yQXR0cmlidXRlcykgLT4g
SXRlcmF0aW9uU3RhdHVzIHsKLSAgICAgICAgICAgIGZvciAoTWFya2VkQWxsb2NhdG9yKiBhbGxv
Y2F0b3IgOiBzdWJzcGFjZS5iYWdPZkFsbG9jYXRvcnMpIHsKLSAgICAgICAgICAgICAgICBpZiAo
ZnVuY3RvcigqYWxsb2NhdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OwotICAgICAgICB9KTsKKyAgICBmb3IgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gbV9m
aXJzdEFsbG9jYXRvcjsgYWxsb2NhdG9yOyBhbGxvY2F0b3IgPSBhbGxvY2F0b3ItPm5leHRBbGxv
Y2F0b3IoKSkgeworICAgICAgICBpZiAoZnVuY3RvcigqYWxsb2NhdG9yKSA9PSBJdGVyYXRpb25T
dGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2VJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIk1h
cmtlZFNwYWNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRp
b25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgQVNTRVJUKGlzSXRlcmF0
aW5nKCkpOworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7Cisg
ICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaExpdmVDZWxs
KGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxs
b2NhdGlvbnMpIHsKKyAgICAgICAgaWYgKGFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7CisgICAgICAg
ICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0
ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9u
U2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEFTU0VSVChpc0l0ZXJhdGlu
ZygpKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAg
IGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hEZWFkQ2VsbChm
dW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9j
YXRpb25zKSB7CisgICAgICAgIGlmICghYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKKyAgICAgICAg
ICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRl
cygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24g
MjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFy
a2VkQW5kQXBwZW5kVG9NYQogICAgIHZhbGlkYXRlKGNlbGwpOwogI2VuZGlmCiAgICAgCisgICAg
Ly9kYXRhTG9nKCIgICAgTWFya2luZyAiLCBSYXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKKyAgICAK
ICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgc2V0TWFya2VkQW5k
QXBwZW5kVG9NYXJrU3RhY2soY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCksIGNlbGwpOwogICAgIGVs
c2UKQEAgLTE5OCw3ICsyMDAsNyBAQCB2b2lkIFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRBbmRBcHBl
bmRUb01hCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXJUeXBlPgogQUxXQVlTX0lOTElORSB2
b2lkIFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRBbmRBcHBlbmRUb01hcmtTdGFjayhDb250YWluZXJU
eXBlJiBjb250YWluZXIsIEpTQ2VsbCogY2VsbCkKIHsKLSAgICBjb250YWluZXIuZmxpcElmTmVj
ZXNzYXJ5RHVyaW5nTWFya2luZyhtX3ZlcnNpb24pOworICAgIGNvbnRhaW5lci5hYm91dFRvTWFy
ayhtX3ZlcnNpb24pOwogICAgIAogICAgIGlmIChjb250YWluZXIudGVzdEFuZFNldE1hcmtlZChj
ZWxsKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ2LDEwICsyNDgsOCBAQCB2b2lkIFNsb3RWaXNp
dG9yOjptYXJrQXV4aWxpYXJ5KGNvbnN0IHZvCiAgICAgCiAgICAgQVNTRVJUKGNlbGwtPmhlYXAo
KSA9PSBoZWFwKCkpOwogICAgIAotICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1fdmVy
c2lvbiwgY2VsbCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoSGVhcDo6aXNNYXJrZWRDb25j
dXJyZW50bHkoY2VsbCkpOworICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1fdmVyc2lv
biwgY2VsbCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgCiAgICAgbm90ZUxpdmVBdXhp
bGlhcnlDZWxsKGNlbGwpOwogfQpAQCAtMjk0LDYgKzI5NCw4IEBAIEFMV0FZU19JTkxJTkUgdm9p
ZCBTbG90VmlzaXRvcjo6dmlzaXRDaGkKIHsKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWRDb25j
dXJyZW50bHkoY2VsbCkpOwogICAgIAorICAgIC8vZGF0YUxvZygiVmlzaXRpbmcgIiwgUmF3UG9p
bnRlcihjZWxsKSwgIlxuIik7CisKICAgICBTZXRDdXJyZW50Q2VsbFNjb3BlIGN1cnJlbnRDZWxs
U2NvcGUoKnRoaXMsIGNlbGwpOwogICAgIAogICAgIG1fY3VycmVudE9iamVjdENlbGxTdGF0ZUJl
Zm9yZVZpc2l0aW5nID0gY2VsbC0+Y2VsbFN0YXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvV2Vhay5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9XZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4
LDkgQEAKIAogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSA8Y3N0ZGRlZj4K
KyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3JUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTUxLDMzICs1MywzMyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFdlYWsoVCosIFdl
YWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CisgICAgaW5saW5lIFdlYWso
VCosIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CiAKICAgICBlbnVt
IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9OwotICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKLSAgICBXZWFrKEhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVRhZyk7CisgICAgaW5saW5lIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdDsKKyAgICBpbmxpbmUgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwog
Ci0gICAgV2VhayhXZWFrJiYpOworICAgIGlubGluZSBXZWFrKFdlYWsmJik7CiAKICAgICB+V2Vh
aygpCiAgICAgewogICAgICAgICBjbGVhcigpOwogICAgIH0KIAotICAgIHZvaWQgc3dhcChXZWFr
Jik7CisgICAgaW5saW5lIHZvaWQgc3dhcChXZWFrJik7CiAKLSAgICBXZWFrJiBvcGVyYXRvcj0o
V2VhayYmKTsKKyAgICBpbmxpbmUgV2VhayYgb3BlcmF0b3I9KFdlYWsmJik7CiAKLSAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0OwotICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdDsKLSAgICBUJiBv
cGVyYXRvciooKSBjb25zdDsKLSAgICBUKiBnZXQoKSBjb25zdDsKKyAgICBpbmxpbmUgYm9vbCBv
cGVyYXRvciEoKSBjb25zdDsKKyAgICBpbmxpbmUgVCogb3BlcmF0b3ItPigpIGNvbnN0OworICAg
IGlubGluZSBUJiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBpbmxpbmUgVCogZ2V0KCkgY29uc3Q7
CiAKLSAgICBib29sIHdhcyhUKikgY29uc3Q7CisgICAgaW5saW5lIGJvb2wgd2FzKFQqKSBjb25z
dDsKIAotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKKyAgICBpbmxpbmUgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogCi0gICAgV2Vha0ltcGwqIGxlYWtJbXBsKCkg
V0FSTl9VTlVTRURfUkVUVVJOOworICAgIGlubGluZSBXZWFrSW1wbCogbGVha0ltcGwoKSBXQVJO
X1VOVVNFRF9SRVRVUk47CiAgICAgdm9pZCBjbGVhcigpCiAgICAgewogICAgICAgICBpZiAoIW1f
aW1wbCkKQEAgLTg2LDExICs4OCwzMCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToK
LSAgICBzdGF0aWMgV2Vha0ltcGwqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIHN0YXRp
YyBpbmxpbmUgV2Vha0ltcGwqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwogCiAgICAgV2Vha0lt
cGwqIG1faW1wbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZlY3RvclRyYWl0czxKU0M6OldlYWs8VD4+
IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeworICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNv
bXBhcmVXaXRoTWVtY21wID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6
V2VhazxUPj4geworICAgIHR5cGVkZWYgSlNDOjpXZWFrPFQ+IFN0b3JhZ2VUeXBlOworCisgICAg
dHlwZWRlZiBzdGQ6Om51bGxwdHJfdCBFbXB0eVZhbHVlVHlwZTsKKyAgICBzdGF0aWMgRW1wdHlW
YWx1ZVR5cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHR5cGVkZWYg
VCogUGVla1R5cGU7CisgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgU3RvcmFnZVR5cGUm
IHZhbHVlKSB7IHJldHVybiB2YWx1ZS5nZXQoKTsgfQorICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVr
KEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQZWVrVHlwZSgpOyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXVEYKKwogI2VuZGlmIC8vIFdlYWtfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV2Vha0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrQmxvY2suY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcg
QEAgdm9pZCBXZWFrQmxvY2s6OnNwZWNpYWxpemVkVmlzaXQoQ29udGFpbgogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgY29uc3QgSlNWYWx1ZSYganNWYWx1ZSA9IHdlYWtJbXBsLT5q
c1ZhbHVlKCk7Ci0gICAgICAgIGlmIChjb250YWluZXIuaXNNYXJrZWREdXJpbmdXZWFrVmlzaXRp
bmcodmVyc2lvbiwganNWYWx1ZS5hc0NlbGwoKSkpCisgICAgICAgIGlmIChjb250YWluZXIuaXNN
YXJrZWRDb25jdXJyZW50bHkodmVyc2lvbiwganNWYWx1ZS5hc0NlbGwoKSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIGlmICghd2Vha0hhbmRsZU93bmVyLT5pc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5kbGU8VW5rbm93bj46OndyYXBTbG90KCZjb25zdF9j
YXN0PEpTVmFsdWUmPihqc1ZhbHVlKSksIHdlYWtJbXBsLT5jb250ZXh0KCksIHZpc2l0b3IpKQpA
QCAtMTQ3LDE3ICsxNDcsMTQgQEAgdm9pZCBXZWFrQmxvY2s6OnJlYXAoKQogICAgIC8vIElmIHRo
aXMgV2Vha0Jsb2NrIGRvZXNuJ3QgYmVsb25nIHRvIGEgQ2VsbENvbnRhaW5lciwgd2Ugd29uJ3Qg
ZXZlbiBiZSBoZXJlLgogICAgIEFTU0VSVChtX2NvbnRhaW5lcik7CiAgICAgCi0gICAgbV9jb250
YWluZXIuZmxpcElmTmVjZXNzYXJ5KCk7Ci0KLSAgICAvLyBXZSBvbmx5IHJlYXAgYWZ0ZXIgbWFy
a2luZy4KLSAgICBBU1NFUlQobV9jb250YWluZXIuaXNNYXJrZWQoKSk7CisgICAgSGVhcFZlcnNp
b24gdmVyc2lvbiA9IG1fY29udGFpbmVyLmhlYXAoKS0+b2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYWtJbXBsQ291bnQoKTsgKytpKSB7CiAg
ICAgICAgIFdlYWtJbXBsKiB3ZWFrSW1wbCA9ICZ3ZWFrSW1wbHMoKVtpXTsKICAgICAgICAgaWYg
KHdlYWtJbXBsLT5zdGF0ZSgpID4gV2Vha0ltcGw6OkRlYWQpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICBpZiAobV9jb250YWluZXIuaXNNYXJrZWQod2Vha0ltcGwtPmpzVmFsdWUo
KS5hc0NlbGwoKSkpIHsKKyAgICAgICAgaWYgKG1fY29udGFpbmVyLmlzTWFya2VkKHZlcnNpb24s
IHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQod2Vh
a0ltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMu
aAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ5LDIzICsxNDgsNCBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xlCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZlY3RvclRyYWl0czxKU0M6
OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgIHN0YXRpYyBjb25zdCBi
b29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJh
aXRzPEpTQzo6V2VhazxUPj4gewotICAgIHR5cGVkZWYgSlNDOjpXZWFrPFQ+IFN0b3JhZ2VUeXBl
OwotCi0gICAgdHlwZWRlZiBzdGQ6Om51bGxwdHJfdCBFbXB0eVZhbHVlVHlwZTsKLSAgICBzdGF0
aWMgRW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAg
IHR5cGVkZWYgVCogUGVla1R5cGU7Ci0gICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgU3Rv
cmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5nZXQoKTsgfQotICAgIHN0YXRpYyBQZWVr
VHlwZSBwZWVrKEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQZWVrVHlwZSgpOyB9Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXVEYKLQogI2VuZGlmIC8vIFdlYWtJbmxpbmVzX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAg
KzM0LDEwIEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgi
CiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgiCi0jaW5jbHVkZSAiV2Vha0lubGluZXMuaCIK
ICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTYsNiArMTE2LDcgQEAKICNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIk1hcEl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisj
aW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aE9iamVjdC5oIgog
I2luY2x1ZGUgIk1pY3JvdGFzay5oIgogI2luY2x1ZGUgIk1vZHVsZUxvYWRlclByb3RvdHlwZS5o
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2
aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiT2JqZWN0UHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJv
cGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJQcm90b3R5cGVNYXBJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiUHJveHlPYmplY3QuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJveHkuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiUHJvdG90eXBlTWFwSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xODcsNiArMTg3LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAg
dih1bnNpZ25lZCwgbGFyZ2VBbGxvY2F0aW9uQ3V0b2ZmLCAxMDAwMDAsIE5vcm1hbCwgbnVsbHB0
cikgXAogICAgIHYoYm9vbCwgZHVtcFNpemVDbGFzc2VzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRy
KSBcCiAgICAgdihib29sLCB1c2VCdW1wQWxsb2NhdG9yLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIp
IFwKKyAgICB2KGJvb2wsIGxvb2tGb3JFbXB0eUJsb2Nrc0luT3RoZXJBbGxvY2F0b3JzLCB0cnVl
LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGVhZ2VybHlVcGRhdGVUb3BDYWxsRnJh
bWUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdihib29sLCB1c2VPU1JF
bnRyeVRvREZHLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTMwMiw3ICszMDMsNiBAQCB0
eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KHVuc2lnbmVkLCBudW1iZXJP
ZkdDTWFya2VycywgY29tcHV0ZU51bWJlck9mR0NNYXJrZXJzKDcpLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICB2KHVuc2lnbmVkLCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQsIDEwMDAsIE5vcm1h
bCwgbnVsbHB0cikgXAogICAgIHYoZG91YmxlLCBtaW5IZWFwVXRpbGl6YXRpb24sIDAuOCwgTm9y
bWFsLCBudWxscHRyKSBcCi0gICAgdihkb3VibGUsIG1pbkNvcGllZEJsb2NrVXRpbGl6YXRpb24s
IDAuOSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihkb3VibGUsIG1pbk1hcmtlZEJsb2NrVXRp
bGl6YXRpb24sIDAuOSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwgc2xvd1Bh
dGhBbGxvY3NCZXR3ZWVuR0NzLCAwLCBOb3JtYWwsICJmb3JjZSBhIEdDIG9uIGV2ZXJ5IE50aCBz
bG93IHBhdGggYWxsb2MsIHdoZXJlIE4gaXMgc3BlY2lmaWVkIGJ5IHRoaXMgb3B0aW9uIikgXAog
ICAgIHYoYm9vbCwgZGVmZXJHQ1Nob3VsZENvbGxlY3RXaXRoUHJvYmFiaWxpdHksIGZhbHNlLCBO
b3JtYWwsICJJZiB0cnVlLCB3ZSBwZXJmb3JtIGEgY29sbGVjdGlvbiBiYXNlZCBvbiBmbGlwcGlu
ZyBhIGNvaW4gYWNjb3JkaW5nIHRoZSBwcm9iYWJpbGl0eSBpbiB0aGUgJ2RlZmVyR0NQcm9iYWJp
bGl0eScgb3B0aW9uIHdoZW4gRGVmZXJHQyBpcyBkZXN0cnVjdGVkLiIpIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBQcm90b3R5cGVNYXBfaAogI2Rl
ZmluZSBQcm90b3R5cGVNYXBfaAogCisjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCisjaW5jbHVk
ZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIldlYWtHQ01hcC5oIgogI2luY2x1ZGUgPHd0Zi9U
cmlTdGF0ZS5oPgogCkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBTdHJ1Y3R1cmUqIGVtcHR5U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1
cmUoSlNPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGNsZWFyRW1wdHlPYmplY3RTdHJ1
Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRQcm90b3R5cGUoSlNPYmplY3QqKTsKLSAgICBU
cmlTdGF0ZSBpc1Byb3RvdHlwZShKU09iamVjdCopIGNvbnN0OyAvLyBSZXR1cm5zIGEgY29uc2Vy
dmF0aXZlIGVzdGltYXRlLgorICAgIGlubGluZSBUcmlTdGF0ZSBpc1Byb3RvdHlwZShKU09iamVj
dCopIGNvbnN0OyAvLyBSZXR1cm5zIGEgY29uc2VydmF0aXZlIGVzdGltYXRlLgogCiBwcml2YXRl
OgogICAgIFN0cnVjdHVyZSogY3JlYXRlRW1wdHlTdHJ1Y3R1cmUoSlNPYmplY3QqIHByb3RvdHlw
ZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2ln
bmVkIGlubGluZUNhcGFjaXR5KTsKQEAgLTU4LDE4ICs2MCw2IEBAIHByaXZhdGU6CiAgICAgU3Ry
dWN0dXJlTWFwIG1fc3RydWN0dXJlczsKIH07CiAKLWlubGluZSBUcmlTdGF0ZSBQcm90b3R5cGVN
YXA6OmlzUHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3By
b3RvdHlwZXMuY29udGFpbnMob2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7
Ci0KLSAgICAvLyBXZSBrbm93IHRoYXQgJ29iamVjdCcgd2FzIHVzZWQgYXMgYSBwcm90b3R5cGUg
YXQgb25lIHRpbWUsIHNvIGJlCi0gICAgLy8gY29uc2VydmF0aXZlIGFuZCBzYXkgdGhhdCBpdCBt
aWdodCBzdGlsbCBiZSBzby4gKEl0IHdvdWxkIGJlIGV4cGVuc2l2ZQotICAgIC8vIHRvIGZpbmQg
b3V0IGZvciBzdXJlLCBhbmQgd2UgZG9uJ3Qga25vdyBvZiBhbnkgY2FzZXMgd2hlcmUgYmVpbmcg
cHJlY2lzZQotICAgIC8vIHdvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UuKQotICAgIHJldHVybiBN
aXhlZFRyaVN0YXRlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFByb3Rv
dHlwZU1hcF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVN
YXBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvdG90eXBlTWFwSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCisjaW5jbHVkZSAiV2Vh
a0dDTWFwSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIFRyaVN0YXRlIFBy
b3RvdHlwZU1hcDo6aXNQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fcHJvdG90eXBlcy5jb250YWlucyhvYmplY3QpKQorICAgICAgICByZXR1cm4gRmFsc2VU
cmlTdGF0ZTsKKworICAgIC8vIFdlIGtub3cgdGhhdCAnb2JqZWN0JyB3YXMgdXNlZCBhcyBhIHBy
b3RvdHlwZSBhdCBvbmUgdGltZSwgc28gYmUKKyAgICAvLyBjb25zZXJ2YXRpdmUgYW5kIHNheSB0
aGF0IGl0IG1pZ2h0IHN0aWxsIGJlIHNvLiAoSXQgd291bGQgYmUgZXhwZW5zaXZlCisgICAgLy8g
dG8gZmluZCBvdXQgZm9yIHN1cmUsIGFuZCB3ZSBkb24ndCBrbm93IG9mIGFueSBjYXNlcyB3aGVy
ZSBiZWluZyBwcmVjaXNlCisgICAgLy8gd291bGQgaW1wcm92ZSBwZXJmb3JtYW5jZS4pCisgICAg
cmV0dXJuIE1peGVkVHJpU3RhdGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHJldmlzaW9uIDIw
NjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKICNp
bmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJXZWFrLmgiCi0jaW5jbHVkZSAiV2Vha0lubGlu
ZXMuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVy
LmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNp
bmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNs
dWRlICJNYXJrZWRCbG9ja1NldC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlBDVG9Db2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIK
ICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFdlYWtHQ01hcF9oCiAKICNpbmNsdWRlICJXZWFrLmgi
Ci0jaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTgxLDE5ICs4MCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQot
ICAgIHsKLSAgICAgICAgaXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGtleSk7Ci0gICAgICAgIGl0
ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOwotICAgICAgICBpZiAoaXQgIT0gZW5kICYmICFpdC0+
dmFsdWUpIC8vIEZvdW5kIGEgem9tYmllIHZhbHVlLgotICAgICAgICAgICAgcmV0dXJuIGVuZDsK
LSAgICAgICAgcmV0dXJuIGl0OwotICAgIH0KKyAgICBpbmxpbmUgaXRlcmF0b3IgZmluZChjb25z
dCBLZXlUeXBlJiBrZXkpOwogCi0gICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBl
JiBrZXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxXZWFrR0NNYXAq
Pih0aGlzKS0+ZmluZChrZXkpOwotICAgIH0KKyAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgZmlu
ZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KICAgICB2b2lkIGZvckVhY2goRnVuY3RvciBmdW5jdG9yKQpAQCAtMTA0LDEyICs5Myw5
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY29udGFpbnMoY29uc3Qg
S2V5VHlwZSYga2V5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBt
X21hcC5lbmQoKTsKLSAgICB9CisgICAgaW5saW5lIGJvb2wgY29udGFpbnMoY29uc3QgS2V5VHlw
ZSYga2V5KSBjb25zdDsKIAotICAgIHZvaWQgcHJ1bmVTdGFsZUVudHJpZXMoKTsKKyAgICBpbmxp
bmUgdm9pZCBwcnVuZVN0YWxlRW50cmllcygpOwogCiBwcml2YXRlOgogICAgIEhhc2hNYXBUeXBl
IG1fbWFwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtH
Q01hcElubGluZXMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFwLmgiCisjaW5j
bHVkZSAiV2Vha0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ3LDYgKzQ4LDI4
IEBAIGlubGluZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEEKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywg
dHlwZW5hbWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIHR5cGVuYW1lIFdlYWtHQ01hcDxLZXlBcmcs
IFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjppdGVyYXRvciBXZWFrR0NNYXA8S2V5
QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6ZmluZChjb25zdCBLZXlUeXBl
JiBrZXkpCit7CisgICAgaXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGtleSk7CisgICAgaXRlcmF0
b3IgZW5kID0gbV9tYXAuZW5kKCk7CisgICAgaWYgKGl0ICE9IGVuZCAmJiAhaXQtPnZhbHVlKSAv
LyBGb3VuZCBhIHpvbWJpZSB2YWx1ZS4KKyAgICAgICAgcmV0dXJuIGVuZDsKKyAgICByZXR1cm4g
aXQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5
cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KK2lubGluZSB0eXBlbmFtZSBX
ZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6Y29uc3Rf
aXRlcmF0b3IgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0Fy
Zz46OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9j
YXN0PFdlYWtHQ01hcCo+KHRoaXMpLT5maW5kKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEtleUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtl
eVRyYWl0c0FyZz4KK2lubGluZSBib29sIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNo
QXJnLCBLZXlUcmFpdHNBcmc+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBtX21hcC5lbmQoKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5h
bWUgS2V5VHJhaXRzQXJnPgogTkVWRVJfSU5MSU5FIHZvaWQgV2Vha0dDTWFwPEtleUFyZywgVmFs
dWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46OnBydW5lU3RhbGVFbnRyaWVzKCkKIHsKICAg
ICBtX21hcC5yZW1vdmVJZihbXSh0eXBlbmFtZSBIYXNoTWFwVHlwZTo6S2V5VmFsdWVQYWlyVHlw
ZSYgZW50cnkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFy
a2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KSW5kZXg6
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBwb3J0
IG92ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGUgbWFpbiBjaGFuZ2Ug
aGVyZSBpcyB0byBicmluZyBiYWNrIEZhc3RCaXRWZWN0b3IuY3BwLCBzbyB0aGF0IEkgY291bGQg
b3V0bGluZSBzb21lCisgICAgICAgIGxhcmdlIHNsb3cgcGF0aCBmdW5jdGlvbnMuIFRoaXMgYWxz
byBhZGRzIHNvbWUgdXRpbGl0aWVzLCBsaWtlIGF0b21pY1NldEFuZENoZWNrKCkgYW5kCisgICAg
ICAgIGlzRW1wdHkoKS4gVGhlIEdDIHVzZXMgdGhlc2UuCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6RmFzdEJp
dFZlY3RvcldvcmRPd25lcjo6c2V0RXF1YWxzU2xvdyk6CisgICAgICAgIChXVEY6OkZhc3RCaXRW
ZWN0b3JXb3JkT3duZXI6OnJlc2l6ZVNsb3cpOgorICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9y
Lmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZSk6CisgICAgICAgIChX
VEY6OkZhc3RCaXRWZWN0b3JJbXBsOjppc0VtcHR5KToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZl
Y3Rvcjo6YXRvbWljU2V0QW5kQ2hlY2spOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpv
cGVyYXRvcltdKTogRGVsZXRlZC4KKwogMjAxNi0wOS0xNiAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBpc1ZhbGlkRW51bSB0byB3b3JrIHdpdGgg
b2xkZXIgdmVyc2lvbnMgb2YgR0NDCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAkJMEY0
NTcwNDMxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBE
b21pbmF0b3JzLmggKi87IH07CiAJCTBGNDU3MDQ1MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVT
b3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1
NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovOyB9OwogCQkwRjcyNUNBQzFD
NTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5o
ICovOyB9OworCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDNUZCNTFE
ODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGODI0QTY4MUI3
NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5n
TG90LmNwcCAqLzsgfTsKIAkJMEY4MjRBNjkxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY1
MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi87IH07CiAJCTBGODcxMDVBMTY2NDNG
MTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5o
ICovOyB9OwpAQCAtMzY2LDYgKzM2Nyw3IEBACiAJCTBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAv
KiBEb21pbmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvbWluYXRv
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwNDQxQkU4MzQ0MTAwNjJB
NjI5IC8qIEJ1YmJsZVNvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVi
YmxlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjcyNUNBQjFDNTA0NjE2
MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmFuZ2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzVGQjUxRDg4NUNG
MjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmtpbmdMb3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJraW5nTG90Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2lu
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhd1BvaW50ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4MCw2ICs4ODIsNyBAQAogCQkJCUE4QTQ3Mjk4
MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9hLmggKi8sCiAJCQkJMUFFQTg4RTExRDZCQkNGNDAwRTVB
RDY0IC8qIEVudW1UcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5RjE1MUE4MjVBMDA0MTIzRkYgLyog
RXhwb3J0TWFjcm9zLmggKi8sCisJCQkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RC
aXRWZWN0b3IuY3BwICovLAogCQkJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0
VmVjdG9yLmggKi8sCiAJCQkJQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2Mu
Y3BwICovLAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi8s
CkBAIC0xNTk0LDYgKzE1OTcsNyBAQAogCQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBN
ZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRUMxNTFBODI1QjAwNDEyM0ZG
IC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjQxNTFBODI1
QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY3QzVG
QjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczRjcxNTFBODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9tU291cmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDAyMTUxQTgyNUIwMDQxMjNGRiAvKiBQYWdl
QmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMjA2MDMxKQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE4MSw2ICsxODEsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBEYXRhTG9nLmNwcAog
ICAgIERhdGVNYXRoLmNwcAogICAgIERlY2ltYWxOdW1iZXIuY3BwCisgICAgRmFzdEJpdFZlY3Rv
ci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZpbGVQcmludFN0cmVhbS5jcHAKICAgICBG
dW5jdGlvbkRpc3BhdGNoZXIuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGYXN0Qml0VmVjdG9y
LmgiCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnNl
dEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCit7CisgICAg
dWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPigKKyAgICAgICAgZmFz
dENhbGxvYyhvdGhlci5hcnJheUxlbmd0aCgpLCBzaXplb2YodWludDMyX3QpKSk7CisgICAgbWVt
Y3B5KG5ld0FycmF5LCBvdGhlci5tX3dvcmRzLCBvdGhlci5hcnJheUxlbmd0aCgpICogc2l6ZW9m
KHVpbnQzMl90KSk7CisgICAgaWYgKG1fd29yZHMpCisgICAgICAgIGZhc3RGcmVlKG1fd29yZHMp
OworICAgIG1fd29yZHMgPSBuZXdBcnJheTsKKyAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJp
dHM7Cit9CisKK3ZvaWQgRmFzdEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXplU2xvdyhzaXplX3Qg
bnVtQml0cykKK3sKKyAgICBzaXplX3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFycmF5TGVu
Z3RoKG51bUJpdHMpOworICAgIAorICAgIC8vIFVzZSBmYXN0Q2FsbG9jIGluc3RlYWQgb2YgZmFz
dFJlYWxsb2MgYmVjYXVzZSB3ZSBleHBlY3QgdGhlIGNvbW1vbgorICAgIC8vIHVzZSBjYXNlIGZv
ciB0aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rv
ci4KKyAgICAKKyAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+
KGZhc3RDYWxsb2MobmV3TGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7CisgICAgbWVtY3B5KG5l
d0FycmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAg
aWYgKG1fd29yZHMpCisgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOworICAgIG1fd29yZHMgPSBu
ZXdBcnJheTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0Zhc3RCaXRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgpAQCAtOTEsMTcgKzkyLDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBG
YXN0Qml0VmVjdG9yV29yZE93bmVyJiBvcGVyYXRvcj0oY29uc3QgRmFzdEJpdFZlY3RvcldvcmRP
d25lciYgb3RoZXIpCiAgICAgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gb3RoZXIuYXJyYXlM
ZW5ndGgoKTsKLSAgICAgICAgaWYgKGxlbmd0aCA9PSBhcnJheUxlbmd0aCgpKSB7Ci0gICAgICAg
ICAgICBtZW1jcHkobV93b3Jkcywgb3RoZXIubV93b3JkcywgbGVuZ3RoICogc2l6ZW9mKHVpbnQz
Ml90KSk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIGlmIChhcnJheUxlbmd0
aCgpICE9IG90aGVyLmFycmF5TGVuZ3RoKCkpCisgICAgICAgICAgICBzZXRFcXVhbHNTbG93KG90
aGVyKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkobV93b3Jkcywgb3RoZXIu
bV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAgICAg
bV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQzMl90
KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhsZW5ndGgsIHNp
emVvZih1aW50MzJfdCkpKTsKLSAgICAgICAgbWVtY3B5KG5ld0FycmF5LCBvdGhlci5tX3dvcmRz
LCBsZW5ndGggKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgaWYgKG1fd29yZHMpCi0gICAg
ICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAgbV93b3JkcyA9IG5ld0FycmF5Owot
ICAgICAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7CiAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICB9CiAgICAgCkBAIC0xNDAsMTggKzEzNiw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHJlc2l6ZShzaXplX3QgbnVtQml0cykKICAgICB7Ci0gICAgICAgIGlmIChudW1CaXRzID09
IG1fbnVtQml0cykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIC8vIFVz
ZSBmYXN0Q2FsbG9jIGluc3RlYWQgb2YgZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBleHBlY3QgdGhl
IGNvbW1vbgotICAgICAgICAvLyB1c2UgY2FzZSBmb3IgdGhpcyBtZXRob2QgdG8gYmUgaW5pdGlh
bGl6aW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3IuCi0gICAgICAgIAotICAgICAgICBzaXpl
X3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpOwotICAgICAg
ICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2Mo
bmV3TGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7Ci0gICAgICAgIG1lbWNweShuZXdBcnJheSwg
bV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBpZiAo
bV93b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOwotICAgICAgICBtX3dvcmRz
ID0gbmV3QXJyYXk7CisgICAgICAgIGlmIChhcnJheUxlbmd0aCgpICE9IGZhc3RCaXRWZWN0b3JB
cnJheUxlbmd0aChudW1CaXRzKSkKKyAgICAgICAgICAgIHJlc2l6ZVNsb3cobnVtQml0cyk7CiAg
ICAgICAgIG1fbnVtQml0cyA9IG51bUJpdHM7CiAgICAgfQogICAgIApAQCAtMTcxLDYgKzE1Nyw5
IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCogd29yZHMoKSB7IHJldHVybiBtX3dvcmRzOyB9CiAK
IHByaXZhdGU6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RXF1YWxzU2xvdyhjb25z
dCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgcmVzaXplU2xvdyhzaXplX3QgbnVtQml0cyk7CisgICAgCiAgICAgdWludDMyX3QqIG1f
d29yZHMgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKIH07CkBAIC0z
MjAsNiArMzA5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAg
ICAgCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gYXJyYXlMZW5ndGgoKTsgaW5kZXgtLTspIHsKKyAgICAgICAgICAgIGlmIChtX3dv
cmRzLndvcmQoaW5kZXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3RoZXJXb3Jkcz4KICAgICBGYXN0Qml0VmVjdG9ySW1wbDxGYXN0Qml0VmVjdG9yQW5kV29y
ZHM8dHlwZW5hbWUgV29yZHM6OlZpZXdUeXBlLCB0eXBlbmFtZSBPdGhlcldvcmRzOjpWaWV3VHlw
ZT4+IG9wZXJhdG9yJihjb25zdCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIp
IGNvbnN0CiAgICAgewpAQCAtMzgwLDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gd3Jp
dHRlbiB0aGlzIHdheSBzbyB0aGF0IGl0IHBlcmZvcm1zIHdlbGwgcmVnYXJkbGVzcyBvZiB3aGV0
aGVyIHZhbHVlIGlzIGEgY29uc3RhbnQuCiAgICAgICAgIHVpbnQzMl90IHNraXBWYWx1ZSA9IC0o
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSBeIDEpOwogICAgICAgICAKLSAgICAgICAgc2l6
ZV90IG51bVdvcmRzID0gbV93b3Jkcy5hcnJheUxlbmd0aCgpOworICAgICAgICBzaXplX3QgbnVt
V29yZHMgPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobV93b3Jkcy5udW1CaXRzKCkpOwogICAg
ICAgICAKICAgICAgICAgc2l6ZV90IHdvcmRJbmRleCA9IHN0YXJ0SW5kZXggLyAzMjsKICAgICAg
ICAgc2l6ZV90IHN0YXJ0SW5kZXhJbldvcmQgPSBzdGFydEluZGV4IC0gd29yZEluZGV4ICogMzI7
CkBAIC00NzEsNiArNDY5LDcgQEAgcHVibGljOgogICAgICAgICBtX3dvcmRzLmNsZWFyQWxsKCk7
CiAgICAgfQogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBvZiB0aGlzIGJp
dHZlY3RvciBjaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAg
Ym9vbCBzZXRBbmRDaGVjayhjb25zdCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3Ro
ZXIpCiAgICAgewpAQCAtNTUwLDYgKzU0OSwyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gYXQoaW5kZXgpOwogICAgIH0KKyAgICAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGNvbnRlbnRzIGNoYW5nZWQuCisgICAgQUxXQVlTX0lOTElORSBib29sIGF0b21pY1NldEFuZENo
ZWNrKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHVpbnQzMl90KiBw
b2ludGVyID0gJm1fd29yZHMud29yZChpbmRleCA+PiA1KTsKKyAgICAgICAgdWludDMyX3QgbWFz
ayA9IDEgPDwgKGluZGV4ICYgMzEpOworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICB1
aW50MzJfdCBvbGRWYWx1ZSA9ICpwb2ludGVyOworICAgICAgICAgICAgdWludDMyX3QgbmV3VmFs
dWU7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiAob2xkVmFs
dWUgJiBtYXNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSB8IG1hc2s7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmICghKG9sZFZhbHVlICYgbWFzaykpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlICYg
fm1hc2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAod2Vha0NvbXBhcmVBbmRTd2Fw
KHBvaW50ZXIsIG9sZFZhbHVlLCBuZXdWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmNwcAkocmV2aXNpb24gMjA2MDMxKQor
KysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkdDT2JzZXJ2YXRpb24uaCIKIAogI2luY2x1
ZGUgPGhlYXAvSGVhcElubGluZXMuaD4KKyNpbmNsdWRlIDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAo=
</data>
<flag name="commit-queue"
          id="312426"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>289179</attachid>
            <date>2016-09-17 15:43:43 -0700</date>
            <delta_ts>2016-09-19 08:56:21 -0700</delta_ts>
            <desc>performance</desc>
            <filename>report.txt</filename>
            <type>text/plain</type>
            <size>86137</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBMb25nU3BpZGVyLCBWOFNwaWRlciwgT2N0
YW5lLCBLcmFrZW4sIE1pY3JvYmVuY2htYXJrcywgQXNtQmVuY2gsIGFuZCBDb21wcmVzc2lvbkJl
bmNoIG9uIG11cmRlcmZhY2UgKE1hY0Jvb2tQcm8xMSw1KS4KClZNcyB0ZXN0ZWQ6CiJUaXBPZlRy
ZWUiIGF0IC9Wb2x1bWVzL0RhdGEvc2Vjb25kYXJ5L09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQvUmVs
ZWFzZS9qc2MgKHIyMDYwMzEpCiJUaGluZ3MiIGF0IC9Wb2x1bWVzL0RhdGEvcHJpbWFyeS9PcGVu
U291cmNlL1dlYktpdEJ1aWxkL1JlbGVhc2UvanNjIChyMjA2MDMxKQoKQ29sbGVjdGVkIDYgc2Ft
cGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDYgVk0gaW52b2NhdGlvbnMgcGVyIGJlbmNobWFy
ay4gRW1pdHRlZCBhIGNhbGwgdG8gZ2MoKSBiZXR3ZWVuIHNhbXBsZSBtZWFzdXJlbWVudHMuClVz
ZWQgMSBiZW5jaG1hcmsgaXRlcmF0aW9uIHBlciBWTSBpbnZvY2F0aW9uIGZvciB3YXJtLXVwLiBV
c2VkIHRoZSBqc2Mtc3BlY2lmaWMgcHJlY2lzZVRpbWUoKSBmdW5jdGlvbiB0byBnZXQgbWljcm9z
ZWNvbmQtbGV2ZWwKdGltaW5nLiBSZXBvcnRpbmcgYmVuY2htYXJrIGV4ZWN1dGlvbiB0aW1lcyB3
aXRoIDk1JSBjb25maWRlbmNlIGludGVydmFscyBpbiBtaWxsaXNlY29uZHMuCgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAg
ICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIApTdW5TcGlkZXI6CiAgIDNkLWN1YmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNjMxOCstMC4yMDUzICAgICA/ICAgICAgNC43ODQzKy0wLjI4MTMgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzI5eCBzbG93ZXIKICAgM2QtbW9ycGggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43MjY1Ky0wLjA4NDggICAgICAgICAgICA0LjY5
ODYrLTAuMDY3NyAgICAgICAgCiAgIDNkLXJheXRyYWNlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQuNzIxNCstMC4xMzM1ICAgICA/ICAgICAgNC44MjQyKy0wLjE1MTYg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjE4eCBzbG93ZXIKICAgYWNjZXNzLWJpbmFyeS10cmVlcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45MjA1Ky0wLjA1OTkgICAgID8gICAgICAx
LjkyNDErLTAuMDU3MyAgICAgICAgPwogICBhY2Nlc3MtZmFubmt1Y2ggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1LjMwOTArLTAuMDk4NiAgICAgICAgICAgIDUuMjQ2NSstMC4y
MzU2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExOXggZmFzdGVyCiAgIGFjY2Vzcy1uYm9keSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNDQxNystMC4zNzg5ICAgICAgICAg
ICAgMi4zMTU0Ky0wLjE4NTEgICAgICAgICAgbWlnaHQgYmUgMS4wNTQ1eCBmYXN0ZXIKICAgYWNj
ZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xODkxKy0w
LjM0NDggICAgICAgICAgICAzLjE3MDkrLTAuMTIwNCAgICAgICAgCiAgIGJpdG9wcy0zYml0LWJp
dHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMjIxMCstMC4yNzQ3ICAgICAg
ICAgICAgMS4xMzI1Ky0wLjA2MDAgICAgICAgICAgbWlnaHQgYmUgMS4wNzgyeCBmYXN0ZXIKICAg
Yml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42MDMy
Ky0wLjA0NDkgICAgID8gICAgICAyLjgzMTErLTAuNDI4OSAgICAgICAgPyBtaWdodCBiZSAxLjA4
NzV4IHNsb3dlcgogICBiaXRvcHMtYml0d2lzZS1hbmQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLjkyNzIrLTAuMDk0NyAgICAgICAgICAgIDEuOTE2MystMC4wNTE0ICAgICAgICAK
ICAgYml0b3BzLW5zaWV2ZS1iaXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4w
MDAyKy0wLjA2MzUgICAgICAgICAgICAyLjk4ODcrLTAuMDg3OSAgICAgICAgCiAgIGNvbnRyb2xm
bG93LXJlY3Vyc2l2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMzA3OSstMC4yNjAz
ICAgICAgICAgICAgMi4yODE2Ky0wLjE0OTEgICAgICAgICAgbWlnaHQgYmUgMS4wMTE1eCBmYXN0
ZXIKICAgY3J5cHRvLWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NC4yMDgwKy0wLjI0NzkgICAgICAgICAgICA0LjEyNTErLTAuMDk4NCAgICAgICAgICBtaWdodCBi
ZSAxLjAyMDF4IGZhc3RlcgogICBjcnlwdG8tbWQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjU0MDgrLTAuMDQ2NSAgICAgPyAgICAgIDIuNjk1MCstMC4zMDY3ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDYwN3ggc2xvd2VyCiAgIGNyeXB0by1zaGExICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjU5NistMC4wODk2ICAgICA/ICAgICAgMi43
MDc1Ky0wLjIyMjcgICAgICAgID8gbWlnaHQgYmUgMS4wMTgweCBzbG93ZXIKICAgZGF0ZS1mb3Jt
YXQtdG9mdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi42NjQ1Ky0wLjU1Mzgg
ICAgID8gICAgICA2Ljc1OTIrLTAuMzYzMCAgICAgICAgPyBtaWdodCBiZSAxLjAxNDJ4IHNsb3dl
cgogICBkYXRlLWZvcm1hdC14cGFyYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LjM5MzUrLTAuMjA1OSAgICAgPyAgICAgIDQuNjc5OSstMC4zNjk4ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDY1Mnggc2xvd2VyCiAgIG1hdGgtY29yZGljICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNzk1NSstMC4zNTM0ICAgICAgICAgICAgMi42MTYyKy0wLjA2MzcgICAg
ICAgICAgbWlnaHQgYmUgMS4wNjg2eCBmYXN0ZXIKICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43OTM4Ky0wLjA4NjMgICAgID8gICAgICAzLjkw
ODQrLTAuMzQ1MiAgICAgICAgPyBtaWdodCBiZSAxLjAzMDJ4IHNsb3dlcgogICBtYXRoLXNwZWN0
cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjk1NzgrLTAuMDQyOCAg
ICAgICAgICAgIDEuOTU1OCstMC4wNTM3ICAgICAgICAKICAgcmVnZXhwLWRuYSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi40NDIzKy0wLjI5ODUgICAgICAgICAgICA2
LjA1MjQrLTAuMjA2OCAgICAgICAgICBtaWdodCBiZSAxLjA2NDR4IGZhc3RlcgogICBzdHJpbmct
YmFzZTY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQ4MzgrLTAuNTcz
NCAgICAgICAgICAgIDQuNDE2MCstMC4wODQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1NHggZmFz
dGVyCiAgIHN0cmluZy1mYXN0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUuMjA1MistMC4xMDMwICAgICA/ICAgICAgNS40Mjg1Ky0wLjUxMjUgICAgICAgID8gbWlnaHQg
YmUgMS4wNDI5eCBzbG93ZXIKICAgc3RyaW5nLXRhZ2Nsb3VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNy45Nzk4Ky0wLjIxMDggICAgID8gICAgICA4LjI3NDgrLTAuNzA0MCAg
ICAgICAgPyBtaWdodCBiZSAxLjAzNzB4IHNsb3dlcgogICBzdHJpbmctdW5wYWNrLWNvZGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjQwMzcrLTEuODIzMyAgICAgPyAgICAgMTku
MjM1MistMS4zOTgwICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ1Mnggc2xvd2VyCiAgIHN0cmluZy12
YWxpZGF0ZS1pbnB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTUxMCstMC4wNjY5
ICAgICA/ICAgICAgNC40Nzk0Ky0wLjQ5ODAgICAgICAgID8gbWlnaHQgYmUgMS4wNzkxeCBzbG93
ZXIKCiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuMzcyMystMC4wOTAxICAgICA/ICAgICAgNC40NDAzKy0wLjA4MzQgICAgICAgID8gbWlnaHQg
YmUgMS4wMTU2eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGlwT2ZUcmVlICAgICAgICAgICAgICAgICAgIFRoaW5ncyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkxvbmdTcGlkZXI6CiAgIDNkLWN1YmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NjkuNzMyMCstNC4zNjc2
ICAgICAhICAgIDc4NC44NzI4Ky02LjQ4ODYgICAgICAgICEgZGVmaW5pdGVseSAxLjAxOTd4IHNs
b3dlcgogICAzZC1tb3JwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTU4Ljk2NzQrLTUuMDYxNSAgICAgICAgICA1NTYuNzk0NistNS40Mjc4ICAgICAgICAKICAgM2Qt
cmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0Ni43NzIyKy00
LjM2MzggICAgICAgICAgNDQ1LjQwNDgrLTIuNzcyNiAgICAgICAgCiAgIGFjY2Vzcy1iaW5hcnkt
dHJlZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MzEuODIyNistMy40Mjc3ICAgICAh
ICAgIDc0My45NTczKy02LjcwNDQgICAgICAgICEgZGVmaW5pdGVseSAxLjAxNjZ4IHNsb3dlcgog
ICBhY2Nlc3MtZmFubmt1Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjM1LjI3
NTYrLTE0Ljk1MzQgICAgPyAgICAyNDMuNjE2NCstMTIuMDA0MSAgICAgICA/IG1pZ2h0IGJlIDEu
MDM1NXggc2xvd2VyCiAgIGFjY2Vzcy1uYm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0OTcuMjEzMCstNC4xNjg5ICAgICA/ICAgIDQ5Ny44NTA5Ky05LjUwNTYgICAgICAg
ID8KICAgYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5
My41OTcyKy04LjAyNTggICAgICAgICAgMjg3Ljg4NDcrLTcuODMwNSAgICAgICAgICBtaWdodCBi
ZSAxLjAxOTh4IGZhc3RlcgogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMyLjU0MjYrLTEuNzMzMyAgICAgICAgICAgMzEuMDc1MistMC45NzEyICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDQ3MnggZmFzdGVyCiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOTQuMDU1MystMi44NjI2ICAgICAgICAgICA5My4w
OTE4Ky0zLjk0MDIgICAgICAgICAgbWlnaHQgYmUgMS4wMTAzeCBmYXN0ZXIKICAgYml0b3BzLW5z
aWV2ZS1iaXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3MC4wNzM2Ky01LjM5NjYg
ICAgICAgICAgMzY3LjU1NzQrLTUuMjA0OSAgICAgICAgCiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MjkuNzM1MistNC4zNDc3ICAgICA/ICAgIDQz
Ni44OTkwKy01LjI2ODMgICAgICAgID8gbWlnaHQgYmUgMS4wMTY3eCBzbG93ZXIKICAgY3J5cHRv
LWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUyNC42MjQ3Ky04LjEz
ODAgICAgID8gICAgNTI1Ljc0NjUrLTguNjA3OCAgICAgICAgPwogICBjcnlwdG8tbWQ1ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDU0LjI0MDUrLTMuMDU5MSAgICAgISAg
ICA0NjAuODAxMystMy4yODk1ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMTQ0eCBzbG93ZXIKICAg
Y3J5cHRvLXNoYTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYyNy4wODQ1
Ky0zLjQwNzYgICAgID8gICAgNjI4LjQxODkrLTYuMjg3NSAgICAgICAgPwogICBkYXRlLWZvcm1h
dC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzMyLjU2OTQrLTYuNDgyNSAg
ICAgPyAgICAzMzMuNjEzMistMTIuNDgwMSAgICAgICA/CiAgIGRhdGUtZm9ybWF0LXhwYXJiICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MTQuMDkzMSstMzQuNTU0MiAgICAgICAgIDYw
NC40NzYwKy00LjAyMTEgICAgICAgICAgbWlnaHQgYmUgMS4wMTU5eCBmYXN0ZXIKICAgaGFzaC1t
YXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNC42MzQ1Ky0wLjc4
NTcgICAgID8gICAgMTM1LjkwMTUrLTQuMTkzNCAgICAgICAgPwogICBtYXRoLWNvcmRpYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQ3LjA5MTQrLTcuODkyMCAgICAgPyAg
ICA0NTUuOTU1OCstMTAuMTQxOCAgICAgICA/IG1pZ2h0IGJlIDEuMDE5OHggc2xvd2VyCiAgIG1h
dGgtcGFydGlhbC1zdW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyODAuNTQ2NSst
My42MjMzICAgICA/ICAgIDI4Mi4zMDM1Ky0yLjkzNjYgICAgICAgID8KICAgbWF0aC1zcGVjdHJh
bC1ub3JtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUxNy43MzAyKy02LjQ2NjYgICAg
ID8gICAgNTE3Ljc4MTIrLTUuMzI1MyAgICAgICAgPwogICBzdHJpbmctYmFzZTY0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEwLjU0NDMrLTQuMjU0NSAgICAgPyAgICA0MTcu
NTM2MCstNC44NDMxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3MHggc2xvd2VyCiAgIHN0cmluZy1m
YXN0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMzMuMTUwNSstNC44NzUx
ICAgICAgICAgIDMzMy4xMDc1Ky0yLjczNTAgICAgICAgIAogICBzdHJpbmctdGFnY2xvdWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTY2LjA1OTMrLTIuNDg5NyAgICAgICAgICAx
NjMuODQzNystMi4xNzY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzNXggZmFzdGVyCgogICA8Z2Vv
bWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzM3LjU0NzUrLTEu
NTE4NiAgICAgPyAgICAzMzguMjAwNistMS4wMTA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAxOXgg
c2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIApWOFNwaWRlcjoKICAgY3J5cHRvICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNC4zNDM5Ky0wLjQyNTggICAgICAgICAgIDM0
LjEzNzMrLTAuNDkyNSAgICAgICAgCiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNDkuMDgwMCstMC45NzYyICAgICAgICAgICA0OC4yNjIyKy0xLjUy
NjggICAgICAgICAgbWlnaHQgYmUgMS4wMTY5eCBmYXN0ZXIKICAgZWFybGV5LWJveWVyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNC43MTg3Ky0wLjY4MzkgICAgICAgICAg
IDM0LjM3NzErLTAuMzgyNyAgICAgICAgCiAgIHJheXRyYWNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTguMzE2OSstMC41NDQyICAgICAgICAgICAxOC4xOTk3Ky0w
LjM1NDQgICAgICAgIAogICByZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQ5LjQwODArLTAuNjA1NiAgICAgPyAgICAgNDkuNjA4OSstMC4yNzc0ICAgICAg
ICA/CiAgIHJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzcuMzkwMistMC41MTE3ICAgICA/ICAgICAzOC4wMDUyKy0wLjgxNjEgICAgICAgID8gbWlnaHQg
YmUgMS4wMTY1eCBzbG93ZXIKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyNy4zODgwKy0wLjMxNjIgICAgICAgICAgIDI3LjA5ODMrLTAuMTU4NCAg
ICAgICAgICBtaWdodCBiZSAxLjAxMDd4IGZhc3RlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNC4xNTI2Ky0wLjIzMDAgICAgICAgICAgIDM0
LjAwOTMrLTAuMTg3NiAgICAgICAgICBtaWdodCBiZSAxLjAwNDJ4IGZhc3RlcgoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBPZlRyZWUg
ICAgICAgICAgICAgICAgICAgVGhpbmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKT2N0YW5lOgogICBlbmNyeXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMTQ4NzErLTAuMDAzNTQgICAgICAgICAgMC4xNDYwNistMC4wMDE2OCAgICAg
ICAgIG1pZ2h0IGJlIDEuMDE4MXggZmFzdGVyCiAgIGRlY3J5cHQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi42ODY3NSstMC4wMTY2MCAgICAgICAgICAyLjY3NzU4
Ky0wLjAyNDI1ICAgICAgIAogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHgyICAgICAgIDAuMTIwMjArLTAuMDAzMzAgICAgICAgICAgMC4xMTg1NCstMC4wMDI2NCAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE0MHggZmFzdGVyCiAgIGVhcmxleSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzc0MistMC4wMDE2OCAgICAgICAgICAwLjIz
NDc3Ky0wLjAwMTQ5ICAgICAgICAgbWlnaHQgYmUgMS4wMTEzeCBmYXN0ZXIKICAgYm95ZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjIxNDg3Ky0wLjA0MjE3
ICAgID8gICAgIDQuMjI4NzUrLTAuMDUxOTUgICAgICAgPwogICBuYXZpZXItc3Rva2VzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDQuNjMzMTYrLTAuMDE3ODQgICAgPyAgICAg
NC42NTc5NSstMC4wNDUwMyAgICAgICA/CiAgIHJheXRyYWNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDIgICAgICAgMC42NjIzNCstMC4wMDU4MiAgICAgICAgICAwLjY1NTE2Ky0w
LjAwNjIxICAgICAgICAgbWlnaHQgYmUgMS4wMTEweCBmYXN0ZXIKICAgcmljaGFyZHMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgICAwLjA3NzU2Ky0wLjAwMjAzICAgICAg
ICAgIDAuMDc2OTQrLTAuMDAyOTAgICAgICAgCiAgIHNwbGF5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeDIgICAgICAgMC4zMTA5NSstMC4wMDI2NyAgICA/ICAgICAwLjMxMTIx
Ky0wLjAwNDMwICAgICAgID8KICAgcmVnZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MiAgICAgIDE2LjM4NDUwKy0wLjc2MDk3ICAgICAgICAgMTYuMjcyNDMrLTAuOTU1MTMg
ICAgICAgCiAgIHBkZmpzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAg
ICAzOS4wNjE1MCstMC42NjEyNSAgICAgICAgIDM4LjkzNDczKy0wLjMwMTI1ICAgICAgIAogICBt
YW5kcmVlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMzkuNTYzNDcr
LTAuMzY5MDQgICAgICAgICAzOS4zMTEyMCstMC4yMjE2MyAgICAgICAKICAgZ2JlbXUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDI4Ljc2NTAxKy0wLjI2NTM1ICAg
ID8gICAgMjguNzg3MzArLTAuNDM1MTEgICAgICAgPwogICBjbG9zdXJlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDYxMTkrLTAuMDAyNjIgICAgPyAgICAgMC40
NjMxNSstMC4wMDMwMyAgICAgICA/CiAgIGpxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi4zNDcyOCstMC4wNzMxNSAgICAgICAgICA2LjM0NjEzKy0wLjA0
NTYwICAgICAgIAogICBib3gyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgy
ICAgICAgIDguNjg5NDkrLTAuMDg1NzMgICAgICAgICAgOC42MTEyOSstMC4wNjI0NCAgICAgICAK
ICAgemxpYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgMzM3LjU2
NzE1Ky0yLjg4NDcyICAgID8gICAzMzguNzc5NjQrLTIuNDcwMzMgICAgICAgPwogICB0eXBlc2Ny
aXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICA2MTQuNDY5MTYrLTcuNDk0
MTEgICAgICAgIDYwNC4wNzIyNystMTAuOTU3NDYgICAgICAgIG1pZ2h0IGJlIDEuMDE3MnggZmFz
dGVyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuNzEzOTQrLTAuMDE2NzMgICAgICAgICAgNC42ODk0NistMC4wMjY3MCAgICAgICAgIG1pZ2h0
IGJlIDEuMDA1MnggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAgICAgICBUaGluZ3MgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApLcmFrZW46CiAgIGFpLWFzdGFyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkwLjAzNystMi44OTkgICAg
ICAgICAgICAgODcuNDM3Ky0xLjAxMCAgICAgICAgICAgbWlnaHQgYmUgMS4wMjk3eCBmYXN0ZXIK
ICAgYXVkaW8tYmVhdC1kZXRlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUu
NDU2Ky0wLjM3NCAgICAgID8gICAgICAzNS42MDArLTAuMTIxICAgICAgICAgPwogICBhdWRpby1k
ZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NS43OTkrLTIuMDgw
ICAgICAgICAgICAgIDkzLjcyNystMS42NDcgICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyMXggZmFz
dGVyCiAgIGF1ZGlvLWZmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDI3LjY5MCstMC45NTYgICAgICAgICAgICAgMjcuMjc2Ky0wLjA0NyAgICAgICAgICAgbWlnaHQg
YmUgMS4wMTUyeCBmYXN0ZXIKICAgYXVkaW8tb3NjaWxsYXRvciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDMuNDE5Ky0wLjM0NCAgICAgID8gICAgICA0My40NDYrLTAuMzI4ICAg
ICAgICAgPwogICBpbWFnaW5nLWRhcmtyb29tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1Ni41OTgrLTAuMTU2ICAgICAgPyAgICAgIDU3LjMwMistMS40MTggICAgICAgICA/IG1p
Z2h0IGJlIDEuMDEyNHggc2xvd2VyCiAgIGltYWdpbmctZGVzYXR1cmF0ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ1LjU5NCstMTEuODI5ICAgICAgICAgICAgNDEuOTcwKy0yLjA4
OSAgICAgICAgICAgbWlnaHQgYmUgMS4wODY0eCBmYXN0ZXIKICAgaW1hZ2luZy1nYXVzc2lhbi1i
bHVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTcuODMyKy0yLjYwMCAgICAgICAgICAg
ICA1Ni4xNDUrLTEuMzQ2ICAgICAgICAgICBtaWdodCBiZSAxLjAzMDB4IGZhc3RlcgogICBqc29u
LXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMS4xMDArLTAu
ODcwICAgICAgPyAgICAgIDMyLjExMistMi4yODYgICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyNXgg
c2xvd2VyCiAgIGpzb24tc3RyaW5naWZ5LXRpbmRlcmJveCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIwLjkzNCstMC41NTUgICAgICA/ICAgICAgMjAuOTUyKy0wLjk4MiAgICAgICAgID8KICAg
c3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQuNjM3
Ky0wLjE3NyAgICAgICAgICAgICAzNC42MDArLTAuMjA2ICAgICAgICAgCiAgIHN0YW5mb3JkLWNy
eXB0by1jY20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzLjgwNystMi42MTMgICAg
ICAgICAgICAgMzIuNTkyKy0yLjY2MCAgICAgICAgICAgbWlnaHQgYmUgMS4wMzczeCBmYXN0ZXIK
ICAgc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODku
MzA5Ky0wLjQ3NSAgICAgICAgICAgICA4OC45OTgrLTAuODY2ICAgICAgICAgCiAgIHN0YW5mb3Jk
LWNyeXB0by1zaGEyNTYtaXRlcmF0aXZlICAgICAgICAgICAgICAgICAgIDI4LjkxMistMC4zMDAg
ICAgICA/ICAgICAgMjkuMTQ1Ky0wLjc1NSAgICAgICAgID8KCiAgIDxhcml0aG1ldGljPiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5LjM2NistMC43MTUgICAgICAgICAg
ICAgNDguNjY0Ky0wLjM0MCAgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ0eCBmYXN0ZXIKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwT2ZU
cmVlICAgICAgICAgICAgICAgICAgIFRoaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCk1pY3JvYmVuY2htYXJrczoKICAgYWJjLWZvcndhcmQtbG9vcC1lcXVhbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyMy42NzY0Ky0xLjE0MDEgICAgICAgICAgIDIzLjE2NzAr
LTEuMzg0NSAgICAgICAgICBtaWdodCBiZSAxLjAyMjB4IGZhc3RlcgogICBhYmMtcG9zdGZpeC1i
YWNrd2FyZC1sb29wICAgICAgICAgICAgICAgICAgICAgICAgIDI5LjExMTYrLTEuODE4MyAgICAg
ICAgICAgMjguODY4MistMS44NTQ2ICAgICAgICAKICAgYWJjLXNpbXBsZS1iYWNrd2FyZC1sb29w
ICAgICAgICAgICAgICAgICAgICAgICAgICAyMy44NTg5Ky0xLjA0MTIgICAgICAgICAgIDIzLjA4
MzArLTEuODExNCAgICAgICAgICBtaWdodCBiZSAxLjAzMzZ4IGZhc3RlcgogICBhYmMtc2ltcGxl
LWZvcndhcmQtbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjMyOTYrLTEuMDY1OSAg
ICAgPyAgICAgMjMuNjEyNSstMS43ODk3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMXggc2xvd2Vy
CiAgIGFiYy1za2lwcHktbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTku
NjE5OSstMC43MzAwICAgICA/ICAgICAyMC42NzY4Ky0xLjQ4OTYgICAgICAgID8gbWlnaHQgYmUg
MS4wNTM5eCBzbG93ZXIKICAgYWJzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi4xODM1Ky0wLjA3NTIgICAgID8gICAgICAyLjIzODMrLTAuMDkyMyAgICAg
ICAgPyBtaWdodCBiZSAxLjAyNTF4IHNsb3dlcgogICBhZGFwdC10by1kb3VibGUtZGl2aWRlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjkwMzcrLTAuNDc2NCAgICAgPyAgICAgMTQuNTIy
NSstMC40ODgwICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ0NXggc2xvd2VyCiAgIGFsaWFzZWQtYXJn
dW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgIDEuMDY0MystMC4wODAzICAg
ICA/ICAgICAgMS4xMDcxKy0wLjE2MjYgICAgICAgID8gbWlnaHQgYmUgMS4wNDAyeCBzbG93ZXIK
ICAgYWxsb2NhdGUtYmlnLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4w
NTc4Ky0wLjEwNzUgICAgID8gICAgICAyLjA3MzcrLTAuMDQ1NSAgICAgICAgPwogICBhcHBseS1u
b3QtYXBwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjI4NTkrLTAuMjM3
MyAgICAgPyAgICAgIDQuMzc2MCstMC4zMjIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxMHggc2xv
d2VyCiAgIGFyZ3VtZW50cy1uYW1lZC1hbmQtcmVmbGVjdGl2ZSAgICAgICAgICAgICAgICAgICAg
IDcuODg0OCstMC4yMTQ5ICAgICA/ICAgICAgOC4zMDg4Ky0wLjQ0MjAgICAgICAgID8gbWlnaHQg
YmUgMS4wNTM4eCBzbG93ZXIKICAgYXJndW1lbnRzLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOS4yMzAxKy0wLjE0NzMgICAgID8gICAgICA5LjQ0NzArLTAuNTA3MCAg
ICAgICAgPyBtaWdodCBiZSAxLjAyMzV4IHNsb3dlcgogICBhcmd1bWVudHMtc3RyaWN0LW1vZGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjA4MzQrLTEuNDgxOSAgICAgICAgICAgMTMu
OTA2MCstMS4zMzI4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyOHggZmFzdGVyCiAgIGFyZ3VtZW50
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNTk2NistMC4zMzA4
ICAgICAgICAgICAgNi41NjczKy0wLjM4NDcgICAgICAgIAogICBhcml0eS1taXNtYXRjaC1pbmxp
bmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjgxNDcrLTAuMDE1NiAgICAgICAgICAg
IDAuODExOCstMC4wMTkzICAgICAgICAKICAgYXJyYXktYWNjZXNzLXBvbHltb3JwaGljLXN0cnVj
dHVyZSAgICAgICAgICAgICAgICAgMy4xMzQzKy0wLjA2MTAgICAgICAgICAgICAzLjEyMzcrLTAu
MTUxMCAgICAgICAgCiAgIGFycmF5LW5vbmFycmF5LXBvbHltb3JocGljLWFjY2VzcyAgICAgICAg
ICAgICAgICAgMjEuMjMxNistNC4zMzQyICAgICAgICAgICAxOS4wMzE4Ky0wLjQ0MzAgICAgICAg
ICAgbWlnaHQgYmUgMS4xMTU2eCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLWV2ZXJ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2Ny45ODIxKy0xLjM0MjkgICAgICAgICAgIDY3LjM1NzMr
LTEuNTkwNyAgICAgICAgCiAgIGFycmF5LXByb3RvdHlwZS1mb3JFYWNoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNjYuMzQ4OCstMS4wMjczICAgICAgICAgICA2NS44MjM1Ky0wLjQ5ODkgICAg
ICAgIAogICBhcnJheS1wcm90b3R5cGUtbWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDY4LjA3MjgrLTEuODg4MyAgICAgICAgICAgNjYuMzk4MCstMS41MzIwICAgICAgICAgIG1pZ2h0
IGJlIDEuMDI1MnggZmFzdGVyCiAgIGFycmF5LXByb3RvdHlwZS1yZWR1Y2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNjMuMzg3NSstMS42NzUzICAgICA/ICAgICA2My44MjE3Ky0yLjY4MDEg
ICAgICAgID8KICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZVJpZ2h0ICAgICAgICAgICAgICAgICAg
ICAgICA4Mi4zNTY3Ky0xLjYzNDQgICAgID8gICAgIDgyLjYyNzErLTAuNjE1OCAgICAgICAgPwog
ICBhcnJheS1wcm90b3R5cGUtc29tZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY2Ljc1
NzArLTAuNzgzMyAgICAgICAgICAgNjYuNTYxNSstMS4xNTI3ICAgICAgICAKICAgYXJyYXktc3Bs
aWNlLWNvbnRpZ3VvdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC45OTUxKy0xLjAxNzQg
ICAgID8gICAgIDIxLjc5MjUrLTEuNzA3MCAgICAgICAgPyBtaWdodCBiZSAxLjAzODB4IHNsb3dl
cgogICBhcnJheS13aXRoLWRvdWJsZS1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
LjE1NDArLTAuNDIyMyAgICAgICAgICAgIDIuOTg2OSstMC4xNDk2ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDU1OXggZmFzdGVyCiAgIGFycmF5LXdpdGgtZG91YmxlLWluY3JlbWVudCAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNTkzOCstMC4wODY2ICAgICA/ICAgICAgMi44MDE5Ky0wLjM4MjEgICAg
ICAgID8gbWlnaHQgYmUgMS4wODAyeCBzbG93ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtbXVsLWFk
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zNTI3Ky0wLjA1MTggICAgID8gICAgICAzLjM3
MzQrLTAuMDUzMSAgICAgICAgPwogICBhcnJheS13aXRoLWRvdWJsZS1zdW0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjU4NDYrLTAuMDU5MyAgICAgICAgICAgIDIuNTU1NystMC4wMzU2
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExM3ggZmFzdGVyCiAgIGFycmF5LXdpdGgtaW50MzItYWRk
LXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzA5MSstMC4xOTM2ICAgICAgICAgICAg
NC4yNjk1Ky0wLjA5NTAgICAgICAgIAogICBhcnJheS13aXRoLWludDMyLW9yLWRvdWJsZS1zdW0g
ICAgICAgICAgICAgICAgICAgICAyLjY2NDArLTAuMTI4MyAgICAgPyAgICAgIDIuNzY5NystMC4y
ODU3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM5N3ggc2xvd2VyCiAgIEFycmF5QnVmZmVyLURhdGFW
aWV3LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNy42NzY3Ky0wLjU1ODEgICAgID8gICAgIDM4LjI1
NDMrLTEuODgzMSAgICAgICAgPyBtaWdodCBiZSAxLjAxNTN4IHNsb3dlcgogICBBcnJheUJ1ZmZl
ci1EYXRhVmlldy1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgIDE0Ljg5NDYrLTAuNjc1OSAg
ICAgICAgICAgMTQuNzE4OCstMC41OTI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExOXggZmFzdGVy
CiAgIEFycmF5QnVmZmVyLUludDMyQXJyYXktYnl0ZU9mZnNldCAgICAgICAgICAgICAgICAgIDMu
NTg0NistMC4yMzI2ICAgICA/ICAgICAgMy41OTU3Ky0wLjMyMzggICAgICAgID8KICAgQXJyYXlC
dWZmZXItSW50OEFycmF5LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy4zMzc5Ky0xLjc2MzAgICAg
ICAgICAgIDM2LjY5MzYrLTAuNDQ5MiAgICAgICAgICBtaWdodCBiZSAxLjAxNzZ4IGZhc3Rlcgog
ICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZC1idWZmZXIgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC40MzczKy0y
LjE5MzQgICAgICAgICAgIDE5LjY5NzMrLTAuMjIwMCAgICAgICAgICBtaWdodCBiZSAxLjAzNzZ4
IGZhc3RlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAg
ICAgIDE0LjQ5MDArLTEuMjgyNCAgICAgICAgICAgMTMuNzY2OCstMC42MzEzICAgICAgICAgIG1p
Z2h0IGJlIDEuMDUyNXggZmFzdGVyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYyAgICAg
ICAgICAgICAgICAgICAgICAgMTIuNTcwMCstMC41OTU3ICAgICA/ICAgICAxMi45NzA5Ky0xLjEw
OTcgICAgICAgID8gbWlnaHQgYmUgMS4wMzE5eCBzbG93ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxs
LWluLWNsYXNzLWNvbnN0cnVjdG9yICAgICAgICAgICAyMi4zOTc2Ky0wLjgzMDggICAgICAgICAg
IDIyLjM0MjgrLTAuMjY3MCAgICAgICAgCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1t
ZXRob2QgICAgICAgICAgICAgICAgMTAuODMxOSstMS4wMTU5ICAgICAgICAgICAxMC4yNzA0Ky0w
LjQzMDQgICAgICAgICAgbWlnaHQgYmUgMS4wNTQ3eCBmYXN0ZXIKICAgYXJyb3dmdW5jdGlvbi1j
YWxsLWluLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgOS40MDM2Ky0wLjM0MDMgICAgID8g
ICAgICA5LjU5NDIrLTAuMjgwOCAgICAgICAgPyBtaWdodCBiZSAxLjAyMDN4IHNsb3dlcgogICBh
cnJvd2Z1bmN0aW9uLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Ljg3OTYr
LTAuMjAwMSAgICAgPyAgICAgIDguOTIzMSstMC4yMDc3ICAgICAgICA/CiAgIGFzbWpzX2Jvb2xf
YnVnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNTU0MSstMC40OTA0ICAg
ICAgICAgICAgNy4zOTEwKy0wLjExMjUgICAgICAgICAgbWlnaHQgYmUgMS4wMjIxeCBmYXN0ZXIK
ICAgYXNzaWduLWN1c3RvbS1zZXR0ZXItcG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAgMi41
NjMxKy0wLjA0NDcgICAgICAgICAgICAyLjU0ODArLTAuMDM3MyAgICAgICAgCiAgIGFzc2lnbi1j
dXN0b20tc2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuODY5MystMC4wMzgw
ICAgICAgICAgICAgMy44NjUxKy0wLjA2MjMgICAgICAgIAogICBiYXNpYy1zZXQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjEwMjMrLTAuNzQ0OSAgICAgICAgICAg
IDYuNDUxNystMC4zNjg3ICAgICAgICAgIG1pZ2h0IGJlIDEuMTAwOHggZmFzdGVyCiAgIGJpZy1p
bnQtbXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTg1MystMC40
NDM2ICAgICAgICAgICAgMi45MzY0Ky0wLjAzOTAgICAgICAgICAgbWlnaHQgYmUgMS4wODQ4eCBm
YXN0ZXIKICAgYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJvbC1vci11bmRlZmluZWQgICAgICAgICAg
ICA1Ny40ODE0Ky0yLjQ0NDEgICAgICAgICAgIDU2LjUwMDkrLTEuNjYyMyAgICAgICAgICBtaWdo
dCBiZSAxLjAxNzR4IGZhc3RlcgogICBiaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAg
ICAgICAgICAgICAgICAgIDY1LjQxNjArLTIuMjY2NCAgICAgPyAgICAgNjUuOTE4NCstMi4wODU3
ICAgICAgICA/CiAgIGJpZ3N3aXRjaC1pbmRpcmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzguMDAwNCstMC4yNzk1ICAgICA/ICAgICAzOC41ODkxKy0wLjk5ODIgICAgICAgID8g
bWlnaHQgYmUgMS4wMTU1eCBzbG93ZXIKICAgYmlnc3dpdGNoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyMC45NDg4Ky0wLjg3NDAgICAgICAgICAgIDIwLjQ4NDMrLTEu
MDI2MiAgICAgICAgICBtaWdodCBiZSAxLjAyMjd4IGZhc3RlcgogICBib29sZWFuLXRlc3QgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc0MTQrLTAuMDI4NCAgICAgPyAg
ICAgIDIuODM1MSstMC4yODIxICAgICAgICA/IG1pZ2h0IGJlIDEuMDM0Mnggc2xvd2VyCiAgIGJv
dW5kLWZ1bmN0aW9uLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMjg4Nyst
MC4xMTUzICAgICA/ICAgICAgOS43MzY0Ky0wLjY4NDMgICAgICAgID8gbWlnaHQgYmUgMS4wNDgy
eCBzbG93ZXIKICAgYm91bmQtZnVuY3Rpb24tY29uc3RydWN0aW9uLXBlcmZvcm1hbmNlICAgICAg
ICAgMjM0MC4yNDAzKy0xNi41OTg1ICAgID8gICAyMzg0LjI3MTYrLTcwLjEyNzcgICAgICAgPyBt
aWdodCBiZSAxLjAxODh4IHNsb3dlcgogICBicmFuY2gtZm9sZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjY3MDMrLTAuMzE3OCAgICAgICAgICAgIDMuNjEwMystMC4w
NjI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2NnggZmFzdGVyCiAgIGJyYW5jaC1vbi1zdHJpbmct
YXMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgIDkuODM4MystMC41OTUzICAgICAgICAg
ICAgOS42OTY3Ky0wLjgxODggICAgICAgICAgbWlnaHQgYmUgMS4wMTQ2eCBmYXN0ZXIKICAgYnVn
LTE1MzQzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45MjMwKy0w
LjAyMTYgICAgICAgICAgICAyLjg5OTcrLTAuMDcwMiAgICAgICAgCiAgIGJ1aWxkLWxhcmdlLW9i
amVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuMjY0MSstMC4yODMxICAgICA/
ICAgICAyMy41MDExKy0wLjQ5MzggICAgICAgID8gbWlnaHQgYmUgMS4wMTAyeCBzbG93ZXIKICAg
YnktdmFsLWdlbmVyaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43OTQ5
Ky0wLjE1NTMgICAgID8gICAgICA0LjE1ODIrLTAuNTM5MCAgICAgICAgPyBtaWdodCBiZSAxLjA5
NTd4IHNsb3dlcgogICBjYWxsLW9yLW5vdC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMxLjA0NDMrLTIuMzA1NCAgICAgICAgICAgMzAuMTEyNystMS4xMTQyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDMwOXggZmFzdGVyCiAgIGNhbGwtc3ByZWFkLWFwcGx5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjIuNjM3NSstMC40NTg3ICAgICA/ICAgICAyMi43Mzk2Ky0w
Ljg1MTggICAgICAgID8KICAgY2FsbC1zcHJlYWQtY2FsbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMy42NTA3Ky0xLjUxODggICAgICAgICAgIDIzLjU1ODErLTAuOTcwOSAgICAg
ICAgCiAgIGNhcHR1cmVkLWFzc2lnbm1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMzU5MCstMC4wMTE1ICAgICAgICAgICAgMC4zNTc3Ky0wLjAyNzQgICAgICAgIAogICBjYXN0
LWludC10by1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljg1MTErLTAu
NDkzOSAgICAgPyAgICAgIDUuMTI2MistMC42ODMwICAgICAgICA/IG1pZ2h0IGJlIDEuMDU2N3gg
c2xvd2VyCiAgIGNlbGwtYXJndW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIuNjg2MCstMC4xNDgxICAgICAgICAgICAgMi42MTE1Ky0wLjA1NzYgICAgICAgICAgbWln
aHQgYmUgMS4wMjg1eCBmYXN0ZXIKICAgY2ZnLXNpbXBsaWZ5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi43MDU5Ky0wLjAzOTYgICAgID8gICAgICAyLjcxMzUrLTAuMTAz
MyAgICAgICAgPwogICBjaGFpbi1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEwLjMxODUrLTAuNDE3NCAgICAgPyAgICAgMTAuMzYzOSstMC40OTA3ICAgICAgICA/
CiAgIGNtcGVxLW9iai10by1vYmotb3RoZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgu
MTc1NystMC4yMzQ2ICAgICA/ICAgICAgOC41MTk1Ky0wLjYxNDIgICAgICAgID8gbWlnaHQgYmUg
MS4wNDIxeCBzbG93ZXIKICAgY29uY2F0LWFwcGVuZC1vbmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi45MDY3Ky0wLjYwOTcgICAgICAgICAgICA2LjUzMDIrLTAuMzA5MyAgICAg
ICAgICBtaWdodCBiZSAxLjA1NzZ4IGZhc3RlcgogICBjb25zdGFudC10ZXN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0LjM4ODMrLTAuMDYxNyAgICAgICAgICAgIDQuMzQ0
MistMC4wNjI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwMnggZmFzdGVyCiAgIGNyZWF0ZS1sb3Rz
LW9mLWZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODA3MSstMC4xODg1ICAg
ICA/ICAgICAgNi4xMzk2Ky0wLjIwODEgICAgICAgID8gbWlnaHQgYmUgMS4wNTczeCBzbG93ZXIK
ICAgY3NlLW5ldy1hcnJheS1idWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45
NDA3Ky0wLjA4NTUgICAgICAgICAgICAxLjg5NTgrLTAuMDI3NSAgICAgICAgICBtaWdodCBiZSAx
LjAyMzd4IGZhc3RlcgogICBjc2UtbmV3LWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLjk3MDArLTAuMDk2MiAgICAgPyAgICAgIDIuMDA3MCstMC4wNTE2ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE4OHggc2xvd2VyCiAgIGN1c3RvbS1zZXR0ZXItZ2V0dGVyLWFzLXB1
dC1nZXQtYnktaWQgICAgICAgICAgICAgIDAuNDYxNistMC4wNDMyICAgICA/ICAgICAgMC40ODIz
Ky0wLjA2MzEgICAgICAgID8gbWlnaHQgYmUgMS4wNDQ5eCBzbG93ZXIKICAgRGF0YVZpZXctY3Vz
dG9tLXByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICA0Mi42OTYwKy0wLjMzMjkgICAg
ICAgICAgIDQyLjQyNDYrLTAuMzg3NyAgICAgICAgCiAgIGRlbGF5LXRlYXItb2ZmLWFyZ3VtZW50
cy1zdHJpY3Rtb2RlICAgICAgICAgICAgICAgIDMuOTU0MSstMC4yMDM1ICAgICA/ICAgICAgMy45
NjE1Ky0wLjIyNjggICAgICAgID8KICAgZGVsdGFibHVlLWZvci1vZiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyOC44NDQyKy0wLjU5MjMgICAgID8gICAgIDI5Ljg4NjkrLTAuOTgw
OSAgICAgICAgPyBtaWdodCBiZSAxLjAzNjJ4IHNsb3dlcgogICBkZWx0YWJsdWUtdmFyYXJncyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5LjIyODQrLTEuMjI4NyAgICAgICAgICAg
MjkuMTA5OSstMC41NzUzICAgICAgICAKICAgZGVuc2Utc2V0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTY3Mi44Nzc4Ky0yNC4yNjY5ICAgID8gICAxNzA3LjI3MjMrLTQ0
LjU4NTkgICAgICAgPyBtaWdodCBiZSAxLjAyMDZ4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLWFy
Z3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2LjY5NzErLTAuNDUzMSAgICAgPyAg
ICAgMzYuOTYwNistMC4zNjMyICAgICAgICA/CiAgIGRlc3RydWN0dXJpbmctcGFyYW1ldGVycy1v
dmVycmlkZGVuLWJ5LWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuNDYwNistMC4wNjEwICAgICA/ICAgICAgMC40NjYyKy0w
LjAyNjkgICAgICAgID8gbWlnaHQgYmUgMS4wMTIyeCBzbG93ZXIKICAgZGVzdHJ1Y3R1cmluZy1z
d2FwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41ODY0Ky0wLjQyNzUgICAgICAg
ICAgICA0LjQyNzIrLTAuNDY2MSAgICAgICAgICBtaWdodCBiZSAxLjAzNTl4IGZhc3RlcgogICBk
aXJlY3QtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgICAxLjA1NjIr
LTAuMDkwNCAgICAgPyAgICAgIDEuMDc5MystMC4wOTI0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIy
MHggc2xvd2VyCiAgIGRpcmVjdC1hcmd1bWVudHMtbGVuZ3RoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYuNDExMystMC4zODI4ICAgICAgICAgICAgNi4zODk0Ky0wLjY0MTcgICAgICAgIAog
ICBkaXJlY3QtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoICAgICAgICAgICAgICAgICA2LjM0
MDUrLTAuMjk5NiAgICAgICAgICAgIDYuMzIxMCstMC4yNTY3ICAgICAgICAKICAgZGlyZWN0LWFy
Z3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjY3NzgrLTAuMjk0MyAgICAgICAg
ICAgIDYuNjI3NystMC4zNzU4ICAgICAgICAKICAgZGl2LWJvb2xlYW4tZG91YmxlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMy42OTk2Ky0wLjA3NDMgICAgID8gICAgICAzLjcwOTkr
LTAuMTI4NSAgICAgICAgPwogICBkaXYtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2Ljc0NTcrLTAuMTE4NiAgICAgPyAgICAgIDcuMDg0OCstMC4yNzkzICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDUwM3ggc2xvd2VyCiAgIGRvdWJsZS1nZXQtYnktdmFsLW91dC1v
Zi1ib3VuZHMgICAgICAgICAgICAgICAgICAgIDMuNjUzNSstMC4yMDI5ICAgICA/ICAgICAgMy43
NDI0Ky0wLjEyNzYgICAgICAgID8gbWlnaHQgYmUgMS4wMjQzeCBzbG93ZXIKICAgZG91YmxlLXBv
bGx1dGlvbi1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgNi40NjQyKy0wLjA2ODUg
ICAgID8gICAgICA2LjkyODUrLTAuNTY2NyAgICAgICAgPyBtaWdodCBiZSAxLjA3MTh4IHNsb3dl
cgogICBkb3VibGUtcG9sbHV0aW9uLXB1dGJ5b2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAz
LjM4MjMrLTAuNzYyNiAgICAgICAgICAgIDMuMjEyNistMC4wNjkwICAgICAgICAgIG1pZ2h0IGJl
IDEuMDUyOHggZmFzdGVyCiAgIGRvdWJsZS1yZWFsLXVzZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjQuMDk4MCstMi45MzAwICAgICA/ICAgICAyNi4wNTI4Ky0zLjU1NDkgICAg
ICAgID8gbWlnaHQgYmUgMS4wODExeCBzbG93ZXIKICAgZG91YmxlLXRvLWludDMyLXR5cGVkLWFy
cmF5LW5vLWlubGluZSAgICAgICAgICAgICAgMi4yMzE3Ky0wLjE2MjYgICAgID8gICAgICAyLjMx
MzIrLTAuMjAxMyAgICAgICAgPyBtaWdodCBiZSAxLjAzNjV4IHNsb3dlcgogICBkb3VibGUtdG8t
aW50MzItdHlwZWQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAyLjIyMjYrLTAuNDcxOCAg
ICAgICAgICAgIDIuMTg1NistMC4zODY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2OXggZmFzdGVy
CiAgIGRvdWJsZS10by11aW50MzItdHlwZWQtYXJyYXktbm8taW5saW5lICAgICAgICAgICAgIDIu
MzgzMystMC4yNjAyICAgICA/ICAgICAgMi40NTgyKy0wLjM1MTYgICAgICAgID8gbWlnaHQgYmUg
MS4wMzE0eCBzbG93ZXIKICAgZG91YmxlLXRvLXVpbnQzMi10eXBlZC1hcnJheSAgICAgICAgICAg
ICAgICAgICAgICAgMi4xNTI4Ky0wLjA5MTMgICAgID8gICAgICAyLjIzNjErLTAuMTg4NyAgICAg
ICAgPyBtaWdodCBiZSAxLjAzODd4IHNsb3dlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0LWRhZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjIxMDUrLTAuNzYzMSAgICAgICAgICAgMTcuMTEw
NSstMC4zNDE0ICAgICAgICAKICAgZWxpZGFibGUtbmV3LW9iamVjdC1yb2ZsY29wdGVyICAgICAg
ICAgICAgICAgICAgICAxNS4xODU5Ky0wLjQyNzggICAgICAgICAgIDE1LjEwMDgrLTAuNDgxMiAg
ICAgICAgCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtdGhlbi1jYWxsICAgICAgICAgICAgICAgICAg
ICAgMTYuNDQ4NystMS4zMjUwICAgICAgICAgICAxNi4wMTI2Ky0wLjg1MDYgICAgICAgICAgbWln
aHQgYmUgMS4wMjcyeCBmYXN0ZXIKICAgZWxpZGFibGUtbmV3LW9iamVjdC10cmVlICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNy4yMzQ2Ky0xLjI0NDkgICAgICAgICAgIDE2LjUyMjkrLTAuNzkw
NiAgICAgICAgICBtaWdodCBiZSAxLjA0MzF4IGZhc3RlcgogICBlbXB0eS1zdHJpbmctcGx1cy1p
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjMxMzUrLTAuMDQxNSAgICAgISAgICAg
IDQuNDg3NystMC4wNDgwICAgICAgICAhIGRlZmluaXRlbHkgMS4wNDA0eCBzbG93ZXIKICAgZW1z
Y3JpcHRlbi1jdWJlMmhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi44MjA4Ky0w
Ljk1MjAgICAgICAgICAgIDIyLjA2NjQrLTAuNzIzNiAgICAgICAgICBtaWdodCBiZSAxLjAzNDJ4
IGZhc3RlcgogICBldmFsLWNvbXB1dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDI0LjY5MzArLTIuODgzNCAgICAgPyAgICAgMjUuMjAyNSstMS4zNzU1ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDIwNnggc2xvd2VyCiAgIGV2YWwtbm90LWV2YWwtY29tcHV0ZS1hcmdzICAgICAg
ICAgICAgICAgICAgICAgICAgMjQuMDgwMSstMS4yNjg5ICAgICAgICAgICAyMy43NDgxKy0xLjM1
NTQgICAgICAgICAgbWlnaHQgYmUgMS4wMTQweCBmYXN0ZXIKICAgZXZhbC1ub3QtZXZhbC1jb21w
dXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi45NTYzKy0xLjM1MDkgICAgID8gICAg
IDIzLjg0MTMrLTEuOTczNSAgICAgICAgPyBtaWdodCBiZSAxLjAzODZ4IHNsb3dlcgogICBleGl0
LWxlbmd0aC1vbi1wbGFpbi1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICA4Ljc2ODcrLTAu
MjM3NiAgICAgPyAgICAgIDguODc3OCstMC4yNDQ5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyNHgg
c2xvd2VyCiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAg
ICAgIDEuMDY1NistMC4wOTA5ICAgICA/ICAgICAgMS4wODA2Ky0wLjA2NzcgICAgICAgID8gbWln
aHQgYmUgMS4wMTQyeCBzbG93ZXIKICAgZXh0ZXJuYWwtYXJndW1lbnRzLXB1dGJ5dmFsICAgICAg
ICAgICAgICAgICAgICAgICAgMi4wNjI5Ky0wLjA4MjIgICAgID8gICAgICAyLjEwMzcrLTAuMTcy
NyAgICAgICAgPyBtaWdodCBiZSAxLjAxOTh4IHNsb3dlcgogICBmaXhlZC10eXBlZC1hcnJheS1z
dG9yYWdlLXZhci1pbmRleCAgICAgICAgICAgICAgICAxLjQyNzMrLTAuMDM5NiAgICAgPyAgICAg
IDEuNDc0NCstMC4xMzA5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMzMHggc2xvd2VyCiAgIGZpeGVk
LXR5cGVkLWFycmF5LXN0b3JhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTU2OSstMC4w
Mzc3ICAgICAgICAgICAgMS4xMjE2Ky0wLjA0NDggICAgICAgICAgbWlnaHQgYmUgMS4wMzE1eCBm
YXN0ZXIKICAgRmxvYXQzMkFycmF5LW1hdHJpeC1tdWx0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC43MjI4Ky0wLjM3MzEgICAgID8gICAgICA0LjgwOTErLTAuNTA4NyAgICAgICAgPyBtaWdo
dCBiZSAxLjAxODN4IHNsb3dlcgogICBGbG9hdDMyQXJyYXktdG8tRmxvYXQ2NEFycmF5LXNldCAg
ICAgICAgICAgICAgICAgIDM5LjkzMjgrLTAuODQ5OCAgICAgICAgICAgMzguMzEwMCstMi4yOTcx
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyNHggZmFzdGVyCiAgIEZsb2F0NjRBcnJheS1hbGxvYy1s
b25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgNTAuNTUxMSstMi42NjkyICAgICAgICAgICA0
OS40ODQ1Ky0wLjg2MzEgICAgICAgICAgbWlnaHQgYmUgMS4wMjE2eCBmYXN0ZXIKICAgRmxvYXQ2
NEFycmF5LXRvLUludDE2QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICA0NS45MDI3Ky0yLjYw
ODkgICAgICAgICAgIDQ1LjgxMzgrLTAuNDU2MiAgICAgICAgCiAgIGZvbGQtZG91YmxlLXRvLWlu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNzA1MistMS4wNjIxICAgICAgICAg
ICAxMi4zODA1Ky0xLjA3NTkgICAgICAgICAgbWlnaHQgYmUgMS4wMjYyeCBmYXN0ZXIKICAgZm9s
ZC1nZXQtYnktaWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldC1yYXJlLWludCAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjMwNzYrLTAuOTQy
MyAgICAgPyAgICAgIDkuNjM2MystMS41MTg0ICAgICAgICA/IG1pZ2h0IGJlIDEuMTU5OXggc2xv
d2VyCiAgIGZvbGQtZ2V0LWJ5LWlkLXRvLW11bHRpLWdldC1ieS1vZmZzZXQgICAgICAgICAgICAg
IDUuOTU4MystMC4xMjQzICAgICAgICAgICAgNS45MzkxKy0wLjA0NjYgICAgICAgIAogICBmb2xk
LW11bHRpLWdldC1ieS1vZmZzZXQtdG8tZ2V0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjA4NDErLTAuMDU3MCAgICAg
PyAgICAgIDQuNjMxMCstMS4wNTgxICAgICAgICA/IG1pZ2h0IGJlIDEuMTMzOXggc2xvd2VyCiAg
IGZvbGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1wb2x5LWdldC1ieS1vZmZzZXQgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42Njg1Ky0x
LjEyNzQgICAgICAgICAgICA0LjUzMzMrLTEuMjQwOCAgICAgICAgICBtaWdodCBiZSAxLjAyOTh4
IGZhc3RlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZzZXQtdG8tcG9seS1wdXQtYnktb2Zmc2V0
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUuMjYxNistMS44MzAwICAgICA/ICAgICAgNS4zNzk0Ky0xLjg5MDYgICAgICAgID8gbWlnaHQg
YmUgMS4wMjI0eCBzbG93ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRvLXB1dC1ieS1v
ZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy41MDcwKy0wLjE3MTQgICAgICAgICAgICAzLjM1MzIrLTAuMjAxMCAgICAgICAgICBt
aWdodCBiZSAxLjA0NTl4IGZhc3RlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZzZXQtdG8tcmVw
bGFjZS1vci10cmFuc2l0aW9uLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4xOTg1Ky0wLjMxMTcgICAgICAgICAg
ICA2LjExMTYrLTAuMTU2MiAgICAgICAgICBtaWdodCBiZSAxLjAxNDJ4IGZhc3RlcgogICBmb2xk
LXB1dC1ieS1pZC10by1tdWx0aS1wdXQtYnktb2Zmc2V0ICAgICAgICAgICAgICA4LjU1NzgrLTIu
NTU2OSAgICAgPyAgICAgMTAuMzU0OSstMC4xMzQzICAgICAgICA/IG1pZ2h0IGJlIDEuMjEwMHgg
c2xvd2VyCiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN0cmluZy10by1tdWx0aS1wdXQtYnktb2Zm
c2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDYuODAxOSstMC40MjYzICAgICA/ICAgICAgNi45ODIzKy0wLjQ1ODYgICAgICAgID8gbWln
aHQgYmUgMS4wMjY1eCBzbG93ZXIKICAgZm9sZC1wdXQtYnktdmFsLXdpdGgtc3ltYm9sLXRvLW11
bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi41Njk3Ky0wLjEwODMgICAgID8gICAgICA2Ljc4NTIrLTAuMzc1
MyAgICAgICAgPyBtaWdodCBiZSAxLjAzMjh4IHNsb3dlcgogICBmb2xkLXB1dC1zdHJ1Y3R1cmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjE5OTkrLTEuNTA1MSAgICAgICAgICAg
IDMuOTIwNistMS40NTg1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDcxMnggZmFzdGVyCiAgIGZvci1v
Zi1pdGVyYXRlLWFycmF5LWVudHJpZXMgICAgICAgICAgICAgICAgICAgICAgIDguMzE4NistMC4x
OTc4ICAgICAgICAgICAgOC4zMDA0Ky0wLjI4MzcgICAgICAgIAogICBmb3Itb2YtaXRlcmF0ZS1h
cnJheS1rZXlzICAgICAgICAgICAgICAgICAgICAgICAgICAzLjcyNzErLTAuMTQ5NyAgICAgPyAg
ICAgIDMuNzcxNystMC4zMjI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMHggc2xvd2VyCiAgIGZv
ci1vZi1pdGVyYXRlLWFycmF5LXZhbHVlcyAgICAgICAgICAgICAgICAgICAgICAgIDMuNzY5Nyst
MC40Mjg2ICAgICAgICAgICAgMy41MjM1Ky0wLjE0ODQgICAgICAgICAgbWlnaHQgYmUgMS4wNjk5
eCBmYXN0ZXIKICAgZnJlZXplLWFuZC1kby13b3JrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMi41MDU3Ky0xLjA2MTkgICAgID8gICAgIDEyLjU4MDQrLTAuODQ0MSAgICAgICAgPwog
ICBmcm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjQ0
NjErLTAuMTQ5MCAgICAgICAgICAgIDkuMzYyMistMC4xMDAwICAgICAgICAKICAgZnRsLWxpYnJh
cnktaW5saW5pbmctZGF0YXZpZXcgICAgICAgICAgICAgICAgICAgICA1Ny41NTc1Ky0wLjY2NjQg
ICAgID8gICAgIDU3Ljk1NDMrLTAuNTYxOCAgICAgICAgPwogICBmdGwtbGlicmFyeS1pbmxpbmlu
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjEyMDUrLTEuOTAwMyAgICAgPyAgICAg
MjMuNDYyOCstMy4xNjAwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0OHggc2xvd2VyCiAgIGZ0bC1w
b2x5bW9ycGhpYy1iaXRhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjguNDUzMistMy4z
NjAxICAgICAgICAgIDEyNS4yNjAyKy0xLjU4MDkgICAgICAgICAgbWlnaHQgYmUgMS4wMjU1eCBm
YXN0ZXIKICAgZnRsLXBvbHltb3JwaGljLWJpdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEyOC4yMDk3Ky0yLjIxNDIgICAgICAgICAgMTI1LjkxMDArLTIuNjg3MyAgICAgICAgICBtaWdo
dCBiZSAxLjAxODN4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtYml0eG9yICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTMwLjgzMzkrLTEuMDg3NyAgICAgXiAgICAxMjUuMjg3NCstMS45ODg4
ICAgICAgICBeIGRlZmluaXRlbHkgMS4wNDQzeCBmYXN0ZXIKICAgZnRsLXBvbHltb3JwaGljLWRp
diAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0MC4zMjAxKy0yLjk0MzQgICAgID8gICAg
NDQxLjAzNDYrLTcuNTk0OSAgICAgICAgPwogICBmdGwtcG9seW1vcnBoaWMtbHNoaWZ0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTU0LjM2MDIrLTEuODA5OCAgICAgICAgICAxNTIuMjIwMyst
Mi4wMjUxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0MXggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhp
Yy1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMjYuNDEwMistMy44NjkxICAgICA/
ICAgIDIyOC4yNjQ0Ky01LjczMDcgICAgICAgID8KICAgZnRsLXBvbHltb3JwaGljLXJzaGlmdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE1NS4yNTIxKy0zLjUxODggICAgICAgICAgMTUyLjk4
NDYrLTMuMjYzOSAgICAgICAgICBtaWdodCBiZSAxLjAxNDh4IGZhc3RlcgogICBmdGwtcG9seW1v
cnBoaWMtU3RyaW5nRnJvbUNoYXJDb2RlICAgICAgICAgICAgICAgIDQyLjcwNTErLTMuOTEyNCAg
ICAgICAgICAgNDEuMjg0OCstMS42Nzg0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0NHggZmFzdGVy
CiAgIGZ0bC1wb2x5bW9ycGhpYy1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTAu
NTkxNSstMi4xNDA2ICAgICAgICAgIDE0OC41NDg0Ky0yLjM3NDQgICAgICAgICAgbWlnaHQgYmUg
MS4wMTM4eCBmYXN0ZXIKICAgZnRsLXBvbHltb3JwaGljLXVyc2hpZnQgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE2Ny4yMTkyKy0zLjc0MjEgICAgICAgICAgMTYzLjczNDMrLTIuODA1MiAgICAg
ICAgICBtaWdodCBiZSAxLjAyMTN4IGZhc3RlcgogICBmdW5jdGlvbi1iaW5kLWlubGluaW5nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDM4LjEwODgrLTYuMDYzMiAgICAgPyAgICA0NDUuMjQ2
MystNi4yOTU5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2M3ggc2xvd2VyCiAgIGZ1bmN0aW9uLWJp
bmQtbm8taW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICA0NDIuMDYzNSstMy41MTM4ICAg
ICA/ICAgIDQ0NC44MzYyKy00Ljg3ODMgICAgICAgID8KICAgZnVuY3Rpb24tY2FsbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS45MjMzKy0wLjE0NjQgICAgID8gICAgIDEw
LjI1NjMrLTAuNjIwOSAgICAgICAgPyBtaWdodCBiZSAxLjAzMzV4IHNsb3dlcgogICBmdW5jdGlv
bi1kb3QtYXBwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjkzMTArLTAuMDcy
NSAgICAgPyAgICAgIDIuMDM0NCstMC4yOTU3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUzNXggc2xv
d2VyCiAgIGZ1bmN0aW9uLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuNDc1MystMC4wNTczICAgICA/ICAgICAgMi40Nzg3Ky0wLjA5MjggICAgICAgID8KICAgZnVu
Y3Rpb24td2l0aC1ldmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy4wMzY3Ky0w
LjMyNDUgICAgIF4gICAgIDM1LjA0NTQrLTAuMjk3MyAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDU2
OHggZmFzdGVyCiAgIGdjc2UtcG9seS1nZXQtbGVzcy1vYnZpb3VzICAgICAgICAgICAgICAgICAg
ICAgICAgMTQuNTc3MSstMC40NTk1ICAgICA/ICAgICAxNC44ODUzKy0wLjU2ODMgICAgICAgID8g
bWlnaHQgYmUgMS4wMjExeCBzbG93ZXIKICAgZ2NzZS1wb2x5LWdldCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNC43NTI1Ky0wLjYyOTMgICAgICAgICAgIDE0LjQ0MTYrLTAu
NzIwMiAgICAgICAgICBtaWdodCBiZSAxLjAyMTV4IGZhc3RlcgogICBnY3NlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE3ODYrLTAuMDY2NyAgICAgICAg
ICAgIDMuMTc1NystMC4wOTE1ICAgICAgICAKICAgZ2VuZXJhdG9yLWNyZWF0ZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC43MDc3Ky0wLjA0MDcgICAgID8gICAgICAwLjc5MDcr
LTAuMDUwMSAgICAgICAgPyBtaWdodCBiZSAxLjExNzR4IHNsb3dlcgogICBnZW5lcmF0b3ItZmli
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5LjkyODYrLTAuMTkwOCAgICAg
PyAgICAgMzAuMjE5NSstMC41MjU4ICAgICAgICA/CiAgIGdlbmVyYXRvci1mdW5jdGlvbi1jcmVh
dGUgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDkwNSstMC4yMzk0ICAgICA/ICAgICAgMy41
NjA0Ky0wLjQ4MDEgICAgICAgID8gbWlnaHQgYmUgMS4wMjAweCBzbG93ZXIKICAgZ2VuZXJhdG9y
LXN1bnNwaWRlci1hY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgNC4zNjYzKy0wLjEyOTcg
ICAgID8gICAgICA0LjM5NDcrLTAuMjAzNCAgICAgICAgPwogICBnZW5lcmF0b3Itd2l0aC1zZXZl
cmFsLXR5cGVzICAgICAgICAgICAgICAgICAgICAgIDk4LjI5MjYrLTcuNjg0MiAgICAgPyAgICAx
MDIuMTc3NystOS4yMjc2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM5NXggc2xvd2VyCiAgIGdldC1i
eS1pZC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjIzOTIr
LTAuMTI3MyAgICAgPyAgICAgIDIuMjY2OSstMC4wODYzICAgICAgICA/IG1pZ2h0IGJlIDEuMDEy
NHggc2xvd2VyCiAgIGdldC1ieS1pZC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0
aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQuMjg3MistMC40MDAzICAgICA/ICAgICAgNC4zNzE4Ky0wLjQ5ODEgICAgICAgID8gbWln
aHQgYmUgMS4wMTk3eCBzbG93ZXIKICAgZ2V0LWJ5LWlkLWNoYWluLWZyb20tdHJ5LWJsb2NrICAg
ICAgICAgICAgICAgICAgICAgMS44MjIwKy0wLjEzMDYgICAgID8gICAgICAxLjg1MjArLTAuMDg3
MiAgICAgICAgPyBtaWdodCBiZSAxLjAxNjV4IHNsb3dlcgogICBnZXQtYnktaWQtY2hlY2stc3Ry
dWN0dXJlLWVsaW1pbmF0aW9uICAgICAgICAgICAgICAyLjg5NDMrLTAuMzEzNCAgICAgICAgICAg
IDIuNzUwOCstMC4wNjg5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUyMnggZmFzdGVyCiAgIGdldC1i
eS1pZC1wcm90by1vci1zZWxmICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNzEwNistMC42
MzQ1ICAgICAgICAgICAgOS40MjI2Ky0wLjMzNzQgICAgICAgICAgbWlnaHQgYmUgMS4wMzA2eCBm
YXN0ZXIKICAgZ2V0LWJ5LWlkLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlv
bi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi42NDQ0Ky0wLjA0MTggICAgICAgICAgICAyLjYwNjMrLTAuMDMwNiAgICAgICAg
ICBtaWdodCBiZSAxLjAxNDZ4IGZhc3RlcgogICBnZXQtYnktaWQtc2VsZi1vci1wcm90byAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5LjU0MDkrLTAuNTU1MiAgICAgICAgICAgIDkuMTUyNSst
MC4yMjc3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyNHggZmFzdGVyCiAgIGdldC1ieS12YWwtb3V0
LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzkxNCstMC4yMTc1ICAgICAg
ICAgICAgMy43MjYyKy0wLjE2MDcgICAgICAgICAgbWlnaHQgYmUgMS4wMTc1eCBmYXN0ZXIKICAg
Z2V0LWJ5LXZhbC13aXRoLXN0cmluZy1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0
aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjAyMjkrLTAuMDY4MSAgICAgICAgICAgIDIuOTgwNCstMC4wNTUwICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDE0M3ggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmlt
b3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljc4OTgrLTAuMTc5NCAgICAgPyAg
ICAgIDUuOTgxNistMC40MzMyICAgICAgICA/IG1pZ2h0IGJlIDEuMDMzMXggc2xvd2VyCiAgIGdl
dC1ieS12YWwtd2l0aC1zdHJpbmctY2hhaW4tZnJvbS10cnktYmxvY2sgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45NDE5Ky0wLjA4NTYg
ICAgICAgICAgICAxLjkzODYrLTAuMDU5NCAgICAgICAgCiAgIGdldC1ieS12YWwtd2l0aC1zdHJp
bmctY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNTUyNistMC40NTc4ICAgICA/ICAgICAg
NS42ODk4Ky0wLjM2MjIgICAgICAgID8gbWlnaHQgYmUgMS4wMjQ3eCBzbG93ZXIKICAgZ2V0LWJ5
LXZhbC13aXRoLXN0cmluZy1wcm90by1vci1zZWxmICAgICAgICAgICAgICAgOC41OTQyKy0xLjI3
MzAgICAgID8gICAgICA5LjUxNTIrLTEuNDY1MSAgICAgICAgPyBtaWdodCBiZSAxLjEwNzJ4IHNs
b3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVy
ZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy42NDg1Ky0wLjA0NTMgICAgID8gICAgICAzLjc2NjIrLTAu
MjUxOSAgICAgICAgPyBtaWdodCBiZSAxLjAzMjN4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgt
c3RyaW5nLXNlbGYtb3ItcHJvdG8gICAgICAgICAgICAgICA4LjgzNDQrLTAuNzI5MCAgICAgPyAg
ICAgIDkuMDMxMistMC40ODIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyM3ggc2xvd2VyCiAgIGdl
dC1ieS12YWwtd2l0aC1zeW1ib2wtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlv
bi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi42MTExKy0wLjEzODMgICAgID8gICAgICAyLjY0NjIrLTAuMDk5OCAgICAgICAg
PyBtaWdodCBiZSAxLjAxMzR4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWJpbW9y
cGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4zNTI5Ky0wLjA1NzcgICAgID8gICAg
ICA3LjQwODErLTAuMTI4NiAgICAgICAgPwogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoYWlu
LWZyb20tdHJ5LWJsb2NrICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEuOTI1MistMC4xMDM5ICAgICAgICAgICAgMS45MjI1Ky0wLjA1MDMg
ICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5h
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjY1ODQrLTAuMDQ2NSAgICAgPyAgICAgIDUuODM1NSstMC4yNDc5ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDMxM3ggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtcHJvdG8tb3It
c2VsZiAgICAgICAgICAgICAgIDkuMzI0NSstMC4zOTc2ICAgICA/ICAgICAgOS40NzYyKy0wLjkx
MzYgICAgICAgID8gbWlnaHQgYmUgMS4wMTYzeCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5
bWJvbC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTY1
MCstMC4zNTMyICAgICA/ICAgICAgMy4xODQwKy0wLjI0MzAgICAgICAgID8KICAgZ2V0LWJ5LXZh
bC13aXRoLXN5bWJvbC1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAgOS4wODAwKy0wLjQzMDIg
ICAgID8gICAgICA5LjcxNTMrLTEuNDAzNSAgICAgICAgPyBtaWdodCBiZSAxLjA3MDB4IHNsb3dl
cgogICBnZXRfYnlfdmFsLUludDMyQXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
LjIxOTgrLTAuMDY2MyAgICAgPyAgICAgIDEuMzEyMistMC4xNzQyICAgICAgICA/IG1pZ2h0IGJl
IDEuMDc1OHggc2xvd2VyCiAgIGdldF9jYWxsZWVfbW9ub21vcnBoaWMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEuOTg2OSstMC4xMjEwICAgICAgICAgICAgMS44MDAyKy0wLjE0MTEgICAg
ICAgICAgbWlnaHQgYmUgMS4xMDM3eCBmYXN0ZXIKICAgZ2V0X2NhbGxlZV9wb2x5bW9ycGhpYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43NDM3Ky0wLjQzNDMgICAgICAgICAgICAyLjQ2
NTMrLTAuMDc2OCAgICAgICAgICBtaWdodCBiZSAxLjExMjl4IGZhc3RlcgogICBnZXR0ZXItbm8t
YWN0aXZhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjkzMDQrLTAuMzYzMyAg
ICAgICAgICAgIDIuNzgxOSstMC4wODIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDUzNHggZmFzdGVy
CiAgIGdldHRlci1wcm90b3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQu
NTI4NCstMC4wNzc5ICAgICA/ICAgICAgNC42ODk1Ky0wLjQwOTYgICAgICAgID8gbWlnaHQgYmUg
MS4wMzU2eCBzbG93ZXIKICAgZ2V0dGVyLXJpY2hhcmRzLXRyeS1jYXRjaCAgICAgICAgICAgICAg
ICAgICAgICAgIDc3MC4xNzI0Ky04LjAwNTAgICAgID8gICAgNzc2LjcxMjgrLTYuNjczOSAgICAg
ICAgPwogICBnZXR0ZXItcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDU4LjAyNTcrLTMuOTg4MCAgICAgPyAgICAgNTkuOTM5MistNS4zMjc2ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDMzMHggc2xvd2VyCiAgIGdldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuOTU2MSstMC4wNTg2ICAgICAgICAgICAgMi45NDAzKy0wLjA3MTgg
ICAgICAgIAogICBnbG9iYWwtaXNOYU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEwLjM0ODErLTAuNjg4MSAgICAgICAgICAgIDkuODU5MCstMC4wNzc3ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDQ5NnggZmFzdGVyCiAgIGdsb2JhbC1vYmplY3QtYWNjZXNzLXdpdGgtbXV0YXRp
bmctc3RydWN0dXJlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuMDcyNCstMC4zMDI5ICAgICAgICAgICAgNC45ODM5Ky0wLjE2ODUgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTc4eCBmYXN0ZXIKICAgZ2xvYmFsLXZhci1jb25zdC1pbmZlci1m
aXJlLWZyb20tb3B0ICAgICAgICAgICAgICAgMC44MTIyKy0wLjA3MjMgICAgICAgICAgICAwLjgx
MTYrLTAuMDc5MSAgICAgICAgCiAgIGdsb2JhbC12YXItY29uc3QtaW5mZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuNjkwNCstMC4wMjg4ICAgICA/ICAgICAgMC42OTgxKy0wLjAzMjUg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTExeCBzbG93ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjay1l
cXVhbCAgICAgICAgICAgICAgICAgICAgICAgICAyMy4wNDEwKy0wLjk2MTYgICAgICAgICAgIDIy
LjgxNDkrLTEuODI1NiAgICAgICAgCiAgIGhhcmQtb3ZlcmZsb3ctY2hlY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjIuODIxOCstMS4yODUzICAgICAgICAgICAyMi43NzEyKy0xLjQx
ODIgICAgICAgIAogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZS1rZXlzICAgICAgICAgICAgICAg
ICAgICAgIDIxLjE1MTIrLTAuODQ2OSAgICAgPyAgICAgMjEuNjkwOCstMC4zOTA3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI1NXggc2xvd2VyCiAgIEhhc2hNYXAtcHV0LWdldC1pdGVyYXRlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjAuOTA3OSstMC40OTY4ICAgICA/ICAgICAyMS41ODAzKy0x
LjI0MzkgICAgICAgID8gbWlnaHQgYmUgMS4wMzIyeCBzbG93ZXIKICAgSGFzaE1hcC1zdHJpbmct
cHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAyMi4yMTk4Ky0wLjM3NDUgICAgID8g
ICAgIDIyLjQ4NzUrLTAuMzk0NSAgICAgICAgPyBtaWdodCBiZSAxLjAxMjB4IHNsb3dlcgogICBo
b2lzdC1tYWtlLXJvcGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc1NjAr
LTAuMzI0NiAgICAgICAgICAgIDMuNTA4NSstMC4xMjgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDcw
NXggZmFzdGVyCiAgIGhvaXN0LXBvbHktY2hlY2stc3RydWN0dXJlLWVmZmVjdGZ1bC1sb29wICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
OTAyMystMC4wODcxICAgICA/ICAgICAgMi45NjI1Ky0wLjAyOTMgICAgICAgID8gbWlnaHQgYmUg
MS4wMjA3eCBzbG93ZXIKICAgaG9pc3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUgICAgICAgICAgICAg
ICAgICAgICAgICAgMi4wNDQ2Ky0wLjEyNTkgICAgICAgICAgICAxLjk4NjIrLTAuMDc1NSAgICAg
ICAgICBtaWdodCBiZSAxLjAyOTR4IGZhc3RlcgogICBpbXBsaWNpdC1iaWdzd2l0Y2gtaW5kaXJl
Y3Qtc3ltYm9sICAgICAgICAgICAgICAgIDQ2LjU3NDErLTAuODEyMiAgICAgICAgICAgNDUuOTk1
NCstMC4yNjQyICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyNnggZmFzdGVyCiAgIGltdWwtZG91Ymxl
LW9ubHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjEzNistMC4yMDY5ICAg
ICA/ICAgICAgMy4yOTY3Ky0wLjI5NjMgICAgICAgID8gbWlnaHQgYmUgMS4wMjU5eCBzbG93ZXIK
ICAgaW11bC1pbnQtb25seSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4w
NTQzKy0wLjc5MTIgICAgICAgICAgICA1LjIzODYrLTAuMzU2NyAgICAgICAgICBtaWdodCBiZSAx
LjE1NTd4IGZhc3RlcgogICBpbXVsLW1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjk3MzgrLTAuMTA2OSAgICAgPyAgICAgIDMuMTkzMCstMC4zODMxICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDczN3ggc2xvd2VyCiAgIGluLWZvdXItY2FzZXMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTUuMzIwNSstMS4zNjE5ICAgICAgICAgICAxNC42MTY1
Ky0xLjE4MTcgICAgICAgICAgbWlnaHQgYmUgMS4wNDgyeCBmYXN0ZXIKICAgaW4tb25lLWNhc2Ut
ZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4zMjA5Ky0wLjE0MjcgICAg
ID8gICAgICA3LjM0NjYrLTAuMDYwNyAgICAgICAgPwogICBpbi1vbmUtY2FzZS10cnVlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjU3NDMrLTAuNDQ2NyAgICAgICAgICAgIDcu
Mjk1MSstMC4xMTY1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4M3ggZmFzdGVyCiAgIGluLXR3by1j
YXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuOTExMSstMC40ODI3
ICAgICAgICAgICAgNy41ODE2Ky0wLjE2MDAgICAgICAgICAgbWlnaHQgYmUgMS4wNDM1eCBmYXN0
ZXIKICAgaW5kZXhlZC1wcm9wZXJ0aWVzLWluLW9iamVjdHMgICAgICAgICAgICAgICAgICAgICAg
Mi42NDk5Ky0wLjEzMjQgICAgICAgICAgICAyLjYxMDUrLTAuMDMzMiAgICAgICAgICBtaWdodCBi
ZSAxLjAxNTF4IGZhc3RlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92LW5vLWlubGlu
ZSAgICAgICAgICAgICAyLjk2MTYrLTAuMDkzMSAgICAgPyAgICAgIDMuMTA2OSstMC4yNDY3ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDQ5MXggc2xvd2VyCiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhl
bi1tb3YgICAgICAgICAgICAgICAgICAgICAgIDYuODExMistMC41MDM4ICAgICAgICAgICAgNi40
NTgzKy0wLjEyNTggICAgICAgICAgbWlnaHQgYmUgMS4wNTQ2eCBmYXN0ZXIKICAgaW5mZXItY2xv
c3VyZS1jb25zdC10aGVuLXB1dC10by1zY29wZS1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS40MjQ4Ky0wLjU5MTAgICAg
ICAgICAgIDExLjQxMTMrLTAuNjM3NSAgICAgICAgCiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhl
bi1wdXQtdG8tc2NvcGUgICAgICAgICAgICAgMTkuOTYxMCstMC45NTMyICAgICAgICAgICAxOS4z
OTcyKy0wLjU0OTIgICAgICAgICAgbWlnaHQgYmUgMS4wMjkxeCBmYXN0ZXIKICAgaW5mZXItY2xv
c3VyZS1jb25zdC10aGVuLXJlZW50ZXItbm8taW5saW5lICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEuNDk0MSstMC4zMzI0ICAgICA/ICAg
ICA1MS44MjcwKy0wLjQzODggICAgICAgID8KICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJl
ZW50ZXIgICAgICAgICAgICAgICAgICAyMS4wODAzKy0xLjUxNTcgICAgICAgICAgIDE5Ljc1NDIr
LTEuMTY2OCAgICAgICAgICBtaWdodCBiZSAxLjA2NzF4IGZhc3RlcgogICBpbmZlci1jb25zdGFu
dC1nbG9iYWwtcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAyLjUyODQrLTAuMDcyMSAgICAg
PyAgICAgIDIuNjY5OCstMC4yOTQ2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU1OXggc2xvd2VyCiAg
IGluZmVyLWNvbnN0YW50LXByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjQ5
NSstMC4zMTY0ICAgICAgICAgICAgMi4xNzA4Ky0wLjM2ODUgICAgICAgICAgbWlnaHQgYmUgMS4w
MzYzeCBmYXN0ZXIKICAgaW5mZXItb25lLXRpbWUtY2xvc3VyZS10ZW4tdmFycyAgICAgICAgICAg
ICAgICAgICAgNi4zMTc4Ky0wLjIxNjEgICAgICAgICAgICA2LjIxMDQrLTAuMTA4MCAgICAgICAg
ICBtaWdodCBiZSAxLjAxNzN4IGZhc3RlcgogICBpbmZlci1vbmUtdGltZS1jbG9zdXJlLXR3by12
YXJzICAgICAgICAgICAgICAgICAgICA2LjA2NjQrLTAuNDA5NiAgICAgICAgICAgIDUuOTA2Nist
MC4xODYyICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3MHggZmFzdGVyCiAgIGluZmVyLW9uZS10aW1l
LWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODM3NCstMC4wOTc4ICAgICA/
ICAgICAgNi4yNjY2Ky0xLjAyMTEgICAgICAgID8gbWlnaHQgYmUgMS4wNzM1eCBzbG93ZXIKICAg
aW5mZXItb25lLXRpbWUtZGVlcC1jbG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAxMC43MzE5
Ky0wLjI2MDcgICAgID8gICAgIDExLjI4NjgrLTAuNzA5OCAgICAgICAgPyBtaWdodCBiZSAxLjA1
MTd4IHNsb3dlcgogICBpbmxpbmUtYXJndW1lbnRzLWFjY2VzcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjk1MjkrLTAuMTUyMiAgICAgXiAgICAgIDIuNjEyMCstMC4wODg1ICAgICAgICBe
IGRlZmluaXRlbHkgMS4xMzA1eCBmYXN0ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1hbGlhc2VkLWFj
Y2VzcyAgICAgICAgICAgICAgICAgICAgMi44NDM3Ky0wLjIyMTggICAgICAgICAgICAyLjc1NDQr
LTAuMjAzMCAgICAgICAgICBtaWdodCBiZSAxLjAzMjR4IGZhc3RlcgogICBpbmxpbmUtYXJndW1l
bnRzLWxvY2FsLWVzY2FwZSAgICAgICAgICAgICAgICAgICAgICAyLjk5MzIrLTAuNDU0NiAgICAg
ICAgICAgIDIuNjQ2MystMC4xOTk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMTMxMXggZmFzdGVyCiAg
IGlubGluZS1nZXQtc2NvcGVkLXZhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTcx
NSstMC4wOTk0ICAgICAgICAgICAgMi4xMjIwKy0wLjA0NjEgICAgICAgICAgbWlnaHQgYmUgMS4w
MjM0eCBmYXN0ZXIKICAgaW5saW5lZC1wdXQtYnktaWQtdHJhbnNpdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAgNS45MjQ4Ky0wLjA1MzEgICAgID8gICAgICA1Ljk0MDcrLTAuMTIyMyAgICAgICAg
PwogICBpbmxpbmVkLXB1dC1ieS12YWwtd2l0aC1zdHJpbmctdHJhbnNpdGlvbiAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4Ljg5NDMrLTMu
MjY4NSAgICAgPyAgICAgMzkuMDg3NSstMS44MDIzICAgICAgICA/CiAgIGlubGluZWQtcHV0LWJ5
LXZhbC13aXRoLXN5bWJvbC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzcuNzY4OCstMC4zNTU0ICAgICA/ICAgICAzNy44
MzE2Ky0wLjI5ODYgICAgICAgID8KICAgaW5zdGFuY2VvZi1ib3VuZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyMC44NDM3Ky0xLjc0OTggICAgID8gICAgIDIxLjMwOTQrLTEuOTA4
NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMjN4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWJzLXRo
ZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA3LjYwNTQrLTAuNTI0MiAgICAgICAgICAg
IDcuNDI1OCstMC4xMTE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0MnggZmFzdGVyCiAgIGludC1v
ci1vdGhlci1hYnMtemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTYuNTY1OCstMS44
OTgyICAgICAgICAgICAxNS40Njk1Ky0wLjgyMDYgICAgICAgICAgbWlnaHQgYmUgMS4wNzA5eCBm
YXN0ZXIKICAgaW50LW9yLW90aGVyLWFkZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAg
ICAgMy43ODk3Ky0wLjEwMzEgICAgICAgICAgICAzLjc2MzErLTAuMDg2NiAgICAgICAgCiAgIGlu
dC1vci1vdGhlci1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNDY5Nyst
MC4xMjY3ICAgICA/ICAgICAgNC44MzI3Ky0wLjQzOTYgICAgICAgID8gbWlnaHQgYmUgMS4wODEy
eCBzbG93ZXIKICAgaW50LW9yLW90aGVyLWRpdi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAg
ICAgICAgMy4zMDY1Ky0wLjI5MDAgICAgICAgICAgICAzLjI0ODUrLTAuMDg5MiAgICAgICAgICBt
aWdodCBiZSAxLjAxNzh4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItbWF4LXRoZW4tZ2V0LWJ5LXZh
bCAgICAgICAgICAgICAgICAgICAzLjU0MzIrLTAuMzE0NSAgICAgICAgICAgIDMuNDI1MSstMC4x
MjU2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0NXggZmFzdGVyCiAgIGludC1vci1vdGhlci1taW4t
dGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDMuMzc4NSstMC4xMDQxICAgICA/ICAg
ICAgMy40NDUxKy0wLjE1NjEgICAgICAgID8gbWlnaHQgYmUgMS4wMTk3eCBzbG93ZXIKICAgaW50
LW9yLW90aGVyLW1vZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgMy4yODQ1Ky0w
LjEyMjggICAgID8gICAgICAzLjMyMTkrLTAuMTY4NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTR4
IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbXVsLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAg
ICAgICA1LjM0MjkrLTAuMDY4NiAgICAgICAgICAgIDUuMjk1NSstMC4wODM4ICAgICAgICAKICAg
aW50LW9yLW90aGVyLW5lZy10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgMy44Nzcw
Ky0wLjQwNDYgICAgICAgICAgICAzLjcyMjUrLTAuMDU4MyAgICAgICAgICBtaWdodCBiZSAxLjA0
MTV4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItbmVnLXplcm8tdGhlbi1nZXQtYnktdmFsICAgICAg
ICAgICAgIDE2LjUyNTcrLTEuNjMwMiAgICAgICAgICAgMTUuNTI3NCstMS40ODYwICAgICAgICAg
IG1pZ2h0IGJlIDEuMDY0M3ggZmFzdGVyCiAgIGludC1vci1vdGhlci1zdWItdGhlbi1nZXQtYnkt
dmFsICAgICAgICAgICAgICAgICAgIDQuNjkzOSstMC4xODA3ICAgICA/ICAgICAgNC43MzE2Ky0w
LjA5MzUgICAgICAgID8KICAgaW50LW9yLW90aGVyLXN1YiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMy43ODU0Ky0wLjA4NDMgICAgICAgICAgICAzLjc4NTIrLTAuMDc5MyAgICAg
ICAgCiAgIGludC1vdmVyZmxvdy1sb2NhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuNjYwOCstMC4xMjQ2ICAgICA/ICAgICAgMy42OTMwKy0wLjE1MjkgICAgICAgID8KICAgSW50
MTZBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICAzNC4zOTM2Ky0z
LjAwMzggICAgID8gICAgIDM1LjMxODMrLTAuMzQ3MCAgICAgICAgPyBtaWdodCBiZSAxLjAyNjl4
IHNsb3dlcgogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aCAgICAgICAg
ICAgIDE2Ljg3NjQrLTEuODMyNyAgICAgPyAgICAgMTcuMjU4MystMS45OTE0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDIyNnggc2xvd2VyCiAgIEludDE2QXJyYXktYnViYmxlLXNvcnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTUuNDk4NistMS4xNzcxICAgICA/ICAgICAxNS44NTk5Ky0xLjAw
NDYgICAgICAgID8gbWlnaHQgYmUgMS4wMjMzeCBzbG93ZXIKICAgSW50MTZBcnJheS1sb2FkLWlu
dC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS43ODIwKy0wLjI5NzYgICAgID8gICAg
ICAxLjg0ODIrLTAuNDQ4NCAgICAgICAgPyBtaWdodCBiZSAxLjAzNzF4IHNsb3dlcgogICBJbnQx
NkFycmF5LXRvLUludDMyQXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICAgIDM3LjEzNjIrLTEu
MjY2MiAgICAgICAgICAgMzYuMDUxMystMC40ODMyICAgICAgICAgIG1pZ2h0IGJlIDEuMDMwMXgg
ZmFzdGVyCiAgIEludDMyQXJyYXktYWxsb2MtbGFyZ2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTEuMjg4NCstMC4yNDgwICAgICA/ICAgICAxMS43MTA5Ky0wLjYzMDAgICAgICAgID8gbWln
aHQgYmUgMS4wMzc0eCBzbG93ZXIKICAgSW50MzJBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAg
ICAgICAgICAgICAgICAgICAzOC4zODk2Ky0wLjUwNzYgICAgID8gICAgIDM5LjU2NTkrLTEuMTQy
OCAgICAgICAgPyBtaWdodCBiZSAxLjAzMDZ4IHNsb3dlcgogICBJbnQzMkFycmF5LWFsbG9jICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjExOTUrLTAuMTA2OSAgICAgICAgICAg
IDMuMDAyMistMC4xODAyICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5MXggZmFzdGVyCiAgIEludDMy
QXJyYXktSW50OEFycmF5LXZpZXctYWxsb2MgICAgICAgICAgICAgICAgICAgIDYuNzYyOCstMC4z
NTY0ICAgICA/ICAgICAgNi44OTQ4Ky0wLjM0NjggICAgICAgID8gbWlnaHQgYmUgMS4wMTk1eCBz
bG93ZXIKICAgaW50NTItc3BpbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNS4wMjM3Ky0wLjMwMDYgICAgICAgICAgICA0Ljk1NDcrLTAuNDA3NiAgICAgICAgICBtaWdo
dCBiZSAxLjAxMzl4IGZhc3RlcgogICBJbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAg
ICAgICAgICAgICAgICAgIDI5LjgwNzkrLTAuNTQzNyAgICAgPyAgICAgMzAuNTUzNCstMC43NjUw
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1MHggc2xvd2VyCiAgIEludDhBcnJheS1sb2FkLXdpdGgt
Ynl0ZUxlbmd0aCAgICAgICAgICAgICAgICAgICAgIDMuMzk4MCstMC4xMzk1ICAgICA/ICAgICAg
My40MzY2Ky0wLjE5MjMgICAgICAgID8gbWlnaHQgYmUgMS4wMTE0eCBzbG93ZXIKICAgSW50OEFy
cmF5LWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy40MDk0Ky0wLjI3
MjIgICAgID8gICAgICAzLjU4MzUrLTAuNjAzNyAgICAgICAgPyBtaWdodCBiZSAxLjA1MTF4IHNs
b3dlcgogICBpbnRlZ2VyLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA5Ljc2MjArLTAuMjY5MyAgICAgICAgICAgIDkuNzU2MSstMC4yNTQwICAgICAgICAKICAgaW50
ZWdlci1tb2R1bG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45Mzc0Ky0w
LjA1NzQgICAgICAgICAgICAxLjkyMzUrLTAuMDY5OSAgICAgICAgCiAgIGlzLWJvb2xlYW4tZm9s
ZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzYyNCstMC4yNTYyICAgICAg
ICAgICAgMi42NTkyKy0wLjA5MzcgICAgICAgICAgbWlnaHQgYmUgMS4wMzg4eCBmYXN0ZXIKICAg
aXMtYm9vbGVhbi1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xODEx
Ky0wLjI4ODcgICAgICAgICAgICAyLjAwNDArLTAuMDc1MSAgICAgICAgICBtaWdodCBiZSAxLjA4
ODN4IGZhc3RlcgogICBpcy1mdW5jdGlvbi1mb2xkLXRyaWNreS1pbnRlcm5hbC1mdW5jdGlvbiAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
LjU1OTcrLTAuNDk1NyAgICAgICAgICAgIDkuMzY5OSstMC41NzE1ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDIwMnggZmFzdGVyCiAgIGlzLWZ1bmN0aW9uLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNzg4NystMC4wODc4ICAgICAgICAgICAgMi43ODM3Ky0wLjA3NjAgICAg
ICAgIAogICBpcy1mdW5jdGlvbi1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjAwOTIrLTAuMDU2OCAgICAgPyAgICAgIDIuMDI5OCstMC4wNzI4ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDEwMnggc2xvd2VyCiAgIGlzLW51bWJlci1mb2xkLXRyaWNreSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuNzQzMistMC4wNjg4ICAgICA/ICAgICAgMi43OTU4Ky0wLjEwMjQg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTkyeCBzbG93ZXIKICAgaXMtbnVtYmVyLWZvbGQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4wOTE0Ky0wLjI5NjMgICAgICAgICAgICAy
LjAwODYrLTAuMDYxMyAgICAgICAgICBtaWdodCBiZSAxLjA0MTJ4IGZhc3RlcgogICBpcy1vYmpl
Y3Qtb3ItbnVsbC1mb2xkLWZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAyLjA3ODcrLTAuMTE3
OSAgICAgICAgICAgIDIuMDM3NystMC4wMjc1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwMXggZmFz
dGVyCiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQtbGVzcy10cmlja3kgICAgICAgICAgICAgICAg
IDIuNzQ5MSstMC4wNTI4ICAgICA/ICAgICAgMi43OTMwKy0wLjA1NDkgICAgICAgID8gbWlnaHQg
YmUgMS4wMTYweCBzbG93ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC10cmlja3kgICAgICAg
ICAgICAgICAgICAgICAgMy4xMTMxKy0wLjAyOTcgICAgIF4gICAgICAzLjAxMzgrLTAuMDU5NyAg
ICAgICAgXiBkZWZpbml0ZWx5IDEuMDMyOXggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLWZv
bGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTYyMistMC40NDY2ICAgICAgICAgICAg
Mi4wMjY2Ky0wLjEwNzkgICAgICAgICAgbWlnaHQgYmUgMS4wNjY5eCBmYXN0ZXIKICAgaXMtb2Jq
ZWN0LW9yLW51bGwtdHJpY2tpZXItZnVuY3Rpb24gICAgICAgICAgICAgICAgMi44NDM4Ky0wLjE2
NjkgICAgICAgICAgICAyLjc3MjkrLTAuMDgzOCAgICAgICAgICBtaWdodCBiZSAxLjAyNTV4IGZh
c3RlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2llci1pbnRlcm5hbC1mdW5jdGlvbiAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjI4
MTQrLTAuMjYwMiAgICAgICAgICAgIDkuMDAzMCstMC4yMjgwICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMwOXggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNreS1mdW5jdGlvbiAgICAgICAg
ICAgICAgICAgIDIuOTQ0NistMC40MTQwICAgICAgICAgICAgMi44NDAyKy0wLjExMDggICAgICAg
ICAgbWlnaHQgYmUgMS4wMzY3eCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2t5LWlu
dGVybmFsLWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYuMzkzOCstMC4xOTgwICAgICAgICAgICAgNi4yNDI1Ky0wLjA5OTkg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjQyeCBmYXN0ZXIKICAgaXMtc3RyaW5nLWZvbGQtdHJpY2t5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42OTQ3Ky0wLjAzMzUgICAgID8gICAgICAy
Ljc5NzUrLTAuMTQzOSAgICAgICAgPyBtaWdodCBiZSAxLjAzODF4IHNsb3dlcgogICBpcy1zdHJp
bmctZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjAzNjArLTAuMDgy
NCAgICAgPyAgICAgIDIuMDg2NCstMC4yNDM3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0OHggc2xv
d2VyCiAgIGlzLXVuZGVmaW5lZC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuNDEzNSstMC4wMzY4ICAgICA/ICAgICAgMi40NTg4Ky0wLjE0OTIgICAgICAgID8gbWlnaHQg
YmUgMS4wMTg4eCBzbG93ZXIKICAgaXMtdW5kZWZpbmVkLWZvbGQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi4wMzc1Ky0wLjA4MTUgICAgID8gICAgICAyLjA0NDkrLTAuMTMwMSAg
ICAgICAgPwogICBKU09OUC1uZWdhdGl2ZS0wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjIzNTYrLTAuMDE0NyAgICAgPyAgICAgIDAuMjM5OSstMC4wMjcwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDE4N3ggc2xvd2VyCiAgIGxhcmdlLWludC1jYXB0dXJlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuODAzMSstMC4xODAwICAgICA/ICAgICAgMi44NTYyKy0wLjE1
MjEgICAgICAgID8gbWlnaHQgYmUgMS4wMTg5eCBzbG93ZXIKICAgbGFyZ2UtaW50LW5lZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4zNjI5Ky0wLjM5NjUgICAgICAgICAg
ICA4LjI2MzUrLTAuMjkzNSAgICAgICAgICBtaWdodCBiZSAxLjAxMjB4IGZhc3RlcgogICBsYXJn
ZS1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ljk0NjMrLTAu
NjMyNiAgICAgPyAgICAgIDguMjI3MystMS4yNzkzICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1NHgg
c2xvd2VyCiAgIGxhcmdlLW1hcC1pdGVyYXRpb24td2l0aC1hZGRpdGlvbnMgICAgICAgICAgICAg
ICAzOTEuNDI1MystMjAuNTYzMSAgICAgICAgIDM4Mi45NTU1Ky0xNS42NDM5ICAgICAgICAgbWln
aHQgYmUgMS4wMjIxeCBmYXN0ZXIKICAgbGFyZ2UtbWFwLWl0ZXJhdGlvbi13aXRoLW11dGF0aW9u
ICAgICAgICAgICAgICAgIDE4OS42OTM5Ky00Ljc4MDEgICAgICAgICAgMTg0Ljk4ODMrLTIuOTgx
NyAgICAgICAgICBtaWdodCBiZSAxLjAyNTR4IGZhc3RlcgogICBsYXJnZS1tYXAtaXRlcmF0aW9u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk3LjY3NTcrLTIuNzI0NCAgICAgICAgICAg
OTQuMTE3NistMy40NDUzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM3OHggZmFzdGVyCiAgIGxhenkt
YXJyYXktc3BlY2llcy13YXRjaHBvaW50cyAgICAgICAgICAgICAgICAgICAgMjIuMzM5NCstMC42
MjA5ICAgICAgICAgICAyMi4xMzg1Ky0wLjc1OTggICAgICAgIAogICBsaWNtLWRyYWdvbnMtb3V0
LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgIDMxLjUyMjQrLTEuOTg3OCAgICAgICAg
ICAgMzEuNDA1OSstMi4xNjQ0ICAgICAgICAKICAgbGljbS1kcmFnb25zLW92ZXJmbG93ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxOC4yMjYwKy0wLjc3NTQgICAgICAgICAgIDE3Ljg4ODAr
LTAuNzcxNSAgICAgICAgICBtaWdodCBiZSAxLjAxODl4IGZhc3RlcgogICBsaWNtLWRyYWdvbnMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1LjIwNzArLTAuNjEwNSAgICAg
PyAgICAgMzUuODE5NSstMi4yMzA4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3NHggc2xvd2VyCiAg
IGxvYWQtdmFyYXJncy1lbGltaW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgMTguMTIx
NSstMC44NDYzICAgICA/ICAgICAxOC4xNDUzKy0wLjYyODUgICAgICAgID8KICAgbG9jYWxlLWNv
bXBhcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS40MjkwKy0wLjgxOTEg
ICAgID8gICAgIDIyLjQyODUrLTEuNTUwOSAgICAgICAgPyBtaWdodCBiZSAxLjA0NjZ4IHNsb3dl
cgogICBsb2dpY2FsLW5vdC13ZWlyZC10eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjI5NDkrLTAuMDMxMSAgICAgPyAgICAgIDIuMzQyMistMC4wNzE2ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDIwNnggc2xvd2VyCiAgIGxvZ2ljYWwtbm90ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuNzA5MistMC4xMzU4ICAgICAgICAgICAgMy42NzcyKy0wLjMwMDcgICAg
ICAgIAogICBsb3RzLW9mLWZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA3LjY5MzIrLTAuMTgzNSAgICAgPyAgICAgIDguMjE5NystMC42NTg5ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDY4NHggc2xvd2VyCiAgIG1ha2UtaW5kZXhlZC1zdG9yYWdlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuNTI2OCstMC4xMjI1ICAgICA/ICAgICAgMi44OTI2Ky0wLjM0OTcg
ICAgICAgID8gbWlnaHQgYmUgMS4xNDQ4eCBzbG93ZXIKICAgbWFrZS1yb3BlLWNzZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40Mjg1Ky0wLjA3MjcgICAgICEgICAgICAz
LjA5NjcrLTAuMDgwNyAgICAgICAgISBkZWZpbml0ZWx5IDEuMjc1Mnggc2xvd2VyCiAgIG1hbnkt
Zm9yZWFjaC1jYWxscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNDA0MystMC4x
OTEyICAgICAgICAgICAgMi4zMTc3Ky0wLjA1MzMgICAgICAgICAgbWlnaHQgYmUgMS4wMzc0eCBm
YXN0ZXIKICAgbWFueS1yZXBlYXQtc3RvcmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNS4xMzcwKy0wLjY3MDYgICAgICAgICAgIDE0Ljk5MDIrLTAuMzk0MSAgICAgICAgCiAgIG1h
cC1jb25zdGFudC1rZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNzcuNjgwOCst
MS44NzM0ICAgICA/ICAgIDE3OC40MzkyKy0yLjA5MzcgICAgICAgID8KICAgbWFwLWZvci1lYWNo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40Njg0Ky0wLjU5MzggICAg
ICAgICAgICA0LjM4MTMrLTAuMzAwMSAgICAgICAgICBtaWdodCBiZSAxLjAxOTl4IGZhc3Rlcgog
ICBtYXAtZm9yLW9mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjE5
NDIrLTEuMDE3MCAgICAgICAgICAgMTguMzUzOCstMC45NzMyICAgICAgICAgIG1pZ2h0IGJlIDEu
MDQ1OHggZmFzdGVyCiAgIG1hcC1nZXQtZ2V0LWNzZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1NTEuMTk3NystNC4wMTcwICAgICBeICAgIDUzNC41NDkyKy01LjQwNzggICAgICAg
IF4gZGVmaW5pdGVseSAxLjAzMTF4IGZhc3RlcgogICBtYXAtaGFzLWdldC1jc2Utb3Bwb3J0dW5p
dHkgICAgICAgICAgICAgICAgICAgICAgIDc1LjkxNTkrLTQuNjQ2MSAgICAgICAgICAgNzMuMzM3
MystMS4zNTY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1MnggZmFzdGVyCiAgIG1hcC1yZWhhc2gg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNDI0MCstMC43MTE0ICAg
ICA/ICAgICAgNy40NTU2Ky0wLjY4NTkgICAgICAgID8KICAgbWFyc2FnbGlhLWxhcmdlci1pbnRz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MS44MzEyKy0wLjg3NzcgICAgID8gICAgIDYy
LjM5ODYrLTIuMDExNCAgICAgICAgPwogICBtYXJzYWdsaWEtb3NyLWVudHJ5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE3Ljc1MzIrLTEuMzIwNyAgICAgICAgICAgMTYuNDYwNSstMS4x
NTg1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDc4NXggZmFzdGVyCiAgIG1hdGgtcmFuZG9tICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNTU4MSstMS4xOTYxICAgICAgICAg
ICAxMy43OTkyKy0wLjc5NjMgICAgICAgICAgbWlnaHQgYmUgMS4wNTUweCBmYXN0ZXIKICAgbWF0
aC10cnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS41NTQ5Ky0w
LjQyNTIgICAgICAgICAgICA1LjQ3MDcrLTAuMTczMCAgICAgICAgICBtaWdodCBiZSAxLjAxNTR4
IGZhc3RlcgogICBtYXRoLXdpdGgtb3V0LW9mLWJvdW5kcy1hcnJheS12YWx1ZXMgICAgICAgICAg
ICAgIDI3LjY3ODkrLTAuOTE2MyAgICAgPyAgICAgMjkuNjAyMystMS44OTE5ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDY5NXggc2xvd2VyCiAgIG1heC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuMTU3NistMC4wMzQwICAgICA/ICAgICAgMi4yMjUwKy0wLjE4
NjEgICAgICAgID8gbWlnaHQgYmUgMS4wMzEyeCBzbG93ZXIKICAgbWVnYW1vcnBoaWMtbG9hZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi40NjcwKy0zLjI1ODUgICAgID8gICAg
IDI3Ljc4OTMrLTMuMDY4NyAgICAgICAgPyBtaWdodCBiZSAxLjA1MDB4IHNsb3dlcgogICBtZXRo
b2Qtb24tbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjA2NzkrLTAu
NjA0MCAgICAgPyAgICAgMTYuMDk5NSstMC43NzQ2ICAgICAgICA/CiAgIG1pbi1ib29sZWFuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTYyMistMC4xMDU0ICAgICA/
ICAgICAgMi4xNzUyKy0wLjA4NzcgICAgICAgID8KICAgbWludXMtYm9vbGVhbi1kb3VibGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zNDU4Ky0wLjMxMDYgICAgICAgICAgICAyLjIx
OTcrLTAuMTA5NSAgICAgICAgICBtaWdodCBiZSAxLjA1Njh4IGZhc3RlcgogICBtaW51cy1ib29s
ZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjEwNjArLTAuNDMyMyAg
ICAgICAgICAgIDEuOTgwNystMC4wNjk3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYzM3ggZmFzdGVy
CiAgIG1pc2MtYnVncy04NDczODktanBlZzIwMDAgICAgICAgICAgICAgICAgICAgICAgIDM3MzUu
MTE1MistMTEuNzU4NyAgICAhICAgMzc4NC41MDgxKy0xOC45NzIzICAgICAgICEgZGVmaW5pdGVs
eSAxLjAxMzJ4IHNsb3dlcgogICBtaXNjLXN0cmljdC1lcSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE5Ljg4NDMrLTEuOTk0OCAgICAgICAgICAgMTkuNzkzMCstMC42MjYwICAg
ICAgICAKICAgbW9kLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOC43MjM2Ky0wLjIxMzYgICAgID8gICAgICA5LjAzNDYrLTAuMzkzNSAgICAgICAgPyBtaWdo
dCBiZSAxLjAzNTZ4IHNsb3dlcgogICBtb2QtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjY3MjkrLTAuMjM5NyAgICAgPyAgICAgIDYuNzQxMCstMC4zNDky
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMnggc2xvd2VyCiAgIG11bC1ib29sZWFuLWRvdWJsZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTYxMistMC4wMjU3ICAgICA/ICAgICAg
Mi41OTMwKy0wLjA3OTAgICAgICAgID8gbWlnaHQgYmUgMS4wMTI0eCBzbG93ZXIKICAgbXVsLWJv
b2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yODM5Ky0wLjEz
MjkgICAgICAgICAgICAyLjIyMDIrLTAuMDUwNiAgICAgICAgICBtaWdodCBiZSAxLjAyODd4IGZh
c3RlcgogICBuZWctYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjI2NDcrLTAuMTI2NyAgICAgPyAgICAgIDIuMzY0MistMC4zMjUxICAgICAgICA/IG1pZ2h0
IGJlIDEuMDQzOXggc2xvd2VyCiAgIG5lZ2F0aXZlLXplcm8tZGl2aWRlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuNDg4MistMC4zOTczICAgICAgICAgICAgMC4zMzczKy0wLjAzNDEg
ICAgICAgICAgbWlnaHQgYmUgMS40NDczeCBmYXN0ZXIKICAgbmVnYXRpdmUtemVyby1tb2R1bG8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNjAxKy0wLjAzMzcgICAgID8gICAgICAw
LjM3NTYrLTAuMDQ5MCAgICAgICAgPyBtaWdodCBiZSAxLjA0Mjh4IHNsb3dlcgogICBuZWdhdGl2
ZS16ZXJvLW5lZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMxODIrLTAuMDE3
MCAgICAgPyAgICAgIDAuMzIxNCstMC4wMTIzICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMXggc2xv
d2VyCiAgIG5lc3RlZC1mdW5jdGlvbi1wYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzQuNTY1OCstMC4yMDc0ICAgICAhICAgICAzNS4yODY2Ky0wLjM4OTEgICAgICAgICEgZGVmaW5p
dGVseSAxLjAyMDl4IHNsb3dlcgogICBuZXctYXJyYXktYnVmZmVyLWRlYWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDUyLjg0MzkrLTEuOTgyNSAgICAgICAgICAgNTIuMjU2MystMC4yNTM0
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExMnggZmFzdGVyCiAgIG5ldy1hcnJheS1idWZmZXItcHVz
aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTE1OCstMC4xNDQxICAgICAgICAgICAg
My45OTU5Ky0wLjA4MzAgICAgICAgICAgbWlnaHQgYmUgMS4wMzAweCBmYXN0ZXIKICAgbmV3LWFy
cmF5LWRlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi41NTQ0Ky0wLjE0
MjkgICAgICAgICAgICA2LjQ1NDUrLTAuMTI0NCAgICAgICAgICBtaWdodCBiZSAxLjAxNTV4IGZh
c3RlcgogICBuZXctYXJyYXktcHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjk1NzIrLTAuMDg3OSAgICAgPyAgICAgIDMuMDExOCstMC4xOTA4ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE4NXggc2xvd2VyCiAgIG5vLWlubGluZS1jb25zdHJ1Y3RvciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjMuNzY3OSstMC4zMTI1ICAgICA/ICAgICAyNC43Mjc0Ky0xLjAyNTUg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDA0eCBzbG93ZXIKICAgTnVtYmVyLWlzTmFOICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4wMDE5Ky0wLjIyMzMgICAgID8gICAgIDEw
LjIyMTYrLTAuNzQ0MyAgICAgICAgPyBtaWdodCBiZSAxLjAyMjB4IHNsb3dlcgogICBudW1iZXIt
dGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc0ODIrLTAuMDU0
MSAgICAgPyAgICAgIDIuNzk3MistMC4xNjcyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3OXggc2xv
d2VyCiAgIG9iamVjdC1hbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuNTk3MCstMC4wNzY3ICAgICA/ICAgICAgNC42NzAwKy0wLjA2MjQgICAgICAgID8gbWlnaHQg
YmUgMS4wMTU5eCBzbG93ZXIKICAgb2JqZWN0LWNsb3N1cmUtY2FsbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC4yODg0Ky0wLjA3NjYgICAgID8gICAgICA0LjQ0NzArLTAuMjEwNiAg
ICAgICAgPyBtaWdodCBiZSAxLjAzNzB4IHNsb3dlcgogICBvYmplY3QtZ2V0LW93bi1wcm9wZXJ0
eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuMDQxNystMC4wNjE4ICAgICA/ICAgICAgMS4wNzA1
Ky0wLjA3NjcgICAgICAgID8gbWlnaHQgYmUgMS4wMjc3eCBzbG93ZXIKICAgb2JqZWN0LWludC1h
ZGQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4yNjY2Ky0wLjI4MjUgICAg
ID8gICAgIDEwLjQyNjcrLTAuMzgxNCAgICAgICAgPyBtaWdodCBiZSAxLjAxNTZ4IHNsb3dlcgog
ICBvYmplY3QtaW50LWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjU4
MTMrLTAuNzA5MyAgICAgICAgICAgMTIuNDQ4OSstMC40MzgyICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEwNnggZmFzdGVyCiAgIG9iamVjdC1pbnQtYW5kLWFycmF5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAuMjY0MystMC4xMDIxICAgICA/ICAgICAxMC41ODQzKy0wLjk2MDQgICAgICAg
ID8gbWlnaHQgYmUgMS4wMzEyeCBzbG93ZXIKICAgb2JqZWN0LWludC1tdWwtYXJyYXkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOC44NTI5Ky0wLjMyMDMgICAgICAgICAgICA4Ljc2MjUr
LTAuMzQ1NyAgICAgICAgICBtaWdodCBiZSAxLjAxMDN4IGZhc3RlcgogICBvYmplY3QtaW50LXN1
Yi1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjYxMjQrLTAuMzk0MCAgICAg
PyAgICAgIDcuNzA1NSstMC41Mzc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMnggc2xvd2VyCiAg
IG9iamVjdC1pbnQtc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNTAx
NCstMC42MzM0ICAgICA/ICAgICAxMi42OTgyKy0wLjI4MTQgICAgICAgID8gbWlnaHQgYmUgMS4w
MTU3eCBzbG93ZXIKICAgb2JqZWN0LWxzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC42NTgwKy0wLjA2OTUgICAgID8gICAgICA0LjgwMDIrLTAuMzM2MCAgICAgICAg
PyBtaWdodCBiZSAxLjAzMDV4IHNsb3dlcgogICBvYmplY3Qtb3IgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0Ljc5NjArLTAuMzA3NyAgICAgICAgICAgIDQuNzQ2Myst
MC4zNTUwICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwNXggZmFzdGVyCiAgIG9iamVjdC1yc2hpZnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjM4NCstMC4wNDYzICAgICAg
ICAgICAgNC42Mjc0Ky0wLjAzNTcgICAgICAgIAogICBvYmplY3QtdGVzdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQ5MTgrLTAuMDgwOCAgICAgPyAgICAgIDIuNDk1
NystMC4wNzE4ICAgICAgICA/CiAgIG9iamVjdC11cnNoaWZ0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQuNjY1MystMC4xMjMwICAgICA/ICAgICAgNC43MjY4Ky0wLjI3ODgg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTMyeCBzbG93ZXIKICAgb2JqZWN0LXhvciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43NTI4Ky0wLjQzNjEgICAgICAgICAgICA0
LjU5NTYrLTAuMDcwOSAgICAgICAgICBtaWdodCBiZSAxLjAzNDJ4IGZhc3RlcgogICBvYnZpb3Vz
LXNpbmstcGF0aG9sb2d5LXRha2VuICAgICAgICAgICAgICAgICAgICAgIDY1LjY0MTQrLTAuNzg1
NyAgICAgISAgICAgNjcuMzQyNystMC40ODMwICAgICAgICAhIGRlZmluaXRlbHkgMS4wMjU5eCBz
bG93ZXIKICAgb2J2aW91cy1zaW5rLXBhdGhvbG9neSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNS40NzM1Ky0wLjg4MjkgICAgID8gICAgIDE2LjE0OTMrLTAuODIwMyAgICAgICAgPyBtaWdo
dCBiZSAxLjA0Mzd4IHNsb3dlcgogICBvYnZpb3VzbHktZWxpZGFibGUtbmV3LW9iamVjdCAgICAg
ICAgICAgICAgICAgICAgIDE0LjAwMjYrLTAuNjcxMCAgICAgICAgICAgMTMuNjg4NistMC45Mjk2
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyOXggZmFzdGVyCiAgIHBsdXMtYm9vbGVhbi1hcml0aCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMDU3MystMC4xNTA0ICAgICAgICAgICAg
Mi4wMjQ4Ky0wLjEzNTUgICAgICAgICAgbWlnaHQgYmUgMS4wMTYxeCBmYXN0ZXIKICAgcGx1cy1i
b29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xOTU3Ky0wLjA1
ODMgICAgID8gICAgICAyLjIxNTMrLTAuMDgxNyAgICAgICAgPwogICBwbHVzLWJvb2xlYW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjkwOTIrLTAuMDczMSAgICAgPyAg
ICAgIDEuOTM5NystMC4wNzIwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2MHggc2xvd2VyCiAgIHBv
bHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzLXNpbXBsZSAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjM5MTMrLTAuMjA1
MCAgICAgPyAgICAgIDIuNTUyOCstMC40MjA1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDY3Nnggc2xv
d2VyCiAgIHBvbHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzICAgICAgICAgICAg
IDIuMjk3NCstMC4wNTkwICAgICA/ICAgICAgMi4zOTI0Ky0wLjI3MDIgICAgICAgID8gbWlnaHQg
YmUgMS4wNDEzeCBzbG93ZXIKICAgcG9seS1jaGFpbi1hY2Nlc3Mtc2ltcGxlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi4zMzk0Ky0wLjA4NzIgICAgID8gICAgICAyLjUxNTcrLTAuMjkzNyAg
ICAgICAgPyBtaWdodCBiZSAxLjA3NTR4IHNsb3dlcgogICBwb2x5LWNoYWluLWFjY2VzcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQwNTYrLTAuMTQ3MCAgICAgICAgICAgIDIu
MzAxNystMC4wNzY5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ1MXggZmFzdGVyCiAgIHBvbHktc3Ry
aWN0ZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYuNjcyOCstMS42OTI3
ICAgICAgICAgICA0NS42MTE3Ky0wLjkyNDMgICAgICAgICAgbWlnaHQgYmUgMS4wMjMzeCBmYXN0
ZXIKICAgcG9seW1vcnBoaWMtYXJyYXktY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MS4zMDQ2Ky0wLjA2MDkgICAgID8gICAgICAxLjM5NzkrLTAuMzExMyAgICAgICAgPyBtaWdodCBi
ZSAxLjA3MTV4IHNsb3dlcgogICBwb2x5bW9ycGhpYy1nZXQtYnktaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxLjg5MDQrLTAuMDY2MSAgICAgPyAgICAgIDIuMTI5MSstMC40OTEyICAg
ICAgICA/IG1pZ2h0IGJlIDEuMTI2Mnggc2xvd2VyCiAgIHBvbHltb3JwaGljLXB1dC1ieS1pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuOTMzMSstMi4wMjk2ICAgICA/ICAgICAyNC4x
NTQ4Ky0xLjM3OTIgICAgICAgID8KICAgcG9seW1vcnBoaWMtcHV0LWJ5LXZhbC13aXRoLXN0cmlu
ZyAgICAgICAgICAgICAgICAyNC43MzEwKy0xLjA5MzUgICAgICAgICAgIDIzLjkyNjUrLTAuODcz
NiAgICAgICAgICBtaWdodCBiZSAxLjAzMzZ4IGZhc3RlcgogICBwb2x5bW9ycGhpYy1wdXQtYnkt
dmFsLXdpdGgtc3ltYm9sICAgICAgICAgICAgICAgIDI0LjcyNjErLTEuNTkzMyAgICAgPyAgICAg
MjUuMDYwNSstMi4xMDk3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzNXggc2xvd2VyCiAgIHBvbHlt
b3JwaGljLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNTcwOCstMS4z
NDg1ICAgICAgICAgICAxMi4xOTM3Ky0xLjA4MDQgICAgICAgICAgbWlnaHQgYmUgMS4wMzA5eCBm
YXN0ZXIKICAgcG9seXZhcmlhbnQtbW9ub21vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAg
ICAgMy4zODE0Ky0wLjE5NjkgICAgICAgICAgICAzLjMxNDcrLTAuMDg4MyAgICAgICAgICBtaWdo
dCBiZSAxLjAyMDF4IGZhc3RlcgogICBwcmV2ZW50LWV4dGVuc2lvbnMtYW5kLWRvLXdvcmsgICAg
ICAgICAgICAgICAgICAgIDEyLjIwMzgrLTAuNDc2MCAgICAgICAgICAgMTIuMTM5MistMC40NjYy
ICAgICAgICAKICAgcHJvdG8tZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMC4xNjk5Ky0wLjE2MTYgICAgID8gICAgIDEwLjIzNDkrLTAuMTQ3NCAgICAgICAgPwog
ICBwcm90b3R5cGUtYWNjZXNzLXdpdGgtbXV0YXRpbmctcHJvdG90eXBlICAgICAgICAgICA0LjQy
NzcrLTAuMjk1MiAgICAgICAgICAgIDQuMzMyOSstMC4xMDg5ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDIxOXggZmFzdGVyCiAgIHB1dC1ieS1pZC1yZXBsYWNlLWFuZC10cmFuc2l0aW9uICAgICAgICAg
ICAgICAgICAgIDQuNzExNistMC4yOTMwICAgICA/ICAgICAgNC44MTk1Ky0wLjE2MDYgICAgICAg
ID8gbWlnaHQgYmUgMS4wMjI5eCBzbG93ZXIKICAgcHV0LWJ5LWlkLXNsaWdodGx5LXBvbHltb3Jw
aGljICAgICAgICAgICAgICAgICAgICAgMi4yNTcyKy0wLjAxOTUgICAgICAgICAgICAyLjI1MjYr
LTAuMDMzOSAgICAgICAgCiAgIHB1dC1ieS1pZC10cmFuc2l0aW9uLXdpdGgtaW5kZXhpbmctaGVh
ZGVyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTIuMTUxNCstMi42MjEwICAgICAgICAgICAxMi4wNDg5Ky0xLjcyMDkgICAgICAgIAogICBw
dXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjAxMDcr
LTAuNDIwNiAgICAgPyAgICAgIDcuMjI0NystMC40OTg3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMw
NXggc2xvd2VyCiAgIHB1dC1ieS12YWwtZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjkxNystMC4wMTkwICAgICA/ICAgICAgMC4zMTA2Ky0wLjAxNDAgICAgICAgID8g
bWlnaHQgYmUgMS4wNjUweCBzbG93ZXIKICAgcHV0LWJ5LXZhbC1sYXJnZS1pbmRleC1ibGFuay1p
bmRleGluZy10eXBlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNzQ0MistMC4xMDkwICAgICA/ICAgICAgNC44OTM3Ky0wLjM0NjMgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzE1eCBzbG93ZXIKICAgcHV0LWJ5LXZhbC1tYWNoaW5lLWludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41NTYyKy0wLjEzOTUgICAgICAgICAgICAyLjQ4
ODgrLTAuMTcyOSAgICAgICAgICBtaWdodCBiZSAxLjAyNzF4IGZhc3RlcgogICBwdXQtYnktdmFs
LXdpdGgtc3RyaW5nLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4xNDcyKy0wLjU2MjAgICAgID8g
ICAgICA3LjE5MTIrLTAuMzg0NiAgICAgICAgPwogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXNs
aWdodGx5LXBvbHltb3JwaGljICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMjExOCstMC4wODgyICAgICA/ICAgICAgMy4yODQzKy0wLjEx
ODAgICAgICAgID8gbWlnaHQgYmUgMS4wMjI2eCBzbG93ZXIKICAgcHV0LWJ5LXZhbC13aXRoLXN0
cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4wODM5Ky0wLjQ3NTQgICAgICAgICAg
ICA2LjY5MzYrLTAuMjAxNiAgICAgICAgICBtaWdodCBiZSAxLjA1ODN4IGZhc3RlcgogICBwdXQt
YnktdmFsLXdpdGgtc3ltYm9sLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24gICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4zODc4Ky0wLjEzODAg
ICAgID8gICAgICA2LjUzNDUrLTAuMjU0MyAgICAgICAgPyBtaWdodCBiZSAxLjAyMzB4IHNsb3dl
cgogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sLXNsaWdodGx5LXBvbHltb3JwaGljICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNDM0OSst
MC4wNjU5ICAgICA/ICAgICAgMi41MDM3Ky0wLjA5MTQgICAgICAgID8gbWlnaHQgYmUgMS4wMjgz
eCBzbG93ZXIKICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNy4yMTU5Ky0wLjMwNTUgICAgID8gICAgICA4LjE0NTgrLTEuODU2NCAgICAgICAgPyBt
aWdodCBiZSAxLjEyODl4IHNsb3dlcgogICByYXJlLW9zci1leGl0LW9uLWxvY2FsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDExLjQ5ODMrLTAuMzU0MyAgICAgPyAgICAgMTEuNTEyOSstMS4z
OTMzICAgICAgICA/CiAgIHJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAg
ICAgICAgICAgIDQuOTIwNystMC4zNjc3ICAgICAgICAgICAgNC44Mzg4Ky0wLjEwNjYgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTY5eCBmYXN0ZXIKICAgcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNy44MTQwKy0wLjM2MjkgICAgID8gICAgICA4LjI1NTAr
LTEuMzc0NSAgICAgICAgPyBtaWdodCBiZSAxLjA1NjR4IHNsb3dlcgogICByZWdleHAtZXhlYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LjkyMjgrLTAuNjYzMCAgICAg
PyAgICAgMjguODA3NCstMS44NTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxN3ggc2xvd2VyCiAg
IHJlZ2V4cC1sYXN0LWluZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguNDEx
OSstMC4zNDQyICAgICAgICAgICAgOC4zMzcyKy0wLjE1MjcgICAgICAgIAogICByZWdleHAtcHJv
dG90eXBlLWlzLW5vdC1pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAwLjM4MTErLTAuMDI0MiAg
ICAgPyAgICAgIDAuNDA2NCstMC4wMzY2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDY2NXggc2xvd2Vy
CiAgIHJlZ2V4cC1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNzk0
MSstMC4wOTY1ICAgICA/ICAgICAgMC44NDg0Ky0wLjEyNDAgICAgICAgID8gbWlnaHQgYmUgMS4w
NjgzeCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjkyNCstMC4wMTgwICAgICA/ICAgICAgMC4zMDY1Ky0wLjAyNTYgICAgICAgID8g
bWlnaHQgYmUgMS4wNDgxeCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjE2OTcrLTAuMDcyOCAgICAgPyAgICAgIDEuMjcxMSstMC4yMjkx
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDg2N3ggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzI2NSstMC4wMjg0ICAgICAgICAgICAgMC4y
OTk2Ky0wLjAwNzggICAgICAgICAgbWlnaHQgYmUgMS4wODk1eCBmYXN0ZXIKICAgcmVnZXhwLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNDMwKy0wLjA1
NzEgICAgICAgICAgICAwLjMxMjQrLTAuMDExNSAgICAgICAgICBtaWdodCBiZSAxLjA5Nzh4IGZh
c3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1n
bG9iYWwgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4zNTA0Ky0wLjA1MDggICAgICAgICAgICAwLjMyMDIrLTAuMDIwMiAgICAgICAgICBt
aWdodCBiZSAxLjA5NDJ4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzE1NystMC4wMzAyICAgICA/ICAgICAgMC4z
NjY2Ky0wLjA1NzMgICAgICAgID8gbWlnaHQgYmUgMS4xNjExeCBzbG93ZXIKICAgcmVnZXhwLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzIxMSst
MC4wMzkxICAgICAgICAgICAgMC4zMTgwKy0wLjAyMTYgICAgICAgIAogICByZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMjAyKy0wLjAyNjkg
ICAgID8gICAgICAwLjM0NDgrLTAuMDQ3OCAgICAgICAgPyBtaWdodCBiZSAxLjA3Njd4IHNsb3dl
cgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmlj
b2RlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMzMzOSstMC4wMzQzICAgICAgICAgICAgMC4zMjU4Ky0wLjAzOTcgICAgICAgICAgbWln
aHQgYmUgMS4wMjQ5eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4zNDMzKy0wLjA1MzUgICAgICAgICAgICAwLjMzMTcrLTAuMDI3NSAg
ICAgICAgICBtaWdodCBiZSAxLjAzNDh4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXRlc3Qt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC42MzI2Ky0wLjA0MjUgICAgID8gICAgICAwLjgyMjcr
LTAuMjgzNyAgICAgICAgPyBtaWdodCBiZSAxLjMwMDR4IHNsb3dlcgogICByZWdleHAtcHJvdG90
eXBlLXRlc3Qtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjk0OCstMC4wMzI0ICAgICAgICAg
ICAgMC4yOTI2Ky0wLjAxNTUgICAgICAgIAogICByZWdleHAtc2V0LWxhc3QtaW5kZXggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5LjA4MzArLTAuNTI0MCAgICAgPyAgICAgIDkuMzA2Nyst
MC41OTEzICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0Nnggc2xvd2VyCiAgIHJlZ2lzdGVyLXByZXNz
dXJlLWZyb20tb3NyICAgICAgICAgICAgICAgICAgICAgICAgMTYuMzkzMSstMi4yNDU4ICAgICAg
ICAgICAxNS4xMDk1Ky0wLjkwOTAgICAgICAgICAgbWlnaHQgYmUgMS4wODUweCBmYXN0ZXIKICAg
cmVwZWF0LW11bHRpLWdldC1ieS1vZmZzZXQgICAgICAgICAgICAgICAgICAgICAgICAxOS44OTk1
Ky0xLjQ5MDggICAgICAgICAgIDE5LjU3OTYrLTAuNTU0MyAgICAgICAgICBtaWdodCBiZSAxLjAx
NjN4IGZhc3RlcgogICByZXN0LXBhcmFtZXRlci1jb25zdHJ1Y3Rpb24tcGVyZm9ybWFuY2UgICAg
ICAgICAgIDI2LjI5NzQrLTAuNTk0NiAgICAgICAgICAgMjYuMTg5NistMC4yMzM4ICAgICAgICAK
ICAgcmljaGFyZHMtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICA0OC43
OTY4Ky0wLjU2OTAgICAgICAgICAgIDQ4LjExMTMrLTAuODkzOCAgICAgICAgICBtaWdodCBiZSAx
LjAxNDJ4IGZhc3RlcgogICByaWNoYXJkcy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjA2LjU3MDYrLTkuNDUwNyAgICAgICAgICAyMDMuODAwNystMi4yODc1ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDEzNnggZmFzdGVyCiAgIHNjb3BlZC1hcmd1bWVudHMtbGVuZ3RoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDYuMjQ1NistMC4zNTc0ICAgICAgICAgICAgNi4wNzc0
Ky0wLjE1NTEgICAgICAgICAgbWlnaHQgYmUgMS4wMjc3eCBmYXN0ZXIKICAgc2NvcGVkLWFyZ3Vt
ZW50cy1vdmVycmlkZGVuLWxlbmd0aCAgICAgICAgICAgICAgICAgNi4xNjU3Ky0wLjQ0NjcgICAg
ICAgICAgICA1Ljk3MjQrLTAuMDU4MCAgICAgICAgICBtaWdodCBiZSAxLjAzMjR4IGZhc3Rlcgog
ICBzY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNzMyNistMC4z
NDI5ICAgICA/ICAgICAgNi43NjY3Ky0wLjMxNzkgICAgICAgID8KICAgc2VhbC1hbmQtZG8td29y
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi42NDQ0Ky0wLjcxNTcgICAgICAg
ICAgIDEyLjM0MzMrLTAuNjg2NiAgICAgICAgICBtaWdodCBiZSAxLjAyNDR4IGZhc3RlcgogICBz
ZXQtZm9yLWVhY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQ3ODIr
LTAuMDI1NCAgICAgPyAgICAgIDMuNjM5MSstMC4zNTkwICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2
M3ggc2xvd2VyCiAgIHNldC1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYuNDIxMistMC41NjkzICAgICA/ICAgICAgNi41MzE4Ky0wLjY5MTAgICAgICAgID8g
bWlnaHQgYmUgMS4wMTcyeCBzbG93ZXIKICAgc2V0dGVyLXByb3RvdHlwZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC40ODE0Ky0wLjMzMDEgICAgICAgICAgICA0LjMxMTMrLTAu
MDUwMiAgICAgICAgICBtaWdodCBiZSAxLjAzOTR4IGZhc3RlcgogICBzZXR0ZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg1MTArLTAuMDczMyAgICAgPyAg
ICAgIDIuOTA3MSstMC4xOTY0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5N3ggc2xvd2VyCiAgIHNp
bXBsZS1hY3RpdmF0aW9uLWRlbW8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuNDExMSst
MS4xMTcwICAgICA/ICAgICAyMS45OTE5Ky0xLjE5MjEgICAgICAgID8gbWlnaHQgYmUgMS4wMjcx
eCBzbG93ZXIKICAgc2ltcGxlLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNy4wMDMyKy0xLjQ4MjcgICAgID8gICAgIDE3LjIwNDIrLTAuODA5MSAgICAgICAgPyBt
aWdodCBiZSAxLjAxMTh4IHNsb3dlcgogICBzaW1wbGUtcG9seS1jYWxsLW5lc3RlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjc0NzIrLTAuMTc4NCAgICAgICAgICAgIDMuNzMzOCstMC4w
ODYxICAgICAgICAKICAgc2ltcGxlLXBvbHktY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS4yMTYxKy0wLjAyNDkgICAgID8gICAgICAxLjI0MjErLTAuMDY0OCAgICAgICAg
PyBtaWdodCBiZSAxLjAyMTR4IHNsb3dlcgogICBzaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1m
YWlsICAgICAgICAgICAgICAgICAgICAyLjc2MzQrLTAuMDkxOCAgICAgPyAgICAgIDIuNzc2OSst
MC4xMjcxICAgICAgICA/CiAgIHNpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nICAgICAgICAgICAg
ICAgICAgICAgICAgMTYuMTc5MystMC44NjEwICAgICAgICAgICAxNS43MTc4Ky0wLjQzMTYgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjk0eCBmYXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmctZmFpbC13aXRoLWhvaXN0ZWQtcmVnZXhwICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMTczOSstMC4yOTQxICAgICA/ICAgICAgOC42
MzczKy0wLjgwMzYgICAgICAgID8gbWlnaHQgYmUgMS4wNTY3eCBzbG93ZXIKICAgc2ltcGxlLXJl
Z2V4cC10ZXN0LWZvbGRpbmctZmFpbCAgICAgICAgICAgICAgICAgICAxMy4xNDM0Ky0wLjE3MjEg
ICAgID8gICAgIDEzLjU1NjUrLTEuMTE4NyAgICAgICAgPyBtaWdodCBiZSAxLjAzMTR4IHNsb3dl
cgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy13aXRoLWhvaXN0ZWQtcmVnZXhwICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMTc1
MCstMC4xNjY5ICAgICA/ICAgICAgOS40MzY5Ky0wLjk2NTIgICAgICAgID8gbWlnaHQgYmUgMS4w
Mjg1eCBzbG93ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcgICAgICAgICAgICAgICAg
ICAgICAgICAxNS4zMjcwKy0wLjY4MjcgICAgIF4gICAgIDE0LjIzMzMrLTAuMjc4MSAgICAgICAg
XiBkZWZpbml0ZWx5IDEuMDc2OHggZmFzdGVyCiAgIHNpbi1ib29sZWFuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUuOTkzNCstMC4wMzk3ICAgICA/ICAgICAgNi4zOTgx
Ky0wLjc2NTQgICAgICAgID8gbWlnaHQgYmUgMS4wNjc1eCBzbG93ZXIKICAgc2luZ2xldG9uLXNj
b3BlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OS4wNjUzKy0wLjM0NjcgICAg
ICAgICAgIDU4Ljc2ODUrLTAuMTE5NCAgICAgICAgCiAgIHNpbmstZnVuY3Rpb24gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNzg2OCstMC4zMjQzICAgICA/ICAgICAgNS4y
NzAxKy0wLjc1MDQgICAgICAgID8gbWlnaHQgYmUgMS4xMDEweCBzbG93ZXIKICAgc2luay1odWdl
LWFjdGl2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi4wMjM5Ky0wLjY5NjQg
ICAgICAgICAgIDExLjk2NjMrLTAuODk5NiAgICAgICAgCiAgIHNpbmthYmxlLW5ldy1vYmplY3Qt
ZGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQuMTk4MCstMS43ODMwICAgICAgICAgICAz
My41MDc5Ky0wLjY0MTAgICAgICAgICAgbWlnaHQgYmUgMS4wMjA2eCBmYXN0ZXIKICAgc2lua2Fi
bGUtbmV3LW9iamVjdC10YWtlbiAgICAgICAgICAgICAgICAgICAgICAgICAyOS4zNTQ4Ky0wLjQy
MjMgICAgICAgICAgIDI5LjE5OTQrLTAuNTY3MSAgICAgICAgCiAgIHNpbmthYmxlLW5ldy1vYmpl
Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNDM0MSstMS4wODc4ICAgICAgICAg
ICAxNS43NzQyKy0xLjA4ODIgICAgICAgICAgbWlnaHQgYmUgMS4wNDE4eCBmYXN0ZXIKICAgc2xv
dy1hcnJheS1wcm9maWxlLWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgMi4yMTc0Ky0w
LjE0NjggICAgICAgICAgICAyLjA2ODErLTAuMDg4OSAgICAgICAgICBtaWdodCBiZSAxLjA3MjJ4
IGZhc3RlcgogICBzbG93LWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjMyOTgrLTAuMTI5OSAgICAgPyAgICAgIDIuNDUxNistMC4zMTg0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDUyM3ggc2xvd2VyCiAgIHNsb3ctdGVybmFyaWVzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTIuNDk2MSstMC43MDM4ICAgICAgICAgICAxMi4wMTA4Ky0wLjY4
NjIgICAgICAgICAgbWlnaHQgYmUgMS4wNDA0eCBmYXN0ZXIKICAgc29ydGluZy1iZW5jaG1hcmsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy4wMzY1Ky0wLjcxNjUgICAgID8gICAg
IDE3LjE3MTUrLTAuODkwMyAgICAgICAgPwogICBzcGFyc2UtY29uZGl0aW9uYWwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjA5MjErLTAuMDUzNSAgICAgICAgICAgIDEuMDkwMyst
MC4wNTc1ICAgICAgICAKICAgc3BhcnNlLXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1Ny4xOTU3Ky0wLjM2ODAgICAgID8gICAgIDU3LjQ4NjQrLTAuMzc3MiAgICAg
ICAgPwogICBzcGxpY2UtdG8tcmVtb3ZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEzLjQ3NzMrLTAuNDE4MSAgICAgPyAgICAgMTMuNjk0NSstMC43MjA0ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE2MXggc2xvd2VyCiAgIHN0cmNhdC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDUuMDg3NistMC4wNzc0ICAgICAgICAgICAgNS4wNzA1Ky0wLjA4MjYg
ICAgICAgIAogICBzdHJjYXQtbGVuZ3RoLWNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjUwMzQrLTAuMTcxMiAgICAgPyAgICAgIDUuNTU0NystMC4yNzk1ICAgICAgICA/CiAg
IHN0cmljdC1vc3ItZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMTc5
NCstMC4xMTk2ICAgICA/ICAgICAgOC41MDcwKy0wLjM2MjIgICAgICAgID8gbWlnaHQgYmUgMS4w
NDAweCBzbG93ZXIKICAgc3RyaW5nLWNoYXItY29kZS1hdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMS44OTIwKy0wLjI0NjEgICAgICAgICAgIDExLjc5ODQrLTAuMjgzNiAgICAgICAg
CiAgIHN0cmluZy1jb25jYXQtb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEu
NzYyNSstMC4wODY2ICAgICA/ICAgICAgMi4yMDc4Ky0wLjUzNTYgICAgICAgID8gbWlnaHQgYmUg
MS4yNTI3eCBzbG93ZXIKICAgc3RyaW5nLWNvbmNhdC1wYWlyLW9iamVjdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgMS42NTcxKy0wLjA2NDggICAgICEgICAgICAxLjk5MjYrLTAuMDUwMyAgICAg
ICAgISBkZWZpbml0ZWx5IDEuMjAyNXggc2xvd2VyCiAgIHN0cmluZy1jb25jYXQtcGFpci1zaW1w
bGUgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzA2OSstMC4xNTEzICAgICAgICAgICAgMi42
ODIzKy0wLjA5NTYgICAgICAgIAogICBzdHJpbmctY29uY2F0LXNpbXBsZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3Ljk1MDgrLTAuMzE2MyAgICAgPyAgICAgIDguODY1NistMS4xNzA5
ICAgICAgICA/IG1pZ2h0IGJlIDEuMTE1MXggc2xvd2VyCiAgIHN0cmluZy1jb25zLXJlcGVhdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMzU5NSstMC4xNzc0ICAgICAhICAgICAg
Ni4xNjYwKy0wLjQxODAgICAgICAgICEgZGVmaW5pdGVseSAxLjE1MDV4IHNsb3dlcgogICBzdHJp
bmctY29ucy10b3dlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjI0MDYrLTAu
MzEwMCAgICAgISAgICAgIDYuMzM4NCstMC4yNzM3ICAgICAgICAhIGRlZmluaXRlbHkgMS40OTQ3
eCBzbG93ZXIKICAgc3RyaW5nLWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNC43Njk3Ky0xLjM1MDcgICAgID8gICAgIDE1LjU4MTYrLTEuNjAxOCAgICAgICAgPyBt
aWdodCBiZSAxLjA1NTB4IHNsb3dlcgogICBzdHJpbmctZnJvbS1jaGFyLWNvZGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1LjYyNTIrLTAuMDc0MiAgICAgPyAgICAgIDUuNzEzMystMC4x
NjY1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1N3ggc2xvd2VyCiAgIHN0cmluZy1nZXQtYnktdmFs
LWJpZy1jaGFyICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDc3MCstMC4wNDY2ICAgICA/ICAg
ICAgNC4xMzAzKy0wLjExODkgICAgICAgID8gbWlnaHQgYmUgMS4wMTMxeCBzbG93ZXIKICAgc3Ry
aW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcy1pbnNhbmUgICAgICAgICAgICAgMy41MjYwKy0w
LjA0NTEgICAgICAgICAgICAzLjQ1NjIrLTAuMDUxNyAgICAgICAgICBtaWdodCBiZSAxLjAyMDJ4
IGZhc3RlcgogICBzdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAg
ICAgICA0LjEwMDQrLTAuMjExOCAgICAgPyAgICAgIDQuNDMwOCstMC41OTU1ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDgwNnggc2xvd2VyCiAgIHN0cmluZy1nZXQtYnktdmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEuODIzOCstMC4wNjQ0ICAgICA/ICAgICAgMS44NTAyKy0wLjA0
ODIgICAgICAgID8gbWlnaHQgYmUgMS4wMTQ1eCBzbG93ZXIKICAgc3RyaW5nLWhhc2ggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44Nzk4Ky0wLjA0MjMgICAgICAgICAg
ICAxLjgxNzcrLTAuMDM5MyAgICAgICAgICBtaWdodCBiZSAxLjAzNDJ4IGZhc3RlcgogICBzdHJp
bmctbG9uZy1pZGVudC1lcXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAgIDEyLjAxNTQrLTAu
Mzk2MCAgICAgPyAgICAgMTIuODA5NSstMS4wNzE1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDY2MXgg
c2xvd2VyCiAgIHN0cmluZy1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDkuMjE1MistMC4zNjEyICAgICAgICAgICAgOS4wNDYyKy0wLjA1NDggICAgICAgICAgbWln
aHQgYmUgMS4wMTg3eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC44NzM2Ky0wLjAxNjQgICAgID8gICAgICAwLjkxNzQrLTAuMDg5OSAg
ICAgICAgPyBtaWdodCBiZSAxLjA1MDF4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNlYXJj
aC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNTcyKy0wLjAzODggICAgID8gICAgICAwLjQw
OTUrLTAuMTEwMCAgICAgICAgPyBtaWdodCBiZSAxLjE0NjR4IHNsb3dlcgogICBzdHJpbmctcHJv
dG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNjU0Ky0wLjA1MzggICAg
ICAgICAgICAwLjM0NDMrLTAuMDIxOCAgICAgICAgICBtaWdodCBiZSAxLjA2MTF4IGZhc3Rlcgog
ICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNzEw
Ky0wLjA1MjcgICAgICAgICAgICAwLjM0MjcrLTAuMDI2NyAgICAgICAgICBtaWdodCBiZSAxLjA4
MjV4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEuMzk3MSstMC4xMDMxICAgICAgICAgICAgMS4zMjg3Ky0wLjA4MDcgICAgICAgICAgbWln
aHQgYmUgMS4wNTE1eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4zNjIwKy0wLjAyNjcgICAgID8gICAgICAwLjM3NTUrLTAuMDU0MSAg
ICAgICAgPyBtaWdodCBiZSAxLjAzNzN4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQwMDUrLTAuMDY2MiAgICAgICAgICAg
IDAuMzg1MCstMC4wMzU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQwMnggZmFzdGVyCiAgIHN0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQwMDIr
LTAuMDU2NiAgICAgPyAgICAgIDAuNDEwNystMC4wOTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2
Mnggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLWlnbm9yZUNhc2UgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4zNjMyKy0wLjAxOTMgICAgID8gICAgICAwLjM3NzcrLTAuMDMwMiAg
ICAgICAgPyBtaWdodCBiZSAxLjAzOTl4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40MTMzKy0wLjEzMzMgICAgICAg
ICAgICAwLjM3NzMrLTAuMDI2NiAgICAgICAgICBtaWdodCBiZSAxLjA5NTR4IGZhc3RlcgogICBz
dHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4z
NzEzKy0wLjAyNzAgICAgICAgICAgICAwLjM2NzYrLTAuMDE4NSAgICAgICAgICBtaWdodCBiZSAx
LjAxMDN4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy11bmljb2RlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuNDE2MSstMC4wOTk4ICAgICAgICAgICAgMC4zODg0Ky0wLjAzMjUg
ICAgICAgICAgbWlnaHQgYmUgMS4wNzEyeCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zODY5Ky0wLjA0MjMgICAgID8gICAgICAwLjQx
NDMrLTAuMDY1OSAgICAgICAgPyBtaWdodCBiZSAxLjA3MDl4IHNsb3dlcgogICBzdHJpbmctcmVw
ZWF0LWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjk3MTQrLTIuMzA3MSAg
ICAgICAgICAgMjEuMTk0NistMi4wMDI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM2N3ggZmFzdGVy
CiAgIHN0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDIu
NjQzNCstMC40Njg0ICAgICA/ICAgICAgMi44ODg0Ky0wLjM3MTggICAgICAgID8gbWlnaHQgYmUg
MS4wOTI3eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLW5vLWlubGluZSAg
ICAgICAgICAgICAgMy4xMjg3Ky0wLjExMTggICAgICEgICAgICAzLjUyMTYrLTAuMDcwMiAgICAg
ICAgISBkZWZpbml0ZWx5IDEuMTI1Nnggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtbm90LXJlc29s
dmluZyAgICAgICAgICAgICAgICAgICAgICAgIDMuMDgyOCstMC4xMjEwICAgICAhICAgICAgMy40
MjM3Ky0wLjE2MjUgICAgICAgICEgZGVmaW5pdGVseSAxLjExMDZ4IHNsb3dlcgogICBzdHJpbmct
cmVwZWF0LXJlc29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgICAgIDIxLjkwMjQrLTEuNDY3
OCAgICAgPyAgICAgMjIuMDY2NystMC45OTc2ICAgICAgICA/CiAgIHN0cmluZy1yZXBlYXQtcmVz
b2x2aW5nLW5vLWlubGluZSAgICAgICAgICAgICAgICAgMjguNDg2MCstMS4wNTU2ICAgICA/ICAg
ICAyOC45NDEzKy0xLjQwMTUgICAgICAgID8gbWlnaHQgYmUgMS4wMTYweCBzbG93ZXIKICAgc3Ry
aW5nLXJlcGVhdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC4wMzQyKy0w
LjU1NDkgICAgID8gICAgIDI4LjQ0NDQrLTAuNDEyNiAgICAgICAgPyBtaWdodCBiZSAxLjAxNDZ4
IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LXNpbmdsZS1ub3QtcmVzb2x2aW5nICAgICAgICAgICAg
ICAgICA2LjM2NzErLTAuNjE5MiAgICAgPyAgICAgIDcuMDQzMSstMC42NzQ3ICAgICAgICA/IG1p
Z2h0IGJlIDEuMTA2Mnggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtc2luZ2xlLXJlc29sdmluZyAg
ICAgICAgICAgICAgICAgICAgIDYuMjIwNCstMC45MjY2ICAgICA/ICAgICAgNy4yNDQ5Ky0wLjkw
MDMgICAgICAgID8gbWlnaHQgYmUgMS4xNjQ3eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1zbWFs
bC1ub3QtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgMi40NjI0Ky0wLjA3NTUgICAgICEgICAg
ICAyLjk5NTQrLTAuMzY2MiAgICAgICAgISBkZWZpbml0ZWx5IDEuMjE2NXggc2xvd2VyCiAgIHN0
cmluZy1yZXBlYXQtc21hbGwtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgICAgMjkuNTQzNist
MS42MDgwICAgICAgICAgICAyOS4wMDU4Ky0wLjUyMjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTg1
eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGxhY2UtZW1wdHkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNy43MzYzKy0wLjEyOTQgICAgICAgICAgICA3LjUyMTArLTAuMjkxOSAgICAgICAgICBt
aWdodCBiZSAxLjAyODZ4IGZhc3RlcgogICBzdHJpbmctcmVwbGFjZS1nZW5lcmljICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ4Ljc0MjkrLTIuMDQ2OCAgICAgPyAgICAgNDkuMzYxNSstMS4w
MzE1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyN3ggc2xvd2VyCiAgIHN0cmluZy1yZXBsYWNlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNzEyNCstMC4yODk0ICAgICAgICAg
ICAgNy41NTEwKy0wLjM1MDcgICAgICAgICAgbWlnaHQgYmUgMS4wMjE0eCBmYXN0ZXIKICAgc3Ry
aW5nLXJvcGUtd2l0aC1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS42Njk2Ky0w
LjgzMDggICAgICAgICAgIDE1LjQzMjQrLTAuMjAxNyAgICAgICAgICBtaWdodCBiZSAxLjAxNTR4
IGZhc3RlcgogICBzdHJpbmctc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMzLjkxMzkrLTEuNjY0OSAgICAgICAgICAgMzIuMTM5MistMC43ODcyICAgICAgICAgIG1p
Z2h0IGJlIDEuMDU1MnggZmFzdGVyCiAgIHN0cmluZy10ZXN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuNjE3NystMC4wNTY0ICAgICAgICAgICAgMi41OTMxKy0wLjA3
NDUgICAgICAgIAogICBzdHJpbmctdHJhbnNjb2RpbmcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEzLjkxMTYrLTEuNjM2NCAgICAgICAgICAgMTMuMTMxNystMC40NjEyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDU5NHggZmFzdGVyCiAgIHN0cmluZy12YXItZXF1YWxpdHkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjQuODEyMSstMS42MDIwICAgICAgICAgICAyNC4yNTM0Ky0w
Ljc2ODUgICAgICAgICAgbWlnaHQgYmUgMS4wMjMweCBmYXN0ZXIKICAgc3RydWN0dXJlLWhvaXN0
LW92ZXItdHJhbnNpdGlvbnMgICAgICAgICAgICAgICAgICAgMi4wMzI0Ky0wLjAzOTggICAgID8g
ICAgICAyLjA0MTIrLTAuMDMzNCAgICAgICAgPwogICBzdWJzdHJpbmctY29uY2F0LXdlaXJkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMxLjY4OTArLTEuMjU0MyAgICAgISAgICAgMzMuNjI1
OSstMC40NjM1ICAgICAgICAhIGRlZmluaXRlbHkgMS4wNjExeCBzbG93ZXIKICAgc3Vic3RyaW5n
LWNvbmNhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNS40OTI5Ky0wLjY1MTkg
ICAgID8gICAgIDM2LjEyNzUrLTAuNTIxNSAgICAgICAgPyBtaWdodCBiZSAxLjAxNzl4IHNsb3dl
cgogICBzdWJzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQw
LjA5NDgrLTAuNTg4MCAgICAgISAgICAgNDEuODA2NCstMC43MzM5ICAgICAgICAhIGRlZmluaXRl
bHkgMS4wNDI3eCBzbG93ZXIKICAgc3VwZXItZ2V0LWJ5LWlkLXdpdGgtdGhpcy1tb25vbW9ycGhp
YyAgICAgICAgICAgICAyNS41NTI4Ky0xLjE4MTcgICAgID8gICAgIDI2LjIyMjcrLTEuODMxMyAg
ICAgICAgPyBtaWdodCBiZSAxLjAyNjJ4IHNsb3dlcgogICBzdXBlci1nZXQtYnktaWQtd2l0aC10
aGlzLXBvbHltb3JwaGljICAgICAgICAgICAgIDIzLjc1NzYrLTEuNTczMCAgICAgICAgICAgMjMu
MjkxNCstMC43MDIxICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwMHggZmFzdGVyCiAgIHN1cGVyLWdl
dC1ieS12YWwtd2l0aC10aGlzLW1vbm9tb3JwaGljICAgICAgICAgICAgMjUuODYzNCstMC43MTAz
ICAgICA/ICAgICAyNi40NTI1Ky0wLjk3NzMgICAgICAgID8gbWlnaHQgYmUgMS4wMjI4eCBzbG93
ZXIKICAgc3VwZXItZ2V0LWJ5LXZhbC13aXRoLXRoaXMtcG9seW1vcnBoaWMgICAgICAgICAgICAy
My44NDQwKy0wLjc4NDIgICAgID8gICAgIDI0LjYxNjQrLTAuNjc2OCAgICAgICAgPyBtaWdodCBi
ZSAxLjAzMjR4IHNsb3dlcgogICBzd2l0Y2gtY2hhci1jb25zdGFudCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxLjk1MTArLTAuMjA4MyAgICAgICAgICAgIDEuOTM5NystMC4wNjUzICAg
ICAgICAKICAgc3dpdGNoLWNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC4yOTk0Ky0wLjA2MDQgICAgICAgICAgICA0LjI2MjArLTAuMDU3NCAgICAgICAgCiAgIHN3
aXRjaC1jb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuODk3Myst
MC4xMzczICAgICA/ICAgICAgNC4xNTE1Ky0wLjUxNTcgICAgICAgID8gbWlnaHQgYmUgMS4wNjUy
eCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYy1iaWctdmFyICAgICAgICAgICAgICAgICAg
ICAgICAxNC4yNTU0Ky0wLjc1ODYgICAgID8gICAgIDE1LjI5MTcrLTEuMTY3MiAgICAgICAgPyBt
aWdodCBiZSAxLjA3Mjd4IHNsb3dlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDExLjg2MTMrLTAuOTQ5OSAgICAgICAgICAgMTEuODU4OCstMC44
MDU5ICAgICAgICAKICAgc3dpdGNoLXN0cmluZy1iYXNpYy12YXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMy45NTA0Ky0xLjI3MDcgICAgID8gICAgIDE1LjA3NDErLTEuMTcxNSAgICAgICAg
PyBtaWdodCBiZSAxLjA4MDZ4IHNsb3dlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2ljICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDExLjU4NDMrLTEuMzA4NyAgICAgICAgICAgMTAuODIzNCst
MC42NjgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDcwM3ggZmFzdGVyCiAgIHN3aXRjaC1zdHJpbmct
YmlnLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgMTkuOTg4NCstMS44NzkxICAgICAg
ICAgICAxOC41NTU1Ky0wLjg5MjQgICAgICAgICAgbWlnaHQgYmUgMS4wNzcyeCBmYXN0ZXIKICAg
c3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAgICAgICAgICAxNC4yNDI0
Ky0xLjA3NzggICAgID8gICAgIDE0LjMwNjgrLTEuMTA5MCAgICAgICAgPwogICBzd2l0Y2gtc3Ry
aW5nLWxlbmd0aC10b3dlciAgICAgICAgICAgICAgICAgICAgICAgIDEwLjQ5NTUrLTAuMjc4MSAg
ICAgPyAgICAgMTAuNjgzMCstMC43OTc2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3OXggc2xvd2Vy
CiAgIHN3aXRjaC1zdHJpbmctc2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAu
NjU4MystMC43NzY0ICAgICAgICAgICAxMC4yNDU1Ky0wLjE3MDAgICAgICAgICAgbWlnaHQgYmUg
MS4wNDAzeCBmYXN0ZXIKICAgc3dpdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNS40Mjg5Ky0wLjIzNTEgICAgID8gICAgICA1LjUzMTIrLTAuMzg3MCAgICAg
ICAgPyBtaWdodCBiZSAxLjAxODh4IHNsb3dlcgogICBzeW1ib2wtdG9zdHJpbmd0YWcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjA3NDArLTAuMTQwMCAgICAgXiAgICAgIDIuODI3
NCstMC4wNDAwICAgICAgICBeIGRlZmluaXRlbHkgMS4wODcyeCBmYXN0ZXIKICAgdGFuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2OC4zNzMwKy0yLjg3ODgg
ICAgICAgICAgIDY2Ljg0MjIrLTEuOTc0NyAgICAgICAgICBtaWdodCBiZSAxLjAyMjl4IGZhc3Rl
cgogICB0ZWFyLW9mZi1hcmd1bWVudHMtc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjEwNDUrLTAuMDUwOCAgICAgICAgICAgIDIuMDI1MCstMC4wODE5ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDM5MnggZmFzdGVyCiAgIHRlYXItb2ZmLWFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuOTgyNCstMC40NTA0ICAgICA/ICAgICAgMi45OTAzKy0wLjQ5MDAgICAg
ICAgID8KICAgdGVtcG9yYWwtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMS4yMTEyKy0wLjY4NDkgICAgID8gICAgIDExLjI1NzQrLTAuMzkxMSAgICAgICAgPwogICB0
by1pbnQzMi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjg5NDMr
LTEuNDg0MCAgICAgPyAgICAgMTMuMzIwNistMS4wMzIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDMz
MXggc2xvd2VyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1udW1iZXItc3RyaW5nLW51bWJlci1z
dHJpbmcgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy40MjQ2Ky0wLjA1NTggICAgID8gICAgICAzLjQ5ODMrLTAuMjg1OSAgICAgICAgPyBt
aWdodCBiZSAxLjAyMTV4IHNsb3dlcgogICB0by1udW1iZXItY29uc3RydWN0b3Itb25seS1udW1i
ZXIgICAgICAgICAgICAgICAgICAwLjcwNTkrLTAuMDY2OCAgICAgICAgICAgIDAuNjkzNCstMC4w
NDI4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3OXggZmFzdGVyCiAgIHRvLW51bWJlci1jb25zdHJ1
Y3Rvci1vbmx5LXN0cmluZyAgICAgICAgICAgICAgICAgIDEuNDk2MistMC4wNDc5ICAgICA/ICAg
ICAgMS41MzQzKy0wLjAyODEgICAgICAgID8gbWlnaHQgYmUgMS4wMjU1eCBzbG93ZXIKICAgdG8t
bnVtYmVyLWNvbnN0cnVjdG9yLXN0cmluZy1udW1iZXItc3RyaW5nLW51bWJlciAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg0MjArLTAu
MDk0NSAgICAgICAgICAgIDIuODE2NistMC4xNzE1ICAgICAgICAKICAgdG8tbnVtYmVyLW51bWJl
ci1zdHJpbmctbnVtYmVyLXN0cmluZyAgICAgICAgICAgICAgMy4xOTk5Ky0wLjQyNzkgICAgICAg
ICAgICAzLjA1MTQrLTAuMDMyMiAgICAgICAgICBtaWdodCBiZSAxLjA0ODd4IGZhc3RlcgogICB0
by1udW1iZXItb25seS1udW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjYzNDgr
LTAuMDYwNSAgICAgPyAgICAgIDAuNjU3OCstMC4wMTIzICAgICAgICA/IG1pZ2h0IGJlIDEuMDM2
M3ggc2xvd2VyCiAgIHRvLW51bWJlci1vbmx5LXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEuNTM3NCstMC4wNzIzICAgICAgICAgICAgMS41MTgwKy0wLjAzOTUgICAgICAgICAg
bWlnaHQgYmUgMS4wMTI4eCBmYXN0ZXIKICAgdG8tbnVtYmVyLXN0cmluZy1udW1iZXItc3RyaW5n
LW51bWJlciAgICAgICAgICAgICAgMi44MDk2Ky0wLjA1OTMgICAgID8gICAgICAyLjk5MjErLTAu
MjU0NCAgICAgICAgPyBtaWdodCBiZSAxLjA2NTB4IHNsb3dlcgogICB0cnktY2F0Y2gtZ2V0LWJ5
LXZhbC1jbG9uZWQtYXJndW1lbnRzICAgICAgICAgICAgICAzLjAzMTArLTAuMjI0MSAgICAgICAg
ICAgIDIuOTM0NCstMC4xMTQ5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyOXggZmFzdGVyCiAgIHRy
eS1jYXRjaC1nZXQtYnktdmFsLWRpcmVjdC1hcmd1bWVudHMgICAgICAgICAgICAgIDEuNjY4MSst
MC4xMDMxICAgICA/ICAgICAgMS43MjA0Ky0wLjAzMTkgICAgICAgID8gbWlnaHQgYmUgMS4wMzE0
eCBzbG93ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtc2NvcGVkLWFyZ3VtZW50cyAgICAgICAg
ICAgICAgMy43MDUwKy0wLjM5NTYgICAgICAgICAgICAzLjY4MDIrLTAuMzk0NyAgICAgICAgCiAg
IHRyeS1nZXQtYnktaWQtYmFzaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDgx
OSstMC4xMzc0ICAgICA/ICAgICAgNS41NzEzKy0wLjE1NjYgICAgICAgID8gbWlnaHQgYmUgMS4w
MTYzeCBzbG93ZXIKICAgdHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAg
ICAgICAgICAgNi41NzgxKy0wLjQ1MzkgICAgICAgICAgICA2LjQ1MjYrLTAuMTA0OCAgICAgICAg
ICBtaWdodCBiZSAxLjAxOTR4IGZhc3RlcgogICB0eXBlZC1hcnJheS1nZXQtc2V0LWJ5LXZhbC1w
cm9maWxpbmcgICAgICAgICAgICAgIDE5Ljk5NjcrLTAuNzcyMSAgICAgICAgICAgMTkuNTMyMSst
MC43MDUyICAgICAgICAgIG1pZ2h0IGJlIDEuMDIzOHggZmFzdGVyCiAgIHR5cGVkLWFycmF5LXN1
YmFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuOTgzNystMS4zMjMzICAgICAg
ICAgICAzMi41ODYxKy0xLjk5MjAgICAgICAgICAgbWlnaHQgYmUgMS4wMTIyeCBmYXN0ZXIKICAg
dW5kZWZpbmVkLXByb3BlcnR5LWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgIDIwNy44Mjcw
Ky0yLjIyMjUgICAgICAgICAgMjA3LjYwMDIrLTEuOTQ3MCAgICAgICAgCiAgIHVuZGVmaW5lZC10
ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzMzMystMC4wMjI1ICAg
ICAgICAgICAgMi43MTcyKy0wLjA4NzEgICAgICAgIAogICB1bnByb2ZpbGVkLWxpY20gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjczODgrLTAuMzQyOSAgICAgPyAgICAgIDUu
NzUxNSstMC4yNTA3ICAgICAgICA/CiAgIHVudHlwZWQtc3RyaW5nLWZyb20tY2hhci1jb2RlICAg
ICAgICAgICAgICAgICAgICAgIDkuMzQxOCstMC42MTk1ICAgICA/ICAgICAgOS41MDgyKy0wLjUx
MDYgICAgICAgID8gbWlnaHQgYmUgMS4wMTc4eCBzbG93ZXIKICAgdjgtcmF5dHJhY2Utd2l0aC1l
bXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAyMy42NzkyKy0wLjQ5OTEgICAgID8gICAg
IDIzLjk4NTQrLTAuNTQ0OSAgICAgICAgPyBtaWdodCBiZSAxLjAxMjl4IHNsb3dlcgogICB2OC1y
YXl0cmFjZS13aXRoLXRyeS1jYXRjaC1oaWdoLWZyZXF1ZW5jeS10aHJvd3MgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4Ny42NTgwKy0zLjMw
NjEgICAgID8gICAgMjg4LjAyOTYrLTUuMTA3MSAgICAgICAgPwogICB2OC1yYXl0cmFjZS13aXRo
LXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgIDUzLjYzODIrLTEuOTQ3OCAgICAgPyAg
ICAgNTMuNzkxMSstMC42NTc2ICAgICAgICA/CiAgIHY4LXJlZ2V4cC1zZWFyY2ggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDcuMzQ3MSstMS4xMzg1ICAgICA/ICAgICA0OC4xNTc5
Ky0xLjk2OTUgICAgICAgID8gbWlnaHQgYmUgMS4wMTcxeCBzbG93ZXIKICAgdmFyYXJncy1jYWxs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4xNjU4Ky0wLjk4NTYgICAg
ICAgICAgIDEzLjE0NDIrLTEuMDEwOSAgICAgICAgCiAgIHZhcmFyZ3MtY29uc3RydWN0LWlubGlu
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNzE5OCstMC4zODIxICAgICAgICAgICAxNC41
NzE3Ky0wLjU1NDUgICAgICAgICAgbWlnaHQgYmUgMS4wMTAyeCBmYXN0ZXIKICAgdmFyYXJncy1j
b25zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi40NTI0Ky0wLjM5NzIg
ICAgICAgICAgIDEyLjEyMDgrLTAuNjM4MiAgICAgICAgICBtaWdodCBiZSAxLjAyNzR4IGZhc3Rl
cgogICB2YXJhcmdzLWlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
LjkyNzArLTAuMTczNiAgICAgPyAgICAgIDguMjA0MCstMC43MTQ0ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDM0OXggc2xvd2VyCiAgIHZhcmFyZ3Mtc3RyaWN0LW1vZGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuNDUxMCstMC42NjY5ICAgICAgICAgICAgOS4yOTc5Ky0wLjUxNTkgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTY1eCBmYXN0ZXIKICAgdmFyYXJncyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4wNDY0Ky0wLjI4MDAgICAgID8gICAgICA5LjA5
NzErLTAuMTYwNSAgICAgICAgPwogICB3ZWlyZC1pbmxpbmluZy1jb25zdC1wcm9wICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjkyOTYrLTAuMTQ2MSAgICAgPyAgICAgIDEuOTkyOSstMC4yNDUw
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyOHggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjA2ODcrLTAuMDE0NyAgICAgISAgICAg
IDcuMTEwNystMC4wMTI4ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMDU5eCBzbG93ZXIKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwT2ZU
cmVlICAgICAgICAgICAgICAgICAgIFRoaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCkFzbUJlbmNoOgogICBiaWdmaWIuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDA2LjI1MjgrLTQuODEwNyAgICAgPyAgICA0MTAuNjE2MystNy43MjI3
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwN3ggc2xvd2VyCiAgIGNyYXkuYyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNTguNDY1NSstMS41NTY4ICAgICA/ICAgIDM1
OS4zOTY0Ky0xLjUyMjcgICAgICAgID8KICAgZHJ5LmMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ1Ni4yMTkxKy05OC44MzM4ICAgICAgICAgNDI2LjA2NDIrLTY2
Ljg1NzYgICAgICAgICBtaWdodCBiZSAxLjA3MDh4IGZhc3RlcgogICBGbG9hdE1NLmMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzA5LjU0MTMrLTQ0Ljc3NTAgICAgPyAg
ICA3MTIuMzk3NistNDkuODM4MyAgICAgICA/CiAgIGdjYy1sb29wcy5jcHAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMzODIuNzE4OCstMjcuNDc0MSAgICAgICAgMzM2OS4xODE4
Ky0xNi42NjU3ICAgICAgIAogICBuLWJvZHkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNzUxLjk2MzMrLTYuNTAxNSAgICAgICAgICA3NTEuMzQzNSstNi4wNDI1ICAg
ICAgICAKICAgUXVpY2tzb3J0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDM3MS41MDE0Ky00LjIxNjEgICAgID8gICAgMzc0LjUzMDUrLTYuNjE3MCAgICAgICAgPwogICBz
dGVwYW5vdl9jb250YWluZXIuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAzMTQ0LjExMTQr
LTI3LjI5MTMgICAgICAgIDMxMzMuOTg1NistNDUuNjQ0MiAgICAgICAKICAgVG93ZXJzLmMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1MC40NTg2Ky0xLjg2NjIgICAg
ICAgICAgMjQ5LjEyODYrLTMuMjc1NyAgICAgICAgCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNjg4LjAwMjUrLTE3LjgzNTIgICAgICAgICA2ODQu
MjA2MystMTQuNjQ4MyAgICAgICAgIG1pZ2h0IGJlIDEuMDA1NXggZmFzdGVyCgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAg
ICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIApDb21wcmVzc2lvbkJlbmNoOgogICBodWZmbWFuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE3LjgyMzYrLTAuNzgxNCAgICAgPyAgICAgMTguMjAxMCstMC44
NzUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxMnggc2xvd2VyCiAgIGFyaXRobWV0aWMtc2ltcGxl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDkuNzY3NSstNS41MDk3ICAgICA/ICAg
IDI1MC4wMTE5Ky00LjE0MTIgICAgICAgID8KICAgYXJpdGhtZXRpYy1wcmVjaXNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIzOC4xNzg4Ky0zLjgwNDEgICAgID8gICAgMjM5LjkwODQr
LTIuNzQxNyAgICAgICAgPwogICBhcml0aG1ldGljLWNvbXBsZXgtcHJlY2lzZSAgICAgICAgICAg
ICAgICAgICAgICAgMjM0Ljg2ODIrLTIuMzU2NiAgICAgPyAgICAyMzguNzE5NistNS4wNzg3ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE2NHggc2xvd2VyCiAgIGFyaXRobWV0aWMtcHJlY2lzZS1vcmRl
ci0wICAgICAgICAgICAgICAgICAgICAgICAyNTIuNzM5OSstMi4wMjU3ICAgICA/ICAgIDI1Mi45
ODE3Ky0yLjA0NDMgICAgICAgID8KICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTEgICAgICAg
ICAgICAgICAgICAgICAgIDI4Ni4wMzQ1Ky0xLjU0ODAgICAgICAgICAgMjg1LjUwNjYrLTIuNTA0
OSAgICAgICAgCiAgIGFyaXRobWV0aWMtcHJlY2lzZS1vcmRlci0yICAgICAgICAgICAgICAgICAg
ICAgICAzMjguNzgxOCstNC4zODAyICAgICAgICAgIDMyOC4yMDU4Ky02LjY4ODAgICAgICAgIAog
ICBhcml0aG1ldGljLXNpbXBsZS1vcmRlci0xICAgICAgICAgICAgICAgICAgICAgICAgMjkzLjg0
MjErLTMuOTI0OCAgICAgPyAgICAyOTguMzU3NystMy4zMjQ4ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDE1NHggc2xvd2VyCiAgIGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTIgICAgICAgICAgICAgICAg
ICAgICAgICAzNDUuMTM1MystNi4wNTAwICAgICA/ICAgIDM0Ni4wMTY1Ky01Ljk2MjIgICAgICAg
ID8KICAgbHotc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2
OC43MTI2Ky04LjI2MjIgICAgID8gICAgMjY5Ljg0MTcrLTguOTk1OSAgICAgICAgPwoKICAgPGdl
b21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwOS4yNjc2Ky0x
LjY4MTIgICAgID8gICAgMjEwLjYxNzcrLTAuOTMyNCAgICAgICAgPyBtaWdodCBiZSAxLjAwNjV4
IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUaXBPZlRyZWUgICAgICAgICAgICAgICAgICAgVGhpbmdzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKR2VvbWVhbiBvZiBwcmVmZXJyZWQgbWVhbnM6CiAgIDxz
Y2FsZWQtcmVzdWx0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMuMTEwOSst
MC4xNzkyICAgICA/ICAgICA0My4xMTQ1Ky0wLjIxMzggICAgICAgID8gbWlnaHQgYmUgMS4wMDAx
eCBzbG93ZXIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>289180</attachid>
            <date>2016-09-17 16:35:22 -0700</date>
            <delta_ts>2016-09-18 14:21:06 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews101 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>397766</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
vCVXrwhc6o6FHb2yFoYajz6Hd5cffxnf/ONTGB/4fLv8fPPVfRi93X8ONd3cHlXvxmgV41RbrTGs
J9eYGq2usOk8plYc++yarmK5p/YXqwNtsanf1GCBdbyAGf8cV0r/B8LAmxn9/cv475c349/aipHQ
+XQ561ND2ZGmr9qwpWb2Gpsaq6Dp9ofbW2OYTpPZDL6uxkAZIkR13sjr0RWs6+Zh7PDK+CNYvgce
hLkaXbsPHz5W4+PPC7H1rrdNX01mP+eL1wdbc3Y1+nIDG/z43Vf32R/uViJroy9reLXj8SkKLtQ1
LKLbSIK7CUea6gt6Pfq1ucNQmuv4UA7PAyTg9ta7G3eKAItP4Pb28tq9CyfaSgbP9fb2w+UvV8HD
Cz7Clbpg2OtN+J+bE+MreSGx6ddfLquP/jgJUsIr+BkX7RgjZA63NAQJ2CyDn81PjJs9/BFX/86q
vfl44z6MT77ZC/WubfpfY5hWz6tkkreTO360FPgKxqPRvwBQSwMEFAACAAgATIAxSYuhAk+yNwAA
7bcAADYAHABhbmltYXRpb25zL2FkZGl0aXZlLXRyYW5zZm9ybS1hbmltYXRpb25zLWNyYXNoLWxv
Zy50eHRVVAkAA4DL3Vc/y91XdXgLAAEE9QEAAARQAAAA5Ftbc9vGkn5e/Ao8nZLjgJr7ReV1anDL
0Yksu0zJSVUqxcJlKHFNEQxI2tb59dsDUhQAgrKU7MOpWiYlUZxB99c9ffl6mHyoq8KuVmd+9xVv
7pYf7aK09VVtrf+7UkzpP7wP2fq2vxVep5+q+ebOrk4/vb+4fpec/nDafd47L+1iPZvObH12XIv3
ydarWbXoK/jpp5+8qCqtf3W/tN3F35QIBPNPLrP17It9BfhqUOR/6Bn14X59Wy0aKxj6w/toV8tq
sZrl84641a3/O+Fg5fXK1v553MfBEfa8OFvb06vZXQ8IQVgESAdY+licIXTG+Qgj6gdIIuS9H/tD
tr3LCh+WfvMxgs0j7p9glmKN9CuAuKzq9cFTGHtmUS3u76rNyr++bmEMY4OjEBlQSFHAKJZBqhIU
xIkwaYQYN9x4nueQ++Zr9tn649misH5YVeszn1OEkL+yRbUoV54X1dnq1pb+1W1ts3KvA8GJzVbL
bF3c+n9u7AZ8UFR3o2y5nNvRXTZbBOvmAc9LvhV2uQbk3TNLfosmoYknJoqS8dg/GZ//PE5+/vSq
td8d9P7gfkk+Xk7OLz+Zi3N4KI4/uqeytY++od1LUslEibjnfXrnf7Q3IGLlX9qshj0Pa2deELz1
PSdwMrlKfrs6iN+dMIwUmyp4Ezx+wJl2rvnd9ylhv/zh18G30/rrN3/87r+j978OhD74uHECeGvn
xrOzZ7oN/Nta+Vf2JRsX9Wy5jqraboH+195ygDZl1GbM/9c4Ojt7l9WfbWnm86rI1lV9djadLcoQ
/vp8VY2/Wrs8eeW/9pmHX6aiEIpJvVVxvihqewfplc0biZDLZyv35tJ+WzeqGh1ceuTFSqhVx5WU
1a9VvRXOkEdfKlxoyMNG+D9ttnQJADLX7lc8K9NZbU8mkyj9uFlcVNV2+Ycf/S/VrPzBacRSe6yj
0ilKq82izJqAbauU0+lUC8YKYpnfSL2+vHj//sPkfDyJzMXF+eXPk/fXV5Or9xMzuTp/l3xsPg5N
9Mskvb6Mrs7fX04moJUgj79UaT6V1G+ZEleNMc4GxLUnXigvn3JaDshbgUAKlVC+UB6SAqm2PPjV
WEqYp14qS+Sl8tuSxktbQH8pnEQtPL1tG/7xVydIONJWc8hYiDBGGRPK1XqMXiqEct0SwgXhHsYv
FJJlBX0UIrHA2sOQUfNZXt7PyxH8mOXHhDT+4VZoXmh/tc6ghcDx70sSfrIUOQ27xeAuW2Q3tm5K
Eny+ul+t7d3ks60Xdt6F0NKsspxQ+Mf/bL9ACkNjdrHX1JyW7AEL2jJsRjMirD952D+5u6kn2wrp
ygvZW0POXg6PaJZBEH6FgvJns7+260296ADdSVtudXbEtd1MqJW0LLdunnz9cw8R0z1E+p8Pkf3n
Q+R/BSJTDuLK3n3NZuvJanazyOYdgMXr1yM8nE5tWaXArCQKAEIjn0wghda3s9UuIKEDzqFLTaZV
ffK4obitq0UFjWtTNyXszbxa3Pjux48tMc3aGzz/ETA9vOZv/beQkYvV+h+u+Uj+wl6qCZyNzv38
LnNUYNvyAGSRQULe2BbGzWIGBWDi2vab/e7xGjAV7zZr++3tP9pY/4pFzpamg3L+wqbtrJAl61sB
fik2tSP44wd7nHyheg36GeLpNMOP4s3qflFcZauWJ5zGLQvwT3owfnh18uqtiwIXALsO1ADRste0
nwPEZvr/BEiyWNf3H6rZYn3yd8Q1nKdPFp5hB8O83JKmVjxMdlkyWdbVt/s3rQzagNg3WxSg9u8B
/vFv+e8HiNKTPdvTtOE1LypfGeJQaXYbJ3lV3jfVCzes5kWS9LSUj5L27Vtu+cwLayqMb31BjxVV
nLUb/+X4+uNFVC0WtnDJfVFl5V9o/bhkMKPfZa5jr24m6zpbDjWEZwgqBJvuBbme3y+Dz2GbNmdt
tjm29ZdZYWHkvv1QNe4gmPTq0nPEUpkfklhMJX7xlPBdEtubANJLu3Yd9wjrUzxnjABx/L13nCfb
83zlT2q7qjZ1Yd0HTuXZH45mUtZL9z7sviY2LYAuE3DD5XgbT5OJG2ObyQVTxv9/5BDyi901ydfZ
+tZdRe3uS3zXRq1/IliQz9avzjzfr7NvZ61bi4fKCQt5ewGDyVNB3OBRF/sFilHGpgjzggDSujwQ
5TY4JeXsrH81UkiIonq1X3C2TacW3nGnJF+2F7iUiOXWLawGF9wdSq2GLfFr3X5EZlRripwsjDqW
5CUnbLuAD0QRJJwlmHS8wvMpQdtH6KMSqzNOUC5ks8CO+BHzA0sKrpyS2bL9yP4+xa+n8x4uDLig
AhU1ORu6e/J976K6mRVAMKMP19vLK+IldV3VzX3W7jpr/yTzrlxxvNzc5Q8Xoph5nhfOFll975/f
wei1OvMOr6n8AIRMey//de+y9gTmzVf+m5CnIpYRDyLFdUCFFkGoWBSYJEUcpzqJSPL2+1e3D7q/
uem0LN0xBH7vQzhu/zXk0a82d3Xvyq7W49vZ3S65ThCgoTRJhTIyoByzgMaRCTQ2PIgjhpmIYw3Q
htAck9rFZcUhLpi/p1N6gGuzdDerHWiJFpIaFqg4VAEF7wSaATShwzRGMeWMmGdAawvuoBOlPkCn
SY6n0/wJlnUiEH0ND8EvGFPEawCailRrEyZBGIk4oMjEgTKRCFCIUaoNIjiRQ0C7kkfTOruzrpOc
7q6XV6emt6eNXyukDvHnwrpTb+EHX/wyWw/hNszoMJJJwHEMuOOQBiZKWAA1KCLaJBFLxRDurcRh
vNu1Ns6MFOwAZy4oclHQxXnMwUlIUsAoA0QkCqgJw0CloQkkkkalaZzSNDkC9Lhnd4ttqEVBswOo
hcWFS+cDl17Ym6y4H8IrQwhbARGQxAQi10AMhyzVAUojGoPLjebRccdu5T7l3u0Ob4vQlU9RsMw+
It9/aJkmgNxdUPknlNMRGTGHD6mEKg4HjwAkJYYGWtEoYCTRMkwS4B7u4Der2iXTqXu8pUypAtpe
T1nzYRN58MRmUTwkMtGgjwspUpmYIMJxCvp0GoQIiSAmEUWEhDKWqKVvSwVO24I66kvMD9RrpUUv
8M1yuQ38kYa9QIDUCEsXTUzxmLtMTSQJKAtloDWEFFSVJCExkmHKAc14i+JiltdQ/U/Th+OAY2gE
Dx1QtFtrw4W5Xx/CzXPw8bTxVpX/TzEyDw4TzGGUXCcwoMdQUhhgjFkSKKh7gUi5jJmUWMqo5bGe
FK+riQ2pzx8OCxy2nM1tPXmsvpS7PpWqNMKUBkmCIeliIwIdahRogqhOiBJSpYOHdiCwB6cYgtNP
MZeau9lgBU4hLsEIoIqEjo3rVyGnwh1eGhhN0wBHWKKEQAHm6snDawsezrH2jh70cgh62YMOITAH
0uGI+qMFTMFzTLlkCFOpMQqDiLriAG4OQsPSIEo4CblkUYLw98KvL3/YkIGNHXvKPDu0pyzznj17
2Y1lVkE/w/4JRiPq0gpRNJJQ99zZIIMl1TjgkQrd2eAgjJmA/i0YM2BbnKBDyz7Usy/Ay3sGbtUc
t2u73jWnHIisckoeAn03YWSr+b44CZdrKebURDyEvudyjQvINRWpgCAjSGSAmCZkMND7ArtopvQQ
jRX8qHPP3zfViozQiDSO5fAG/gWESEdADVUUaOTqJ3SRQIvYhT+woFSSSCXpkyHTyB52ZrPkdUGK
AeTToldei3m1KT+D2Mi92WJXdCTkiMGzD29dvTUiYSEBhgudEAgv5G2owYRU4BjYZxoqEj6dsjsF
R9J1t9q1YTqQqlNqG+/DUf18cf0QBBBl2/BlQN+41HFgROxYBtYQBygJEuhXBozQqqFxx3G+X9rF
zxfDKLfbZ9Dt29o7mKdsIB2nnPX8fmnXZgOD7Qlv4oQ3EULCMJZMm0AlGIoKB8KsoM9BbUSUyQhH
EMfPSb2d8GEbdott0BnSh6AzVPCGRIOFWV3czr5YIB4PvQWNILCxKxfYffkItZszx+qACQQhTVAg
OA5ZyGFKTeJuj+sJ6wIpD7tsRpDu5dv1eesa5QSP3BMODBMijFOjgLQDOwGKCY1OQSykWkrNCNFE
mOc4sC1/2IvtHR0LKD+sGPAh69Wv3H03sNrTBdeqtcA8xsgEaeQmuRA4vDHYBDjEmsfA6bHBT1Ww
tsgeJD4AScheSLqOGW/sOs7sXbX4UFfrqqjmbfdGCeRQGDLo00BqaApUBiiXgk4RAQelCU8ofo57
hzUd7+OHe7v2CTVgn9QPLv/3/puoE+4cDX1BRtDGAsTcSIpFGqhQgrejWKc0Bj93HN2W0NUrB7KG
adobPbcz7DeorIyzEXRdoBDNG8cQgS4Q16ZgoHZnLqLATR0QtaHUhiKGE/NdIuSEH3eeW/W6CA+p
pLvrmdppO0L35B8jxkYMiIKrUAkM87GGmYhSFlAZk0BRaoKES6poGBoq5VMxOjAIgOpiAA9HvfAc
30LlXdxA7SFuBID92zduBI55QhjAAKdB2scSJksE3MyQCEZ6HKVJ+qy43KkY9uVusQud4wHoKu9F
QGzzzc34/i6v5ivXqrjLJ+xCUaSISuiggYwAPo0UAuQUu8SPsIkhTJF4DvK2hmH47R1dG9SA+xXK
eu7/mH2NQGydjWCeK+duwh8hiGJ4UGrHiOGnMoSnAYEmC1mFExgydAJngmIM8xDVKTs0pU3TT/s6
YHWxtov16vRdVrwfP657Xaz5gAFY9eNnaW1x+9EW1c1i5sr29p6CQGq7Dtz8dsSeY0pIQmDKhQJM
qYT2S6Abp1QQDdM2TWj0rFgaUncksoa2dk0kAxUu07bXFle22NSz9b1/IpuazSXEkktddz5pSKhK
U5i0DA1db6QQajC2EJjEYmJig/nTpWa8k37EiN2q14U4HcA91b2jucgWN5vsxr6rSjtvcvyx55jI
TYZAKAxKKJwHTQIDRwDEKIQSzt2xpM85j76OIwSvt6tjTY4GMiUn+oGODn0Hd0KkIo4rOQ4dE0GB
LasgihOo9kbxICQwNBIWIUqSCBP85IzSltxFRgY6UU5xLz6A+qXjJnFdDxq569kIIEUKwiAlCsId
I6g9kSJAOaVRWGKBBH0yKhqZR5lmOu7ipOQQ5xTonT1gIuY6Auc1tN49sHsHiDERjEMuBgkSPKBK
QUCIkAdIM0MY4lJFyXNJCCg53jhh0evizIbAFw/H/+cmq7PFerawD2cvhZv9mj5vUiC2DAdECqAc
UhkojtwEsQL6gRVMU2z45PtCe4jKAUQYPyBaZnePlJ045yUKcapVHGijYUrGcPBQWTgM9xFWKoxV
KJIu9WnJ6OpmQ95geXMfDJu3/h+FexZBMG3GMwJTQZgEjKduTAcfAM/hQcyoMhyLGMaJLoCuoB6G
gYSc8j3xy//tqjraDy1uPiRxqmgaRkBaEZyETnCgWcqDiAAFA9KIQ552AXSktPXnjMoD/e7DB/+7
UXJ77Q+l5Ho92xcFLEjTbGJhCAGjAxOH4I2UAAmNKYKhOkZIwcTKGe+COSKyB0sNwGL9m9UKRN3M
H0bnhpLsZugYpicC/RyaHgY+RTm0cmR0oDUBmmJkEhn1l2fo7VoXMBvwI89sj0Zlm3JWjdZVNc+r
byPj/rra/uEaBm7uW+DX9qpapZFmEGUCaFUKrCQ0MFdjlECAM6ge+ulLgLbwI9dXrR1eF/dhz8sl
Rr1anH2ZtkZY0hQ5pfSIYJenBAELSZAMhEnRtl6EEkgJF0KLmEPJlvppAz59b4Jt7+gYIN3F0YEB
heydBjyZlXZti3VVr4rtdz6NFVSLHZdKuMFMmiQQrkDT2BFb4v63CQpjpGJYJvhZvTsGVfGDquM8
6mBbx6wpPbwQgw/796TxbPXZ1PlsXe+PRjT00CUGitOUxTD2EhMBGQmhUYY8AtNQypI0jAlkzpPH
0pN+xI7uprYVBSoOhzf4UPWsuIqizuAeGUaSxH1PgiCcGIMJkynhvpfgLBEo1ow95yBA7DBkWOjA
BPZ9CNNR8l1lnmebxf4/VoapXDuW2tzgpApHBmahmEQJ+BWKoXE3OIzAZA4DUWiOfF/RltiFog/D
uSA5O+Cg7vnWlxUw9HJ38ts3TU4aE4Y4CjTFMOAkDMo2gorNcYjimKdRTMO/+aVFh6+28Rxjq+09
XtdAPmQ1P/iCpqgyl7iq4VjNPW+EEgPDG40ExEtI3PUjEBcO3AAnSPE0/d5XMyDyGKuCpQ5MPnCF
Ah/+L2/X1t3GjaTf9UvmBT64Xx5x9XiPveNEM9m8UmTT4RlZyurijefXbxWabBLdoMQkOslDJLNb
QKG7UPi+unF7cDz+Muy+bla3ZPV4N/lwAL8ctMUkHrJIYGBoQUCtAQs6nkkCslBcEmhi2vNzOWAr
j+0oi5bioLffPu0eJ8cIwBVUCyYBK8NjAgwFvCoHS0LyqCXRCWF5ALV52VSv18MtkNqn4VWl+Das
YYD+ba10V+0CdG9V85DX3ZgC9+4RE5Ufn3brE7VDa8L31kSzAPQ+MWIKU+imRiaZJMZfbciAFGJy
F7qp8ZfrznQzGtHe1q6tZ2n0zeRv/a/P+f0Rg9awbCwyugK8yzEGVrwkSqx3jEStiguheCletuI1
h+jDP/ri/rjPA6wxguPsrdC93Wn4UHlQDb4+DOuH778+3U/oXYh3YlR6ZYwrxVMCJxGAGw9PPhgA
08AjONALzlK0Z0K67ahX7eyd52gBNO5F+pauP7eKn0oG1MpADge6AJgT1MB6Do+RpaC9VFGkv0rx
J+GaNbntElfCh64Tpa4uZnSRfbz/8mXmgnBgVxQgOJK9w1wvsDKhSArERSsg7UFq//vc3ifzvOL0
PrmzWdnWLX1ewAXXM4zWCzL7f14jFapIzajql7DWlkwDI1aoCIcu/ob5T4pqHYGaUKCnbxPMPv2b
f55xG8CFq2ZZZliula0nlvv4v7e7p0EcuZWt4DPEwIoxmXCJno0cgVuxpAjzaKIkBZst2rOhGagR
gctlWGrDrZwp0g8JI2PoEoX/o6GR6FiDfRGsAMVR1BOPeD5IT20BW5mMefPn+kPq3/JDapdke0ta
8Vk+F5LExwPfxE2ha2D4QGAxC4JTE0g0iBYkUFlbkLGkFHOMLrsadX8BLawebs7h4BmhnGjveV45
3dIudSV6S50O9X8P379+eZgsbXVmGyuVlZykjFHNCBg/JApHhEhMgpWNOamujT0dqxViwztCDOLg
LzkESGDnP90+HnN4DlAH84g8knBOpQZOztEIeUGScUZ6BaouXowONgO3kg1LSrHBxL4WIKddTXiH
93cEyXvXOXdVRM1zFJkFohAOCa44cbQUEnl28F/knvu3A8hLec6xqfl9zeqF7lhSYc1sa78f7oaR
jq1ur4FfAgA4sHZO3RjMg1PZpsQY4aoAEqTSEK8CwAzJlBAuiJwvCh105uovrXNjuza7dARtlN4c
FH+3fka1OKatKcHeqeoW9t74CFRdUsYxiwLOdg2EhwelgwzU8DKL6s/Gumqn7FhwtV6kXGVgIhYk
QNYFP01NiSjCSQVmO2J2q+ORWC49YE3DowYLH5R5O53y+cyRlNv1rDvr0ZwfTqTT4kcAndVrHZwS
tCTMRwDdYAZAG3LJkCJTTlEG+KJ9oCeDXLXziN7kU1IMPM+v93exQY8A/zU74MdsLJgMi1kRmGcQ
YYcG7GiBaUlCIstz6lxK4GzkVrAOEt/o1eqgbfHHcv0MB+xk22pIRMPpDCSOmJAwc50CcUK7yxKn
vBiwGWoWi2+HaSXoJElu9GZ+TH9YNzl9pgYx8Ud1kAvAtSIQrYD0CiM0cToEwnWKCk4ASi8LJZ/O
cSZla91P6BuoWJKDgR7zcm//83X1Tk0xBlQuwBjZGkW8iXBaUSSjTAKSi9wUE+DD6i08eYinYzST
8/UypDDwrTpo148fPh/NhbH2nXiHcWxaYsGcW+JCBvU2WcI2LZoUZWNi2Woj1avb9P3D6tdfztLA
hlediNGIL9VyZw7AfifxV5vd6m49zBihgKPL6syI1xGdHhT2KSalJhbB7GVgVt68ESNsJWiF17wn
/GoGyRqLVq4zdgN4rAGWmmqIyjz9juBeAkZLAneYQq+OA1MuDcJR46QXhXGV386CHuQ5c+P+6mzZ
N51lmym1+ebx60kMB42GF55npSMcRxgCNNEApBYArllxHF6jpyHMYjjHMdq5zbozt53U/X35GfM+
hs0izzDWQFbyBGgGup4o6L4EDVJe2eRTFCWkN8ozbGVo5bdLz86gjD34z377estPQoB6BCoeTlRe
oiVJgKYLgJYkREDtOSs4FzAoFWdhp9Nxrtq5XEeAm3nk+cfh6/3T8NNu+L+j4R3Rk8PSgghUmmvH
COw8NybzBwOno4fjSBUJpleJS6zucppzO3J+X7MorTtaoc08B3nvLxt+ewKOhN78iYGaQ75UAG0I
QKiBWRvM7wIGaH0WRBYrKWfJJZlfQu39KVphjegIu0j0rbu4pv/sCSXspWorlKH7BOWSfLEWrLZB
ECtMAHhilCUS6KsqXisT/KV+jmaqFzL0T29rlmU6aUnDit70khZXTyvcmXU1oOP44IGCmEyTJSor
jyHMACAHlsY1ZdEEZ3R5nYvgwC84aOBqI/KKd+z3SogJmX39dQp5jNmqwJcAyJJULTMoBmBCwBoe
EIBX0icR55hwGqGdWMjOxGo46OusOczfpOSH9F2vGTBcEQkQXkzrdpYEBWjfKGAy3PsEuKeroO2Y
jTgb1zmEN+s5ocRczmH9NGxq7vdEqk78bgneEsYLI7ceK9vAIDhWCEAda22SOpSLKhG6E/Xfa/fW
dnGbznYDzNY5pP1P8e8JM7xNpTTKYBpQfeoiK8atiSQ7kzCHRZOQLaC2oq3B+l1r9MU5LDjLC1ks
eLlZwcA6EG/Qc8b79w8Nz69Z6hy3lnM+eWD3BMPQoDKYgAPmAfOBmYiJc/lKItkf8Wodpenferze
rtV0sPRghsXbQmYzJuTLkdTXXCMHB5DMWWPLOoE5c4AQs8QUOiUFbNWiRLnsPR3GP/eiDtdb6Vcd
GzjcyINB+VQ34MQ0uaxHKTMc6x+EQChrvQVMDtSZ2SIAsmQ94pITo9KM0s5/03t6m81h/t9+XXdC
uCpa7oC9AXHiYNaMBC4QFLb9S8LGaG22smtSpuEaIbaq8xC2lh2M2+e7LzM0bwwQtZwoKVzAoauZ
RtuviBaFl8AdoPnwRmh+mvxU5C2Vyx2GH879HVP8o+av4B+cfISf1Lqm4DRYaQKcCh0HIRFfTzNv
cmGF6Vzkn4qyHK/P1jB01rCoY/n5c9xvvAOgq6eKl14JYBqsYKGABJTuJcBkKpkMTqVIFb9k3xxH
78t+vN7K3il42NLVhIr9T6Wm7xxBva2YnkvJkoyMJIsOvIQpTykZ4pjMVEgGhpr/yaybRntaOZol
MLfU+i1br2eG6z02+mwslincowNAylhAXeBQCVYLUsCMBeFiSK/QEhjxjLPx+rqVcNt5yELwubNl
vpcQd4pRU8btCuDHZ00tyQxTAoMtWMDOSTJK+0hTAFDyx7fr/mIjuuhUPm/FMTvl/cf6VwvOB2AI
VJdJwqORSFMEcQYgPQeYwlgpRr9Swfc7astOJGhl76SzbGtB4gJ/1CHGGs/RSQNHc1FegyHErDgD
9iRIYNFMZKq1csBwXnbS/PC8enj6z/kErBkyGZdwFpnUy83adCfzbHuj5qlzn4bNbnWS+Vd1SWFE
StJada1zwoxxnRycPxKzmbPEf/KssRCUl5dLc0/H74t/ekezghtrOivYTKGm9fOvj0c+LukYqszW
JzifHdG15sAgEQZ+SBTFbpmRK6X0jAicjNMIsKZLh8B27Za06fb+4fr73Rqth9vng7vRgjBsHAEM
HJ5WxqAlGEGdPTFwhjrlCpUuvzm8m+Q5py77y+1aezZyfTNnvp+eb592T/fP618OXURObBHXcszv
w581zCYcHKu4R2qBU4EtHhUnlGONa5HAhNMlJ9cLkzaKNL+tXWCnVH27Xk+5LfF9/HTdc8cWxZzA
JiBRAP4T2cAZFoMjvACEl8JiKuRbumMbQdolrDunxAYrExpz9elTvMatLGpZlxkXEZ2zXGL/DY2V
pTIRl2tOryhC5eKisRe9Chj7zNOHK1etYLIn7XrZk+J2uP7xM3K7A+TRttCo4EFnLI8TEo6yYDBi
nAXlQmiTZLq4bB7GfqFoHq7OpN70pN7O6lIeV3cbtGhTaNmiixifNIBjIKKikGgoVgVg9hp6f6gq
KjKntBXxJS9VM3Irml48UEcV5hIvTquDutUkA0rrgz1qtPSmJO/RJWgYwSoaYg1geq5cttpxaZX7
kxp9esfVqbyamuUiNJ3D+cdaxvXu4VjHdWpoQFNqB5P6E1FP4EnhM6eeorPNAerhAWsAMSU3xcAY
e4vMiUVx2YU1aLMnMHSeAGcdZ1y4fR6e7u+RSR89ORYTdx2sDjAobA5qsD8Vc4QGkUDxeHRKvPr2
ppHPv77pllb6pV+ufjjPyK9Q/BmW/zgWF/zrDtshtJUFWQmhpONAxwqcjgwOxoANaKR3MWdtk7L5
9coCHPmFsgK8PFuB6KxgPc/mPXn2EvaNrqc6/Nyi24ZpwKoJDoFAC5xszqKPXYGBAsgC6JVmp+gr
7SdeeQMnN7TSr+1SesNUxwhUYPXhHxixHrVHGo2gREkdqMA2MdoipcdQnS+eKJtkYB5UKMlXFWg/
+Hn12d/QCG+WHiT8cKoxev+hzN0PyivOEiUhYvUMS2C0AFCRRIHJmBBE1uWN3A/T5DORVx2R1zdd
fa8+Qvxt1Bm61xl86BbgchZcE1cE6jpWOyCkLqkozUBnMn89cjgS3PPuSbx8Kj0TYhEOxA/XB/L+
MHy9/zZsd7dD0+gIcL7CWBHRMdsxed2mkuCUAG1JOlt1Jj9qPl4rjF11hNnqs/1fcE3/89H/9wEa
gPK8E2N3Dyrg9TPp9qksHPMulMZmCizjAZxVfN0I4tjnnyZebeVfZsACvj/GN8NHf32kuTX1TTrg
HzzCBnMW3jq3QEZyAlwDeEsxpXjR7C9K6z1K1yxKDWy5KMPEHPfjbsYK8of72+vacnHK2GLqHbM1
8dVwzZUm3mDFA4Jlj3FlHzyn1ikW3UV+quVUL/DG5r6rdg2yszAtOoV761tcjNyXrsuxdB2gFZUF
uzEkjmFxjl0gDaGuqEKB14D6veqeiC+U7cWPrbjOLcVdrdcH0/h1WK9gjikJSeua0kVzsj6rTIxX
2GDKa6wKy4QHq4Bz0syaTk3zga7a2TZLEW6omkHfQ2XDgXczjtBX1FoGChAXqJ42HJ5ZxBRdGTNR
mXGNBo7FeEGAtiPazZKJw4fH4tz3Hxf+JWGBYxfnscwP83gsJQ67ZrLoM802JvNKYcLv8C/1JF7W
jeKH83Pjwz+unx+2K/T4urFNlBtbRPnMWMTSWon9wgQF7hxyhn9GywSjxgnHXkEY+5HP4Yv95VZq
KTpSSztp4Wr9y+TptbX9HLzaCCqXSMqO4XMuxFq0cy75HOHsEEF3X/rJWDMZOjtha+aFBt92NYZf
YAlj8wmxr7wVh6QSLCnE/loRlA/bqwjMFY8kKkCXjkWgwxdlnx1mOGOA91ebJWyXHf2wR+Dc3z9O
DSZsu/vy/DA1YGJyTAuHX1CPUynJFACYiWOBDfbF5dSRKD1NzhUNxOflVhPLWc7QluWNV+0CTGdV
ki+b/V2PHHbypgt76NsWcvG1wCYw6wA4M8xy44mUArAo82BM0Bcy+/0kZ7n9/nq7hI5+cyb0scCJ
z+ubQIspVjXlKGsLE4CiSUncjAl2IYOTPLxZfdPSCemAbi1RE+f7jj5wc4ETEL9O7PHp4fskuxhD
4zFLliwcXSgtnA4qYpUq4GgA4jFSHcFQ/3W1KM1il2I3qxbLKjv40M5ToWZJOKxuHKWpVGM6rDIs
MCKlxZ2TEXJrg3kPAmscneEXdYC7IP3mXOoNysx7C5nSxv/92/RNSU17E0oLHFFSkYKcB/QuE4+l
ssG4VEBnQzH9JhfHAWdyDD05Jr/W7eruy+4kM28MJkkvvaeEA1MHomgY1iAo4ksxcDrRHNysIvR0
lHb6ofcYhqkpXnz/M37/Xs//GnyEMw/OFoqPQ8AWJlYbT4zOYMbB/skLmNPv8r82osyW0VPLYe4d
bFv2/w1g0SGe7+HooQ6UMEfsqMgVJkHkQCTgIzgrJZPlxZ5fzcitaNuOaRNj3/WlY+3x+93TL8Pj
7rF1q4mxpdr4Sy1LjKYki1oYKGbaR2JrRhNYIENjsOWVGv0/YkBG99n1UsKlj226qXkUUi1ZL5du
nrrudw+fb1ff98GCBZ/xpiYDgrorASQYMCOxDEA2ZoQoA3sz2osqc9tpzhxXzT3tYpzqLOakYm9/
DLKOL1prfGXYAo+iHx0rqYOmkShustapUD/fwLPRWkmW7RLww3nrw09gAx7uvzXZZ1pwTblM2AcX
mx0qR5zUQBCjZ5myEEGZLuKG+7HPMML91ZnUtiP1VpzUl6xudsdTf2xq6Dn3FJCswW7gFPtwYnd1
H2nhltpgg1sUmEyjNNMruuTXXK3owJdRECxwbp6a5ial5Ii36B918MACx8582nPnPaAn5y8Og9Tq
6fNxELzcCK5Fx55oxc/U+57KLbT3riRFuAbTIRi89yA0oKfi4aXbZHVIv6fG9+W63lZq1ZNaLxJ4
C7K7tHuo/U2+17h+zRlidux/bKnC958AJhGhMO9LSEcA7CZlE+M20Fe54zT66wHbcsH9s5vaVetN
b9Xnc6Tejc6iSprw7/b/FGOaVHAcc0IB8yYBYBEwM7EF9E5npUtiOqryl3itxmvtSm967/eYxZd2
qy9399jZ4NPw+IjfThJvd8Pd0/Eorh2BcrZZCg3mCMGVjIo4BzZJBWxPmBQ1ZVbz8PK4MxE7Blsf
PTkfd3fD6sHffhlO/Dl7f2E2NsYAnNU7rI7HigybIyieToGprE0U5i/yF3bEbJe57uncZl5gc2gy
G563W3Qaslrjat+NcEhI7nKg6BWnmB+BvaWcDwTArQVyBSews5dmJR9nOZ+OfLynXcvmpreWKTcz
/vTp+vPt85fd3exLWSZvU7E8FBslYTwBVM4+Aa5LmSgh4NCwPgfp38bbdEaWdj0DXa7HYL7hTa/F
5WnzrLHtlFKMVyealJIygPwSvzVcwDLwOyEiibB/lJI6CVcu6nP5Wirf8r6rVnbVW9DNDHc/PayO
5WiGH6u2gLUIykjAFnmCGjDnNDhScilJI81i/iXQfTLsTKp1T6p5J9Hbe3hZjweUeTwmk/fJ/H9x
V9bcRo6k3/kr+DIRdsSWFvfhCD+gCihbI6vtsGX3zpOCIktthmVSK1Ld0/9+MlE8ClXgMdOKXT3Y
FgsGMotAXsj8koA17SimGBsJ6h08q8IH6l2tFL76czZ/nP/kce9SceDQd0Z0+eSZFFz40PZRbR+f
5ovO1HD04fc2NrdpjSAkjV+IDxZsMC0KYrAw1DiK3WAUeEEeFHgQUnj54m7FjpxD4mHzOGX9PsM6
HcTEHx8m6/vl066PlIrhcBG4INoWXmPdt1cg5jAXU1CjmHCyIoIc9fWSSROyaMbM4XRTjL7/Rq6a
p7vmablCPb/ddVorEkjFCjBx8WKDWDAqnQKj0jJvCalCeVy5byfNv8bt05TcYc06fKj70RzMWd91
P8SuzthePcGvtdJR0NkIpUWxPxfHWIQpqNc+cF/WjrIT4qg3+yFp1BuWcBMzIPrcKM3vp8nL/32T
MmpaOMKLtrdYGXTJKTiRviw4GsUlhnYqmNRxpoWp5Ivp9yMpo7/380WRAZHhaiJ6O/3nvmuBUS2Y
RqDMlUJiiijoCOwUAVtLFTX4e7bGIkSvjm3z3P5Wk6G8x+jz1oa6uaz7mQICvhhjsAIIPSaumSiM
wMymoCsWamUDNy8UqN2vnhCtaYZoQ2w3Uvtp8rRqnpI4Le4LVdWCC4d3jBVoKKEx3A+iAniTxATv
iPT/j4HaLtVdlgXNBCcEvSOZ/j/Nt0+u7iKgiVjIFf9Gn4PhjW2NwQEsdFEedLRVoQiVFtgry/Lz
qoO2Sx1xdeFpysTd0EUXbIB53stLmNfzrVgFWRxjthQsL1tRX4SSwRbEIkDDa16gE48I29a7s/1e
nP9IbgI8TXgQTeaLkKTZIuL8c/Ww7sBo8DYBi+Ldi6XY2xAJrkFXWS0VKKxQWmy9CAZSr3a5M09C
gGx0hoDGnGMjRPsgxt5i7w6OdxRB14U2joAtLTW4nwKjViToUHt+stz0vGy+TyktA2Mg4Q+U1ZA/
PbjSgw2GKQkTcJ6eMtdfzDmQRcJiFhB2ywCbx5TEFOD1gZTCVmY1P3OX75Y5uNN3I1JGhnVw8OH9
oIEJ1mz6ZZtCGjc52xRROcMYZRalvEPAAAWyqgR5X1VSuwrcZ+HPiuXtVjjSxAgfJ9QbNrQkhBmA
s39vHh5jCnRrdsbrYAdmJa0F+C41Ai3KCnYVFsA6JT0CzxFSv8Sueg9LHyirhCcpM0MEd/xQ75sG
/jFfzDrwVbEKHs6ApHAwSiwk4E4KsCqxR6nHcnPDnTqgbruz9cgwGTLkrkJ/UJMv2xwsXpaEWlia
WsROVJhQDJq/oKKUilFwaPqA24dL73FBnqOiX+h8NG7HWF0LDaYh4aA/uKElUGR4wUqivbKk0lr/
1bjdwSicMMNeMPhhn4MKezF/btDLap52lw9bRhRvwe4EkxZeKHG0Qrw9DFDBr2AfliAGHVjt52mS
zFoHjltmZMrdhGS4u5v2cBzaxvV7DKwtUJL3zlhmShATCJPBECbDYyV6HRyxhpXGHnWGuvOmdDWZ
3WtJH3vv6938f59jO49NYURE0MfkS8RiAKqwPqcEk8soOFua1gScNg1W5FmybDv7gf5Wm6ejlMTM
fo93VIkkQxwwYHx7wS3Q6NYRNJDCKWwBJ5ksOVAeCN7SBuw6EdDFsFwIbhXzubY3PXPjw/IUusR2
RMqEyZgd1ujepkAmVluzdLM1MG9f0FKD1jAI9AKk0wrxkRWWTgAbnJTEcnMKhy+dt0ddbmuYSc+l
mSapMVsP3sYa7BYAv7ag00LhwSbHEmgJmoNgnEYxDe4Ngk8ep3Iwf0qmzZhOU9svT31/uSvTwx4K
sVmQNDELsKTUGB98IQMWdIA3Vlg0m5SujagoVaEKL6LbLo9W8u0ej1JOZhn2Jn2xGN2vavK4fsaA
UVtG1xbR6boEFe1FISPyvazAs1OsKrRjwLO11NMX0dxdCo7Uv25GpDzeZYTjjPYP85cG+/VdtZUQ
rXEY/8ZTTIzhpadFhaUdXFuBaV6hEDruPm+ssy+HLLUj5FD8Y/M4YXLGMybwTOhtDsd0+fhnN5Uc
K8Hb3gWkUsZzzE2N2doBCwEtdSB1Das4c6Xh6gBKXnfKlBqROdyzqTrSNffi45cuJj2J2ULx7wiQ
QrWsPEbDwPXgEhwiA+5cocAVRSNCGvaC0F57Sg5YGV8yEBzIn84xvYuDTyfT781ehKGIlcGCz4EN
neHccFXGZDBekEoEEAxUOJ9P5e9MlZDQyIy33DT3g7ri9WTWYgmRi7aDlqX6IraNIbA42DHgJ2tM
aVQUtK5AfExuwRRAXErvX+5Vbyk5lEXePk14vM/t9Hule4pjvrjfJcOKPWYHC1RVWM+OEb2CW4kF
o4KCXcyxUEtbR4/qi/20KVFmeEkl2aBNdJ1c5ti2O56IAbIQFKKq2RqVrQRZ44ShBTikgWljSyaP
l/0cv8Op/jt/dwMkDuW/5JP7PXDqcvF7p4679ZOJ8oTFXpIKDHkFIh+ji0B/LcFVKytV9SFTO7Mk
6wuSWV9Q1QcgW67n950MSkwjbgH6qdAgaooavDXMoXEFGD1VUTpfc/BxZM3s0aT2zrwJXTITLpSx
Di1R+3ucgB2wCZyYC2pjAR2mSgNFvuIE4zd4l0TgcMfeXaqyba37fw5CsH8+SqmcZki/H+SGfH9e
/JgvftssHO2WaLryFiHEehADVhYCtiDewqvCtHVRpap1WdKgz0qw6i1zwIRNB6XsZFLn4PX166rf
t+0uUowQ46lSuqoLLyQioxPEKTahwF712P/KWXlWB7XN5IciB/HhKKWPZYjed/sAy3j58PuF3bli
0UFWJTdBwaG36Hthn0yD5Um8BDVhYuvPXmJTOk1CgRFDowc+3CMaTZ46eEqxW6yuwA0vwYqzGq0c
vPI0DpxCBkeppswGFXQv4LifpLd4k1lcZuuW8NJktQIZ8bBxAKOjTaMmcvCVlQqcJfCuudEB1D9i
XMDhLr3UjNXqNLxFMv+RYqVkXMqNFBluDM/hDm703uUCHPUFbkfGKGjYFjw8/ium8HAvtJagdGy1
gaLj2C69kgS7zgopq7PhB3srHkEg7I1MeJxkCrLkRNCMwfZtPmuW+EVhJx0qZHvPZHxJNJgJpUW1
yhRGILHYiCsQwXAOwb44aTXEmQ8zEB+nVIvMMZvIPtXY69IBx3+u5jFiqjfGvY5CwtOAKZeiqCSW
okiGOOZgFgQDXwcDK8Hm+qD+xeudLkmHG3RuR6RMywzTdwOBOGtWP9bLx1UH2s7G4Er8G7NiAtiY
XLBClmh8aqdBwoNN7RGLNFBd2sqe15E3LrRlHQccasw7GDhKecgyNlBc0WEEfmQsxImi05a1pEqz
gipsgVF7ROqDb7OuJBjYiGx8qpfTES+0fdYjNaOUGiV7OTzvmmUXWjDuOqI15leZCPle1qYUovCx
jExwMLUroF955RwhomKcnwejvzy+8ToDRinFKsfG7lIUJHsnws3BghMxkCtqjs3gVOBy02/EYvI5
sSDPghAi5NPk99P1qJjkqJgO/PNptZw1vz7Br9n7GzA7KVM1KVSJdf+gLYGuUhegzTxIIB2COOuW
Ml3oYEpUZ0zCzn2mOgY+7F+2bfO7vs+3ARVMo2qReTw3liIakQVZGjCpGDFtRABhRMuKVfpFAkbb
tK73l8fTvt5f9vizGf4aklEVUbFmgKuqytVgp9egz7GEveZlYX2wBRwIoawgPPj6PJCDExAHKeHN
0EdTZNJHjLqbTH88P6YNwdTmOlzF63CjOPxHvCPkeMuDbUpsrUlBLHfcK0G0P6vJYNlbqctC+2yU
kjo07BXl/Rf/qXnCxCSEXu8qvW2aDgGbV2FDBl+hy2Q8HFzLwQFWRNCSCGOrswqvMsscuK4dDhyl
HNAMW4bloIi+dbMUEGCG0w3STLyZobriEgtCNMJQcA3iyVHw9YMRYD0GT5Qy5+cpHE1TcCkPlmd4
sP0UyNlitZrtbX6F9WQouWyopKstKzzBenaMZFsGhq8HFhBLVMnqaKi9M29CFs9kgICWnGUs12xk
grd6ChsIAz0GBRJYSIKChQRmUYHtK7XwoGLdaZCtU0mm6ZiEDZ3bIXoACjNf/EhObQtD1HZjNoEw
eB+kwOQ83BmgswScW8pBr9UkaHcit+vcMHWXhiQ6vfiR8GTuh1pC3WFW893BCGlLwybaQInZ9DIm
LaansZJLQ0KhDVivnJfoKSlRWAOcG9xHzrxc4G5PyzGjqR+cAA6HnqGakX7HZrw7ep5vYxJ8w6EN
JNhKuUIZzBJA/FKHVW9WMaa8IPRM5DGk6uvl4W34NVF4apbxjdRM7tq9TJ73/WeoQUId+D8YtCuA
IMwkAZLxTrFgUmilS+PaGo2OJ72fI116CHlvNZn1k5ijZ3QYJ7IMIFFKw7FxYg0ivwRHGs19GYhV
pWDGn8jZ6c6ff23dEV0O2rS7PgdUioG1gLjQnyaL5qFF4Y5728bsfZCOlXF14TGdAc4ruJZ1id1o
KUf7zlj3Ike3S8Ix8Op2RMpkpn5XUzPApWumc8TD2u0VlK2GeufBFFKlQuBtYQr4B9hDVLtaW+tK
dzT9PZkzJcrm3rztZ0djD9TVvqFDzAlAnaScDbU3JRgGJWL2I2wbB+ocr6yhoGVrzY8Stp83JWtq
M2RN9+Uc6Olfp4VBum27xggNtfJ1IQmi0lZg2zuOPrs1VW2lhmMnXqiOY0BEj4fM9y1nu0YuH9wn
V131yodAvxPqgi5KAuYWV77EXiSgVDUN1oKHqqv/K7ihLn1dxoycDE1ko+8GoKr1plUtFnKQC3mB
SQ+bf6H4E9prD5aMtAgmb7HtrGcgb5wOzFNqvTmBYbad/1C13eZxQrvOXL8ZM/C7ooBfz1sxQ1sF
2pY7GWKqEtxa6muse2C0MM6FQoJRSbyoJRXl2doFFziiYPDxaBT+uYkSXi9n8/stUMKX558/YeY3
wFw1eQA6f05mzfjuz/Fy/R383senJQYqm9V4PXn6rYndKtffwcbfPHgTX8p6svpxC2b37eN89mZM
289idfrtFP5cN2/GpPvhqlnHE7v5PF341PTkr00Pv3S4gjcQ10MEmvmiya3HGJgz/96ao2/XY0S0
6L7fzzDq4+LhzzGmU+GT5f14JwXejG+W68nDW/C4L/T1+KlZgYZbrN9SzS7E9SvF//Z6vPoDvf/Z
7fJ5fQu0PS9iGhSsOHtr7QW/fsX1316PfgUfenL30MAcuP5uZlBy78Z/wMN1s3iL97DXryhMul+J
bz/qrPOWXL0i8FF3LZzolbWw1Hj0Oby7/PjL+OYfn8L4wM+3y883X92H0dv9z6Ghm8ej6t0YvWLc
aqs1pvXkBlOj1RUOncfSimM/u6Gr2O6p/R+rA2NxqN/0YIFzvIAd/xxPSv8/CHNBrkd//zL+++XN
+Le2YyRMPl3O+tRQdmToqzZtqZm9xqHGKhi6/Y/bR2PYTpPZDH5djYEyRIjqfCOvR1dwrpuHscNP
xh/B8z3wIszV6Np9+PCxGh9/XxS303boq8ns53zx+uBozq5GX25AwI/ffXWf/eFpJbI2+rKGr3Z8
4gf2p7qGQ3QbSXA34chQfUGvR782d5hKcx1fyuF9gATc3np3404REN/A7e3ltXsXToyVDN7r7e2H
y1+ugocv+AhX6oLhrDfhf25OrK/khcShX3+5rD764yRICV/Bz3hox5ghc3ikNvheN8fgZ/MT82YP
/4irf+fU3ny8cR/GJ7/ZC/WuHfpfY9hWz6tkk7ebuyUVJKG5Bhkz+hdQSwMEFAACAAgAD4AxSQEZ
knVUOQAA170AADQAHABhbmltYXRpb25zL0NTU0tleWZyYW1lc1J1bGUtcGFyYW1ldGVycy1jcmFz
aC1sb2cudHh0VVQJAAMOy91XDsvdV3V4CwABBPUBAAAEUAAAAORaW3PbRrJ+PvgVeNqi44Ca+0Xl
YxeuXm1k2WtKTuqkUiwQGEhcUwQDkraVX7894EUACMpisg9bdZSURXMG3V/39OXrgT9UZWaWy3O3
/ROt7xcfzTw31XVljPurUozh35wP6equuxV+zj6Vs/W9WZ59en958y4+++Gs/bxzkZv5alpMTXV+
XIvzyVTLaTnvKnjz5o0Tlrlxrx8Wpr34ixKeYO7gKl1Nv5gXgK8CRe6HjlEfHlZ35XxjBfrN+WiW
i3K+nE5mLXHLO/dXwvVvzs3SVO5F1MXBEXacKF2Zs+vpfQcIQVh4SHtYulicI3SOxFBL5HpIIuS8
H7l9tr1LMxeWfnExGsL/3B1glmCN9AuAuCir1cFTGDv+vJw/3JfrpXtz08AYRD4OA+SDQoo8RrH0
EhUjL4qFn4SIcZ/7juNY5K7/Nf1s3NF0nhk3KMvVucspQshdmqyc50vHCat0eWdy9/quMmm+14Hg
xKbLRbrK7tzf12YNPsjK+2G6WMzM8D6dzr1V/YDjxN8ys1gB8vaZxb+E48CPxn4YxqOROxhdvB3F
bz+9aOy3B70/uJ/ij1fji6tP/uUFPBRFH+1T6cpF39D2R1LJRI6443x65340tyBi6V6ZtII9u7Vz
x/Neu44VOB5fx79cH8TvVhhGAqEMPniNL3huXfOr61LCfvrNrbxvZ9XXb+7o3f+G73/uCX3wce0E
8NbWjefnz3Qb+Lex8o/0SzrKquliFZaV2QD9n73lAC3lqUmZ+49ReH7+Lq0+m9yfzcosXZXV+Xkx
necB/O3zdTn6asxi8MJ96TIHn6ZCyoJJvVFxMc8qcw/plc5qiZDL50v74cp8W9Wqah1cOuRkJdSo
40ry8uey2ghnyKGnCs81ohvhfzfpwiYAyFzZX9E0T6aVGYzHYfJxPb8sy83yDz+6X8pp/oPViKV2
WEulVZSU63me1gHbVCmLotCCsYwY5tZSb64u37//ML4YjUP/8vLi6u34/c31+Pr92B9fX7yLP9Zf
B3740zi5uQqvL95fjceglSCHn6p0UkjqNkyJytoYawPi2hEnypsUnOY98pYgkEIllCfKQ1Ig1ZQH
v2pLCXPUqbLEJFduU9JoYTLoL5mVqIWjN23DPf7TChKEc6M5ZCxEGNVccoqRdjA6VQjluiEEEUod
jE8UYtKMNoQIQqSDIaNm00n+MMuH8Md0ckxI7R9uhOaZdperFFoIHP++JOEnS5HVsF307tN5emuq
uiTB98uH5crcjz+bam5mbQgNzSqdEAr/uZ/NF0hhaMw29uqa05DdY0FThklpSoRxx7v94/vbaryp
kLa8kL015Px0eESzFILwKxSU3+v9lVmtq3kL6FbaYqOzJa7pZkKNpHm+cfP46+97iJjuIdInHX41
uvl4OQKiAmHuWUgde+5TW8+P2qOZAk8V0Lf/KOdmu3u8vCvXs3yczWwTfOlK2jHrWUKFdLfiGqKt
NNwp7t/NVaqlQXCadbLaqhuCY1bmYg5us/wDignvFvXvC02zouB1MfGrKn24mE9XdebTbq1OrszK
evZIqiieYa6ROzdf6w5WS6v7wb6VgjTAWvcCybpV+RniWZG6YPoM6lStIiznK2iY5+dpvmnQ/jwf
TW/n6Wxgm44LfW5ivx4vyinsrF5sgl6cqNiYVOcuxBfom5vMOvKyTHPb+xZVuSqzcla3v/l0eWcX
pvPbusNKfFDav6trUhAoN+Px+P+ufiK8pXN3zkCbU6y+Tld3tpf/02aCv3yYZ/ENpi1zky9f4vHm
m+n8S/nZRggWdYc4qYYA+UaNGpJBBG/FpvN8XBlIj2Utm9TN4iTZ3NhO+yh7NoVqV6so1zYOVd06
ToPLs7whsi4V47wCcmgxYpghbCM5TSSi6EDk3qfQd/dt5dki1cQUDZEVzA4dqExAvaGnik1x1hBr
Y83sSj4FoRo7mJ1YmrUN/93GZnWWBDo7/08Xevbf34v4n4EI3QAgLs3913S6Gi/rOtUCmL18OcT9
pKQpKxeY5UQBQBiHxmMgIqu76XJ7xjBHzIDrj4uyGjxuyO6qcl4C/V9XdR94NSvnt67948eGmHrt
FZ79CJh2P7PX7utN2f5bXdL4qRNJTrXWE3ey6XubwQFAZinQmlvTwLieTyH+x7auvNrvHq0AU/Zu
DWX+9d+aWP+MRdaWeg7h/NTRB6yQOetaAX7J1pW9Jhnt7LHyheq0zmeIT4sUP4qv6/l1umx4wmrc
zFLuoAPjhxeDF69tFNgA2PL4GoiWnSb7HCDQ7P4jQOL5qnr4YDvR4K+Iq9lCd+R6hh0TzPPN6NmI
h/E2S8bQt789vGpk0BrEvtqgALV/DfCPf8l/P0CUDvYzM9AweWr5ShFPH+v1pMwf6uqFd53/hMpf
5PJR0n4IkmLX6E+pqSZ3u4IeK6o4P2DzXbbVudN5BrMVkuUw2v49Xd7VaS87dzbPYNwGKjeICNLl
NLNyEnsXtM4+mxo/IuJkEp9lCFlUI7N6a1af0tl6w534yczdMIJ58xrAgntnb3dBHuQ+O/0qAOQd
uQrACJ/M2CeMERi/f+0c52Bzni9c4I7Lcl1lxn5hVZ7/Vg/rrJPuXdgHc1aRaaMJuOJqtImn8dhe
Btb3P5gy/v8jh+R/P3FCbra9D7fzi33nsL0Yd22nN+5AMG8yXb04d1y3Sr+dN66nd8UdFibNBWD0
eSGIHROqbL9AUVHgFEtj48Kt8gNRdoNVkk/Pu3fgmYRAr5b7BWtdURj4xK2SyaK5wPWkQBNjF5a9
C/ayvFL9lriVbj4iYdLQFFlZGLUsoTlMNZsFfCCKIGEtwaTlFSoLgjaP0EclGZpMFEoZqxfYET9i
fmBJxpVVMl00H9lfnLtVMevgguKIwPVZRc77XjK4rnNZ3k5h0nPDDzebtxRYOXFVlVX95mL74mL/
KHOuq3ThXq3vJ7tXX5g5jhNM52n14F7cp7dmee4cvpBwPRBSdH7cl53XcoM3b968cF8FPBGRDLkX
Kq49KrTwAsVCz48TxHGi45DEr7//km6n+5u9hyws+QQUnS/hvN2XkEo/m4mtzddmuRrdTe+3+TVA
gIbSOBHKlx7lmHk0Cn1PY597UcgwE1GkAVofmmNSO7j0IS4sdFHQA1zrhX2H1oIWayGpzzwVBcqj
4B1PM4AmdJBEKKKcEf8Z0JqCW+hwgQ7R5ZkqiskTTHAgEH0JD8EvGKXESwCaiERrP4i9IBSRR5Ef
ecoPhYcCjBLtI4Jj2Qe0LXlYVOm9sWXybPsicXnmd/Y08UtKyAF+KZSyp97AD774abrqw+0zXweh
jD2OI8AdBdTzw5h5UIRCov04ZInow72R2I93s9bCmefqAKfGjNkoaOM85uA4IAlglB4iEnnUDwJP
JYHvSSR9lSRRQpP4CNDjnt0uNqGmkh+GRKopsel84NJLc5tmD314ZQBhKyAC4ohA5PoQwwFLtIeS
kEbgcl/z8LhjN3Kfcu9mh7NBaOungHGkeES+/1JyTQC5fRXhDiinQzJkFh9SMVUcDh4BSEp86mlF
Q4+RWMsgjoEf2YNfLyubTGf28YYypTJ2oKz+so48eGI9311ZD4gGfVxIkcjY90IcJaBPJ16AkPAi
ElJESCAjiRr6NmzgrCmopT7H/EC9Vlp0At9fLDaBP9SwF0iaGmJpo4kpHnGbqbEkHmWB9LSGkIKq
EsckQjJIOKAZbVBcTicVVP+zZHcccAy14L4DCrdrTbhaT/Qh3MkEfFzU3ion/8qG/s5hglmMcHAx
5jyCksIAY8RiT0Hd80TCZcSkxFKGDY91pDhtTaxP/WR3WOCwxXRmqvFj9aXc9qlEJSGm1ItjDEkX
+cLTgUaeJojqmCghVdJ7aAcCO3CyPjhZJ8Vsao5M9WWamSU4hdgEI4AqFDrybb8KOBX28BLP1zTx
cIgligkUYK6ePLym4P4ca+7oQM/7oOcd6BACM2Addph4tIApeI4pmwxBIjVGgRdSWxzAzV7gs8QL
Y04CLlkYI/y98OvK7zekZ2PLnnySHtqT55OOPXvZtWVGQT/D7gCjIbVpBexxKKHu2bNBPpZUY4+H
KrBng70gYgL6t2DMB9uiGB1a9qGafgFi3jFwo+a4XZv1tjl5T2TlBdkF+nbISJezfXESNtcSzKkf
8gD6ns01LiDXVKg8gnxBQl8iFpPeQO8KbKMp6CEaI/hR5168r6sVGaIhqR3L4QP8DwiRDoEaqtDT
yNZP6CKeFpENf2BBiSShipMnQ6aW3e/MeslpgxQ9yIusU16zWbnOP4PY0H7YYFd0KOSQwbO7j7be
+iJmAQGGC50QCC/kbaDBhETgCNhnEigSPJ2yWwVH0nW72rah6EnVgpra+3BUby9vdkEAUbYJXwb0
jUsdeb6ILMvAGuIAxV4M/coHI7SqadxxnO8XZv72sh/lZvsUun1TewtzwXrSseCs4/crs/LXMNkO
eB0nvI4QEgSRZNr3VIyhqHAgzAr6HNRGRJkMcQhx/JzU2wrvt2G72ASdIn0IOoVRribRYGFaZXfT
LwaIx663oCEENrblAtt/ZgK1mzPL6oAJeAGNkSc4DljAYUyNo3aP6whrA8kPu2xKkO7k281F46pn
gIf2CQuGCRFEia+AtAM7AYoJjU5BLCRaSs0I0UT4z3FgU36/F5s7WhZQflgx4EvWqV/1e9Hlni7Y
Vq0F5hFGvpeEdpILgMP7PvY9HGDNI+D02MdPVbCmyA4k3gNJyE5I2o4Zrc0qSs19Of+wfWPddG8Y
Qw4FAYM+DaSGJkBlgHIp6BQhcFAa85ji57i3X9PxPn64t22fUD32Sb1z+R/7t2UDbh0NfUGG0MY8
xOxIikXiqUCCt8NIJzQCP7cc3ZTQ1it7soZp2hk9NzPsN6isjLMhdF2gEPUHyxCBLhDbphQULThz
EXp26oCoDaT2KWI49r9LhKzw486zq04b4SGVTDlBhSmaEbon/xgxNmRAFGyFimGYjzTMRJQyj8qI
eIpS34u5pIoGgU+lfCpGewYBUJ314OGoE56jO6i881uoPcSOALB/88GOwBGPCQMY4DRI+0jCZImA
m/kkhJEeh0mcPCsutyr6fbldbEPnuAe6mnQiIDKT9e3o4X5Szpa2VXGbT9iGokgQldBBPRkCfBoq
BMgptokfYj+CMEXiOcibGvrhN3e0bVA97lco7bj/Y/o1BLFVOoR5Lp/ZCX+IIIrhQaktI4Y/lU94
4hFospBVOIYhQ8dwJijCMA9RnbBDU5o0/ayr46z+hzvz1fLsXZq9Hz2uO22skx4DcPcGZbQwJrv7
aLLydj61ZXtzT0EgtW0Hrn9bYs8xJSQmMOVCAaZUQvsl0I0TKoiGaZvGNHxWLPWpOxJZfVvbJpKe
Cpdq02mLS5Otq+nqwR3IumZzCbFkU9eeTxIQqpIEJi2fBrY3Ugg1GFsITGIR8SMf86dLzWgr/YgR
21WnDbHowV3oztFcpvPbdXpr7DupWZ3jjz3HD+1kCITCRzGF86Cx58MRADEKoIRzeyzJc86jq+MI
wevsalkzQT2ZMiF6R0f73qYMiFTEciXLoSMiKLBl5YVRDNXeV9wLCAyNhIWIkjjEBD85ozQlt5GR
nk40obgTH0D9klGduLYHDe31bAiQQgVhkBAF4Y4R1J5QEaCc0ldYYoEEfTIqaplHmWYyauOk5BBn
AfTOHDAR/yYE59W03j6w/QSIMRGMQy56MRLco0pBQIiAe0gznzDEpQrj55IQUHK8ccKi08aZ9oHP
dsf/+zqt0vlqOje7s5fCzn51n/cTILYMe0QKoBxS+VAcue9FCugHVjBNsf6T7wrtIMp7EGG8Q7RI
7x8pO7HOixXiVKvI076GKRnDwUNl4TDch1ipIFKBiNvUpyGjrZv1eYNN6vtg2Lzx/zDYswiCaT2e
EZgKgthjPLFjOvgAeA73IkaVz7GIYJxoA2gL6mDoSciC74nf5A9b1dF+aLHzIYkSRZMgBNKK4CR0
jD3NEu6FBCgYkEYc8KQNoCWlqX/CqDzQb7/c+d+OkptrfyglN6vpvihgQepmEwmfEDDa86MAvJEQ
IKERRTBURwgpmFg5420wR0R2YKkeWKx7s1qCqNvZbnSuKcl2ho5geiLQz6HpYeBTlEMrR772tCZA
U3wZh7760zP0Zq0NmPX4kaemQ6PSdT4th6uynE3Kb0Pf/u168xfbMHB93wK/NlfVKgk1gygTQKsS
YCWBD3M1RjEEOIPqoZ++BGgKP3J91djhtHEf9ryJxKhTi9MvRWOEJXWRU+rfvF1Ld9tGst7rl8ym
dfr9WPbT4zn2jRNlMtlSIOjoRLZyJdk3nl9/qwASRANNkUl0kkVEEVB3FVBd/X31aLtrznCdcgoo
JFNDtC909BfBAChRWjudFLhs415W4KdzDHZ+R6WA0bShQGcWbwP+crPtn/vu+eHxqRtzPoMWwuk9
lsrKM2l8JhodtEgIbDk2yAmgkVYyk9lFezdWMqfDVKdx1Oq2Sq2dWAfE4MtlnDTdPf3qH2/vnh+n
V6MHeIgLg6ZSZALay30EMBJgowwqgmq0yFxC4rByXnwti9FP6FHfNNeio92avMGXdqHFjzFWxD16
yXPGPAkFc5ISGKa0GvMSSmZNk5PykhcBw7ZFhguVmIC+12IiJN975vvNl89TmTKwcocodYjgFMui
By6UeMzwXMEZeozgSA7MHAhR8CfyFfMRa1Hc2pw7fitXGBT/fpasANKr8M2PH4Y16X0ILBInGBCc
LMFtU/DYigWakioxifAXkxYVXp3Lcwqtzu+5qhVULa3VKkHTPWxw4doBYw1x3kizB/ImogZ7CRzD
jwBcFGADlqlVpZxLzcCQp1AVXKrEVI0QCny5OwQef+nvPm0392Tz9HmK4QB+OViLSTxkkcDB0IKA
WgMWdDyTBGShuCTQxdT753rAWh7bMBYtxcFuv76/e5oCIwBX0CyYBKwMjwkwFPCqHCwJyaOVRCeE
5QHM5mVX3XX9PZDa5/6sUXztOxigfVst3VWtgG5ptUx5fR7L9K6fsJj66fmum5kdehO+9yaaBaD3
iRFTmMIwNTLJJDH/akMGpBCTuzBMjR9uGtMtaER9W61by9Po2yne+q8P+c0Rgw5p2VhkdAV4l2MM
vHhJlFjvGIlaFRdC8VK87MWHGqK337XF/WFfqzjkCI6z10K3Vqfh/cCDhuTrY989fvvt+WFC70Jc
i9HolTGuFE8J7EQAbjw8+WAATAOP4EAvOEvRnkjp1qNe1bM3nqMF0LgX6Wu6+VAbfioZUCsDORzY
AmBOMAPrOTxGloL2UkWR/i7Dn4SrdHK7Na6EL10jSz2EmDFE9u7h48dFCMKBX1GA4Ej2Dmu9wMuE
IikQF62AtAep/R8Le8/mORP0nt1ZabZz65gXcMFugdFaSWb/4w1SoQGpGTXEJay1JdPAiBUqwqaL
n7D+SVGtI1ATCvT0dZLZ87/58UTYAC5cVWqZfq0r6yaW+/S/93fPvThyKzuAzxADK8ZkwiVGNnIE
bsWSIsyji5IUfLao94ZqoEoELtdpqS23cmFI3yfMjGFIFP6PjkZiYA3WRbACDEdRTzzi+SA9tQV8
ZTLm1Z/r96l9y/epVsm2VNrwRT0XksSnA9/ERaGHxPCBwGIVBKcmkGgQLUigsrYgY0kp5hhddkPW
/QW0sHm8PYWDF4Ryor2neeV0S63qRrRUnTb1X/tvnz4+Tp52CGYbK5WVnKSMWc0IGD8kCluESEyC
l405qaaPnY9VC7HlDSF6cYiXHBIksPKf75+ONTwHqIN1RB5JOKdSAyfn6IS8IMk4I70CUxcvZger
gWvJ+jWl2GI1cQ2Q091QlA/v7wiS96Fz7gYRNc9RZBaIQjgkuOLE0VJI5NnBf5F77l8PIK/lOcWm
lvdV2gvd8KTCmsXSftN/7kc6trm/AX4JAODA2jl1YzIPdmWbEmOEqwJIkEpDvAoAMyRTQrggcr4o
ddCYq61a48ZaN7sOBG2V3h4M/677gmZxLFtTgl2rISzsvfERqLqkjGMVBeztGggPD0oHGajhZZHV
X4x1VU/Z8OCqW5VcZWAiFiRA1gU/zVASUYSTCtx2xOpWxyOxXHrAmoZHDR4+KPN6NuXziS0p1/p0
DX0054cdad6gCaBziFoHpwQtCesRwDaYAdCGXDKkyJRTlAG+qB/obJCreh7RmnwqioHn+enhc6zQ
I8B/zQ74MRsLLsNiVQTWGURYoQHPLsKyJCGR5Tl1qiRwMXItWAOJb/Vmc7C2+EO5+QIb7OTbhpSI
ht0ZSBwxIWHlOgXihH6XJU55MeAz1CIXXw9TS9Aoktzq7XKbfttVNX1mSGLijyFALgDXikC0AtIr
jNDE6RAI1ykq2AEovSyVPJ/jRMlW1y7o66lYk4OeHuty7//7aXOtphwDGhdgjGyNIt5E2K0oklEm
AclFbooJ8OUQLZw9xPkY1eS8W6cUer5TB+v64e2Ho7sw1l6La8xj0xIL1twSFzKYt8kSlmnRpCgb
E8tWG6nOLtM3j5vffjlJAyteNROjEl+q9crsgf1O4m+2d3g2woIRCti6rM6MeB0x6EFhnWJRamIR
3F4GZuXNKzHCWoJaeM1bwm8WkKzyaOUm47kvT0OCZSg1RGOePiO4l4DRksAVpjCq48CVS4Nw1Djp
RWFc5dfzoAd5Tty4v7pQ+7ahtplKm2+fPs1yOOg0vPA8Kx1hO8IUoIkGILUAcM2K4/AaPQ1hkcM5
jlHPbbrG3HYy9zflZ6z76LerOsM4JLKSJ0AzMPREwfYlWJDyyiafoighvVKdYS1DLb9dR3Z6Zewh
fvb7p3s+SwHqEah42FF5iZYkAZYuAFqSEAG156xgX8CkVFyknebjXNVzuYYAt8vM8w/9p4fn/qe7
/v+OjndETw5bCyJQaa4dI7Dy3FjMHwzsjh62I1UkuF4lLvG662lOrcjlfZVSWjesQptlDfI+Xtb/
/gwcCaP5EwM1h3qpANYQgFADszZY3wUM0PosiCxWUs6SSzK/hNrbU9TCGtEQdlXoO6ziofxnTyhh
LQ2+Qhm6L1AuyRdrwWsbBLHCBIAnRlkigb6q4rUywV8a56imeqFCf35bpZZplCX1G3rbKlrcPG9w
ZQ7agI3jgwcKYjJNlqisPKYwA4AcUI1ryqIJzuhynovgwC8EaOBqJfKGN/z3RogJmX36bUp5jNWq
wJcAyJI0eGYwDMCEgDU8IACvpE8iLjHhNEI9sZCNiVV/sNfFsTD/kJIfyne9ZsBwRSRAeLGs21kS
FKB9o4DJcO8T4J6mgdZjVuJsXWMT3nZLQom1nH333G+H2u+JVM3ibgneEuYLI7ceO9vAIThWCEAd
a22SOpSLOhGaE7Xfa/PWWrltY7kBZmts0v6n+M+EFd5moDR4PN21HJ66yIpxayLJziSsYdEkZAuo
rWhrOLxMa/TFNSw4ywtVLHi50qBnDYjX6yXj/efbiucPVeocl5ZzPnlg9wTT0GAyWIAD7gHrgZmI
iXN5ppDsz0S1jtK0bz1er3U1DSzdm371tpDZjAX5ciT1Q62Rgw1I5qzxcFKBNXOAELPEEjolBSzV
okS57D0dxj/1og7Xa+k3DR/Y38qDQ3k/LMCJaXI5bKXMcOx/EAKhrPUWMDlQZ2aLAMiS9YhLZk6l
GqWe/7b19Lbbw/y//9Y1UrgqWu6AvQFx4uDWjAQuEBQe8JqEjdHabGXTpUzDVULsVOMh7Cw7OLcP
nz8u0LwxQNRyoqRwAZuuZhp9vyJaFF4Cd4Dmwyuh+Wnyucg7KtcrDL9cxjum/MdQv4J/MPsKvxn6
moLT4KUJcCoMHIRE/LCbeZMLK0znIv9SluV4faFD39Bh1cfy84e4X3gHQDfsKl56JYBpsIKNAhJQ
upcAk6lkMjiVIlX8knVzHL0t+/F6LXuj4WFHNxMq9j+VoXznCOrtgOm5lCzJyEiyGMBLWPKUkiGO
yUyFZOCo+V+suqmsp5ajUoG5tdXvWNctHNcbPNK58limcI8BACljAXOBTSVYLUgBNxaEiyGdoSUw
4olg481NLeGu8ZDFqst6tZYQd4rRUsblCuDHZ00tyQxLAoMt2MDOSTJK+0hTAFDy55fr/mIlumh0
Pu/EsTrlzbvhr1acD8AQmC6ThEcjkaYI4gxAeg4whbFSjD7TwfcHestmEtSyN8pZdkND4gp/DEOM
PZ5jkAa25qK8BkeIVXEG/EmQwKKZyFRr5YDhvByk+f7L5vH5v6cLsBbIZFThJDIZLle66Ubl2e5W
LUvn3vfbu82s8m+wJYUZKUmHrmudE1aM6+Rg/5FYzZwl/sqzxkZQXl5uzZ2P3xZ/fkelwa01DQ22
U6qp+/Lb05GPSzqmKrP1CfZnR/TQc2CQCAM/JIpKqW3kSim9IAKzcSoBOroOCOw6t6ZN9w+PN98+
d+g93L4e3I0ehOHBEcDA4WllTFqCE9TZEwN7qFOuUOnyq8O7SZ5T5rK/XOva8pHd7ZL5vv9y/3z3
/PCl++VwisjMF3Etx/o+/Dmk2YSDbRXXyNDgVGCJR8UJ5djjWiQw4XTJzvXCpJUhLW+rFWy0qu+6
bqptiW/i+5tWOLYo5gQeAhIF4D+RDexhMTjCC0B4KSyWQr5mOLYSpFaha+wSW+xMqNzV+/fxBpey
GNq6zKhEdM5yiedvaOwslYm4PNT0iiJULi4ae9GrgLFPPH24clULJlvSduszKe77mx8+ILc7QB5t
C40KHnTG9jghYSsLBjPGWeCh5NokmS5um4exX2iah6sLqbctqXeLvpSnzecterQptWwxRIxPGsAx
EFFRSDQUuwKweg2jP1QVFZlT2or4UpSqGrkWTa8eqKMKa4lXu9XB3IYiA0qHB3u0aOlNSd5jSNAw
gl00xBrA9Fy5bLXj0ir3Fy16fsfVXF5NzVoJTZdw/mlo47p+PPZxzR0NWMpwgsnwE1FP4EnhM6ee
YrDNAerhAXsAsSQ3xcAYe43KiVVz2YU9aIsn0DeeAGeNYFy4/9I/Pzwgkz5GciwW7jrQDjAoLA5q
8Hwq5ggNIoHh8eiUOPv2ppFPv77pllr6dVxu+HJZkT9A8S+g/tPYXPBvPOJ80VmQlRBKOg50rMDu
yGBjDHgAjfQu5qxtUjaf7yzAkV9oK8DLCw1EQ4NuWc07e/YS1o0ednX4ucOwDdOAVRNsAoEW2Nmc
xRi7AgcFkAXQK81O0TPHT5x5A7Mbauk7u5beMNVwAgOwevsdZqxH65FGIyhRUgcq8JgYbZHSY6rO
F0+UTTIwDyaU5FkD2g9+2nz2N1TCm3UECb+ceozevC3L8IPyirNESYjYPcMSOC0AVCRRYDImBJF1
eaXwwzT5QuRNQ+TutmnvQ4wQP402Q/c2gw/dAlzOgmviikBbx24HhNQlFaUZ2Ezm5zOHI8E9HZ7E
y3PpmRCrdCB+2R3I+2P/6eFrv7u776uDjgDnK8wVER2zHYvXbSoJdgmwlqSzVSfqo5bj1cLYTUOY
nT55/gvq9J93/n8O0ACM51qMp3tQAa+fSbcvZeFYd6E0HqbAMm7AWcXzThDHPv008Wot/7oCFvD9
Mb8Z3vmbI80dSt+kA/7BIywwZ+GtcwtkJCfANYC3FFOKF83+prLeo3SVUqpna6UME0vcj6sZO8gf
H+5vhiMXp4otpq6ZHQpfDddcaeINdjwgWPaYV/bBc2qdYtFdFKdaT/UCb6zuu6p1kA3FtGg07nX3
qIzct67LsXUdoBWVBU9jSBzT4hxPgTSEuqIKBV4D5nc2PBFfaNuL72pxnVuLu+m6g2v81HcbmGMq
QtJ6KOmiOVmfVSbGKzxgymvsCsuEB6uAc9LMqpOalgNd1bNt1yLcUrWAvofOhgPvZhyhrxh6GShA
XKB62nB4ZhFLdGXMRGXGNTo4FuMFCdqGaLdrJg5fHptz37xbxZeEBY5dnMc2P6zjsZQ4PDWTRZ9p
tjGZM40JfyC+1JJ43TeKXy73jbff3Xx53G0w4uvGY6LceESUz4xFbK2VeF6YoMCdQ87wa7RMMGqc
cOwMwtiPfApf7C/XUkvRkFrayQo33S9TpNcOx8/Bq41gcomk7Bg+50KsRT/nks8R9g4RdPOlz8Za
yNBYCTuzbDT4ejfk8AuoMB4+Ifadt+JQVIIthXi+VgTjw+NVBNaKRxIVoEvHItDhi6rPDjOccMD7
q5UKu/WJfnhG4DLeP04NLmx39/HL43QAE5NjWTh8QDtOpSRTAGAmjg02eC4up45E6WlyrmggPi8f
NbGe5QRtWd94VStgGlpJvj7s72bksFM0XdjDuW0hFz802ARmHQBnhlVuPJFSABZlHowJ+kJmv5/k
JLffX69VaNg3Z0IfG5z4sr8JrJhiV1OOcjjCBKBoUhIXY4JVyGAnD6/W37QOQjqgW2vUxPn+RB+4
ucAOiP9w5NPz47dJdjGmxmOWLFnYulBa2B1UxC5VwNEAxGOkOoKj/vt6USpl12JXWot1lx18aZel
UIsiHDYsHKWpVGM5rDIsMCKlxZWTEXJrg3UPAnscneEXnQB3QfnNqdIblJm3FJnKxn/9ffo38arj
TSgtsEVJRQpyHrC7TDy2ygbjUgGbDcW0D7k4DriQo2/JMcW17jefP97NKvPGZJL00ntKODB1IIqG
YQ+CIr4UA7sTzcEtOkLno9TT963H0E+H4sU3P+O/tNqKvwYfYc+DvYXi4xCwhInVxhOjM7hx8H/y
Aub0h+KvlSgLNVpm2S+jg/Wp/f8AWHTI53vYeqgDI8wRT1TkCosgciAS8BHslZLJ8uKZX9XItWi7
hmsT47nr68Da07fPz7/0T3dPdVhNjEeqjR+GtsRoSrJohYFipX0kdqhoAg9kaAy2nOnR/zMOZAyf
3awlXMfYppuqRyHVmvVy6Zal6/7u8cP95ts+WbDiM94MxYBg7koACQbMSCwDkI0VIcrA2oz2os7c
epoT21V1T62MUw1lZh17+22QNWLRWuMrwyPwKMbRsZM6aBqJ4iZrnQr1ywW8GK2WZH1cAn65PPrw
PfiAx4evVfWZFlxTLhOeg4uHHSpHnNRAEKNnmbIQwZgu4ob7sU8wwv3VhdS2IfVOzPpLNrd3x11/
PNTQc+4pIFmDp4FTPIcTT1f3kRZuqQ02uFWDyTRKNb2ia37N1Yb2fJ0FwQbn6qlpblJKjniL8VEH
DyxwPJlPe+68B/Tk/MVpkKF7+nQeBC9XgmvR8Cda8RP9vnO5hfbelaQI1+A6BIP3HoQG9FQ8vHSb
rA7pj/T4vtzXW0utWlLrVQFvQXaX7h6H802+DXn9oWaI2fH8Y0sVvv8EMIkIhXVfQjoCYDcpmxi3
gZ7ljtPo5xO25YL7FzfVWuttS+vTNVLXY7BoIE34d/tfxVgmFdz/F3dtzW3jSvpdv0IvpyqpWnoB
4p6qPAAEmPFxPEklTmb3ySVLdKKKLWUteebMv99uUBeChC5nxzWrB9siYaCbBNAXdH9dYkwo6Lye
gbIIOnOha5h3MghZeyorUf8tXqv2XsrpXe797qP4/HzybbFEZIPrZrXC6iRVrG65F8URESgEHTiT
sB2hcsUrURgDe5JwCE/oBVF1L+fheL89EjMbttx7ct7PF83kyT58azr+nI2/MChdVQ5sVmswOx4z
MnSoYOJJ76gIUlVM/U3+wgyZKZvT3Jyb9RNstiCz7vn+Hp2GNOa46otWHWK8NMER9IoTjI9AbClj
XQHKrQbjCiSw0edGJe9HORyOvG+T8jK7y/Gyi82svl5//vjw/G2+6BVl2Xmbal26Wle8oKUHVTlY
D3qdD4VgDISGtsFx+zLepgO0pPw0ZMiPwnjDuxzEZRc8q4WdEoKW0YnGOScUVH74CYIQ2MCaEFVR
wfoRgkvPTH0WzuWpUL5hu1FKu8gxdNfTu9dPk306mir3WVtgtTBCC4cQeYwo2M6JM0Ud6tpLNLOo
PaZ0d7rtUTXNUdVHEn1YwstabbXMvZj01npFQJu2FEOMtQDxDpZV4QP1tpYSH/05kz/2f3K5d6k4
sOg7Lbp8skwILlw0fVTbn0/zRadrWPrwvfXNbUojcEHjC/HBgA6meEE0JoZqS7EajAQryIMAD1xw
L17crNiRc2h72NxOWb/PsE4HPvGfD5P1/fJpV0dKRnc4D4wTZQqvMO/bS9jmMBaTUy1LbkVFODlq
6yWdJmTRjJrD6CYZff9Grpqnu+ZpuUI5v511SkkSSFUWoOLiwQYxoFRaCUqlKb0hpAruuHDfdpp/
jNu7KbnDnHW4qPreHIxZ37xOUOVByD6ChE3wa42wFGQ2QmlRrM/F0BehC+qVD8y72tLyxHbU6/3Q
btRrlnATIyD63EjF7qfJw/99EzKqWzjCi7a2mAvKMQpGpHcFQ6XYoWungk4tKxXXlXgx+X4kZPT3
frwoMsAzXE14b6Y/7qsWaNmCaQRaWscFhoiCjMBKETC1ZFGDvWdqTEL08tg0z81vORnu9+h93upQ
N5d1P1KAw4vRGjOA0GJiquSF5hjZFFRVhlqawPQLOWr3oydEK5ohWhPT9dR+nDytmqfET4vzQlY1
Z9ziGWMFEoordPfDVgG8CaKDt0T4/0dHbZfqLsucZpwTnN6RTP2f5utHW3cR0HhM5Iq/0eYo8cS2
RucAJrpIDzLayFCESnGslWXYedlB26GOmLpwN2Xibmii83KAed6LS5jX8+22Cntx9NlS0LxMRX0R
XAlTEJMANatZgUY8Imwbb8+2e7H/I7EJcDfhgTeZFyFIs0XE+dfqYd2B0WBtABbFsxdDsbYhElyD
rDJKSBBYwRksvQgKUi93udNPQoBoVIaARp+jI0T9IPreYu0OhmcUQdWF0paALi0UmJ8cvVYkqFB7
djLd9Lxovo8pLQNlIOFP0fshf2pwpAcTDEMSJmA8PWWOv0prYS/iBqOAsFoG6DzaEV2A1Qe7FJYy
q9mZs3w3zMGZvmuRMjLMg4OL94MCJpiz6ZdtCGmc5OUmicrqsqSlwV3eImCAhL3KwX5fVULZCsxn
7s/y5e1GOFLECG8n1OtyqElwPQBn/948/Iwh0K3aGY+DLaiVtOZgu9QItCgqmFWYAGul8Ag8R0j9
ErPqFxj6QFol3EmZGSK440W1Lxr4x3wx68BXxSx4WAOCwsJwmEjArOCgVWKNUo/p5ppZeUDcdnvr
kaEzZIhdhv4gJ1+0MVjMOUINDE0NYidKDCgGyV9Q7oQsKRg0fcDtw6n3OCDLUdFPdD7qtyvLuuYK
VEPCQH4wTR1QpFlROqK8NKRSSv1Vv91BLxzXw1oweLHPQYXFmD81aGU1T7vDhy0jkrVgd7wUBh4o
sbRCvD10UMFX0A8dbIMWtPbzJElmrAPLLdMy5W5CMtzdTXs4Do+Th4flPpN1B7TpvdWm1A62CYTJ
KBEmw2Mmeh0sMbp02hw1hrr9pnQ1mdlrSB9778vd/H+eYzmPTWJERNDH4EvEYgCqMD/HgcqlJawt
RWsCRpsCLfKsvWzb+4H6Vpu7o5TEzHyPZ1TJToY4YMD49oCbo9KtImgghVXYAk6WwjGgPBA8pQ1Y
dSKgiWEY58zI0ufK3vTUjffLU+gS2xYpEzqjdhitepMCmVht1dLN1MC4fU6dAqmhEegFSKcV4iNL
TJ0ANhhxxDB9Cocv7bdHXW5q6EnPpJkmoTFbC97EHOwWAL82INNC4UEnxxRoAZKDoJ9GlgrMGwSf
PE7loP+UTJNRnaamn576y+UuTQ9rKMRiQULHKEBHqdY++EIETOgAa6wwqDZJVWteUSpDFV5Etl0e
zeTb3R6lnMwy7E3622I0v6rJz/UzOozaNLo2iU7VDkS054WIyPeiAstOllWhbAk8G0M9fRHJ3aXg
SP7rpkXK411mc5zR/mL+3GC9vqs2E6JVDuNvXMVEa+Y8LSpM7WDKcAzzCgVXcfZ5bax5OWSpHSGH
/B+b2wmTmYLKcJGrbQzHdPnzz24oOWaCt7ULSCW1ZxibGqO1AyYCGmph19VlxUrrNJMHUPK6XabU
8Mzink3lkaq5Fx8+dzHpSYwWir8jQApVovLoDQPTgwkwiDSYc4UEUxSVCKHLF4T22lNyQMv4nIHg
QP5UjumdH3w6mX5v9lsYbrEiGLA5sKAzrBsmXQwGYwWpeICNgXLr86H8na4SEhqRsZab5n6QV7ye
zFosIXLRVtAyVF3EsjEEBgc9BuxkhSGNkoLU5YiPyQyoAohL6f3LPeotJYeiyNu7CY/3uZl+L1VP
cMwX97tgWL7H7CgDlRXms6NHr2BGYMIop6AXM0zUUsbSo/Ji321KlB4eUolyUCa6Tg5zTFsdj0cH
WQgSUdVMjcJWwF5juaYFGKShVNq4UhxP+zl+hlP9Z/7sBkgc7v+CTe73wKnLxe+dPO7WTibSkzLW
kpSgyEvY8tG7CPTXAkw1V8mqD5na6SUZn5PM+JzKPgDZcj2/70RQYhhxC9BPuYKtpqjBWsMYGluA
0lMVzvqagY0j6tIcDWrv9JvQJTLuQhHz0BKxv8cJ2AGbwIq5oCYm0GGoNFDkK0bQf4NnSQQWd6zd
JSvT5rr/30EI9vdHKZXTDOn3g9iQ78+LH/PFt83AUW+JqitrEUKMh23AiILDFMRTeFnoNi/KyVo5
R4M6K8CqN8wBFTZtlLKTCZ2Dx9fPq/6lLXeRYoRoT6VUVV14LhAZnSBOsQ4F1qrH+lfWiLMqqG06
P+Q5iDdHKX1lhuh9tQ/QjJcPv1+YnSkWDWTpmA4SFr1B2wvrZGpMT2IOxISOpT97gU1pNwkFmg+V
Hri4RzSaPHXwlGK1WFWBGe5AizMKtRw88tQWjMISllJNSxNkUD2H476T3uBNZnCRzVvCQ5PVCvaI
h40BGA1tGiWRhVfmJBhLYF0zrQKIf8S4gMXtvFBlWcvT8BZJ/0eSlZJ2KTeCZ7jRLIc7uJF7lwsw
1Bc4HcuSgoRtwcPjXzGEh3mulAChY6oNFB3DcumVIFh1lgtRnQ0/2BvxCAJhr2XC4ySTkCUmnGYU
tq/zWbPEF4WVdCgX7TmT9o4oUBOcQbFaSvRAYrIRk7AFwzoE/eKk1hB7PsxAvJ1SzTPLbCL6VGOt
Swsc/7maR4+p2ij3Km4SngYMueRFJTAVRZSIYw5qQdDwOkrQEkyuDupfPN7pknS4QOe2Rcq0yDB9
N9gQZ83qx3r5c9WBtjPRuRJ/Y1RMAB2T8bIQDpVPZRXs8KBTe8QiDVQ5U5nzKvLGgbasY4NDhXkH
DUcpD1nGBoIrGozAj4iJOHHrNK4WVKqyoBJLYNQekfrgbdaVAAUbkY1P1XI6YoW293qkZoRSI0Uv
hudds+xCC8ZZR5TC+CodId9drR3nhY9pZJyBql0B/dJLawnhVcnYeTD6y+MTr9NglFIsc2zsDkVh
Z+94uBlocDw6cnnNsBicDExs6o0YDD4nBvazwDkP+TD5fXc9KiY5KqYD+3xaLWfNb0/wNXt+A2on
LWVNCukw7x+kJdDlVAHSzMMOpELgZ51SpgMdDInqtEnYuc9kx8DF/mHbNr7r+3zrUMEwqhaZxzNt
KKIRGdhLAwYVI6YND7AZUVeVlXoRh9E2rOuXy+NhX79c9vgzGf4akhEVUbBmgKuqytagp9cgzzGF
vWauMD6YAhYEl4YTFnx9HsjBCYiDlPBmaKNJMukjRt1Npj+ef6YFweTmOFzG43AtGfwjnhEyPOXB
MiWmVqQghlnmJSfKn1Vk0PVG6rLQ3hulpA4Ve0lZ/8F/bJ4wMAmh17tCbxumQ0DnlViQwVdoMmkP
C9cwMIAl4dQRrk11VuJVZpgDx7XDhqOUA5phS5c5KKKv3SgFBJhhdIM0E09mqKqYwIQQhTAUTMH2
ZCnY+kFz0B6DJ1Lq8+MUjoYp2JQHwzI8mH4I5GyxWs32Or/EfDLcuUyohK1NWXiC+ezoyTYlKL4e
WEAsUSmqo672Tr8JWSwTAQJScpbRXLOeCdbKKSwgDPRo3JBAQ+IUNCRQiwosX6m4BxFrT4NsnQoy
TdskbKjcDFEDUJj54keyalsYorYasw6khOdBCgzOw5kBMovDuqUM5FpNgrInYrvOdVN3aUi804sf
CU/6figl5B1GNd8d9JC2NGy8DZToTS1j0mJ6aiOY0CQUSoP2yphDS0nywmjgXOM8svrlHHd7Wo4p
TX3nBHA4tAzljPQrNuPZ0fN865NgGw5NIMFU0hZSY5QA4pdazHozsiyl54SeiTyGVH25PDwNvyQC
T84ytpGciV25l8nzvv4M1UioBfsHnXYFEISRJEAynikWpeBKKqdtm6PRsaT3faRDDyHvjSKzfhBz
tIwO40S6ADuK0wwLJ9aw5TswpFHdF4EY6Xip/YmYnW7/+cfWbdHloA2763NABR9oC4gL/XGyaB5a
FO44t02M3ofdsdK2LjyGM8B6BdOydliNljLU77SxL7J0uyQcA69uW6RMZvJ3FdUDXLpmOkc8rN1c
wb1VU289qELSSQTe5rqAP0AfosrWyhjr7NHw96TPlCiTe/KmHx2NNVBX+4IOMSYAZZK0JtReO1AM
HGL2I2wbA+osq4ymIGVrxY4Stu83JWtqMmRN9+kcaOlfp4lBqi27VhIaaunrQhBEpa1At7cMbXaj
q9oIBcuOv1Aex4CIHg+Z9y1mu0Iu7+1HW1310odAvhNqgyocAXWLSe+wFgkIVUWDMWChqurvghvq
0tdlTIvJUEXW6m4AqlpvStViIge5EBcY9LD5C7c/rrzyoMkIg2DyBsvO+hL2G6tC6Sk1Xp/AMNv2
fyjbbnM7oV1ljt+0HthdcYNfz9tthrYCtE130kRXDsxa6mvMeyhpoa0NhQClknheC8rd2dIFBzgi
YPD2aBT+tfESXi9n8/stUMLn58dH6PkNMFdNHoDOx8msGd/9OV6uv4Pd+/NpiY7KZjVeT56+NbFa
5fo76PibG2/iQ1lPVj9uQe2+/TmfvRnT9lrMTr+dws9182ZMuhdXzTqu2M31dOBT3ZO/1j186XAF
TyCOhwg080WTG68sNTH/3pijr9djRLToPt9P0OrD4uHPMYZT4Z3l/Xi3C7wZ3yzXk4e3YHFfqOvx
U7MCCbdYv6WqvCDXryT7x+vx6g+0/me3y+f1LdD2vIhhUDDi7K0xF/r6FVP/eD36DWzoyd1DA33g
+LueQci9G/8BN9fN4i2Fb9evKHS6H4lfmPZSZ5y35OoVgUvdsbCjV8bAUOPRp/Du8sOv45v//hjG
Bz5fLz/dfLHvR2/3n0NNN7dH1bsxWsU41VZrDOvJNaZayStsOo+pFcc+u6arWO6p/Y/VgbbY1G9q
sMA6XsCMf44rpf8PXMObGf3z8/iflzfjb23FSOh8upz1qaHlkaav2rClZvYam2ojoen2H7e3xjCd
JrMZfF2NgTJEiOq8kdejK1jXzcPY4pXxB7B8DzwIfTW6tu/ff6jGx58XKMDsetv01WT2OF+8Ptia
lVejzzewwY/ffbGf/OFuBbI2+ryGVzs+8cFcymtYRLeRBHsTjjRV2PS35g5Daa7jQzk8D5CA21tv
b+wpAgw+gdvby2v7LpxoK0p4rre37y9/vQoeXvCR5yph2UHTm/BfNyfGl+JCYNMvv15WH/xxEoSA
V/AYF+0YI2QOt8QioNejzTJ4bB4xbvbwh1/9O6v25sONfT8++WYv5Lu26X+MYVo9r5JJ3k7u+FGS
44sdj0b/C1BLAwQKAAAAAAA2gDFJAAAAAAAAAAAAAAAADAAcAGNvbXBvc2l0aW5nL1VUCQADV8vd
V4PL3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAHIAxSTjPzGmRAAAA+gAAAEwAHABjb21wb3Np
dGluZy9hbmNlc3Rvci1jb21wb3NpdGluZy1sYXllci1pcy1vbi1zdWJwaXhlbC1wb3NpdGlvbi1j
cmFzaC1sb2cudHh0VVQJAAMny91XJ8vdV3V4CwABBPUBAAAEUAAAALXOsQ6CMBCA4d2nuI2ptoVA
DLM4EU0anYwhpT2hCXLkWmJ4e3kJ13/5/saYm6nhYsOEHhIBo/WQyUdEjrJfw+R7SrINPVveZEtD
lOdgh5liCs7gQpz2sn4Wg7NHvjNilytdCXUShRK6LIu86vAbtdJHxzaOWQ3PhnkmyF9wJYirG+G9
+0AMPjC6RLzVf544/ABQSwMECgAAAAAANoAxSQAAAAAAAAAAAAAAABYAHABjb21wb3NpdGluZy9h
bmltYXRpb24vVVQJAANXy91Xg8vdV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAqgDFJn7yN8pAA
AAD6AAAARQAcAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRlZC1jb21wb3NpdGVkLWluc2lk
ZS1oaWRkZW4tY3Jhc2gtbG9nLnR4dFVUCQADP8vdVz/L3Vd1eAsAAQT1AQAABFAAAAC1zrEOgjAQ
gOHdp7iNCctVYyKzOBFNGp2MIaU9oAly5FpieHt5Cdd/+f7KmLsp4WrDSB4Sg5D1kKlnJImqXcLo
W06qDq1YWVXNfVSXYPuJYwrO0MyStrJ8ZkOTJ3kIUaMLPOXFOUedI+JRHxr6Rixw78TGISvhVYlM
DPoNN4a4uAG6zQcW8EHIJZa1/PPE7gdQSwMEFAACAAgATYAxSW1MoXCwNwAA7rcAADUAHABjb21w
b3NpdGluZy9hbmltYXRpb24vYW5pbWF0aW9uLWJhY2tpbmctY3Jhc2gtbG9nLnR4dFVUCQADgcvd
V1fL3Vd1eAsAAQT1AQAABFAAAADkW1tz28aSfl78CjydkuMMNfeLyuvU4JajE1l2mZKTqlSKhRsl
rimCAUlbOr9+e0CKBkBQlpJ9OFWrpCyaM+j+uqcvXw+SD3WVl6vVmd/9iTZ3y4/loijrq7os/d+1
Fhj/4X1I17f9rfBz+qmab+7K1emn9xfX7+LTH067z3vnRblYz6azsj47rsX7VNarWbXoK/jpp5+8
sCpK/+phWXYXf9MSSe6fXKbr2ZfyFeCrQZH/oWfUh4f1bbVwVnAu//A+lqtltVjNsnlH3OrW/50K
84d3vSpr/zzq4xCYeF6UrsvTq9ldDwjFRCJsEFE+kWeYnBEzoor4CCuMvfdjf8i2d2nuw9JvPsEj
+Ff4J4QnxGDzCiAuq3p98BQhnl1Ui4e7arPyr69bGIPIkjDAFhQyjDgjCiU6xiiKpU1CzIUV1vM8
h9y3X9PPpT+eLfLSD6pqfeYLhjH2V2VeLYqV54V1urotC//qti7TYq8Dw4nNVst0nd/6f27KDfgg
r+5G6XI5L0d36WyB1s0Dnhff5+VyDci7Zxb/Fk4CG01sGMbjsX8yPv95HP/86VVrvzvo/cH9En+8
nJxffrIX5/BQFH10T6VrH9/j3Y9iissCC8/79M7/WN6AiJV/WaY17HlcO/MQeut7TuBkchX/dnUQ
vzthBBdTOoUPqPWFdh/8332fUf7LH36N7k/rr/f++N1/h+9/HQh98HHjBPDWzo1nZ890G/i3tfKv
9Es6zuvZch1WdbkF+l97ywkujdJlyv1/jcOzs3dp/bks7Hxe5em6qs/OprNFEcDfPl9V469luTx5
5b/2uUdepkKagiuzVXG+yOvyDtIrnTcSIZfPVu7DZXm/blQ1OoTy6IuVsFIfV1JUv1b1VjjHHnup
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
AABQSwMEFAACAAgANYAxSYV8Eq2QAAAA+gAAAEcAHABjb21wb3NpdGluZy9iYWNrZmFjZS12aXNp
YmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UtY3Jhc2gtbG9nLnR4dFVUCQADVsvdV1bL
3Vd1eAsAAQT1AQAABFAAAAC1zrEOgjAQgOHdp7jNCdsSMJFZnIgmjU7GkNKe0AQ5cldieHt5Cdd/
+f7a2put4OLiiAESAaMLsFcPQRbVLXEMHSXVxI4dr6qhXtQ5un4iSdFbnInTVpbPbHEKyHdGbHNt
jpk+ZabIdFkWRdniV4w2B89Ohn0Fz5p5IshfcCWQxQ/w3nwghhAZfSJeqz9P7H5QSwMECgAAAAAA
NYAxSQAAAAAAAAAAAAAAAB0AHABjb21wb3NpdGluZy9iYWNrZ3JvdW5kLWNvbG9yL1VUCQADVsvd
V4PL3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAG4AxSTFLr5eQAAAA+gAAAEEAHABjb21wb3Np
dGluZy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3ItYWxwaGEtY3Jhc2gtbG9nLnR4
dFVUCQADJsvdVybL3Vd1eAsAAQT1AQAABFAAAAC1zrEOgjAQgOHdp7iNCVuaqIRZnIgmjU7GkNKe
0AQ5cldieHt5Cdd/+f7a2put4OLiiAESAaMLkKmHIIvqljiGjpJqYseOV9VQL+ocXT+RpOgtzsRp
K8tntjgF5DsjtkYXx1yXuTnk+qRLbVr8SqGLvWcnQ1bBs2aeCMwLrgSy+AHemw/EECKjT8Rr9eeJ
3Q9QSwMEFAACAAgATYAxSfrjham2NwAAGLgAAEoAHABjb21wb3NpdGluZy9iYWNrZ3JvdW5kLWNv
bG9yL2JhY2tncm91bmQtY29sb3ItY2hhbmdlLXRvLXRleHQtY3Jhc2gtbG9nLnR4dFVUCQADgcvd
V1bL3Vd1eAsAAQT1AQAABFAAAADkW1tz28aSfl78CjydkuOAmvtF5XVqcMvRiSy7TMlJVSrFwmUo
cU0RDEja1vn12wNSFACCspTsw6la2iXRnEH31z19+XqYfKirwq5WZ373FW/ulh/torT1VW2t/7tS
TKk/vA/Z+ra/FV6nn6r55s6uTj+9v7h+l5z+cNp93jsv7WI9m85sfXZci/fJ1qtZtegr+Omnn7yo
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
WjvhV6+4/tvr0a/gQ09vHxqYA9ffzQxK7t34D3i4bhZvYQ+qq1cUJt2vxLcfddZ5Sy5fEfiouxZO
9MpaWGo8+hzeXXz8ZXz9j09hfODn28Xn66/uw+jt/ufQ0M3jUfVujF4xbrXVGtN6coOp0eoSh85j
acWxn93QVWz31P6P1YGxONRverDAOV7Ajn+OJ6X/H4SZkKtRx5E5+iMuR3//Mv77xfX4t7a5JNBx
t5z1Cacszpof+qrNcGpmr3GosQqGbv/j9tEYdt50NoNfV2NgAsGkOl/e69EliIDmYezwk/FHcJIP
0GsuR1fuw4eP1XG2MK+DX22HvprOfs4Xrw+O5uxy9OUadMH43Vf32R+eViJroy9r2AXjEz9xK8N5
u4kkuOtwZKie0KvRr80tZt1cxZdyeMsgATc33l27UwTg2YOhF1fuXTgxVjJ4rzc3Hy5+uQwevuAj
XKkJw1mvw/9cn1hfyYnEoV9/uag++uMkSAlfwc94vseYTHN4pDb4Xjcn5mfzE1Nsj27vf+OAX3+8
dh/GJ7/ZiXrXDv2vMWyr51WyydvN3ZKqycRcgTga/QtQSwMECgAAAAAANYAxSQAAAAAAAAAAAAAA
ABQAHABjb21wb3NpdGluZy9iYWNraW5nL1VUCQADVsvdV4PL3Vd1eAsAAQT1AQAABFAAAABQSwME
FAACAAgANYAxSYV8Eq2QAAAA+gAAADoAHABjb21wb3NpdGluZy9iYWNraW5nL2JhY2tmYWNlLXZp
c2liaWxpdHktZmxpcC1jcmFzaC1sb2cudHh0VVQJAANWy91XVsvdV3V4CwABBPUBAAAEUAAAALXO
sQ6CMBCA4d2nuM0J2xIwkVmciCaNTsaQ0p7QBDlyV2J4e3kJ13/5/tram63g4uKIARIBowuwVw9B
FtUtcQwdJdXEjh2vqqFe1Dm6fiJJ0VucidNWls9scQrId0Zsc22OmT5lpsh0WRZF2eJXjDYHz06G
fQXPmnkiyF9wJZDFD/DefCCGEBl9Il6rP0/sflBLAwQUAAIACAA1gDFJhXwSrZAAAAD6AAAAJgAc
AGNvbXBvc2l0aW5nL2NoZWNrZXJib2FyZC1jcmFzaC1sb2cudHh0VVQJAANWy91XVsvdV3V4CwAB
BPUBAAAEUAAAALXOsQ6CMBCA4d2nuM0J2xIwkVmciCaNTsaQ0p7QBDlyV2J4e3kJ13/5/tram63g
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
Y0zTOTzSECRgcxZ/Nj8xeffowfkLouPm4437MD65Zy7Uu3bof4xhwz6vkt3Q7oL4A74tfgXj0ejf
UEsDBAoAAAAAACaAMUkAAAAAAAAAAAAAAAAUABwAY29tcG9zaXRpbmcvY29sdW1ucy9VVAkAAzfL
3VeDy91XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIABiAMUl4gnhJkAAAAPoAAAA8ABwAY29tcG9z
aXRpbmcvY29sdW1ucy9jb21wb3NpdGVkLWluLXBhZ2luYXRlZC1ybC1jcmFzaC1sb2cudHh0VVQJ
AAMgy91XIMvdV3V4CwABBPUBAAAEUAAAALXOsQ6CMBCA4d2nuI0JSysxhlmciCaNTsaQ0p7QBDly
V2J4e3kJ13/5/tram63g4uKIARIBowuQqYcgi+qWOIaOkmpix45X1VAv6hxdP5Gk6C3OxGkry2e2
OAXkOyO2ptDHvDjlpsy1NqU+tPgVXei9ZydDVsGzZp4IzAuuBLL4Ad6bD8QQIqNPxGv154ndD1BL
AwQUAAIACABMgDFJ/K59fzU4AAB7uQAAQQAcAGNvbXBvc2l0aW5nL2NvbHVtbnMvaGl0dGVzdC1j
b21wb3NpdGVkLWluLXBhZ2luYXRlZC1jcmFzaC1sb2cudHh0VVQJAAOAy91XN8vdV3V4CwABBPUB
AAAEUAAAAORbW2/bxrZ+PvwVfNpwmlKe+8XICTC8dXvXcYLITgsUhUCRI5snsqhSUhLvX3/WUJeQ
FOXa7XnYwDGKWOEM1/rWmnX51ij9UFe5Xa0u/O5PvHlYfrSLwtY3tbX+b0oxxX73PmTr+/5W+Dn/
VM03D3Z1/un91e275PyH8+773mVhF+tyVtr64rQW75OtV2W16CtAXlQV1r95XNru0q9KBIL5Z9fZ
uvxiXwG6GtT4H3omfXhc31eLxgZBfvc+2tWyWqzK6bwjbnXv/0a4/t27Xdnav4z7KDjCnhdna3t+
Uz70gBCERYB0gKWPxQVCF0yNOFF+gCRC3vuxP2TZuyz3YelXH6MR/Mf9M8xSrJF+BRCXVb0+egtj
zyyqxeNDtVn5t7ctjGFscBQiAwopChjFMkhVgoI4ESaNEOOGG8/zHHLffM0+W39cLnLrh1W1vvA5
RQj5K5tXi2LleVGdre5t4d/c1zYrDjoQnFe5Wmbr/N7/Y2M34IO8ehhly+Xcjh6ychGsmxc8L/mW
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
ONRverDAOV7Ajn+OJ6X/B8JckOtRx5E5+iOuRv/8Mv7n5c34t7a5JNAxXc76hFMWZ80PfdVmODWz
1zjUWAVDt3+4fTSGnTeZzeDX1RiYQDCpzpf3enQFIqB5GDv8ZPwRnOQD9Jqr0bX78OFjdZwtSgXs
z+3QV5PZz/ni9cHRnF2NvtyALhi/++o++8PTSmRt9GUNu2B84gfEqdoOTV9QZlpGrv7qC/t2fRuZ
czfhCBH6gl6Pfm3uMJ/nOv714c2IrN3eenfjTrFm8d3e3l5eu3fhxFjJ4Bu7vf1w+ctV8LB1jrwv
BWcfht6E/7o5sb6SIBNg6NdfLquP/jgJUsKX+zNKjjGm6RweiZ1Ir0ebs/iz+YnJu0cPzl8QHTcf
b9yH8ck9c6HetUP/Ywwb9nmV7IZ2F8QfrSzurvFo9G9QSwMECgAAAAAAHIAxSQAAAAAAAAAAAAAA
ABQAHABjb21wb3NpdGluZy9maWx0ZXJzL1VUCQADJ8vdV4PL3Vd1eAsAAQT1AQAABFAAAABQSwME
FAACAAgAHIAxSTFLr5eQAAAA+gAAAFEAHABjb21wb3NpdGluZy9maWx0ZXJzL29wYWNpdHktY2hh
bmdlLW9uLWZpbHRlcmVkLXBhaW50cy1pbnRvLWFuY2VzdG9yLWNyYXNoLWxvZy50eHRVVAkAAyfL
3Vcny91XdXgLAAEE9QEAAARQAAAAtc6xDoIwEIDh3ae4jQlbmqiEWZyIJo1OxpDSntAEOXJXYnh7
eQnXf/n+2tqbreDi4ogBEgGjC5CphyCL6pY4ho6SamLHjlfVUC/qHF0/kaToLc7EaSvLZ7Y4BeQ7
I7ZGF8dcl7k55PqkS21a/Eqhi71nJ0NWwbNmngjMC64EsvgB3psPxBAio0/Ea/Xnid0PUEsDBAoA
AAAAABiAMUkAAAAAAAAAAAAAAAAbABwAY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vVVQJAAMg
y91Xg8vdV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAYgDFJeIJ4SZAAAAD6AAAASAAcAGNvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL2FuaW1hdGlvbi1vdmVybGFwLXdpdGgtY2hpbGRyZW4tY3Jh
c2gtbG9nLnR4dFVUCQADIMvdVyDL3Vd1eAsAAQT1AQAABFAAAAC1zrEOgjAQgOHdp7iNCUsrMYZZ
nIgmjU7GkNKe0AQ5cldieHt5Cdd/+f7a2put4OLiiAESAaMLkKmHIIvqljiGjpJqYseOV9VQL+oc
XT+RpOgtzsRpK8tntjgF5DsjtqbQx7w45abMtTalPrT4FV3ovWcnQ1bBs2aeCMwLrgSy+AHemw/E
ECKjT8Rr9eeJ3Q9QSwMECgAAAAAANoAxSQAAAAAAAAAAAAAAABIAHABjb21wb3NpdGluZy9tYXNr
cy9VVAkAA1fL3VeDy91XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIACqAMUn1LCCYkQAAAPoAAAAx
ABwAY29tcG9zaXRpbmcvbWFza3MvYmVjb21lLXRpbGVkLW1hc2stY3Jhc2gtbG9nLnR4dFVUCQAD
P8vdVz/L3Vd1eAsAAQT1AQAABFAAAAC1zr8OgjAQgPHdp7iNCdvin0RmcSKaNDoZQ0p7QhPkyF2J
4e3lJVy/5fdV1t5sCRcXBwyQCBhdgEw9BFlUO8chtJRUHVt2vKiaOlHn6LqRJEVvcSJOa5k/k8Ux
IN8ZsSm0Oeb6lOsiNztjDvsGv2K02Xp20mclPCvmkaB4wZVAZt/De/WBGEJk9Il4Kf88sfkBUEsD
BBQAAgAIAEyAMUlr93QsvTcAABi4AAAwABwAY29tcG9zaXRpbmcvbWFza3MvY2Vhc2UtdGlsZWQt
bWFzay1jcmFzaC1sb2cudHh0VVQJAAOAy91XV8vdV3V4CwABBPUBAAAEUAAAAORbW3PbxpJ+XvwK
PJ2S44Ca+0XlTWpwy9GJLLtMyUlVKsXCZShxTREMSNrW+fXbA14MgKAiJftwqlZJWTRn0P11T1++
HiTv66qwq9WF3/2JNw/LD3ZR2vqmttb/TSmO8O/e+2x9398KP+cfq/nmwa7OP767un2bnH933n3e
uyztYj2bzmx9cVqL99HWq1m16Cv48ccfvagqrX/zuLTdxV+VCATzz66z9eyzfQX4alDkv+8Z9f5x
fV8tnBVMit+9D3a1rBarWT7viFvd+78Rrn/3ble29i/jPg7wgOfF2dqe38weekAIwiJAOsDSx+IC
4QusR5QRP0ASIe/d2B+y7W1W+LD0q4/RCP7l/hlmKdZIvwKIy6peHz2FsWcW1eLxodqs/NvbFsYw
NjgKkQGFFAWMYhmkKkFBnAiTRohxw43neQ65b75kn6w/ni0K64dVtb7wOUUI+StbVIty5XlRna3u
benf3Nc2Kw86EJzYbLXM1sW9/8fGbsAHRfUwypbLuR09ZLNFsG4e8Lzka2GXa0DePbPk12gSmnhi
oigZj/2z8eVP4+Snj69a+91BHw7u5+TD9eTy+qO5uoSH4viDeypb++gr2v1IKpkoEfe8j2/9D/YO
RKz8a5vVsGe/duEFwQ++5wROJjfJrzdH8bsThhFWIocPQeuLvHCu+c33KWE//+7Xwdfz+stXf/z2
v6N3vwyEPvi4cQJ4a+fGi4tnug3821r5V/Y5Gxf1bLmOqtpugf7XwXKMCMmJzZj/r3F0cfE2qz/Z
0sznVZGtq/riYjpblCH87dNNNf5i7fLslf/aZx5+kQo8LSWTeqviclHU9gHSK5s3EiGXL1buw7X9
um5UNTq49MiLlVCrTispq1+qeiucIY++VDjXiG6F/9NmS5cAIHPtfsWzMp3V9mwyidIPm8VVVW2X
v/ve/1zNyu+cRiy1xzoqnaK02izKrAnYtko5nU61YKwglvmN1Nvrq3fv3k8ux5PIXF1dXv80eXd7
M7l5NzGTm8u3yYfm69BEP0/S2+vo5vLd9WQCWgny+EuV5lNJ/ZYpcdUY42xAXHvihfLyKaflgLwV
CKRQCeUL5SEpkGrLg1+NpYR56qWyRF4qvy1pvLQF9JfCSdTC09u24Z/+6QSJkoXVHDIWIowSBM6U
EMYYvVQI5bolBCuFPYxfKKTMCtoSIpXkHoaMms/y8nFejuCPWX5KSOMfboXmhfZX6wxaCBz/oSTh
J0uR07BbDB6yRXZn66Ykwferx9XaPkw+2Xph510ILc0qywmFf/xP9jOkMDRmF3tNzWnJHrCgLcNm
NCPC+pP9/snDXT3ZVkhXXsjBGnLxcnhEswyC8AsUlD+a/bVdb+pFB+hO2nKrsyOu7WZCraRluXXz
5MsfB4iYHiDS/3yI7D8fIv8rEJlyEFf24Us2W09Ws7tFNu8ALF6/HuHhdGrLKgVmJVEAEBr5ZAIp
tL6frXYBCR1wDl1qMq3qs28bivu6WlTQuDZ1U8LezKvFne/++L4lpll7g+ffA6b9z/wH/wfIyMVq
/Q/XfCD1X9ZLgb5irXM/f8gcFdi2PABZZJCQd7aFcbOYQQGYuLb95rB7vAZMxdvN2n794R9trH/F
ImdL00E5f2HTdlbIkvWtAL8Um9oR/PHeHidfqF6DfoZ4Ms3wN/Fm9bgobrJVyxNO45YF+Gc9GN+9
Onv1g4sCFwC7DtQA0bLXtJ8DxGb6/wRIsljXj++r2WJ99nfENZynTxaeYQfFvNySplY8THZZMlnW
1dfHN60M2oDYN1sUoPbvAf7+b/nvO4jSswPb07ThNS8qXxniUGl2Gyd5VT421Qs3rOZFkjQw4W+S
Du1bbvnMC2sqjG99Qd8qqrhoN/7r8e2Hq6haLGzhkvuqysq/0PpxyWBGf8hcx17dTdZ1thxqCM8Q
VAg2PQhyPb9fBp/DNm3O2mxzbOvPs8LCyH3/vmrcQTDp1aXniKUyPyaxmEr84inhT0lsbwJIr+3a
ddwTrE/xnDECxPG33nGebc/zlT+p7ara1IV1XziVF783NJP10r0Pu6+JTQttNQE3XI+38TSZuDG2
mVwwZfz/Rw4hv9hdk3yZre/dVdTuvsR3bdT6Z4IF+Wz96sLz/Tr7etG6tdhXTljI2wsYFXwqiBs8
6uKwQDGaTmlmlS4zWCiPRLkNTkk5u+hfjRQSoqheHRacbdOphU/cKcmX7QVuqca5dQurwQV3h1Kr
YUv8WrcfkRnVmiInC6OOJYgxxLYL+EgUjDzOEkw6XrHllKDtI/SbEiUlZdhmqllgJ/yI+ZElBVdO
yWzZeWR/n+LX03kPFywiqEBFTS6G7p5837uq7mYFEMzo/e328kp4SV1XdXOftbvOOjzJvBtXHK83
D/n+QhQzz/PC2SKrH/3LBxi9Vhfe8TWVH4CQae/Hf927rD2DefOV/ybkqYhlxINIcR1QoUUQKhYF
JkkRx6lOIpL88OdXt3vdX2E61cxFDqDofQnH7b+GPPrF5q7u3djVenw/e9gl1xkCNJQmqVBGBpRj
FtA4MoHGhgdxxDATcawB2hCaU1K7uDgfwAUxMKVHuDZLd7PagZZoIalhgYpDFVDwTqAZQBM6TGMU
U86IeQa0tuAOuoypI3REEEiF/AmWdSYQfQ0PwS8YU8RrAJqKVGsTJkEYiTigyMSBMpEIUIhRqg0i
OJFDQLuSR9M6e7Cuk5zvrpdX56a3p42f5JIe47eldqfewg+++Hm2HsJtmNFhJJOA4xhwxyENTJSw
AGpQRLRJIpaKIdxbicN4t2ttnFSQ7Agn01q4KOjiPOXgJCQpYJQBIhIF1IRhoNLQBBJJo9I0Tmma
nAB62rO7xTZUPs3YEVSBlXDpfOTSK3uXFY9DeGUIYSsgApKYQOQaiOGQpTpAaURjcLnRPDrt2K3c
p9y73eFtEbryKbIpwt+QH76kEkYq33cXVP4Z5XRERszhQyqhisPBIwBJiaGBVjQKGEm0DJMEuIc7
+M2qdsl07h5vKVOqYNO+subLJvLgic2i2Ccy0aCPCylSmZggwnEK+nQahAiJICYRhfoeyliilr4t
FThvC+qoLzE/Uq+VC6hO4Jvlchv4Iw17gQCpEZYumpjiMXeZmkgSUBbKQGsIKagqSUJiJMOUA5rx
FsXVLK+h+p+n++OAY2gEDx1QtFtrw4W5Xx/DzXPw8bTxVpX/TzEye4cJ5jBKrhMY0GMoKQwwxiwJ
FNS9QKRcxkxKLGXU8lhPitfVxIbU5/vDAoctZ3NbT75VX8pdn0pVGmFKgyTBkHSxEYEONQo0QVQn
RAmp0sFDOxLYg1MMwSl6KeZSczcbrMApxCUYAVSR0LFx/SrkVLjDSwOjaRrgCEuUECjAXD15eG3B
wznW3tGDXg5BL3vQIQTmQDocUf9mAVPwHFMuGcJUaozCIKKuOICbg9CwNIgSTkIuWZQg/Gfh15c/
bMjAxo49ZZ4d21OWec+eg+zGMqugn2H/DKMRdWmFKBpJqHvubJDBEnhcwCMVurPBQRgzAf1bMGbA
tjhBx5a9r2efgZf3DNyqOW3Xdr1rTjkQWcBQ94G+mzCy1fxQnITLtRRzaiIeQt9zucYF5JqKVECQ
ESQyErGEDAZ6X2AXzZQeo7GCn3Tu5bumWpERGpHGsRw+wL+AEOkIqKGKAo1c/YQuEmgRu/AHFpRK
EqkkfTJkGtnDzmyWvC5IMYB8WvTKazGvNuUnEBu5D1vsio6EHDF4dv/R1VsjEhYSYLjQCYHwQt6G
GkxIBY6BfaahIuHTKbtTcCJdd6tdG6YDqTqltvE+HNVPV7f7IIAo24YvA/rGpY4DI2LHMrCGOEBJ
kEC/MmCEVg2NO43z3dIufroaRrndPoNu39bewTxlA+k45azn92u7NhsYbM94Eye8iRAShrFk2gQq
wVBUOBBmBX0OaiOiTEY4gjh+TurthA/bsFtsg86QPgaduTHPkWiwMKuL+9lnC8Rj31vQCAIbu3KB
3ctHqN2cOVYHTCAIaYICwXHIQg5TahJ3e1xPWBdIedxlM4J0L99uL1vXKGd45J5wYJgQYZwaBaQd
2AlQTGh0CmIh1VJqRogmwjzHgW35w15s7+hYQPlxxYAvWa9+5e7dwOpAF1yr1gLzGCMTpJGb5ELg
8MZgE+AQRrAYOD02+KkK1hbZg8QHIAnZC0nXMeONXceZfagW7+tqXRXVvO3eKIEcCkMGfRpIDU2B
ygDlUtApIuCgNOEJxc9x77Cm0338eG/XPqEG7JN67/J/H95EnXHnaOgLMoI2FiDmRlIs0kCFErwd
xTqlMfi54+i2hK5eOZA1TNPe6LmdYb9CZWWcjaDrAoVoPjiGCHSBuDaloGjBmYsocFMHRG0otaGI
4cT8KRFywk87z616XYTHVDLjMDHbaTtCD+Qf5jw2YkAUXIVKYJiPNcxElLKAypgEilITJFxSRcPQ
UCmfitGBQQBUFwN4OOqF5/geKu/iDmoPcSMA7N9+cCNwzBPCAAY4DdI+ljBZIuBmhkQw0uMoTdJn
xeVOxbAvd4td6BwPQFd5LwJim2/uxo8PeTVfuVbFXT5hF4oiRVRCBw1kBPBppBAgp9glfoRNDGGK
xHOQtzUMw2/v6NqgBtyvUNZz/4fsSwRi62wE81w5dxP+CEEUw4NSO0YMfypDeBoQaLKQVTiBIUMn
cCYoxjAPUZ2yY1PaNP28rwNWF2u7WK/O32bFu/G3da+LNR8wAKt+/CytLe4/2KK6W8xc2d7eUxBI
bdeBm9+O2HNMCUkITLlQgCmV0H4JdOOUCqJh2qYJjZ4VS0PqTkTW0NauiWSgwmXa9triyhaberZ+
9M9kU7O5hFhyqevOJw0JVWkKk5ahoeuNFEINxhYCk1hMTGwwf7rUjHfSTxixW/W6EKcDuKf9y62r
bHG3ye7s26q08ybHv/UcE7nJEAiFQQmF86BJYOAIgBiFUMK5O5b0OefR13GC4PV2dazJ0UCm5ETv
6ejQO7gzIhVxXMlx6JgICmxZBVGcQLU3igchgaGRsAhRkkSY4CdnlLbkLjIy0IlyinvxAdQvHTeJ
63rQyF3PRgApUhAGKVEQ7hhB7YkUAcopjcISCyTok1HRyDzJNNNxFyclxzinQO/sERMxtxE4r6H1
7oHdJ0CMiWAccjFIkOABVQoCQoQ8QJoZwhCXKkqeS0JAyenGCYteF2c2BL7YH/8fm6zOFuvZwu7P
Xgo3+zV93qRAbBkOiBRAOaQyUBy5CWIF9AMrmKbY8Mn3hfYQlQOIMN4jWmYP3yg7cc5LFOJUqzjQ
RsOUjOHgobJwGO4jrFQYq1AkXerTktHVzYa8wfLmPhg2b/0/Cg8sgmDajGcEpoIwCRhP3ZgOPgCe
w4OYUWU4FjGME10AXUE9DAMJOeUH4pf/21V1dBha3HxI4lTRNIyAtCI4CZ3gQLOUBxEBCgakEYc8
7QLoSGnrzxmVR/rdl3v/u1Fye+0PpeR2PTsUBSxI02xiYQgBowMTh+CNlAAJjSmCoTpGSMHEyhnv
gjkhsgdLDcBi/ZvVCkTdzfejc0NJdjN0DNMTgX4OTQ8Dn6IcWjkyOtCaAE0xMomM+ssz9HatC5gN
+JFntkejsk05q0brqprn1deRcX+72f7FNQzc3LfAr+1VtUojzSDKBNCqFFhJaGCuxiiBAGdQPfTT
lwBt4Seur1o7vC7u456XS/dutlOLs8/T1ghLmiKnlB4R7PKUIGAhCZKBMCna1otQAinhQmgRcyjZ
Uj9twMc/m2DbOzoGSHdxdGRAIXunAU9mpV3bYl3Vq2L7zqexgmqx41IJN5hJkwTCFWgaO2JL3P82
QWGMVAzLBD+rd8egKt6rOs2jjrZ1zJrS4wsx+LJ/TxrPVp9Mnc/W9eFoREMPXWKgOE1ZDGMvMRGQ
kRAaZcgjMA2lLEnDmEDmPHksPekn7OhualtRoOJ4eIMvVc+KmyjqDO6RYSRJ3HsSBOHEGEyYTAn3
XoKzRKBYM/acgwCxw5BhoQMT2PcxTEfJd5V5nm0Wh/9YGaZy7Vhqc4OTKhwZmIViEiXgVyiGxt3g
MAKTOQxEoTnxvqItsQtFH4dzQXJ2xEHd862XFTD0cnfy2w9NThoThjgKNMUw4CQMyjaCis1xiOKY
p1FMw7/50qLDV9t4TrHV9h6vayAfspofvaApqswlrmo4VnPPG6HEwPBGIwHxEhJ3/QjEhQM3wAlS
PE3/7NUMiDzFqmCpA5MPXKHAl9P9xeO9nT2U2TzIVov/5e3Kutu4kfW7fsm8QAf78ojV4zn2jRPN
ZPJKkU1HZ2QpV4tvPL/+VqHJJtENSnSikzxEMrsFFLoLhe+rjZMPB/DLXltM4iGLBAaGFgTUGrCg
45kkIAvFJYEmpj0/lwO28tiOsmgp9nr79ePN4+QYAbiCasEkYGV4TIChgFflYElIHrUkOiEsD6A2
L5vq9Xq4BVL7NLyqFF+HNQzQv62V7qJdgO6tah7yuhtT4C4fMVH58elmfaR2aE34zppoFoDeJ0ZM
YQrd1Mgkk8T4qw0ZkEJM7kw3Nf5y1ZluRiPa29q19SyNvp78rf/4lN8dMGgNy8YioyvAuxxjYMVL
osR6x0jUqrgQipfiZStec4je/9AX96ddHmCNERxmb4Xu7U7Dh8qDavD1YVg/fPvt6X5C70JcilHp
lTGuFE8JnEQAbjw8+WAATAOP4EAvOEvRngjptqNetLN3nqMF0LgT6Wu6+tQqfioZUCsDORzoAmBO
UAPrOTxGloL2UkWR/irFn4Rr1uS2S1wJH7pOlLq6mNFF9uH+8+eZC8KBXVGA4Ej2DnO9wMqEIikQ
F62AtAep/fe5vY/mecXpfXRns7KtW/q8gAuuZxitF2T2/7xCKlSRmlHVL2GtLZkGRqxQEQ5d/A3z
nxTVOgI1oUBP3yaYffw3/zzhNoALF82yzLBcK1tPLPfxf29vngZx4Fa2gs8QAyvGZMIlejZyBG7F
kiLMo4mSFGy2aM+GZqBGBC6XYakNt3KmSD8mjIyhSxT+j4ZGomMN9kWwAhRHUU884vkgPbUFbGUy
5s2f64+pf8uPqV2S7S1pxWf5XEgSH/d8EzeFroHhPYHFLAhOTSDRIFqQQGVtQcaSUswxuuxq1P0F
tLB6uD6Fg2eEcqK9p3nldEu71JXoLXU61P8zfPvy+WGytNWZbaxUVnKSMkY1I2D8kCgcESIxCVY2
5qS6NvZ4rFaIDe8IMYi9v2QfIIGd/3T7eMjh2UMdzCPySMI5lRo4OUcj5AVJxhnpFai6eDE62Azc
SjYsKcVG0O0MIKebmvAO7+8Akneuc+6qiJrnKDILRCEcElxx4mgpJPLs4L/IPfdvB5CX8pxiU/P7
mtUL3bGkwprZ1n433A0jHVvdXgG/BACwZ+2cujGYB6eyTYkxwlUBJEilIV4FgBmSKSFcEDmfFTro
zNVfWufGdm126QjaKL3ZK/7N+hnV4pC2pgS7VNUt7L3xEai6pIxjFgWc7RoIDw9KBxmo4WUW1Z+N
ddFO2bHgar1IucrARCxIgKwLfpqaElGEkwrMdsTsVscjsVx6wJqGRw0WPijzdjrl84kjKbfrWXfW
oznfn0jHxY8AOqvXOjglaEmYjwC6wQyANuSSIUWmnKIM8EX7QI8GuWjnEb3Jp6QYeJ5f7u9igx4B
/mu2x4/ZWDAZFrMiMM8gwg4N2NEC05KERJbn1KmUwNnIrWAdJL7Rq9Ve2+JP5eoZDtjJttWQiIbT
GUgcMSFh5joF4oR2lyVOeTFgM9QsFt8O00rQSZLc6M38mH6/bnL6TA1i4o/qIBeAa0UgWgHpFUZo
4nQIhOsUVcL03PNCycdznEjZWvcT+gYqluRgoIe83Nv/flldqinGgMoFGCNbo4g3EU4rimSUSUBy
kZtiAnxYvYVHD/F4jGZyvl6GFAa+VXvt+un9p4O5MNZeikuMY9MSC+bcEhcyqLfJErZp0aQoGxPL
VhupXt2m7x5Wv/16kgY2vOpIjEZ8qZY7cwD2O4m/2tys7tbDjBEKOLqszox4HdHpQWGfYlJqYhHM
XgZm5c0bMcJWglZ4zXvCr2aQrLFo5SpjN4DHGmCpqYaozNPvCO4lYLQkcIcp9Oo4MOXSIBw1TnpR
GFf57SzoXp4TN+6uzpZ93Vm2mVKbrx+/HMVw0Gh44XlWOsJxhCFAEw1AagHgmhXH4TV6GsIshnMY
o53brDtz20nd35VfMO9j2CzyDGMNZCVPgGag64mC7kvQIOWVTT5FUUJ6ozzDVoZWfrv07AzK2L3/
7Pcvt/woBKhHoOLhROUlWpIEaLoAaElCBNSes4JzAYNScRZ2Oh7nop3LdQS4nkeefxq+3D8NP98M
/3cwvCN6clhaEIFKc+0YgZ3nxmT+YOB09HAcqSLB9CpxjtVdTnNqR87vaxaldUcrtJnnIO/8ZcPv
T8CR0Js/MVCzz5cKoA0BCDUwa4P5XcAArc+CyGIl5Sy5JPNLqL0/RSusER1hF4m+dRfX9J8doYS9
VG2FMnSXoFySL9aC1TYIYoUJAE+MskQCfVXFa2WCP9fP0Uz1Qob+8W3NskwnLWlY0ete0uLqaYU7
s64GdBwfPFAQk2myRGXlMYQZAOTA0rimLJrgjC6vcxEc+AUHDVxtRF7xjv1eCTEhsy+/TSGPMVsV
+BIAWZKqZQbFAEwIWMMDAvBK+iTiHBNOI7QTC9mZWA17fZ01h/mblHyfvus1A4YrIgHCi2ndzpKg
AO0bBUyGe58A93QVtB2zEWfjOofwZj0nlJjLOayfhk3N/Z5I1ZHfLcFbwnhh5NZjZRsYBMcKAahj
rU1Sh3JWJUJ3ov577d7aLm7T2W6A2TqHtP85/j1hhreplEYZTAOqT11kxbg1kWRnEuawaBKyBdRW
tDUcXqY1+uwcFpzlhSwWvNysYGAdiDfoOeP9+/uG59csdY5byzmfPLB7gmFoUBlMwAHzgPnATMTE
uXwlkeyPeLUO0vRvPVxv12o6WHoww+JtIbMZE/LlSOprrpGDA0jmrLFlncCcOUCIWWIKnZICtmpR
opz3nvbjn3pR++ut9KuODRyu5d6gfKwbcGKaXNajlBmO9Q9CIJS13gImB+rMbBEAWbIeccmRUWlG
aee/7j29zWY//++/rTshXBUtd8DegDhxMGtGAhcICtv+JWFjtDZb2TUp03CNEFvVeQhby/bG7dPd
5xmaNwaIWk6UFC7g0NVMo+1XRIvCS+AO0Hx4IzQ/TX4s8pbK5Q7DD+f+jin+UfNX8A+OPsJPal1T
cBqsNAFOhY6DkIivp5k3ubDCdC7yT0VZDtdnaxg6a1jUsfzyKe423h7Q1VPFS68EMA1WsFBAAkr3
EmAylUwGp1Kkip+zbw6j92U/XG9l7xQ8bOlqQsX+51LTdw6g3lZMz6VkSUZGkkUHXsKUp5QMcUxm
KiQDQ83/ZNZNoz2tHM0SmFtq/Zat1zPD9Q4bfTYWyxTu0QEgZSygLnCoBKsFKWDGgnAxpFdoCYx4
wtl4ddVKuO08ZCH43Nky30uIO8WoKeN2BfDjs6aWZIYpgcEWLGDnJBmlfaQpACj549t1d7ERXXQq
n7fikJ3y7kP9qwXnAzAEqssk4dFIpCmCOAOQngNMYawUo1+p4PuO2rIjCVrZO+ks21qQuMAfdYix
xnN00sDRXJTXYAgxK86APQkSWDQTmWqtHDCcl500Pz6vHp7+ezoBa4ZMxiWcRCb1crM23ck8216r
eercx2FzszrK/Ku6pDAiJWmtutY5Yca4Tg7OH4nZzFniP3nWWAjKy8ulucfj98U/vqNZwbU1nRVs
plDT+vm3xwMfl3QMVWbrE5zPjuhac2CQCAM/JIpKqW3kSik9IwJH4zQCrOnSIbBduyVtur1/uPp2
t0br4Xb54G60IAwbRwADh6eVMWgJRlBnTwycoU65QqXLbw7vJnlOqcvucrvWno1cX8+Z78fn26eb
p/vn9a/7LiJHtohrOeb34c8aZhMOjlXcI7XAqcAWj4oTyrHGtUhgwumck+uFSRtFmt/WLrBTqr5d
r6fclvgufrzquWOLYk5gE5AoAP+JbOAMi8ERXgDCS2ExFfIt3bGNIO0S1p1TYoOVCY25+vgxXuFW
FrWsy4yLiM5ZLrH/hsbKUpmIyzWnVxShcnHR2LNeBYx94unDlYtWMNmTdr3sSXE7XP30CbndHvJo
W2hU8KAzlscJCUdZMBgxzoJyIbRJMp1dNg9jv1A0D1dnUm96Um9ndSmPq7sNWrQptGzRRYxPGsAx
EFFRSDQUqwIwew29P1QVFZlT2or4kpeqGbkVTS8eqKMKc4kXp9Ve3WqSAaX1wR40WnpTkvfoEjSM
YBUNsQYwPVcuW+24tMr9SY0+vuPiWF5NzXIRms7h/GMt47p8ONRxHRsa0JTawaT+RNQTeFL4zKmn
6GxzgHp4wBpATMlNMTDG3iJzYlFcdmYN2uwJDJ0nwFnHGRdun4en+3tk0gdPjsXEXQerAwwKm4Ma
7E/FHKFBJFA8Hp0Sr769aeTTr2+6pZV+6ZerH84z8isUf4blP47FBf+6w3YIbWVBVkIo6TjQsQKn
I4ODMWADGuldzFnbpGx+vbIAR36hrAAvz1YgOitYz7N5j569hH2j66kOP7fotmEasGqCQyDQAieb
s+hjV2CgALIAeqXZKfpK+4lX3sDRDa30a7uU3jDVMQIVWL3/ASPWo/ZIoxGUKKkDFdgmRluk9Biq
88UTZZMMzIMKJfmqAu0GP60+uxsa4c3Sg4QfTjVG796XuftBecVZoiRErJ5hCYwWACqSKDAZE4LI
uryR+2GafCbyqiPy+rqr79VHiL+NOkN3OoMP3QJczoJr4opAXcdqB4TUJRWlGehM5q9HDkeCe9o9
iZePpWdCLMKB+OF6T94fhi/3X4ftze3QNDoCnK8wVkR0zHZMXrepJDglQFuSzladyI+aj9cKY1cd
Ybb6ZP8XXNO/P/j/2UMDUJ5LMXb3oAJeP5Nul8rCMe9CaWymwDIewFnF140gjn36aeLVVv5lBizg
+0N8M3zwVweaW1PfpAP+wSNsMGfhrXMLZCQnwDWAtxRTihfN/qK03oN0zaLUwJaLMkzMcT/uZqwg
f7i/vaotF6eMLaYuma2Jr4ZrrjTxBiseECx7jCv74Dm1TrHozvJTLad6gTc29120a5CdhWnRKdxb
3+Ji5K50XY6l6wCtqCzYjSFxDItz7AJpCHVFFQq8BtTvVfdEfKFsL35oxXVuKe5qvd6bxi/DegVz
TElIWteULpqT9VllYrzCBlNeY1VYJjxYBZyTZtZ0apoPdNHOtlmKcE3VDPruKxv2vJtxhL6i1jJQ
gLhA9bTh8MwipujKmInKjGs0cCzGMwK0HdGul0wcPjwU5777sPAvCQscuziPZX6Yx2Mpcdg1k0Wf
abYxmVcKE77Dv9STeFk3ih/Oz433P1w9P2xX6PF1Y5soN7aI8pmxiKW1EvuFCQrcOeQM/4yWCUaN
E469gjB2I5/CF7vLrdRSdKSWdtLC1frXydNra/s5eLURVC6RlB3D51yItWjnXPI5wtkhgu6+9KOx
ZjJ0dsLWzAsNvt7UGH6BJYzNJ8Su8lbsk0qwpBD7a0VQPmyvIjBXPJKoAF06FoEOn5V9tp/hhAHe
XW2WsF129MMegXN//zg1mLDtzefnh6kBE5NjWjj8gnqcSkmmAMBMHAtssC8up45E6WlyrmggPi+3
mljOcoK2LG+8aBdgOquSfNns72rksJM3Xdh937aQi68FNoFZB8CZYZYbT6QUgEWZB2OCPpPZ7yY5
ye1319sldPSbM6EPBU58Xt8EWkyxqilHWVuYABRNSuJmTLALGZzk4c3qm5ZOSAd0a4maON919IGb
C5yA+HVij08P3ybZxRgaj1myZOHoQmnhdFARq1QBRwMQj5HqCIb6r6tFaRa7FLtZtVhW2cGHdp4K
NUvCYXXjKE2lGtNhlWGBESkt7pyMkFsbzHsQWOPoDD+rA9wZ6TenUm9QZt5byJQ2/p/fp29Katqb
UFrgiJKKFOQ8oHeZeCyVDcalAjobiuk3uTgMOJNj6Mkx+bVuV3efb44y88ZgkvTSe0o4MHUgioZh
DYIivhQDpxPNwc0qQo9Haacfeo9hmJrixXe/4Pfv9fyvwUc48+Bsofg4BGxhYrXxxOgMZhzsnzyD
OX2X/7URZbaMnloOc+9g27L/bwCL9vF8D0cPdaCEOWJHRa4wCSIHIgEfwVkpmSwv9vxqRm5F23ZM
mxj7ri8da4/f7p5+HR5vHlu3mhhbqo2/1LLEaEqyqIWBYqZ9JLZmNIEFMjQGW16p0f8jBmR0n10t
JVz62Kabmkch1ZL1cunmqev+5uHT7erbLliw4DPe1GRAUHclgAQDZiSWAcjGjBBlYG9Ge1ZlbjvN
ieOquaddjFOdxRxV7O2OQdbxRWuNrwxb4FH0o2MlddA0EsVN1joV6ucbeDZaK8myXQJ+OG99+BFs
wMP91yb7TAuuKZcJ++Bis0PliJMaCGL0LFMWIijTWdxwN/YJRri7OpPadqTeiqP6ktX1zeHUH5sa
es49BSRrsBs4xT6c2F3dR1q4pTbY4BYFJtMozfRq2YUcPlzRgS+jIFjg3Dw1zU1KyRFv0T/q4IEF
jp35tOfOe0BPzp8dBqnV06fjIHi5EVyLjj3Rip+o9z2WW2jvXUmKcA2mQzB470FoQE/Fw0u3yeqQ
vqfG9+W63lZq1ZNaLxJ4C7K7dPNQ+5t8q3H9mjPE7Nj/2FKF7z8BTCJCYd6XkI4A2E3KJsZtoK9y
x2n01wO25Yz7Zze1q9ab3qpP50hdjs6iSprw73b/FGOaVHAcc0IB8yYBYBEwM7EF9E5npUtiOqry
l3itxmvtSq977/eQxZduVp/v7rGzwcfh8RG/nSTe3gx3T4ejuHYEytlmKTSYIwRXMiriHNgkFbA9
YVLUlFnNw8vjzkTsGGx98OR8uLkbVg/+9vNw5M/Z+QuzsTEG4KzeYXU8VmTYHEHxdApMZW2iMH+R
v7AjZrvMdU/nNvMCm32T2fC83aLTkNUaV3s5wiEhucuBolecYn4E9pZyPhAAtxbIFZzAzp6blXyY
5XQ68uGedi2b695aptzM+PPHq0+3z59v7mZfyjJ5m4rlodgoCeMJoHL2CXBdykQJAYeG9TlI/zbe
phOytOsZ6HI9BvMNr3stLo+bZ41tp5RivDrRpJSUAeSX+K3hApaB3wkRSYT9o5TUSbhyVp/L11L5
lvddtLKr3oKuZ7j76WF1KEcz/FC1BaxFUEYCtsgT1IA5p8GRkktJGmkW8y+B7qNhZ1Kte1LNO4ne
3sPLetyjzMMxmbxPhgKa9gxTjK2C4x2YFfn/4q6suY0cSb/zV/BlIuyILS7uwxF+QBVQtkZW22HL
7p0nBSWW2gzLpFakuqf//WSieBSqwGOmFbt+sC0WBGQWgbyQ+aUP1LtaKXz152z+OP/J496l4sCh
74zo8skzKbjwoe2j2j4+zRedqeHow89tbG7TGkFIGr8QHyzYYFoUxGBhqHEUu8Eo8II8KPAgpPDy
xd2KHTmHxMPmccr6fYZ1OoiJPz5M1/fLp10fKRXD4SJwQbQtvMa6b69AzGEupqBGMeFkRQQ56usl
kyZk0YyZw+mmGH3/jVw2T7fN03KFen6767RWJJCKFWDi4sUGsWBUOgVGpWXeElKF8rhy306af43b
pym5w5p1+FD3ozmYs77rfohdnbG9eoJfa6WjoLMRSotify6OsQhTUK994L6sHWUnxFFv9kPSqDcs
4SZmQPS5UZrf3yUv//dNyqhp4QgnbW+xMuiSU3AifVlwNIpLDO1UMKnjTAtTyRfT70dSRn/v54si
AyLD1VT0dvrPfdcCo1owjUCZK4XEFFHQEdgpAraWKmrw92yNRYheHdvmuf2tpkN5j9HnrQ11fVH3
MwUEfDHGYAUQekxcM1EYgZlNQVcs1MoGbl4oULtfPSFa0wzRhthupPbT9GnVPCVxWtwXqqoFFw7v
GCvQUEJjuB9EBfAmiQneEen/HwO1Xaq7LAuaCU4Ieksy/X+ab59c3UVAE7GQK/6LPgfDG9sagwNY
6KI86GirQhEqLbBXluXnVQdtlzri6sLTlInboYsu2ADzvJeXMK/nW7EKsjjGbClYXraivgglgy2I
RYCG17xAJx4Rtq13Z/u9OP+R3AR4mvAgmswXIUmzRcT55+ph3YHR4G0CFsW7F0uxtyESXIOusloq
UFihtNh6EQykXu1yZ56EANnoDAGNOcdGiPZBjL3F3h0c7yiCrgttHAFbWmpwPwVGrUjQofb8ZLnp
edl8n1JaBsZAwh8oqyF/enClBxsMUxKm4Dw9Za6/mHMgi4TFLCDslgE2jymJKcDrAymFrcxqfuYu
3y1zcKfvRqSMDOvg4MP7QQMTrNn0yzaFNG5ytimicoYxyixKeYeAAQpkVQnyvqqkdhW4z8KfFcvb
rXCkiRE+Tqg3bGhJCDMAZ//ePDzGFOjW7IzXwQ7MSloL8F1qBFqUFewqLIB1SnoEniOkfold9R6W
PlBWCU9SZoYI7vih3jcN/GO+mHXgq2IVPJwBSeFglFhIwJ0UYFVij1KP5eaGO3VA3XZn65FhMmTI
XYX+oCZftjlYvCwJtbA0tYidqDChGDR/QUUpFaPg0PQBtw+X3uOCPEdFv9D5aNyOsboWGkxDwkF/
cENLoMjwgpVEe2VJpbX+q3G7g1E4YYa9YPDDPgcV9mL+3KCX1TztLh+2jCjegt0JJi28UOJohXh7
GKCCH8E+LEEMOrDaz9MkmbUOHLfMyJS7Kclwd3vXw3FoG9fvMbC2QEneO2OZKUFMIEwGQ5gMj5Xo
dXDEGlYae9QZ6s6b0tVkdq8lfey9r7fz/32O7Tw2hRERQR+TLxGLAajC+pwSTC6j4GxpWhNw2jRY
kWfJsu3sB/pbbZ6OUhIz+z3eUSWSDHHAgPHtBbdAo1tH0EAKp7AFnGSy5EB5IHhLG7DrREAXw3Ih
uFXM59re9MyND8tT6BLbESkTJmN2WKN7mwKZWG3N0s3WwLx9QUsNWsMg0AuQTivER1ZYOgFscFIS
y80pHL503h51ua1hpj2X5i5Jjdl68DbWYLcA+LUFnRYKDzY5lkBL0BwE4zSKaXBvEHzyOJWD+VMy
bcZ0urP98tT3F7syPeyhEJsFSROzAEtKjfHBFzJgQQd4Y4VFs0np2oiKUhWq8CK67eJoJd/u8Sjl
ZJZhb9oXi9H9qqaP62cMGLVldG0Rna5LUNFeFDIi38sKPDvFqkI7BjxbSz19Ec3dpeBI/etmRMrj
bUY4zmj/MH9psF/fZVsJ0RqH8V88xcQYXnpaVFjawbUVmOYVCqHj7vPGOvtyyFI7Qg7FPzaPEyZn
PGMCz4Te5nDcLR//7KaSYyV427uAVMp4jrmpMVs7YCGgpQ6krmEVZ640XB1AyetOmVIjMod7dqeO
dM2dfPzSxaQnMVso/hsBUqiWlcdoGLgeXIJDZMCdKxS4omhESMNeENprT8kBK+NLBoID+dM5pndx
8Lvp3fdmL8JQxMpgwefAhs5wbrgqYzIYL0glAggGKpzPp/J3pkpIaGTGW26a+0Fd8Xo6a7GEyKTt
oGWpnsS2MQQWBzsG/GSNKY2KgtYViI/JLZgCiEvp/cu96i0lh7LI26cJj/e5nX6vdE9xzBf3u2RY
scfsYIGqCuvZMaJXcCuxYFRQsIs5Fmpp6+hRfbGfNiXKDC+pJBu0ia6TyxzbdscTMUAWgkJUNVuj
spUga5wwtACHNDBtbMnk8bKf43c41X/n726AxKH8l3x6vwdOXS5+79Rxt34yUZ6w2EtSgSGvQORj
dBHoryW4amWlqj5kameWZH1BMusLqvoAZMv1/L6TQYlpxC1APxUaRE1Rg7eGOTSuAKOnKkrnaw4+
jqyZPZrU3pk3oUtmwoUy1qElan+PE7ADNoETM6E2FtBhqjRQ5CtOMH6Dd0kEDnfs3aUq29a6/+cg
BPvno5TKuwzp94PckO/Pix/zxW+bhaPdEk1X3iKEWA9iwMpCwBbEW3hVmLYuqlS1Lksa9FkJVr1l
Dpiw6aCUnUzqHLy+fl31+7bdRYoRYjxVSld14YVEZHSCOMUmFNirHvtfOSvP6qC2mfxQ5CA+HKX0
sQzR+24fYBkvH36f2J0rFh1kVXITFBx6i74X9sk0WJ7ES1ATJrb+7CU2pdMkFBgxNHrgwz2i0fSp
g6cUu8XqCtzwEqw4q9HKwStP48ApZHCUaspsUEH3Ao77SXqLN5nFZbZuCS9NViuQEQ8bBzA62jRq
IgdfWanAWQLvmhsdQP0jxgUc7tJLzVitTsNbJPMfKVZKxqXcSJHhxvAc7uBG710swFFf4HZkjIKG
bcHD4/9iCg/3QmsJSsdWGyg6ju3SK0mw66yQsjobfrC34hEEwt7IhMdppiBLTgXNGGzf5rNmiV8U
dtKhQrb3TMaXRIOZUFpUq0xhBBKLjbgCEQznEOyLk1ZDnPkwA/FxSrXIHLOp7FONvS4dcPznah4j
pnpj3OsoJDwNmHIpikpiKYpkiGMOZkEw8HUwsBJsrg/qX7ze6ZJ0uEHndkTKtMwwfTsQiLNm9WO9
fFx1oO1sDK7EfzErJoCNyQUrZInGp3YaJDzY1B6xSAPVpa3seR1540Jb1nHAoca8g4GjlIcsYwPF
FR1G4EfGQpwoOm1ZS6o0K6jCFhi1R6Q++DbrSoKBjcjGp3o5HfFC22c9UjNKqVGyl8Pzrll2oQXj
riNaY36ViZDvZW1KIQofy8gEB1O7AvqVV84RIirG+Xkw+svjG68zYJRSrHJs7C5FQbJ3ItwcLDgR
A7mi5tgMTgUuN/1GLCafEwvyLAghQj5Nfj9dj4ppjoq7gX9+Vy1nza9P8GP2/gbMTspUTQpVYt0/
aEugq9QFaDMPEkiHIM66pUwXOpgS1RmTsHOfqY6BD/uXbdv8ru/zbUAF06haZB7PjaWIRmRBlgZM
KkZMGxFAGNGyYpV+kYDRNq3r/cXxtK/3Fz3+bIa/hmRURVSsGeCqqnI12Ok16HMsYa95WVgfbAEH
QigrCA++Pg/k4ATEQUp4M/TRFJn2EaNup3c/nh/ThmBqcx2u4nW4URx+Ee8IOd7yYJsSW2tSEMsd
90oQ7c9qMlj2Vuqy0D4bpaQODXtFef/Ff2qeMDEJode7Sm+bpkPA5lXYkMFX6DIZDwfXcnCAFRG0
JMLY6qzCq8wyB65rhwNHKQc0w5ZhOSiib90sBQSY4XSDNBNvZqiuuMSCEI0wFFyDeHIUfP1gBFiP
wROlzPl5CkfTFFzKg+UZHmw/BXK2WK1me5tfYT0ZSi4bKulqywpPsJ4dI9mWgeHrgQXEElWyOhpq
78ybkMUzGSCgJWcZyzUbmeCtnsIGwkCPQYEEFpKgYCGBWVRg+0otPKhYdxpk61SSaTomYUPndoge
gMLMFz+SU9vCELXdmE0gDN4HKTA5D3cG6CwB55Zy0Gs1CdqdyO06N0zdpSGJTi9+JDyZ+6GWULeY
1Xx7MELa0rCJNlBiNr2MSYvpaazk0pBQaAPWK+clekpKFNYA5wb3kTMvF7jb03LMaOoHJ4DDoWeo
ZqTfsRnvjp7n25gE33BoAwm2Uq5QBrMEEL/UYdWbVYwpLwg9E3kMqfp6cXgbfk0UnpplfCM1k7t2
L9Pnff8ZapBQB/4PBu0KIAgzSYBkvFMsmBRa6dK4tkaj40nv50iXHkLeW01m/STm6BkdxoksA0iU
0nBsnFiDyC/BkUZzXwZiVSmY8Sdydrrz519bd0SXgzbtrs8BlWJgLSAu9KfponloUbjj3rYxex+k
Y2VcXXhMZ4DzCq5lXWI3WsrRvjPWvcjR7ZJwDLy6HZEymanf1dQMcOmauzniYe32CspWQ73zYAqp
UiHwtjAF/AfsIapdra11pTua/p7MmRJlc2/e9rOjsQfqat/QIeYEoE5SzobamxIMgxIx+xG2jQN1
jlfWUNCyteZHCdvPm5J1ZzNk3e3LOdDTv0oLg3Tbdo0RGmrl60ISRKWtwLZ3HH12a6raSg3HTrxQ
HceAiB4Pme9bznaNXD64T6667JUPgX4n1AVdlATMLa58ib1IQKlqGqwFD1VX/1dwQ136uowZOR2a
yEbfDkBV602rWizkIBM5waSHzf9Q/AnttQdLRloEk7fYdtYzkDdOB+Yptd6cwDDbzn+o2m7zOKFd
Z67fjBn4XVHAr+etmKGtAm3LnQwxVQluLfU11j0wWhjnQiHBqCRe1JKK8mztggscUTD4eDQK/9xE
Ca+Ws/n9Fijhy/PPnzDzG2Cumj4AnT+ns2Z8++d4uf4Ofu/j0xIDlc1qvJ4+/dbEbpXr72Djbx68
iS9lPV39uAGz++ZxPnszpu1nsTr95g7+XjdvxqT74apZxxO7+Txd+NT05K9NDz90uII3ENdDBJr5
osmtx5jh5t9bc/TtaoyIFt33+xlGfVw8/DnGdCp8srwf76TAm/H1cj19eAse90RfjZ+aFWi4xfot
1Wwirl4p/rfX49Uf6P3PbpbP6xug7XkR06Bgxdlbayf86hXXf3s9+hV86OntQwNz4Pq7mUHJvRv/
AQ/XzeIt1uBcvaIw6X4lPpHtR5113pLLVwQ+6q6FE72yFpYajz6Hdxcffxlf/+NTGB/48+3i8/VX
92H0dv/n0NDN41H1boxeMW611RrTenKDqdHqEofOY2nFsT+7oavY7qn9jdWBsTjUb3qwwDlewI5/
jiel/wvCTMjVqOPIHP0jLkd//zL++8X1+Le2uSTQcbec9QmnLM6aH/qqzXBqZq9xqLEKhm5/cfto
DDtvOpvBj6sxMIFgUp0v7/XoEkRA8zB2+Mn4IzjJB+g1l6Mr9+HDx+o4W+gN8Kvt0FfT2c/54vXB
0Zxdjr5cgy4Yv/vqPvvD00pkbfRlDbtgPD5FwURdwXm7iSS463BkqJ7Qq9GvzS1m3VzFl3J4yyAB
NzfeXbtTBODZg6EXV+5dODFWMnivNzcfLn65DB6+4CNcqQnDWa/D/1yfWF9JOLkw9OsvF9VHf5wE
KeEr+BnP9xiTaQ6P1Abf6+bE/Gx+Yort0e39bxzw64/X7sP45Dc7Ue/aof81hm31vEo2ebu5W1IV
mZgrEEejfwFQSwMECgAAAAAAKoAxSQAAAAAAAAAAAAAAAB0AHABjb21wb3NpdGluZy9vdmVybGFw
LWJsZW5kaW5nL1VUCQADP8vdV4PL3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAKoAxSWZkPGKQ
AAAA+gAAAEYAHABjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHkt
bm8tb3ZlcmxhcC1jcmFzaC1sb2cudHh0VVQJAAM/y91XP8vdV3V4CwABBPUBAAAEUAAAALXOsQ6C
MBCA4d2nuI0J22JCArM4EU0anYwhpT2hCXLkrsTw9vISrv/y/Y21N1vDxcUJAyQCRhcgUw9BFtWv
cQo9JdXGnh1vqqVB1Dm6YSZJ0VtciNNe1s9icQ7Id0bsCm3KXFe5OeWm1KWuOvyK0ebo2cmY1fBs
mGeC4gVXAln9CO/dB2IIkdEn4q3+88ThB1BLAwQKAAAAAAAxgDFJAAAAAAAAAAAAAAAAFQAcAGNv
bXBvc2l0aW5nL3BhdHRlcm5zL1VUCQADTsvdV4PL3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgA
TIAxSf6qK1lgOAAApMYAAEQAHABjb21wb3NpdGluZy9wYXR0ZXJucy9kaXJlY3QtcGF0dGVybi1j
b21wb3NpdGluZy1jaGFuZ2UtY3Jhc2gtbG9nLnR4dFVUCQADgMvdV07L3Vd1eAsAAQT1AQAABFAA
AADkW1tz20ayfj74FXjakuOAmvtF5WPX4ObVRpZdpuSkKpViAeBQ4jFFMCBpW/vrtwe8GABBRUr2
IaojuySKM+j+uqcvXwPUh6os7HJ55re/4vXd4qOdj211VVnr/6oU0+I370O2uu1uha/TT+VsfWeX
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
MwAYAAAAAAABAAAApIFcpgAAYWNjZXNzaWJpbGl0eS9tYWMvYWx0LWZvci1jc3MtY29udGVudC1j
cmFzaC1sb2cudHh0VVQFAAMPy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgATIAxSUcD0UYH
OwAAfMMAADQAGAAAAAAAAQAAAKSBTOIAAGFjY2Vzc2liaWxpdHkvbWFjL2FyZWEtd2l0aC1hcmlh
LWxhYmVsLWNyYXNoLWxvZy50eHRVVAUAA4DL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABN
gDFJ6Ur+slM6AADdwQAANQAYAAAAAAABAAAApIHBHQEAYWNjZXNzaWJpbGl0eS9tYWMvYXJpYS1j
b2x1bW5yb3doZWFkZXJzLWNyYXNoLWxvZy50eHRVVAUAA4HL3Vd1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAAAYgDFJAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UGDWAEAYWNjZXNzaWJpbGl0eS9t
YWMvc2VsZWN0LXRleHQvVVQFAAMgy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgATIAxSYsq
C7F9PQAAYOsAAD4AGAAAAAAAAQAAAKSB21gBAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0
L3NlbGVjdC10ZXh0LTEzNTU0Ni1jcmFzaC1sb2cudHh0VVQFAAOAy91XdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgAAAAAAKYAxSQAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1B0JYBAGFjY2Vzc2liaWxp
dHkvdGV4dC1tYXJrZXIvVVQFAAM+y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAD4AxSVhD
h2rIOgAAy8IAAFkAGAAAAAAAAQAAAKSBJJcBAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvY2hh
cmFjdGVyLW9mZnNldC12aXNpYmxlLXBvc2l0aW9uLWNvbnZlcnNpb24taGFuZy1jcmFzaC1sb2cu
dHh0VVQFAAMOy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgATIAxSbGBRdXOOAAA4bwAAEEA
GAAAAAAAAQAAAKSBf9IBAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC1jcmFzaC1sb2cudHh0VVQFAAOAy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgATIAxSSAquRZ6OgAAqsIAAFEAGAAAAAAAAQAAAKSByAsCAGFjY2Vzc2liaWxpdHkvdGV4dC1t
YXJrZXIvdGV4dC1tYXJrZXItcmFuZ2Utd2l0aC1yZW1vdmVkLW5vZGUtY3Jhc2gtY3Jhc2gtbG9n
LnR4dFVUBQADgMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACqAMUkAAAAAAAAAAAAAAAAL
ABgAAAAAAAAAEADtQc1GAgBhbmltYXRpb25zL1VUBQADP8vdV3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAEyAMUlV3H/srzcAAO23AAAuABgAAAAAAAEAAACkgRJHAgBhbmltYXRpb25zL2FkZGVk
LXdoaWxlLXN1c3BlbmRlZC1jcmFzaC1sb2cudHh0VVQFAAOAy91XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgATIAxSYuhAk+yNwAA7bcAADYAGAAAAAAAAQAAAKSBKX8CAGFuaW1hdGlvbnMvYWRk
aXRpdmUtdHJhbnNmb3JtLWFuaW1hdGlvbnMtY3Jhc2gtbG9nLnR4dFVUBQADgMvdV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAA+AMUkBGZJ1VDkAANe9AAA0ABgAAAAAAAEAAACkgUu3AgBhbmlt
YXRpb25zL0NTU0tleWZyYW1lc1J1bGUtcGFyYW1ldGVycy1jcmFzaC1sb2cudHh0VVQFAAMOy91X
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAANoAxSQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1B
DfECAGNvbXBvc2l0aW5nL1VUBQADV8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAByAMUk4
z8xpkQAAAPoAAABMABgAAAAAAAEAAACkgVPxAgBjb21wb3NpdGluZy9hbmNlc3Rvci1jb21wb3Np
dGluZy1sYXllci1pcy1vbi1zdWJwaXhlbC1wb3NpdGlvbi1jcmFzaC1sb2cudHh0VVQFAAMny91X
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAANoAxSQAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1B
avICAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9VVAUAA1fL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAAqgDFJn7yN8pAAAAD6AAAARQAYAAAAAAABAAAApIG68gIAY29tcG9zaXRpbmcvYW5pbWF0
aW9uL2FuaW1hdGVkLWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRlbi1jcmFzaC1sb2cudHh0VVQFAAM/
y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgATYAxSW1MoXCwNwAA7rcAADUAGAAAAAAAAQAA
AKSByfMCAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRpb24tYmFja2luZy1jcmFzaC1sb2cu
dHh0VVQFAAOBy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAANYAxSQAAAAAAAAAAAAAAACAA
GAAAAAAAAAAQAO1B6CsDAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvVVQFAANWy91X
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgANYAxSYV8Eq2QAAAA+gAAAEcAGAAAAAAAAQAAAKSB
QiwDAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1p
bWFnZS1jcmFzaC1sb2cudHh0VVQFAANWy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAANYAx
SQAAAAAAAAAAAAAAAB0AGAAAAAAAAAAQAO1BUy0DAGNvbXBvc2l0aW5nL2JhY2tncm91bmQtY29s
b3IvVVQFAANWy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAG4AxSTFLr5eQAAAA+gAAAEEA
GAAAAAAAAQAAAKSBqi0DAGNvbXBvc2l0aW5nL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1j
b2xvci1hbHBoYS1jcmFzaC1sb2cudHh0VVQFAAMmy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgATYAxSfrjham2NwAAGLgAAEoAGAAAAAAAAQAAAKSBtS4DAGNvbXBvc2l0aW5nL2JhY2tncm91
bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci1jaGFuZ2UtdG8tdGV4dC1jcmFzaC1sb2cudHh0VVQF
AAOBy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAANYAxSQAAAAAAAAAAAAAAABQAGAAAAAAA
AAAQAO1B72YDAGNvbXBvc2l0aW5nL2JhY2tpbmcvVVQFAANWy91XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgANYAxSYV8Eq2QAAAA+gAAADoAGAAAAAAAAQAAAKSBPWcDAGNvbXBvc2l0aW5nL2Jh
Y2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1mbGlwLWNyYXNoLWxvZy50eHRVVAUAA1bL3Vd1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAA1gDFJhXwSrZAAAAD6AAAAJgAYAAAAAAABAAAApIFBaAMA
Y29tcG9zaXRpbmcvY2hlY2tlcmJvYXJkLWNyYXNoLWxvZy50eHRVVAUAA1bL3Vd1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACABNgDFJrl9/IUc4AACQuQAAVwAYAAAAAAABAAAApIExaQMAY29tcG9z
aXRpbmcvY2hpbGQtbGF5ZXItd2l0aC1zdWJwaXhlbC1nYXAtbmVlZHMtcmVwYWludC13aGVuLXBh
cmVudC1tb3Zlcy1jcmFzaC1sb2cudHh0VVQFAAOBy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAJoAxSQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BCaIDAGNvbXBvc2l0aW5nL2NvbHVtbnMv
VVQFAAM3y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAGIAxSXiCeEmQAAAA+gAAADwAGAAA
AAAAAQAAAKSBV6IDAGNvbXBvc2l0aW5nL2NvbHVtbnMvY29tcG9zaXRlZC1pbi1wYWdpbmF0ZWQt
cmwtY3Jhc2gtbG9nLnR4dFVUBQADIMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEyAMUn8
rn1/NTgAAHu5AABBABgAAAAAAAEAAACkgV2jAwBjb21wb3NpdGluZy9jb2x1bW5zL2hpdHRlc3Qt
Y29tcG9zaXRlZC1pbi1wYWdpbmF0ZWQtY3Jhc2gtbG9nLnR4dFVUBQADgMvdV3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAByAMUkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQQ3cAwBjb21wb3Np
dGluZy9maWx0ZXJzL1VUBQADJ8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAByAMUkxS6+X
kAAAAPoAAABRABgAAAAAAAEAAACkgVvcAwBjb21wb3NpdGluZy9maWx0ZXJzL29wYWNpdHktY2hh
bmdlLW9uLWZpbHRlcmVkLXBhaW50cy1pbnRvLWFuY2VzdG9yLWNyYXNoLWxvZy50eHRVVAUAAyfL
3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAYgDFJAAAAAAAAAAAAAAAAGwAYAAAAAAAAABAA
7UF23QMAY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vVVQFAAMgy91XdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAGIAxSXiCeEmQAAAA+gAAAEgAGAAAAAAAAQAAAKSBy90DAGNvbXBvc2l0aW5n
L2xheWVyLWNyZWF0aW9uL2FuaW1hdGlvbi1vdmVybGFwLXdpdGgtY2hpbGRyZW4tY3Jhc2gtbG9n
LnR4dFVUBQADIMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADaAMUkAAAAAAAAAAAAAAAAS
ABgAAAAAAAAAEADtQd3eAwBjb21wb3NpdGluZy9tYXNrcy9VVAUAA1fL3Vd1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACAAqgDFJ9SwgmJEAAAD6AAAAMQAYAAAAAAABAAAApIEp3wMAY29tcG9zaXRp
bmcvbWFza3MvYmVjb21lLXRpbGVkLW1hc2stY3Jhc2gtbG9nLnR4dFVUBQADP8vdV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAEyAMUlr93QsvTcAABi4AAAwABgAAAAAAAEAAACkgSXgAwBjb21w
b3NpdGluZy9tYXNrcy9jZWFzZS10aWxlZC1tYXNrLWNyYXNoLWxvZy50eHRVVAUAA4DL3Vd1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAAAqgDFJAAAAAAAAAAAAAAAAHQAYAAAAAAAAABAA7UFMGAQA
Y29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9VVAUAAz/L3Vd1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAAqgDFJZmQ8YpAAAAD6AAAARgAYAAAAAAABAAAApIGjGAQAY29tcG9zaXRpbmcvb3Zl
cmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtY3Jhc2gtbG9nLnR4dFVU
BQADP8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADGAMUkAAAAAAAAAAAAAAAAVABgAAAAA
AAAAEADtQbMZBABjb21wb3NpdGluZy9wYXR0ZXJucy9VVAUAA07L3Vd1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACABMgDFJ/qorWWA4AACkxgAARAAYAAAAAAABAAAApIECGgQAY29tcG9zaXRpbmcv
cGF0dGVybnMvZGlyZWN0LXBhdHRlcm4tY29tcG9zaXRpbmctY2hhbmdlLWNyYXNoLWxvZy50eHRV
VAUAA4DL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAA2gDFJAAAAAAAAAAAAAAAAFAAYAAAA
AAAAABAA7UHgUgQAY29tcG9zaXRpbmcvcGx1Z2lucy9VVAUAA1fL3Vd1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACABNgDFJNKBgal45AACAvQAANwAYAAAAAAABAAAApIEuUwQAY29tcG9zaXRpbmcv
cGx1Z2lucy8xeDEtY29tcG9zaXRlZC1wbHVnaW4tY3Jhc2gtbG9nLnR4dFVUBQADgcvdV3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAEyAMUk0OGm1sTcAAJC4AAAiABgAAAAAAAEAAACkgf2MBABE
dW1wUmVuZGVyVHJlZS04ODQ5OS1jcmFzaC1sb2cudHh0VVQFAAOAy91XdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgATYAxSRB0biRsOAAALMYAACIAGAAAAAAAAQAAAKSBCsUEAER1bXBSZW5kZXJU
cmVlLTg4NTA3LWNyYXNoLWxvZy50eHRVVAUAA4HL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CABMgDFJv/JpF+A5AABsywAAIgAYAAAAAAABAAAApIHS/QQARHVtcFJlbmRlclRyZWUtODg1MDgt
Y3Jhc2gtbG9nLnR4dFVUBQADgMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEyAMUmG/V2j
1DoAAGrEAAAiABgAAAAAAAEAAACkgQ44BQBEdW1wUmVuZGVyVHJlZS04ODUxMS1jcmFzaC1sb2cu
dHh0VVQFAAOAy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgATYAxSXGbC7G0NwAA7rcAACIA
GAAAAAAAAQAAAKSBPnMFAER1bXBSZW5kZXJUcmVlLTg4NTEzLWNyYXNoLWxvZy50eHRVVAUAA4HL
3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA2gDFJYrw2xaICAADkBwAADQAYAAAAAAABAAAA
pIFOqwUAZXJyb3JfbG9nLnR4dFVUBQADWMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAE2A
MUlqW4EspAMAAOAOAAARABgAAAAAAAEAAACkgTeuBQBmdWxsX3Jlc3VsdHMuanNvblVUBQADgcvd
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAAGAMUlbBFgOogUAAE0QAAAKABgAAAAAAAEAAACk
gSayBQBodHRwZC5jb25mVVQFAAPxyt1XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAAoAxSQAA
AAAAAAAAAAAAABoAGAAAAAAAAAAAAKSBDLgFAHB5d2Vic29ja2V0LndzLmxvZy1lcnIudHh0VVQF
AAPzyt1XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAAYAxSQAAAAAAAAAAAAAAABoAGAAAAAAA
AAAAAKSBYLgFAHB5d2Vic29ja2V0LndzLmxvZy1vdXQudHh0VVQFAAPyyt1XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAAoAxSQAAAAAAAAAAAAAAABsAGAAAAAAAAAAAAKSBtLgFAHB5d2Vic29j
a2V0Lndzcy5sb2ctZXJyLnR4dFVUBQAD9MrdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAAKA
MUkAAAAAAAAAAAAAAAAbABgAAAAAAAAAAACkgQm5BQBweXdlYnNvY2tldC53c3MubG9nLW91dC50
eHRVVAUAA/PK3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABNgDFJRSYdOdEnAADLqgAADAAY
AAAAAAABAAAApIFeuQUAcmVzdWx0cy5odG1sVVQFAAOCy91XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgATYAxSQxp2pCbCgAA0SYAAAoAGAAAAAAAAQAAAKSBdeEFAHN0YXRzLmpzb25VVAUAA4HL
3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAJgDFJeOYYkuQEAAD2GgAAGQAYAAAAAAABAAAA
pIFU7AUAd3B0d2tfcHJvY2Vzc19sb2cub3V0LnR4dFVUBQADAcvdV3V4CwABBPUBAAAEUAAAAFBL
BQYAAAAATABMACUgAACL8QUAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>289181</attachid>
            <date>2016-09-17 16:39:58 -0700</date>
            <delta_ts>2016-09-18 14:21:06 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews107 for mac-yosemite-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>430945</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
c3NpYmlsaXR5L1VUCQAD0cvdVyrM3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAKYAxSU58+y5o
AAAAawAAAC4AHABhY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtY2hlY2tlZC1zdGRlcnIudHh0
VVQJAAM9y91XPcvdV3V4CwABBPUBAAAEUAAAADMyMDTTNbDUNTRXMDSzMjC0MjTXMzQxVEjOz9VL
LCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblAdrSFgQlQk7GRqZGhRayCX7BTaUlJfp5jXmZu
Yklmfl6xa15iUk5qiq2fPxcAUEsDBBQAAgAIACqAMUl3SKmgaQAAAGsAAAAvABwAYWNjZXNzaWJp
bGl0eS9heHByZXNzLW9uLWFyaWEtYnV0dG9uLXN0ZGVyci50eHRVVAkAA0DL3VdAy91XdXgLAAEE
9QEAAARQAAAAMzIwNNM1sNQ1NFcwNLMyMLQyMtAzNzFUSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5
JXouqWWpOfkFuUB2tIWBiZmxlbGRmYGxWayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5qiq2fPxcA
UEsDBBQAAgAIAFqAMUmfYFLfQwAAAEYAAAAyABwAYWNjZXNzaWJpbGl0eS9lbXB0eS1pbWFnZS13
aXRoLXRpdGxlLWNyYXNoLWxvZy50eHRVVAkAA5zL3Vecy91XdXgLAAEE9QEAAARQAAAA88tXSC5K
LM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrIwMDEz
1uMCAFBLAwQUAAIACABagDFJjo0zL2kAAABrAAAANAAcAGFjY2Vzc2liaWxpdHkvZm9ybS1jb250
cm9sLXZhbHVlLXNldHRhYmxlLXN0ZGVyci50eHRVVAkAA5zL3Vecy91XdXgLAAEE9QEAAARQAAAA
MzIwNNM1sNQ1NFcwNLMyMLIyNdKzMDJSSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkF
uUB2tIWBqbmZlbGZpZGpSayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBBQAAgAI
AKaAMUnbxt041EIAAHcPAQAzABwAYWNjZXNzaWJpbGl0eS9pbWctYXJpYS1idXR0b24tYWx0LXRh
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
+QfLdljnOUj8Xj1Sxc0kjLn25YV8GUXkrQywDnzMN2mVccPizaCtMkhQlrYRVHDEenzw2ERAnJI0
hZ87Apxhup2LGWlrY5UFlzhYQ6b5vGnk5FgLnclk6t0eWUpZl4dH0FaSrpd5uxHaNABrtka/pCh5
IwYzmhED6EvkeGMynDnPfjMHMGA01F6KZP6T3CkU5RbWW6y4daLgBqjoGqH2LXvFK/hQjV8TqNAR
NI59J3LuMWB3TQQdhc4wuANrGTAFcTwZPY0DH2ShGanOS6xR8G90bwAsnK04nj2NvKl/mwXLgilY
q/VN8OqrGdKmiPWwuNbl/DYXWF8fWODRNHIm5O7MdsWwBP1MQAL3u6v1UK6DklXOUAaIpv0PUEsD
BAoAAAAAAFqAMUkAAAAAAAAAAAAAAAAMABwAY29tcG9zaXRpbmcvVVQJAAOby91XKszdV3V4CwAB
BPUBAAAEUAAAAFBLAwQKAAAAAABCgDFJAAAAAAAAAAAAAAAAGwAcAGNvbXBvc2l0aW5nL2xheWVy
LWNyZWF0aW9uL1VUCQADbMvdVyrM3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgApoAxSXpMrQbs
PwAAg/oAAEoAHABjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQt
b2Ytdmlldy1zY2FsZWQtY3Jhc2gtbG9nLnR4dFVUCQADJ8zdV2zL3Vd1eAsAAQT1AQAABFAAAADs
XFtzm8i2fj78Ch52TclJsGm6oYHy8S6EUOIZ38qyk6lKTakaaGx2EGgAxfZ+OL/9rAYkgy6OyeSc
ytSWK2Ur0L3Wt1avazfiKs8CXhS23P0Jstkhm88TfviJ+7/FpfjjZmnJ0/JwxL/yJJvP4LP82VQJ
RX9IV6y8X6cBP0cfs2Qx48XRx8uz23Pv6M1RQy7K2Yw/ZPmXo488L+IsLY6co9+v3AnPv8YA6Ogl
AI/z4Kj5XByds+BycvRKvNJpCL/jKOa5/UpxpQbgunSGit/KA/h9iA6NtweSm4Vcvnma8+7A301D
MYg8uGBl/JUfgKJyoberNbX/85//lD+DHq95MQdlxH7SoVPcy581ov8h3RY8l09H62B0FUnSVbK4
O03lzaXYtQo3vCivF2nK89P0XzwoeThcpCEowa/+rOv45UlL9psaft28TTULnQzUA0kasZIf3cSz
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
BFAAAABQSwMEFAACAAgAW4AxSUnlxdJDAAAARgAAAEIAHABjc3MyLjEvMjAxMTAzMjMvYWJzcG9z
LWNvbnRhaW5pbmctYmxvY2staW5pdGlhbC0wMDRjLWNyYXNoLWxvZy50eHRVVAkAA53L3Vedy91X
dXgLAAEE9QEAAARQAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/
ryQ1r0TPJbUsNSe/IBfItrIwMDGz1OMCAFBLAwQUAAIACACPgDFJmSiiB0MAAABGAAAAOQAcAGNz
czIuMS8yMDExMDMyMy9ib3JkZXItY29uZmxpY3QtZWxlbWVudC0wMjItY3Jhc2gtbG9nLnR4dFVU
CQAD/cvdV/3L3Vd1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmp
euGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2sjAwtTDR4wIAUEsDBBQAAgAIAFqAMUmaDSzLQwAA
AEYAAAAsABwAY3NzMi4xL3QwODAzLWM1NTA0LW1yZ24tbC0wMi1jLWNyYXNoLWxvZy50eHRVVAkA
A5zL3Vecy91XdXgLAAEE9QEAAARQAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrh
qUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrIwMDE10+MCAFBLAwQUAAIACACNgDFJq8HbVkMAAABG
AAAALQAcAGNzczIuMS90MTAwOC1jNDQtbG4tYm94LTAwLWQtYWctY3Jhc2gtbG9nLnR4dFVUCQAD
+cvdV/nL3Vd1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGp
Sd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2sjAwNbfQ4wIAUEsDBAoAAAAAAI+AMUkAAAAAAAAAAAAA
AAAFABwAY3NzMy9VVAkAA/3L3VcqzN1XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAACuAMUkAAAAA
AAAAAAAAAAAQABwAY3NzMy9iYWNrZ3JvdW5kL1VUCQADQsvdVyrM3Vd1eAsAAQT1AQAABFAAAABQ
SwMEFAACAAgAK4AxSU/TEhy/AAAA8gYAADgAHABjc3MzL2JhY2tncm91bmQvYmFja2dyb3VuZC1y
ZXBlYXQtcm91bmQtYXV0bzEtc3RkZXJyLnR4dFVUCQADQsvdV0LL3Vd1eAsAAQT1AQAABFAAAADt
zzELwjAUBODdX5FRB5s2tloLDloUHESho0h5pg+Nxqa8RiH/XsVBB1cHIdvddPdto2EWRpkQQTwS
O6YsXqB1tSwLtBsyDZJ1rFWHGrTGiiHRpB+JUZqw7nmhDjNocb0/obRzIkPlsr6BVhVYrHqsqz4b
WMYLcyWJOcgj8twQrrBS8E79KBmKQMQhf0xbY12DLd9ocEj8MfZK5fT5L5BMqxqZEONBZ+sRHvEb
RPyJyE3j/kIRpqlXeIVXfFHcAVBLAwQKAAAAAABbgDFJAAAAAAAAAAAAAAAACgAcAGNzczMvY2Fs
Yy9VVAkAA57L3VcqzN1XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAFuAMUl2ABbCQwAAAEYAAAA6
ABwAY3NzMy9jYWxjL2dldENvbXB1dGVkU3R5bGUtbWFyZ2luLXBlcmNlbnRhZ2UtY3Jhc2gtbG9n
LnR4dFVUCQADnsvdV57L3Vd1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5
eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2sjAwNTDR4wIAUEsDBAoAAAAAAFyAMUkA
AAAAAAAAAAAAAAARABwAY3NzMy9jb25kaXRpb25hbC9VVAkAA6DL3VcqzN1XdXgLAAEE9QEAAARQ
AAAAUEsDBAoAAAAAAFyAMUkAAAAAAAAAAAAAAAAVABwAY3NzMy9jb25kaXRpb25hbC93M2MvVVQJ
AAOgy91XKszdV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABcgDFJp6S1hEMAAABGAAAAMgAcAGNz
czMvY29uZGl0aW9uYWwvdzNjL2F0LXN1cHBvcnRzLTAzMi1jcmFzaC1sb2cudHh0VVQJAAOgy91X
oMvdV3V4CwABBPUBAAAEUAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pkl
IMo5P68kNa9EzyW1LDUnvyAXyLayMDCxNNTjAgBQSwMECgAAAAAAYIAxSQAAAAAAAAAAAAAAAA0A
HABjc3MzL2ZpbHRlcnMvVVQJAAOjy91XKszdV3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAABdgDFJ
AAAAAAAAAAAAAAAAFgAcAGNzczMvZmlsdGVycy9iYWNrZHJvcC9VVAkAA6HL3VcqzN1XdXgLAAEE
9QEAAARQAAAAUEsDBBQAAgAIAF2AMUlxOIXvQwAAAEYAAABVABwAY3NzMy9maWx0ZXJzL2JhY2tk
cm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24tY3Jh
c2gtbG9nLnR4dFVUCQADocvdV6HL3Vd1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsB
kkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2sjAwMTbX4wIAUEsDBBQAAgAI
AGCAMUkduezVQwAAAEYAAAAxABwAY3NzMy9maWx0ZXJzL2ZpbHRlcnMtb24tc3ZnLWVsZW1lbnQt
Y3Jhc2gtbG9nLnR4dFVUCQADo8vdV6PL3Vd1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsv
zUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2sjAwNTbW4wIAUEsDBAoA
AAAAAGCAMUkAAAAAAAAAAAAAAAANABwAY3NzMy9mbGV4Ym94L1VUCQADpMvdVyrM3Vd1eAsAAQT1
AQAABFAAAABQSwMECgAAAAAAYYAxSQAAAAAAAAAAAAAAABMAHABjc3MzL2ZsZXhib3gvY3Nzd2cv
VVQJAAOly91XKszdV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABhgDFJrZCM6EMAAABGAAAANgAc
AGNzczMvZmxleGJveC9jc3N3Zy9mbGV4LWNvbnRhaW5lci1tYXJnaW4tY3Jhc2gtbG9nLnR4dFVU
CQADpcvdV6XL3Vd1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmp
euGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2sjAwMTbW4wIAUEsDBBQAAgAIAC+AMUnMdd9lvwAA
APIGAAAsABwAY3NzMy9mbGV4Ym94L2Nzc3dnL0ZsZXhpYmxlLW9yZGVyLXN0ZGVyci50eHRVVAkA
A0rL3VdKy91XdXgLAAEE9QEAAARQAAAA7c8xC8IwFATg3V+RUYc2bWq1FRy0KDiIgqNIeaYPjcam
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
JJgmDMFKzhoEzxLbIUEQWajsVXZVjm/7BVr7iWkjGkfO021N7LFBCfoHAQncbSv6UOpBKdbc6Jkh
THLKv1BLAwQUAAIACABbgDFJotBs9kMAAABGAAAALgAcAGNzczMvb3ZlcndyaXRlLWNvbnRlbnQt
YWxpZ25tZW50LWNyYXNoLWxvZy50eHRVVAkAA57L3Veey91XdXgLAAEE9QEAAARQAAAA88tXSC5K
LM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrIwMDGw
0OMCAFBLAwQKAAAAAABygDFJAAAAAAAAAAAAAAAAEAAcAGNzczMvc2VsZWN0b3JzMy9VVAkAA8jL
3VcqzN1XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAFSAMUkAAAAAAAAAAAAAAAAVABwAY3NzMy9z
ZWxlY3RvcnMzL2h0bWwvVVQJAAOQy91XKszdV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABUgDFJ
spgvGmkAAABrAAAALgAcAGNzczMvc2VsZWN0b3JzMy9odG1sL2NzczMtbW9kc2VsLTI1LXN0ZGVy
ci50eHRVVAkAA5DL3VeQy91XdXgLAAEE9QEAAARQAAAAMzIwNNM1sNQ1NFcwNLMyMLIyMdCzMDVV
SM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tIWBqamZlbGJmaGlWayCX7BTaUlJ
fp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBAoAAAAAAHKAMUkAAAAAAAAAAAAAAAAWABwAY3Nz
My9zZWxlY3RvcnMzL3hodG1sL1VUCQADyMvdVyrM3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgA
poAxSdo2uurwRAAArw4BADQAHABjc3MzL3NlbGVjdG9yczMveGh0bWwvY3NzMy1tb2RzZWwtMTA4
Yi1jcmFzaC1sb2cudHh0VVQJAAMnzN1XyMvdV3V4CwABBPUBAAAEUAAAAOxc7W/bOJP/fPor9OFQ
OG3liCKpN+SykGW5zW7eECdtgaIwKIlK9FSWvJLcJPfh/vYbSrIjv6VRt3vXxeOgSB2RnPnNcGY4
Q8q8zLOAF4Utr/4E2bTPZrOE9z9y/4+4FP+5WVrytOwP+TeeZLMpfJY/myql+hfpkpV36zTg5/BD
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
LxhIS6Uw6A0eBqeGjFR3nYeRTe6C3th+TNspJc6RzsM6f/p6rsNoBPMPZv3EC2ZH7iQptMCn4hEH
wtA3dRupwVndmUxSO7JnGMBDaCRF4eNxfzDqf3hobQANvTWZ9Ie2584UK5knHfQ/3LkURli7VESh
WJPJyH0enWurqCQdf+gn9+lpFqSEjn3za1GAd3UnupVhqZuF4K0cNa0Pzq9vWIxG9yM7ODtradf0
StKfAxjX76vKLCtn146U9WDp7PwHUEsDBAoAAAAAAFqAMUkAAAAAAAAAAAAAAAAUABwAY3NzMy9z
ZWxlY3RvcnMzL3htbC9VVAkAA5zL3VcqzN1XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAFqAMUl2
wOlgaQAAAGsAAAAtABwAY3NzMy9zZWxlY3RvcnMzL3htbC9jc3MzLW1vZHNlbC0yNS1zdGRlcnIu
dHh0VVQJAAOcy91XnMvdV3V4CwABBPUBAAAEUAAAADMyMDTTNbDUNTRXMDSzMjCyMjXSMzUxUkjO
z9VLLCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblAdrSFgamZsZWxmYWxuVmsgl+wU2lJSX6e
Y15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQKAAAAAACPgDFJAAAAAAAAAAAAAAAADAAcAGNzczMv
c2hhcGVzL1VUCQAD/cvdVyrM3Vd1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAj4AxSQAAAAAAAAAA
AAAAABoAHABjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRlL1VUCQAD/svdVyrM3Vd1eAsAAQT1AQAA
BFAAAABQSwMECgAAAAAAj4AxSQAAAAAAAAAAAAAAACsAHABjc3MzL3NoYXBlcy9zaGFwZS1vdXRz
aWRlL3N1cHBvcnRlZC1zaGFwZXMvVVQJAAP9y91XKszdV3V4CwABBPUBAAAEUAAAAFBLAwQKAAAA
AACPgDFJAAAAAAAAAAAAAAAAMgAcAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvc3VwcG9ydGVk
LXNoYXBlcy9jaXJjbGUvVVQJAAP9y91XKszdV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACACPgDFJ
TjOTu0MAAABGAAAAWAAcAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvc3VwcG9ydGVkLXNoYXBl
cy9jaXJjbGUvc2hhcGUtb3V0c2lkZS1jaXJjbGUtMDI0LWNyYXNoLWxvZy50eHRVVAkAA/3L3Vf9
y91XdXgLAAEE9QEAAARQAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUg
yjk/ryQ1r0TPJbUsNSe/IBfItrIwMLU00uMCAFBLAwQKAAAAAACPgDFJAAAAAAAAAAAAAAAAIQAc
AGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvdmFsdWVzL1VUCQAD/svdVyrM3Vd1eAsAAQT1AQAA
BFAAAABQSwMEFAACAAgAj4AxSS9JMuJDAAAARgAAAEcAHABjc3MzL3NoYXBlcy9zaGFwZS1vdXRz
aWRlL3ZhbHVlcy9zaGFwZS1vdXRzaWRlLWNpcmNsZS0wMTAtY3Jhc2gtbG9nLnR4dFVUCQAD/svd
V/7L3Vd1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6Z
JSDKOT+vJDWvRM8ltSw1J78gF8i2sjAwNTPW4wIAUEsDBAoAAAAAAGCAMUkAAAAAAAAAAAAAAAAN
ABwAZGlzcGxheWxpc3RzL1VUCQADpMvdVyrM3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAYIAx
SaNX/ehQAAAAjgAAADIAHABkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMt
c3RkZXJyLnR4dFVUCQADpMvdV6TL3Vd1eAsAAQT1AQAABFAAAABzL0osyMhMLnbOzytJrSixskpP
LXEO8dXQVMgsVsjLL1GoTC1RSM7PLUgsyUzKSVUozyzJUChKTc4vSsnMSwfKgLUV63G5oxtUjGYQ
MYYAAFBLAwQUAAIACABggDFJ8paV1UcAAABJAAAAKQAcAGRpc3BsYXlsaXN0cy9sYXllci1kaXNw
YXktbGlzdC1zdGRlcnIudHh0VVQJAAOky91XpMvdV3V4CwABBPUBAAAEUAAAAHMvSizIyEwuds7P
K0mtKLGySk8tcQ7x1dBUyCxWyMsvUahMLVFIzs8tSCzJTMpJVSjPLMlQKEpNzi9KycxLB8qAtRXr
cQEAUEsDBAoAAAAAAIyAMUkAAAAAAAAAAAAAAAAIABwAZWRpdGluZy9VVAkAA/jL3VcqzN1XdXgL
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
FQAAAB0AGAAAAAAAAQAAAKSB2CMAAF93cHRfY2VydHMvaW5kZXgudHh0LmF0dHIub2xkVVQFAAM7
y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAKIAxSZckym03AAAANwAAABgAGAAAAAAAAQAA
AKSBRCQAAF93cHRfY2VydHMvaW5kZXgudHh0Lm9sZFVUBQADO8vdV3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIACiAMUkB27hOBQUAAIsGAAAYABgAAAAAAAEAAACkgc0kAABfd3B0X2NlcnRzL2xv
Y2FsaG9zdC5rZXlVVAUAAzvL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAogDFJksItmegJ
AAA7EgAAGAAYAAAAAAABAAAApIEkKgAAX3dwdF9jZXJ0cy9sb2NhbGhvc3QucGVtVVQFAAM7y91X
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAKIAxSUxKaSMHAAAABwAAABEAGAAAAAAAAQAAAKSB
XjQAAF93cHRfY2VydHMvc2VyaWFsVVQFAAM7y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAA
KIAxSQ17cjoHAAAABwAAABUAGAAAAAAAAQAAAKSBsDQAAF93cHRfY2VydHMvc2VyaWFsLm9sZFVU
BQADO8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACaAMUkAAAAAAAAAAAAAAAAOABgAAAAA
AAAAAACkgQY1AABhY2Nlc3NfbG9nLnR4dFVUBQADN8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAAHeAMUkAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQU41AABhY2Nlc3NpYmlsaXR5L1VUBQAD
0cvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACmAMUlOfPsuaAAAAGsAAAAuABgAAAAAAAEA
AACkgZY1AABhY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtY2hlY2tlZC1zdGRlcnIudHh0VVQF
AAM9y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAKoAxSXdIqaBpAAAAawAAAC8AGAAAAAAA
AQAAAKSBZjYAAGFjY2Vzc2liaWxpdHkvYXhwcmVzcy1vbi1hcmlhLWJ1dHRvbi1zdGRlcnIudHh0
VVQFAANAy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWoAxSZ9gUt9DAAAARgAAADIAGAAA
AAAAAQAAAKSBODcAAGFjY2Vzc2liaWxpdHkvZW1wdHktaW1hZ2Utd2l0aC10aXRsZS1jcmFzaC1s
b2cudHh0VVQFAAOcy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWoAxSY6NMy9pAAAAawAA
ADQAGAAAAAAAAQAAAKSB5zcAAGFjY2Vzc2liaWxpdHkvZm9ybS1jb250cm9sLXZhbHVlLXNldHRh
YmxlLXN0ZGVyci50eHRVVAUAA5zL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACmgDFJ28bd
ONRCAAB3DwEAMwAYAAAAAAABAAAApIG+OAAAYWNjZXNzaWJpbGl0eS9pbWctYXJpYS1idXR0b24t
YWx0LXRhZy1jcmFzaC1sb2cudHh0VVQFAAMnzN1XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
dYAxSQAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1B/3sAAGFjY2Vzc2liaWxpdHkvbWFjL1VUBQAD
zsvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACqAMUny2QXxaQAAAGsAAABhABgAAAAAAAEA
AACkgUt8AABhY2Nlc3NpYmlsaXR5L21hYy9jaGVja2JveC1wb3N0cy12YWx1ZS1jaGFuZ2Utbm90
aWZpY2F0aW9uLWFmdGVyLWFjdGl2YXRpb24td2l0aC1zcGFjZS1zdGRlcnIudHh0VVQFAAM/y91X
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgApoAxSaVy/2uSRAAAugkBAC0AGAAAAAAAAQAAAKSB
T30AAGFjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9jdXMtY3Jhc2gtbG9nLnR4dFVUBQADJ8zd
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAKaAMUkCNsakp0AAAHQEAQA+ABgAAAAAAAEAAACk
gUjCAABhY2Nlc3NpYmlsaXR5L21hYy9pbmhlcml0ZWQtcHJlc2VudGF0aW9uYWwtbGlzdHMtY3Jh
c2gtbG9nLnR4dFVUBQADJ8zdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAKaAMUn2LE6QF0IA
AB8GAQA8ABgAAAAAAAEAAACkgWcDAQBhY2Nlc3NpYmlsaXR5L21hYy9wb3B1cC1idXR0b24tZXhw
b3Nlcy1heHZhbHVlLWNyYXNoLWxvZy50eHRVVAUAAyfM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMK
AAAAAABhgDFJAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UH0RQEAYW5pbWF0aW9ucy9VVAUAA6bL
3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABhgDFJpiO0U0MAAABGAAAANAAYAAAAAAABAAAA
pIE5RgEAYW5pbWF0aW9ucy9jcmFzaC1vbi1yZW1vdmluZy1hbmltYXRpb24tY3Jhc2gtbG9nLnR4
dFVUBQADpsvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAEOAMUkAAAAAAAAAAAAAAAAHABgA
AAAAAAAAEADtQepGAQBjYW52YXMvVVQFAANty91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
Q4AxSQAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1BK0cBAGNhbnZhcy9waGlsaXAvVVQFAANty91X
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAdoAxSQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1B
c0cBAGNhbnZhcy9waGlsaXAvdGVzdHMvVVQFAAPQy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgApoAxSaoSF464RAAA6AkBAEIAGAAAAAAAAQAAAKSBwUcBAGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuY29tcG9zaXRlLnVuY292ZXJlZC5maWxsLmNvcHktY3Jhc2gtbG9nLnR4dFVUBQADJ8zdV3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAKaAMUniusDGSUYAAMAYAQBAABgAAAAAAAEAAACkgfWM
AQBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5oc2wtY2xhbXAtMS1jcmFz
aC1sb2cudHh0VVQFAAMnzN1XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgApoAxSS8lPoJQRQAA
tg0BAEAAGAAAAAAAAQAAAKSBuNMBAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZ3JhZGllbnQucmFk
aWFsLmNvbmUuc2hhcGUxLWNyYXNoLWxvZy50eHRVVAUAAyfM3Vd1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACACmgDFJln9j+85BAACzCAEAOwAYAAAAAAABAAAApIGCGQIAY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LkRldmVsb3BtZW50LTgwNDAxLWNyYXNoLWxvZy50eHRVVAUAAyfM3Vd1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACACmgDFJLYMIQY1CAAB+BQEAOwAYAAAAAAABAAAApIHFWwIA
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTgwNjIzLWNyYXNoLWxvZy50
eHRVVAUAAyfM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACmgDFJVplI40dBAACRAwEAOwAY
AAAAAAABAAAApIHHngIAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTgw
NjI2LWNyYXNoLWxvZy50eHRVVAUAAyfM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACmgDFJ
9F473mJEAAD7CAEAOwAYAAAAAAABAAAApIGD4AIAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
LkRldmVsb3BtZW50LTgwNjI5LWNyYXNoLWxvZy50eHRVVAUAAyfM3Vd1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACACmgDFJ/ydEidpJAACBLQEAOwAYAAAAAAABAAAApIFaJQMAY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTgwNjMyLWNyYXNoLWxvZy50eHRVVAUAAyfM3Vd1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACmgDFJNDOiTQxBAAAvAwEAOwAYAAAAAAABAAAApIGp
bwMAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTgwNjQyLWNyYXNoLWxv
Zy50eHRVVAUAAyfM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABagDFJAAAAAAAAAAAAAAAA
DAAYAAAAAAAAABAA7UEqsQMAY29tcG9zaXRpbmcvVVQFAAOby91XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAAQoAxSQAAAAAAAAAAAAAAABsAGAAAAAAAAAAQAO1BcLEDAGNvbXBvc2l0aW5nL2xh
eWVyLWNyZWF0aW9uL1VUBQADbMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAKaAMUl6TK0G
7D8AAIP6AABKABgAAAAAAAEAAACkgcWxAwBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhl
ZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtY3Jhc2gtbG9nLnR4dFVUBQADJ8zdV3V4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAAC2AMUkAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQTXyAwBj
b21wb3NpdGluZy9vdmVyZmxvdy9VVAUAA0XL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAt
gDFJDP99FmkAAABrAAAAPQAYAAAAAAABAAAApIGE8gMAY29tcG9zaXRpbmcvb3ZlcmZsb3cvdGhl
bWUtYWZmZWN0cy12aXN1YWwtb3ZlcmZsb3ctc3RkZXJyLnR4dFVUBQADRcvdV3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAESAMUkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQWTzAwBjb21wb3Np
dGluZy9yZWdpb25zL1VUBQADb8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAKaAMUmPJM3z
g0AAAM0HAQBCABgAAAAAAAEAAACkgbLzAwBjb21wb3NpdGluZy9yZWdpb25zL2ZpeGVkLWluLWRp
ZmYtbmFtZWQtZmxvd3MtekluZGV4LWNyYXNoLWxvZy50eHRVVAUAAyfM3Vd1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACABEgDFJXIU9vLwAAADyBgAARQAYAAAAAAABAAAApIGxNAQAY29tcG9zaXRp
bmcvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci1jb21wb3NpdGluZy1zdGRlcnIu
dHh0VVQFAANvy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgALoAxSVbDAY/AAAAA8gYAADwA
GAAAAAAAAQAAAKSB7DUEAGNvbXBvc2l0aW5nL3Nob3ctY29tcG9zaXRlZC1pZnJhbWUtb24tYmFj
ay1idXR0b24tc3RkZXJyLnR4dFVUBQADSMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFqA
MUkAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQSI3BABjb21wb3NpdGluZy90aWxpbmcvVVQFAAOb
y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWoAxSabU1nFDAAAARgAAADYAGAAAAAAAAQAA
AKSBbzcEAGNvbXBvc2l0aW5nL3RpbGluZy9vZmZzY3JlZW4tdGlsZWQtbGF5ZXItY3Jhc2gtbG9n
LnR4dFVUBQADm8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACuAMUkAAAAAAAAAAAAAAAAS
ABgAAAAAAAAAEADtQSI4BABjb21wb3NpdGluZy92aWRlby9VVAUAA0LL3Vd1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACAArgDFJxczpHb8AAADyBgAAMgAYAAAAAAABAAAApIFuOAQAY29tcG9zaXRp
bmcvdmlkZW8vdmlkZW8tY2xpcC1jaGFuZ2Utc3JjLXN0ZGVyci50eHRVVAUAA0LL3Vd1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAABagDFJAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UGZOQQAY3J5
cHRvL1VUBQADm8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFqAMUkAAAAAAAAAAAAAAAAO
ABgAAAAAAAAAEADtQdo5BABjcnlwdG8vc3VidGxlL1VUBQADm8vdV3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAFqAMUl0opnZQwAAAEYAAAAuABgAAAAAAAEAAACkgSI6BABjcnlwdG8vc3VidGxl
L3Bvc3RNZXNzYWdlLXdvcmtlci1jcmFzaC1sb2cudHh0VVQFAAOby91XdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgAAAAAAdoAxSQAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1BzToEAGNyeXB0by93b3Jr
ZXJzL1VUBQADz8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFqAMUnNmk5EQwAAAEYAAAA/
ABgAAAAAAAEAAACkgRY7BABjcnlwdG8vd29ya2Vycy9jcnlwdG8tcmFuZG9tLXZhbHVlcy1saW1p
dHMtd29ya2VyLWNyYXNoLWxvZy50eHRVVAUAA5vL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CACmgDFJyEjsfeZBAACvBAEAOAAYAAAAAAABAAAApIHSOwQAY3J5cHRvL3dvcmtlcnMvY3J5cHRv
LXJhbmRvbS12YWx1ZXMtd29ya2VyLWNyYXNoLWxvZy50eHRVVAUAAyfM3Vd1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAACNgDFJAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UEqfgQAY3NzMi4xL1VU
BQAD+cvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAI+AMUkAAAAAAAAAAAAAAAAQABgAAAAA
AAAAEADtQWt+BABjc3MyLjEvMjAxMTAzMjMvVVQFAAP9y91XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAW4AxSUnlxdJDAAAARgAAAEIAGAAAAAAAAQAAAKSBtX4EAGNzczIuMS8yMDExMDMyMy9h
YnNwb3MtY29udGFpbmluZy1ibG9jay1pbml0aWFsLTAwNGMtY3Jhc2gtbG9nLnR4dFVUBQADncvd
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAI+AMUmZKKIHQwAAAEYAAAA5ABgAAAAAAAEAAACk
gXR/BABjc3MyLjEvMjAxMTAzMjMvYm9yZGVyLWNvbmZsaWN0LWVsZW1lbnQtMDIyLWNyYXNoLWxv
Zy50eHRVVAUAA/3L3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABagDFJmg0sy0MAAABGAAAA
LAAYAAAAAAABAAAApIEqgAQAY3NzMi4xL3QwODAzLWM1NTA0LW1yZ24tbC0wMi1jLWNyYXNoLWxv
Zy50eHRVVAUAA5zL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACNgDFJq8HbVkMAAABGAAAA
LQAYAAAAAAABAAAApIHTgAQAY3NzMi4xL3QxMDA4LWM0NC1sbi1ib3gtMDAtZC1hZy1jcmFzaC1s
b2cudHh0VVQFAAP5y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAj4AxSQAAAAAAAAAAAAAA
AAUAGAAAAAAAAAAQAO1BfYEEAGNzczMvVVQFAAP9y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAK4AxSQAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1BvIEEAGNzczMvYmFja2dyb3VuZC9VVAUA
A0LL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAArgDFJT9MSHL8AAADyBgAAOAAYAAAAAAAB
AAAApIEGggQAY3NzMy9iYWNrZ3JvdW5kL2JhY2tncm91bmQtcmVwZWF0LXJvdW5kLWF1dG8xLXN0
ZGVyci50eHRVVAUAA0LL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABbgDFJAAAAAAAAAAAA
AAAACgAYAAAAAAAAABAA7UE3gwQAY3NzMy9jYWxjL1VUBQADnsvdV3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAFuAMUl2ABbCQwAAAEYAAAA6ABgAAAAAAAEAAACkgXuDBABjc3MzL2NhbGMvZ2V0
Q29tcHV0ZWRTdHlsZS1tYXJnaW4tcGVyY2VudGFnZS1jcmFzaC1sb2cudHh0VVQFAAOey91XdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAXIAxSQAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BMoQE
AGNzczMvY29uZGl0aW9uYWwvVVQFAAOgy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAXIAx
SQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BfYQEAGNzczMvY29uZGl0aW9uYWwvdzNjL1VUBQAD
oMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFyAMUmnpLWEQwAAAEYAAAAyABgAAAAAAAEA
AACkgcyEBABjc3MzL2NvbmRpdGlvbmFsL3czYy9hdC1zdXBwb3J0cy0wMzItY3Jhc2gtbG9nLnR4
dFVUBQADoMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGCAMUkAAAAAAAAAAAAAAAANABgA
AAAAAAAAEADtQXuFBABjc3MzL2ZpbHRlcnMvVVQFAAOjy91XdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAAXYAxSQAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1BwoUEAGNzczMvZmlsdGVycy9iYWNr
ZHJvcC9VVAUAA6HL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABdgDFJcTiF70MAAABGAAAA
VQAYAAAAAAABAAAApIEShgQAY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13
aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24tY3Jhc2gtbG9nLnR4dFVUBQADocvdV3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGCAMUkduezVQwAAAEYAAAAxABgAAAAAAAEAAACkgeSG
BABjc3MzL2ZpbHRlcnMvZmlsdGVycy1vbi1zdmctZWxlbWVudC1jcmFzaC1sb2cudHh0VVQFAAOj
y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAYIAxSQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQ
AO1BkocEAGNzczMvZmxleGJveC9VVAUAA6TL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABh
gDFJAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UHZhwQAY3NzMy9mbGV4Ym94L2Nzc3dnL1VUBQAD
pcvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGGAMUmtkIzoQwAAAEYAAAA2ABgAAAAAAAEA
AACkgSaIBABjc3MzL2ZsZXhib3gvY3Nzd2cvZmxleC1jb250YWluZXItbWFyZ2luLWNyYXNoLWxv
Zy50eHRVVAUAA6XL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAvgDFJzHXfZb8AAADyBgAA
LAAYAAAAAAABAAAApIHZiAQAY3NzMy9mbGV4Ym94L2Nzc3dnL0ZsZXhpYmxlLW9yZGVyLXN0ZGVy
ci50eHRVVAUAA0rL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABggDFJTeF/VUMAAABGAAAA
MwAYAAAAAAABAAAApIH+iQQAY3NzMy9mbGV4Ym94L2ZsZXhib3gtaWdub3JlLWZpcnN0TGluZS1j
cmFzaC1sb2cudHh0VVQFAAOky91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAW4AxSQAAAAAA
AAAAAAAAAA0AGAAAAAAAAAAQAO1BrooEAGNzczMvbWFza2luZy9VVAUAA53L3Vd1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACACmgDFJe+lPT/NBAACaDgEAKwAYAAAAAAABAAAApIH1igQAY3NzMy9t
YXNraW5nL2NsaXAtcGF0aC1jaXJjbGUtY3Jhc2gtbG9nLnR4dFVUBQADJ8zdV3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAFuAMUmi0Gz2QwAAAEYAAAAuABgAAAAAAAEAAACkgU3NBABjc3MzL292
ZXJ3cml0ZS1jb250ZW50LWFsaWdubWVudC1jcmFzaC1sb2cudHh0VVQFAAOey91XdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAAcoAxSQAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1B+M0EAGNzczMv
c2VsZWN0b3JzMy9VVAUAA8jL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABUgDFJAAAAAAAA
AAAAAAAAFQAYAAAAAAAAABAA7UFCzgQAY3NzMy9zZWxlY3RvcnMzL2h0bWwvVVQFAAOQy91XdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAVIAxSbKYLxppAAAAawAAAC4AGAAAAAAAAQAAAKSBkc4E
AGNzczMvc2VsZWN0b3JzMy9odG1sL2NzczMtbW9kc2VsLTI1LXN0ZGVyci50eHRVVAUAA5DL3Vd1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABygDFJAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UFi
zwQAY3NzMy9zZWxlY3RvcnMzL3hodG1sL1VUBQADyMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAKaAMUnaNrrq8EQAAK8OAQA0ABgAAAAAAAEAAACkgbLPBABjc3MzL3NlbGVjdG9yczMveGh0
bWwvY3NzMy1tb2RzZWwtMTA4Yi1jcmFzaC1sb2cudHh0VVQFAAMnzN1XdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgAAAAAAWoAxSQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BEBUFAGNzczMvc2VsZWN0
b3JzMy94bWwvVVQFAAOcy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWoAxSXbA6WBpAAAA
awAAAC0AGAAAAAAAAQAAAKSBXhUFAGNzczMvc2VsZWN0b3JzMy94bWwvY3NzMy1tb2RzZWwtMjUt
c3RkZXJyLnR4dFVUBQADnMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAI+AMUkAAAAAAAAA
AAAAAAAMABgAAAAAAAAAEADtQS4WBQBjc3MzL3NoYXBlcy9VVAUAA/3L3Vd1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAACPgDFJAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UF0FgUAY3NzMy9zaGFw
ZXMvc2hhcGUtb3V0c2lkZS9VVAUAA/7L3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACPgDFJ
AAAAAAAAAAAAAAAAKwAYAAAAAAAAABAA7UHIFgUAY3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lkZS9z
dXBwb3J0ZWQtc2hhcGVzL1VUBQAD/cvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAI+AMUkA
AAAAAAAAAAAAAAAyABgAAAAAAAAAEADtQS0XBQBjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRlL3N1
cHBvcnRlZC1zaGFwZXMvY2lyY2xlL1VUBQAD/cvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AI+AMUlOM5O7QwAAAEYAAABYABgAAAAAAAEAAACkgZkXBQBjc3MzL3NoYXBlcy9zaGFwZS1vdXRz
aWRlL3N1cHBvcnRlZC1zaGFwZXMvY2lyY2xlL3NoYXBlLW91dHNpZGUtY2lyY2xlLTAyNC1jcmFz
aC1sb2cudHh0VVQFAAP9y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAj4AxSQAAAAAAAAAA
AAAAACEAGAAAAAAAAAAQAO1BbhgFAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvdmFsdWVzL1VU
BQAD/svdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAI+AMUkvSTLiQwAAAEYAAABHABgAAAAA
AAEAAACkgckYBQBjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRlL3ZhbHVlcy9zaGFwZS1vdXRzaWRl
LWNpcmNsZS0wMTAtY3Jhc2gtbG9nLnR4dFVUBQAD/svdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAAGCAMUkAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQY0ZBQBkaXNwbGF5bGlzdHMvVVQFAAOk
y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAYIAxSaNX/ehQAAAAjgAAADIAGAAAAAAAAQAA
AKSB1BkFAGRpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1zdGRlcnIudHh0
VVQFAAOky91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAYIAxSfKWldVHAAAASQAAACkAGAAA
AAAAAQAAAKSBkBoFAGRpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1zdGRlcnIudHh0VVQF
AAOky91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAjIAxSQAAAAAAAAAAAAAAAAgAGAAAAAAA
AAAQAO1BOhsFAGVkaXRpbmcvVVQFAAP4y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAjIAx
SQAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BfBsFAGVkaXRpbmcvZGVsZXRpbmcvVVQFAAP4y91X
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgApoAxSbTxKPZRQAAAuQABADMAGAAAAAAAAQAAAKSB
xxsFAGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLXN1cnJvZ2F0ZXBhaXItY3Jhc2gtbG9nLnR4dFVU
BQADJ8zdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAI+AMUmwoptGogIAAOQHAAANABgAAAAA
AAEAAACkgYVcBQBlcnJvcl9sb2cudHh0VVQFAAP+y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgApoAxSYRfV2ouBAAAoA8AABEAGAAAAAAAAQAAAKSBbl8FAGZ1bGxfcmVzdWx0cy5qc29uVVQF
AAMozN1XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAJoAxSVsEWA6iBQAATRAAAAoAGAAAAAAA
AQAAAKSB52MFAGh0dHBkLmNvbmZVVAUAAzfL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAm
gDFJAAAAAAAAAAAAAAAAGgAYAAAAAAAAAAAApIHNaQUAcHl3ZWJzb2NrZXQud3MubG9nLWVyci50
eHRVVAUAAzjL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAmgDFJAAAAAAAAAAAAAAAAGgAY
AAAAAAAAAAAApIEhagUAcHl3ZWJzb2NrZXQud3MubG9nLW91dC50eHRVVAUAAzjL3Vd1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAAAngDFJAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIF1agUAcHl3
ZWJzb2NrZXQud3NzLmxvZy1lcnIudHh0VVQFAAM5y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAJ4AxSQAAAAAAAAAAAAAAABsAGAAAAAAAAAAAAKSBymoFAHB5d2Vic29ja2V0Lndzcy5sb2ct
b3V0LnR4dFVUBQADOcvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAKeAMUlFJh050ScAAMuq
AAAMABgAAAAAAAEAAACkgR9rBQByZXN1bHRzLmh0bWxVVAUAAynM3Vd1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACACmgDFJWQdhDI3LAABZpwQACgAYAAAAAAABAAAApIE2kwUAc3RhdHMuanNvblVU
BQADKMzdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAC2AMUlIPHYE2QQAAKwbAAAZABgAAAAA
AAEAAACkgQdfBgB3cHR3a19wcm9jZXNzX2xvZy5vdXQudHh0VVQFAANFy91XdXgLAAEE9QEAAARQ
AAAAUEsFBgAAAAByAHIAGC8AADNkBgAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>289182</attachid>
            <date>2016-09-17 16:47:24 -0700</date>
            <delta_ts>2016-09-18 14:21:06 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews121 for ios-simulator-elcapitan-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>529941</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
AwQUAAIACABzfzFJ88oRzfMAAAAdAgAAJQAcAGFjY2Vzc2liaWxpdHkvYXJpYS1jdXJyZW50LXN0
ZGVyci50eHRVVAkAA9nK3VfZyt1XdXgLAAEE9QEAAARQAAAAzZHBSsNAEEDvfsUc7SXb1ErVW23x
YsFAQAXxsMlOyNjdnWVnk9i/d8UKgvXudd4bmMdw89a+LFfl1cXrDWysFoFqdzuQNY8YhdgDCZAL
Fh36hAbIQ8OpB7UOwVKrU3ZEPbdssNAhqA1nzSdRWxzRcsCoKqtTx9GJoqpnjzW5IY84FuFIfsj1
9v63J2av6oMkdGpHTdTxoKpIo054F7XDieNe1FoEkxx5jXGkFqXovoXTHM7n72W5Wl6a63I+A+3N
PyzLO4n/DjuFv7oQO1zkrgIePAJ3kHqENDFMZC00CIOgKeCpp7aHfNfnswdvsCOf52cfUEsDBAoA
AAAAAHN/MUkAAAAAAAAAAAAAAAAcABwAYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL1VUCQAD
2crdV0/M3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAc38xSSXN4bj0AAAAHQIAADMAHABhY2Nl
c3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvYWJicmV2aWF0aW9uLXN0ZGVyci50eHRVVAkAA9nK3VfZ
yt1XdXgLAAEE9QEAAARQAAAAzZFNSwMxEEDv/oo56mXTT6reaosXCy4sqCAesptZdmySCZnsrv33
Rqwg2N69znsD8xiu35vXxWp6vXy7hY3VIlDu7nqy5gmjEHsgAXLBokOf0AB5qDl1oNYhWGp0yo6o
l4YNFjoEteGs+SRqiwNaDhhVaXVqOTpRVHbssSLX5xHHIhzJL7naPvz1xOxVdZCETu2ojjoeVBlp
0Anvo3Y4ctyLWotgkiOvMA7UoBTtj3Caw+XkYzqbL1b1zXRyBdqbf1iWdxKfDzuFv7t0O1/OclcB
jx6BW0gdQhoZRrIWaoRe0BTw3FHTQb7r69m9N9iSz/OLT1BLAwQKAAAAAABzfzFJAAAAAAAAAAAA
AAAAGgAcAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvVVQJAAPZyt1XT8zdV3V4CwABBPUBAAAE
UAAAAFBLAwQUAAIACABzfzFJr3gRhvYAAAAdAgAAVgAcAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJr
ZXIvY2hhcmFjdGVyLW9mZnNldC12aXNpYmxlLXBvc2l0aW9uLWNvbnZlcnNpb24taGFuZy1zdGRl
cnIudHh0VVQJAAPZyt1X2crdV3V4CwABBPUBAAAEUAAAAM2RTUvDQBBA7/6KOeol28SPVm+1xYsF
AwEVxMMmOyFjd3eWnU1j/72rVBCsd6/z3sA8htu37uViXi4WrzewsloE6s3tSNY8YhRiDyRALlh0
6BMaIA8tpwHUMgRLnU7ZEfXcscFCh6BWnDWfRK1xh5YDRlVbnXqOThTVA3tsyI15xLEIB/JDbtb3
vz0xW9XsJaFTG2qjjntVR9rphHdRO5w4bkUtRTDJgTcYd9ShFP23cJzD6ey9LPtq3l6XszPQ3vzD
sryT+O+wY/irq7oy55dV7irgwSNwD2lASBPDRNZCizAKmgKeBuoGyHd9Pnv0BnvyeX7yAVBLAwQK
AAAAAAAngDFJAAAAAAAAAAAAAAAACwAcAGFuaW1hdGlvbnMvVVQJAAM6y91XT8zdV3V4CwABBPUB
AAAEUAAAAFBLAwQKAAAAAABzfzFJAAAAAAAAAAAAAAAADgAcAGFuaW1hdGlvbnMvM2QvVVQJAAPa
yt1XT8zdV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABzfzFJMhpBWvUAAAAdAgAANgAcAGFuaW1h
dGlvbnMvM2QvY2hhbmdlLXRyYW5zZm9ybS1pbi1lbmQtZXZlbnQtc3RkZXJyLnR4dFVUCQAD2srd
V9rK3Vd1eAsAAQT1AQAABFAAAADNkU1Lw0AQQO/+ijnqJdsEP6i32uLFgoGACuJhk52Qsbs7y84m
sf/eVSoI1nuv897APIbb9+718qZcXr/dwtpqEai3dyNZ84RRiD2QALlg0aFPaIA8tJwGUKsQLHU6
ZUfUS8cGCx2CWnPWfBK1wQktB4yqtjr1HJ0oqgf22JAb84hjEQ7kl9xsHv56Ynaq2UtCp7bURh33
qo406YT3UTucOe5ErUQwyYE3GCfqUIr+RzjO4XzxUZZ6cWWW5eICtDcnWJZ3Ev8fdgx/d1WlxqrK
XQU8egTuIQ0IaWaYyVpoEUZBU8DzQN0A+a6vZ4/eYE8+z88+AVBLAwQUAAIACABzfzFJYuQRs/QA
AAAdAgAAMAAcAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVsZS1uYW1lLW51bGwtc3RkZXJyLnR4
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
UdWzw5qGMY04ZP5Efsj17v63J+ag6qNEHNSemqDDUVWBJh3xLugBZw4HURsRjHLiNYaJWpSs+xbO
c7hcvOd5ty6b63xxBdqZf1iWdiL/HXYOf3UV5XK1LlJXBg8OgTuIPUKcGWayFhqEUdBk8NRT20O6
6/PZozPYkUvziw9QSwMECgACAAAAOIAxSfNhw5Y2AAAANgAAADsAHABjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5oc2xhLTEtY3Jhc2gtbG9nLnR4dFVUCQADXMvdV1zL3Vd1
eAsAAQT1AQAABFAAAABObyBjcmFzaCBsb2cgZm91bmQgZm9yIFdlYktpdFRlc3RSdW5uZXJBcHAu
YXBwOjQ3MjMwLgpQSwMEFAACAAgAOoAxSeEu+J71AAAAHQIAADgAHABjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5oc2xhLTItc3RkZXJyLnR4dFVUCQADYMvdV2DL3Vd1eAsA
AQT1AQAABFAAAADNkcFKw0AQQO9+xRz1kk2iteqttnixYCCggnjYZCdk7GZn2dkk9u9dpYJgvXud
9wbmMdy8tS8Xy/P86vUG1laLQLW9HcmaRwxC7IAEaPAWB3QRDZCDhmMPauW9pVbH5Ih6btlgpr1X
a06ai6I2OKFlj0FVVseOwyCKqp4d1jSMacQh8wfyQ6439789MTtV7yXioLbUBB32qgo06Yh3QQ84
c9iJWolglAOvMUzUomTdt3Ccw2n+XhRmacrrIj8D7cw/LEs7kf8OO4a/uspFebkoU1cGDw6BO4g9
QpwZZrIWGoRR0GTw1FPbQ7rr89mjM9iRS/OTD1BLAwQUAAIACAC4gDFJiGM6e9hKAADphAEAPQAc
AGNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5iYXNpYy56ZXJvY2FudmFzLWNyYXNoLWxv
Zy50eHRVVAkAA0zM3Veiy91XdXgLAAEE9QEAAARQAAAA7F1tb9vGsv589Sv44aCQk1DaF77DN4BE
Salbv8Gyk1wUBbEklzZPJFIlKTvuh/vb7+ySkkhJdswkt+lBZRSOTO7OPjM78+zMLsVeZmnA89xR
mj9BOu+xxWLGex+4/2tciH/cNCl4UvRG/J7P0sUcPiu/aSZF1u+dS1bcbcuAn/77dLac87z//uL0
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
J/HfYafwV5cpr1ZV7irgwSNwB6lHSDPDTM5BizAK2gKeejI95Ls+nz16ix35PD/7AFBLAwQKAAAA
AABzfzFJAAAAAAAAAAAAAAAAFgAcAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9VVAkAA9rK3VdPzN1X
dXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAHN/MUktSLF38wAAAB0CAABCABwAY29tcG9zaXRpbmcv
YW5pbWF0aW9uL2FuaW1hdGVkLWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRlbi1zdGRlcnIudHh0VVQJ
AAPayt1X2srdV3V4CwABBPUBAAAEUAAAAM2RTUvEMBBA7/6KOeqlaRdZWW/7gRcXLBRUEA9pM6Hj
ppmQSVv33xtxBcH17nXeG5jHcPvWvVzfLMrl6y1snRaBer8ZyZlHjELsgQRoCA4H9AkNkIeWUw9q
HYKjTqfsiHru2GChQ1BbzppPonY4oeOAUdVOJ8txEEV1zx4bGsY84liEE/khN7v7356Yg2qOknBQ
e2qjjkdVR5p0wruoB5w5HkStRTDJiTcYJ+pQCvstnOdwWb5X1XJlzKoqr0B78w/L8k7iv8PO4a8u
W6Fd5K4CHjwCW0g9QpoZZnIOWoRR0BTw1FPXQ77r89mjN2jJ5/nFB1BLAwQKAAAAAABzfzFJAAAA
AAAAAAAAAAAAIAAcAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvVVQJAAPayt1XT8zd
V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABzfzFJvMmPo/UAAAAdAgAAQQAcAGNvbXBvc2l0aW5n
L2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1zdGRlcnIudHh0VVQJ
AAPayt1X2srdV3V4CwABBPUBAAAEUAAAAM2RwUrDQBBA737FHPWSbWKL6K22eLFgIKCCeNjsTsjY
zc6ys0ns37tKBcF69zrvDcxjuH0zL8urarF8vYGN0yJQ725HcvYRoxB7IAEagsMBfUIL5KHl1INa
h+DI6JQdUc+GLRY6BLXhrPkkaosTOg4YVe106jgOoqju2WNDw5hHHItwJD/kZnv/2xO7V81BEg5q
R23U8aDqSJNOeBf1gDPHvai1CCY58gbjRAal6L6F0xzOF+9l2a7a8rpcXID29h+W5Z3Ef4edwl9d
1aVZdVXuKuDBI3AHqUdIM8NMzkGLMAraAp56Mj3kuz6fPXqLHfk8P/sAUEsDBAoAAAAAAHR/MUkA
AAAAAAAAAAAAAAAdABwAY29tcG9zaXRpbmcvYmFja2dyb3VuZC1jb2xvci9VVAkAA9vK3VdPzN1X
dXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAHR/MUl6+At29QAAAB0CAABLABwAY29tcG9zaXRpbmcv
YmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yLWFscGhhLXdpdGgtb3BhY2l0eS1zdGRl
cnIudHh0VVQJAAPbyt1X28rdV3V4CwABBPUBAAAEUAAAAM2RwUrDQBBA737FHPWSbYKi9VZbvFgw
EFBBPGx2J2TsZmfZ2ST2712lgmC99zrvDcxjuH03r5fXVVm+3cLaaRGot3cjOfuEUYg9kAANweGA
PqEF8tBy6kGtQnBkdMqOqBfDFgsdglpz1nwStcEJHQeMqnY6dRwHUVT37LGhYcwjjkU4kF9ys3n4
64ndqWYvCQe1pTbquFd1pEknvI96wJnjTtRKBJMceINxIoNSdD/CcQ7ni4+yvClbsywXF6C9PcGy
vJP4/7Bj+LurWiztVZW7Cnj0CNxB6hHSzDCTc9AijIK2gOeeTA/5rq9nj95iRz7Pzz4BUEsDBAoA
AAAAAHR/MUkAAAAAAAAAAAAAAAAYABwAY29tcG9zaXRpbmcvYmFja2dyb3VuZHMvVVQJAAPbyt1X
T8zdV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAB0fzFJ5OzXn/UAAAAdAgAAQQAcAGNvbXBvc2l0
aW5nL2JhY2tncm91bmRzL2ZpeGVkLWJhY2tncm91bmQtb24tZGVzY2VuZGFudC1zdGRlcnIudHh0
VVQJAAPbyt1X28rdV3V4CwABBPUBAAAEUAAAAM2RTUvEMBCG7/6KObqXZlvFr9u6ixcXLBRUEA9p
M6XjJpmQSVv33xtxBcH17vV9noF5ebl9617OL6vy7PUG1laLQL29HcmaR4xC7IEEyAWLDn1CA+Sh
5TSAWoVgqdMpO6KeOzZY6BDUmrPmk6gNTmg5YFS11ann6ERRPbDHhtyYI45FOJAfcrO5/+2J2alm
Lwmd2lIbddyrOtKkE95F7XDmuBO1EsEkB95gnKhDKfpv4TiH0+V7WVXGVNflcgHam3/YLN8k/rvY
MfzVS19d5GmXiwIePAL3kAaENDPMZC20CKOgKeBpoG6A/Nfn2KM32JPP+ckHUEsDBAoAAAAAAHR/
MUkAAAAAAAAAAAAAAAAUABwAY29tcG9zaXRpbmcvYmFja2luZy9VVAkAA9vK3VdPzN1XdXgLAAEE
9QEAAARQAAAAUEsDBBQAAgAIAHR/MUlMGTG+9AAAAB0CAAA3ABwAY29tcG9zaXRpbmcvYmFja2lu
Zy9iYWNrZmFjZS12aXNpYmlsaXR5LWZsaXAtc3RkZXJyLnR4dFVUCQAD28rdV9vK3Vd1eAsAAQT1
AQAABFAAAADNkU1LxDAQQO/+ijnqpWnrt7d1Fy8uWCioIB7SZkrHTTIhk3bdf2/EFQTXu9d5b2Ae
w91b/3J2WVfnrzewtFoEmvXtRNY8YhRiDyRALlh06BMaIA8dpxHUIgRLvU7ZEfXcs8FCh6CWnDWf
RK1wRssBo2qsTgNHJ4qakT225KY84liEPfkht6v7356YjWp3ktCpNXVRx51qIs064V3UDrccN6IW
Iphkz1uMM/UoxfAtHOZwXL5X9akx9XVVnoD25h+W5Z3Ef4cdwl9d3dVFWeeuAh48Ag+QRoS0ZdiS
tdAhTIKmgKeR+hHyXZ/PnrzBgXyeH30AUEsDBAoAAAAAABqAMUkAAAAAAAAAAAAAAAAVABwAY29t
cG9zaXRpbmcvcGF0dGVybnMvVVQJAAMjy91XT8zdV3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAC4
gDFJePsJRkJMAAADiwEARgAcAGNvbXBvc2l0aW5nL3BhdHRlcm5zL2RpcmVjdC1wYXR0ZXJuLWNv
bXBvc2l0aW5nLXBvc2l0aW9uLWNyYXNoLWxvZy50eHRVVAkAA0zM3Vcey91XdXgLAAEE9QEAAARQ
AAAA7F1bc5vItn4++hU8nErJSbC7ae7l4yoJiYwzvpVlJzk1NUU10NhsI9AA8mUezm8/qxskgSQn
JsmM965RHmQEzepvrV79rdUXdS7yLGBFYUvtf0E23aezWcL2PzP/17jkf5wsLVla7o/YPUuy2RSu
pd9UQ0Hq770LWt6uy4B/B5+yZD5lxcGn85Pr0/HB24NaXJTTKXvI8ruDLxfOhOX3MaA4+Fqtj7Pg
4IWoeschfMZRzHL7O5TqfWJ5EWfpuj46Iu+kPnzu43393V7PyUImXT3NWLvgF1OXdVXqn9Eyvmd7
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
NhNwsAdjb/eAJeLi8TG6B/ejpxLkUhx6cMmxx9XN/Y3/dH3zcP3+frCLlayN1ePjzfX7d2WEkXJG
DMJP95BEYI+H8u8PP3goxtVJDjCzsMen99fhLpbn+8h8Dr40iuvMXNqLqy7VbWuUbL9UG+jxUr+s
N9/PPZh41xrt/772ebh7aDTgj4bJpb06qiE6ubj4X1BLAwQUAAIACAAagDFJWqOfQ/UAAAAdAgAA
PwAcAGNvbXBvc2l0aW5nL3BhdHRlcm5zL2RpcmVjdC1wYXR0ZXJuLWNvbXBvc2l0aW5nLXNpemUt
c3RkZXJyLnR4dFVUCQADI8vdVyPL3Vd1eAsAAQT1AQAABFAAAADNkcFKxDAQQO9+xRz10nSrq+ht
3cWLCxYKKoiHtJnScZNMyKSt+/dGWUFwvXud9wbmMdy+dS8XV9Vl9XoDa6tFoN7ejmTNI0Yh9kAC
5IJFhz6hAfLQchpArUKw1OmUHVHPHRssdAhqzVnzSdQGJ7QcMKra6tRzdKKoHthjQ27MI45FOJAf
crO5/+2J2almLwmd2lIbddyrOtKkE95F7XDmuBO1EsEkB95gnKhDKfpv4TiH0/J9sWiXprpelGeg
vfmHZXkn8d9hx/BXV3VeLssqdxXw4BG4hzQgpJlhJmuhRRgFTQFPA3UD5Ls+nz16gz35PD/5AFBL
AwQKAAAAAAB2fzFJAAAAAAAAAAAAAAAAEQAcAGNvbnRlbnRmaWx0ZXJpbmcvVVQJAAPgyt1XT8zd
V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAB2fzFJ1F2FC/IAAAAdAgAAMAAcAGNvbnRlbnRmaWx0
ZXJpbmcvYWxsb3ctbWVkaWEtZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQAD4MrdV+DK3Vd1eAsAAQT1
AQAABFAAAADNkU1LxDAQQO/+ijnqpekWxY/bfuDFBQsFFcRDmkzpuGkmZNLW/fdGqCC43r3OewPz
GG7fzevldVVevd3B1mkRqPebkZx9wijEHkiAhuBwQJ/QAnloOfWg1iE4MjplR9SLYYuFDkFtOWs+
idrhhI4DRlU7nTqOgyiqe/bY0DDmEcciLOSH3OwefntiD6o5SsJB7amNOh5VHWnSCe+jHnDmeBC1
FsEkC28wTmRQiu5bOM3hvPxYVaXW1e2qvADt7T8syzuJ/w47hZeuG2Oq3FXAo0fgDlKPkGaGmZyD
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
VNeGSNDzEkRnDouGTx+fQrpXmIrhDlqckWF2BZgvanHqQPju+sN28wBPeKrn2EH0+2DFsWAcNcJX
Oba2Iiw7IxzsUcb6hHkogdn/ByvuDUEvDqCgd6r0UnSquM+DhtUCtnH4ddi9uSKXjLWVS4aGYGOl
JHVIxiQBEWRMx5pcRiTzbW3OSSvi3RcXGD7fruvHGfiJq/vTmfrtC7zU9vvP8C6hfnzczZ7qZTOb
f59t9l+b7Qy0ads9Yjfb19uHpi182X9d7U4Xfm5l2Ne7b18AvC/Pq+XPM3IY+7pt6uWXBfy7b3qD
4L5/Ae/rNF4++P/44+GHjlSAQPu8p3qBNRBjz2OSC/XvPfPi883sY/NQ4PsRfuv9+vH7DDdmvLK5
nx0m0KrZ/Ty72+zrx184N5f2ZrZtdqslzNxfyK8/kf/422z3J0znZvll87L/Aq/1An/Fxw38AZvl
8Y6fKIHfu/h9u9rX88cGPgAffv5YeinfzbCQB5bD6TN/8IzTUPc5+BHHp8xOi/zNr89XH+8+uWv4
7mN6d/X+t9nF8f+7//qQ3rrp9uq/22vh/aff7mY/rTfrarEBm3e3aJZ/m1388vo1evv52umbC4eU
JrDYZkhoghN3+MWk+vX8/ewidDumjX6Bk0X6d3y6mq3Ql5ndrwD64S3s9Q4+u4ir3XO9X3ydYVLZ
av1y0FrdG4S5JDedZ7SO0uzq/Q8A776VmF38/Xb296u72cOBlrdZzlAl9u64JO86d/wKqqF5nDn8
e8/erxfN2FNMV44bd339PvzgnTjll/wkB5fnOx5ekHv1GWUafonzMyiZXXw4rNMZoPy8AwjW95v+
H5C83oFY3d658Ovs3Sf3Mb7xWlJd0tNbMQN37OvFtx/OZkYuTfeOzzdfWknc3VtzmcpXyWdqdvF7
M8ejopt2OY3eoc0luzndbGcXX75Ed+d+9FaCXIqbE7gM73h3fXvtP11d3139djt6i5Wsi9WXL9dX
v/2aIsyUN8Qg/FIenyGJwDvu0j/ufgQVV2fJmW6f8em3q/A+prfvkeUafGrV0Btr6SA5P2M1o4DV
7mu9hTuemqfN9vtbLya66+Pf1yV37+9affajNXhpDyuKCgZyXPwvUEsDBBQAAgAIABiAMUme9fSf
9QAAAB0CAAA7ABwAY3J5cHRvL3dvcmtlcnMvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMtd29y
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
bGFjZWQtaGVpZ2h0LTAwMS1jcmFzaC1sb2cudHh0VVQJAAMzy91XM8vdV3V4CwABBPUBAAAEUAAA
APPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAX
yLYyMTcyMNPjAgBQSwMEFAACAAgAJoAxSWt0ZIL1AAAAHQIAAD8AHABjc3MyLjEvMjAxMTAzMjMv
aW5saW5lLWJsb2NrLW5vbi1yZXBsYWNlZC1oZWlnaHQtMDAyLXN0ZGVyci50eHRVVAkAAzjL3Vc4
y91XdXgLAAEE9QEAAARQAAAAzZHBSsNAEEDvfsUc7SWbBLWtt9rixYKBgAriYZOdkLGbnWVnk9q/
d8UKgu3d67w3MI/h5r19vZqXi5u3W1hbLQLV9m4ka54wCLEDEqDBWxzQRTRADhqOPaiV95ZaHZMj
6qVlg5n2Xq05aS6K2uCElj0GVVkdOw6DKKp6dljTMKYRh8wfyS+53jz89cTsVH2QiIPaUhN0OKgq
0KQj3gc94J7DTtRKBKMceY1hohYl636E0xwu84+iLOaL62WRz0A78w/L0k7k82Gn8HfXsixSXD7L
4NEhcAexR4h7hj1ZCw3CKGgyeO6p7SHd9fXs0RnsyKX5xSdQSwMEFAACAAgAuIAxSdGtvylaTQAA
9ZIBACkAHABjc3MyLjEvdDA0MDEwMy1lc2NhcGVzLTA0LWItY3Jhc2gtbG9nLnR4dFVUCQADTMzd
V6LL3Vd1eAsAAQT1AQAABFAAAADsXdtzmzq3fz78FTyc6dhtnUhCXCenM44vbbpzmzhpe2bPHkaA
SPiCwRtw0pyH72//lgS2wZc2tJnus2fbDwlGYum3ltZVCHOZpT7Pc0dtfvx0esBms5gffObeb1Eh
/g3SpOBJcTDkDzxOZ1M4Vn+npob1P5RLVtyt04DP4ac0nk95fvjp4vTmbHT4+rAiF2Zsyh/T7P7w
y+VgwrOHCFAcfmvUrzP/8JmolJMA/kZhxDPnB5hSPvEsj9JknR8DaW/UDvw9wAfGm64ySAOuXj/N
eLPjF8voGVTtnLMieuBdEE0mJHW5JuiYzRP/LnDzaApS1C2D/qFc8XyWJnnkxQ2abSfjJueZejJc
x68jrChDVvDD62i6BpogbPSQ3cOmig0HYUe3DixkqT1kIqRcTNRtMjljvgpNX1SMDjDIRO1g/T1G
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
GDMsHkqoTG2IwUfL2dyP/V457ruoUNmMwy8No8OlWDVJ7k8rLVgKWIZIM9pYWO3kIhXg9lEfWbFg
csyMkqcvyWttoCuIGJuYTWY1TOV5B0LdXr2vqoEjo9p6MAAc9lkLBQxQ4yzxiWkWdaDR0nl1LTjI
UGVadiMVIGBFjgGxq6EuAkS3j0/N/dNU7kbi3uUcPfLQYOOL7ElgThMeMKGHUxvnSbgyEqqeQvW1
CjUnJ1BzzdCx+ejfL/+rXdVlv4WDOS+dIkFjjVjEmszcmUfcKm+Ym+npwlmYvnl0GqvQWTZjk6BZ
ySEVzR87xPWVVA0TvfdGYshAYqoGhTnlwE8Gz7hwSrNPZZaMzp9RqIn5VI1XaK0m0lObVTsqIL9r
btrYPDw971+eN2hKV7ikgsNUCtYSYX0Cwxt8lMKSkNhRTItZRuz6ovXP3nvDfcSWdqL1zNKOSu6b
P8/0M7Yj6VFRS2OxVWaJBfY34WBO8UJsLsLnJGyZZ9O+37f79rZ9fHzxdPsza+JqjdZ6nKiwBCVz
4pL1v6ejkXp+5Ck7UenuOFQw77vGYY6BwiopY3mhJTxpqVPJqfwlx8e99MRXRaiAaCb4LpZNY06V
zg9ohC6fN7X0yhpvkg1ECzzp1Oj4a409tDNNzGoZ2V+cnFl/7ouDaBi2Bnuun4d7GuSUNRJWCrwc
FojQ9JJ3ndKjZTG6RLRiHgk8FLilSBGLdVzgWfDQ5XOfHox3X1xgyGV/39wuwLbYbk7nMB+f7+5g
Kv8MnyU2t+C73DXrdrH8vtg9fW33C/jAHV324+Kp2d+0XbL009ft4+nCz50MT+B2fwE4vjxs1z8v
6GHs675t1l9W8O9TOxgEk+8L7Nin8frB/89vD3/0pAIEuufdNSvMm516HteK2v/dMy8+v1t8aG8q
fD/Aq97f335f4NzHK7vN4qBHtu3jz4vr3VNz+3ch1KV5t9i3j9s1zMW/019+ov/2t8XjnzBB2/WX
3fPTF/hYz/At3u7gC2zXxzt+YhRed/H7fvvULG9beAN8+Plt2aV4s8Dkb5jgp/f8wTNOQ/3n4Fsc
n7I4LdVXfz5ffbj+5N/Cbx/ym6v3vy4ujv9f/8dv+bWbPl79Z3ctvv/06/Xip/vdPVntGlCXq3b9
t8XF319+Jm8/Xzv9cuGxDH779H2BRfA4ccc/XOlfzr8vLmK/RczkD5ZjDO/4dLXY4v632GwB+olb
Xu4Qi4u0fXxonlZfF5iIsL1/Puih/g3SXtJ3vWd0m+sCXJxXf7DV5OkZjC0u/vFx8Y+r68XNgYew
XS9QyQ0+1SV9c37g4uIXUA3t7cLj9714f79qpx5j+3K882/fvo8/mARgHV/qkxxcn++4eUayuQeU
afwjz89gdHHx22GdLgDlh0eA4H6zG0pOX+5ArD5e+/jL4s0n/yG98rGUvmSnT8Us3PHUrL79cDaz
bk2+3PH53ZdOEn/92lw26uX7WKjFxe/tEsOL77rlNH2HvOTHZzAJz/jyJflr/6NPJemlPN4hpMY7
3l79+ktO8L2/IgYVZ8ml655xnf95vfjRtBKX6t3pCzR4x6dfr+L7lF+/R9Ur6q5TKq+sjKO0l+KM
rltcPH5t9nDHXXu3239/7YO9oCv/L5rh+v11p51+9KVfusP6YMLATLz4H1BLAwQUAAIACABhgDFJ
XSezXPcAAAAdAgAAJgAcAGNzczIuMS90MDQwMTAzLWVzY2FwZXMtMDUtYy1zdGRlcnIudHh0VVQJ
AAOmy91XpsvdV3V4CwABBPUBAAAEUAAAAM2RTUvDQBCG7/6KOdpLNvGDUm+1xYsFAwEVxMMmOyFj
d3eWnU1i/72rVBCsdy9zeJ9nYF6G27fu5Wp5uaxeb2BjtQjUu9uRrHnEKMQeSIBcsOjQJzRAHlpO
A6h1CJY6nbIj6rljg4UOQW04az6J2uKElgNGVVudeo5OFNUDe2zIjTniWIQj+SE32/vfnpi9ag6S
0KkdtVHHg6ojTTrhXdQOZ457UWsRTHLkDcaJOpSi/xZOczgv36tqpXu9qsoFaG/+YbO8k/jvYqfw
V6+L6lrnUS4KePAI3EMaENLMMJO10CKMgqaAp4G6AfJdn88evcGefM7PPgBQSwMEFAACAAgAF4Ax
SRDCyC1DAAAARgAAAC8AHABjc3MyLjEvdDA0MDItYzcxLWZ3ZC1wYXJzaW5nLTAzLWYtY3Jhc2gt
bG9nLnR4dFVUCQADHcvdVx3L3Vd1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsBkkUK
yfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjE3tDDW4wIAUEsDBBQAAgAIABmA
MUmnCvl+9QAAAB0CAAAsABwAY3NzMi4xL3QwNDAyLWM3MS1md2QtcGFyc2luZy0wNC1mLXN0ZGVy
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
ABwAY3NzMy9jb25kaXRpb25hbC93M2MvVVQJAAMty91XT8zdV3V4CwABBPUBAAAEUAAAAFBLAwQU
AAIACAAcgDFJdi6arUMAAABGAAAAMgAcAGNzczMvY29uZGl0aW9uYWwvdzNjL2F0LXN1cHBvcnRz
LTAwNy1jcmFzaC1sb2cudHh0VVQJAAMoy91XKMvdV3V4CwABBPUBAAAEUAAAAPPLV0guSizOUMjJ
T1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMTcyMNDjAgBQ
SwMEFAACAAgAIYAxSVdCngv1AAAAHQIAAC8AHABjc3MzL2NvbmRpdGlvbmFsL3czYy9hdC1zdXBw
b3J0cy0wMDgtc3RkZXJyLnR4dFVUCQADLcvdVy3L3Vd1eAsAAQT1AQAABFAAAADNkcFKw0AQQO9+
xRz1km2jIeqttnixYCCggnjYZCdk7GZn2dkk9u9dpYJge/c67w3MY7h5b1+vyrws325hbbUIVNu7
kax5wiDEDkiABm9xQBfRADloOPagVt5banVMjqiXlg1m2nu15qS5KGqDE1r2GFRldew4DKKo6tlh
TcOYRhwyfyC/5Hrz8NcTs1P1XiIOaktN0GGvqkCTjngf9IAzh52olQhGOfAaw0QtStb9CMc5nC8+
lktTXhc3y8UFaGf+YVnaiXw67Bj+7sqL/LLIU1cGjw6BO4g9QpwZZrIWGoRR0GTw3FPbQ7rr69mj
M9iRS/OzT1BLAwQKAAAAAAAhgDFJAAAAAAAAAAAAAAAADQAcAGNzczMvZmlsdGVycy9VVAkAAy3L
3VdPzN1XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAB2AMUmeZ7+TQwAAAEYAAAAxABwAY3NzMy9m
aWx0ZXJzL2ZpbHRlci1hbmltYXRpb24tbXVsdGktY3Jhc2gtbG9nLnR4dFVUCQADKcvdVynL3Vd1
eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+v
JDWvRM8ltSw1J78gF8i2MjE3tDTT4wIAUEsDBBQAAgAIACGAMUkNR8YW9AAAAB0CAAAoABwAY3Nz
My9maWx0ZXJzL2ZpbHRlci1hbmltYXRpb24tc3RkZXJyLnR4dFVUCQADLcvdVy3L3Vd1eAsAAQT1
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
ZXR0aW5ncy1wYXJzaW5nLWNyYXNoLWxvZy50eHRVVAkAAx/L3Vcfy91XdXgLAAEE9QEAAARQAAAA
88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfI
tjIxNzI01uMCAFBLAwQUAAIACAAagDFJv3kuh/UAAAAdAgAALwAcAGNzczMvZm9udC1mZWF0dXJl
LXNldHRpbmdzLXJlbmRlcmluZy1zdGRlcnIudHh0VVQJAAMky91XJMvdV3V4CwABBPUBAAAEUAAA
AM2RwUrDQBBA737FHPWSTYLa6q22eLFgIKCCeNhkJ2TsZmfZ2ST2712lgmB79zrvDcxjuHlvXy8X
5fXV2y2srRaBans3kjVPGITYAQnQ4C0O6CIaIAcNxx7UyntLrY7JEfXSssFMe6/WnDQXRW1wQsse
g6qsjh2HQRRVPTusaRjTiEPmD+SXXG8e/npidqreS8RBbakJOuxVFWjSEe+DHnDmsBO1EsEoB15j
mKhFybof4TiH8/yjKJbGlDdFfgHamX9YlnYinw47hr+7yny5aMrUlcGjQ+AOYo8QZ4aZrIUGYRQ0
GTz31PaQ7vp69ugMduTS/OwTUEsDBAoAAAAAAEaAMUkAAAAAAAAAAAAAAAANABwAY3NzMy9tYXNr
aW5nL1VUCQADc8vdV0/M3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAQ4AxSUGzOo5DAAAARgAA
ADIAHABjc3MzL21hc2tpbmcvbWFzay1yZXBlYXQtcm91bmQtYXV0bzItY3Jhc2gtbG9nLnR4dFVU
CQADbsvdV27L3Vd1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmp
euGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjE3MjPV4wIAUEsDBBQAAgAIAEaAMUkOPc6D9AAA
AB0CAAAwABwAY3NzMy9tYXNraW5nL21hc2stcmVwZWF0LXJvdW5kLWJvcmRlci1zdGRlcnIudHh0
VVQJAANzy91Xc8vdV3V4CwABBPUBAAAEUAAAAM2RwUrDQBBA737FHPWSbWyl6q22eLFgIKCCeNjs
TsjYzc6ys0ns37tiBcH27nXeG5jHcPNuXhfL+fz67RbWTotAtb0byNknjELsgQSoDw579AktkIeG
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
oUYYBE0G9x01HaS73p49OIMtuTQ/4aMc438sR5HX9fQPylHkc8x/IMcrUEsDBAoAAAAAAFKAMUkA
AAAAAAAAAAAAAAAMABwAY3NzMy9zaGFwZXMvVVQJAAOMy91XT8zdV3V4CwABBPUBAAAEUAAAAFBL
AwQKAAAAAABRgDFJAAAAAAAAAAAAAAAAGgAcAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvVVQJ
AAOKy91XT8zdV3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAABUgDFJAAAAAAAAAAAAAAAAIQAcAGNz
czMvc2hhcGVzL3NoYXBlLW91dHNpZGUvdmFsdWVzL1VUCQADj8vdV0/M3Vd1eAsAAQT1AQAABFAA
AABQSwMEFAACAAgAUYAxSSt6o2xDAAAARgAAAEgAHABjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRl
L3ZhbHVlcy9zaGFwZS1vdXRzaWRlLWVsbGlwc2UtMDEwLWNyYXNoLWxvZy50eHRVVAkAA4rL3VeK
y91XdXgLAAEE9QEAAARQAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUg
yjk/ryQ1r0TPJbUsNSe/IBfItjIxN7Iw0+MCAFBLAwQUAAIACABUgDFJwKvUU/YAAAAdAgAARQAc
AGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvdmFsdWVzL3NoYXBlLW91dHNpZGUtZWxsaXBzZS0w
MTEtc3RkZXJyLnR4dFVUCQADj8vdV4/L3Vd1eAsAAQT1AQAABFAAAADNkU1Lw0AQQO/+ijnqJZtU
49ettnixYCCggvSwyU7I2M3OsrNJ7L93lQqC9e513huYx3Dz1r5eXJ2X+fYWVlaLQLW5G8maJwxC
7IAEaPAWB3QRDZCDhmMPaum9pVbH5Ih6adlgpr1XK06ai6LWOKFlj0FVVseOwyCKqp4d1jSMacQh
8wfyQ67XD789MTtV7yXioDbUBB32qgo06Yj3QQ84c9iJWopglAOvMUzUomTdt3Ccw2n+XhSmuS5v
ivwMtDP/sCztRP477Bj+6lqUl0WxSF0ZPDoE7iD2CHFmmMlaaBBGQZPBc09tD+muz2ePzmBHLs1P
PgBQSwMECgAAAAAAVIAxSQAAAAAAAAAAAAAAABoAHABjc3MzL3NoYXBlcy9zcGVjLWV4YW1wbGVz
L1VUCQADkMvdV0/M3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAUoAxSRY9/2dDAAAARgAAADkA
HABjc3MzL3NoYXBlcy9zcGVjLWV4YW1wbGVzL3NoYXBlLW91dHNpZGUtMDE4LWNyYXNoLWxvZy50
eHRVVAkAA4zL3VeMy91XdXgLAAEE9QEAAARQAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJ
BQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIxN7Kw1OMCAFBLAwQUAAIACABUgDFJCfHj
bfQAAAAdAgAANgAcAGNzczMvc2hhcGVzL3NwZWMtZXhhbXBsZXMvc2hhcGUtb3V0c2lkZS0wMTkt
c3RkZXJyLnR4dFVUCQADkMvdV5DL3Vd1eAsAAQT1AQAABFAAAADNkcFKw0AQQO9+xRztJZtYi9Zb
bfFiwUBABfGwyU7I2N2dZWeT2r93xQqC9e513huYx3D71r1cXs0X89cbWFstAvX2diRrHjEKsQcS
IBcsOvQJDZCHltMAahWCpU6n7Ih67thgoUNQa86aT6I2OKHlgFHVVqeeoxNF9cAeG3JjHnEswpH8
kJvN/W9PzE41B0no1JbaqONB1ZEmnfAuaod7jjtRKxFMcuQNxok6lKL/Fk5zOC/fq4uqXJhlVc5A
e/MPy/JO4r/DTuGvrmvdL3PcrIAHj8A9pAEh7Rn2ZC20CKOgKeBpoG6AfNfns0dvsCef52cfUEsD
BAoAAAAAAFmAMUkAAAAAAAAAAAAAAAAEABwAZG9tL1VUCQADmsvdV0/M3Vd1eAsAAQT1AQAABFAA
AABQSwMECgAAAAAAV4AxSQAAAAAAAAAAAAAAAAkAHABkb20vaHRtbC9VVAkAA5XL3VdPzN1XdXgL
AAEE9QEAAARQAAAAUEsDBAoAAAAAAFeAMUkAAAAAAAAAAAAAAAAQABwAZG9tL2h0bWwvbGV2ZWwy
L1VUCQADlcvdV0/M3Vd1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAWYAxSQAAAAAAAAAAAAAAABUA
HABkb20vaHRtbC9sZXZlbDIvaHRtbC9VVAkAA5nL3VdPzN1XdXgLAAEE9QEAAARQAAAAUEsDBBQA
AgAIAFeAMUnEpXWLQwAAAEYAAAAxABwAZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTERvY3VtZW50
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
g39/mQpzKFgR82q7vBFy6c0UFKuaLqawV81B9abA8TkreAC4Y0hapqoYFpXe/rHWnd2yPw8kN6tW
4vkBserAs0XVwILM22ShHg1Nbt3zSelPbulj5VKBoqmCq19nEBHp1QaRJb3uIDJgEPU/9edBlE5Y
nlc3F0ThS3VjxH4E/WeNIMp76rD/aSy6bEMg9nyMQyWUxL7IyK+kVje52GK6Xc0bfFXDaCle1QPV
kpz+ZVPm8sCbcs/NP2P0mP+4NJj84zS2gCE/nlxLfFU75nds8C8s+25+JIHHF4BnPOi7d/1HnvZ9
pyk8U6mZgt//5lbSTMNsvTiAdZ3UU20uL+K05T7SLCr3j3PxOzK31dFpmbSJhMtsnfb7ISNscfU5
e4iSu9O0sO0ZfHcWiCAgfhH3EIgIebH1T5wz8dMZC07p1AvoEc9oJQiXm9frG1XKGLtWZTPT5Pd/
uTOepBxtFkJf0eDF9bkNfjRNra2clNsFTAuyyJUVqk2e7ZcaLBXhxV0R4MsLV4b250npx+X9IHx/
UD0x1Fs3YyjBlzeqbWKo/eiKrVVo+/awbzlzuSlrbSvVQTmm2yb8zDD96iLXRr66mkWBjza3Npit
m/KCsGzqqQivd7emr+V65NUmWuv1JtrWCehXJlqMgIXBOBK/Oh/HLJbKG+P2LLxn4b8NC4NRsa4s
jSr8uHTjS7BQ2a3jtNo5yPdw8TWh8oaJ05Tvkjtafue3ktSXolVi/BBzez5jkG3thHYvvpeDbQCM
IQiVqMIsa5XLfSf8jqs92/5d2Rbv2XbPtnu23bPtnm1/Atsqe7bds+2ebfdsu2fbn8C26p5t92y7
Z9s92+7Z9iewrbZn2z3b7tl2z7Z7tv0JbKvv2XbPtnu23bPtnm1/AtvyvbPD8fv9zrA92/5t2dYk
GjGqp2WDL9v2tr1hq9LyAH/qXvmUP/44mx8h1B8gM+Nnkdk/YiczkvzqhQhPMKXy91hUNCaJR/1I
XUOTvag4sDuSlNFne8v7CaDAaxRgqhskNEDrzK8XVMV6AAXBRgHGDPFGgqghy1ONAEqgII82Ggn4
swIyb7YoMMMw1InGCA7FGVsL+DsQMrImizBCOHFn1gZgOBuOY9Q8w9RMvoEfCjAvCJt/hGuClbVG
FJ/wh3pkWN1U0RcF2g7dIcLfUsAbiWaNPlk83F/KwnhNE4wUxJ8MkSnbehFkdU7Tu8inseRc3pRv
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
CgAAAAAAsIAxSQAAAAAAAAAAAAAAAA8AHABtZWRpYS9jb250cm9scy9VVAkAAzvM3VdPzN1XdXgL
AAEE9QEAAARQAAAAUEsDBAoAAAAAALCAMUkAAAAAAAAAAAAAAAAUABwAbWVkaWEvY29udHJvbHMv
aXBhZC9VVAkAAzvM3VdPzN1XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIALCAMUkp12zB8wAAAB0C
AABZABwAbWVkaWEvY29udHJvbHMvaXBhZC9jbG9zZS1wYWdlLXdpdGgtcGljdHVyZS1pbi1waWN0
dXJlLXZpZGVvLWFzc2VydGlvbi1mYWlsdXJlLXN0ZGVyci50eHRVVAkAAzvM3Vc7zN1XdXgLAAEE
9QEAAARQAAAAzZHBSgMxEEDvfsUc9bLpSsXqrbZ4seDCggriIZvMsmOTTMhkt/bvjVhBsN57nfcG
5jHcvZvX+eK6nr/dwsppEWg2dyM5+4RJiAOQAPno0GPIaIECdJwHUMsYHRmdiyPqxbDFSseoVly0
kEWtcULHEZNqnM49Jy+KmoEDtuTHMuJUxQP5Jbfrh7+e2K1q95LRqw11Sae9ahJNOuN90h53nLai
liKY5cBbTBMZlKr/EY5zOJ991PVVbe1NPbsAHewJlpWdzP+HHcPfXXZhzGXpquAxIHAPeUDIO4Yd
OQcdwihoK3geyAxQ7vp69hgs9hTK/OwTUEsDBAoAAAAAAG5/MUkAAAAAAAAAAAAAAAAaABwAcHl3
ZWJzb2NrZXQud3MubG9nLWVyci50eHRVVAkAA9DK3VfQyt1XdXgLAAEE9QEAAARQAAAAUEsDBAoA
AAAAAG5/MUkAAAAAAAAAAAAAAAAaABwAcHl3ZWJzb2NrZXQud3MubG9nLW91dC50eHRVVAkAA8/K
3VfPyt1XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAG9/MUkAAAAAAAAAAAAAAAAbABwAcHl3ZWJz
b2NrZXQud3NzLmxvZy1lcnIudHh0VVQJAAPRyt1X0crdV3V4CwABBPUBAAAEUAAAAFBLAwQKAAAA
AABvfzFJAAAAAAAAAAAAAAAAGwAcAHB5d2Vic29ja2V0Lndzcy5sb2ctb3V0LnR4dFVUCQAD0crd
V9HK3Vd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAuYAxSUUmHTnRJwAAy6oAAAwAHAByZXN1bHRz
Lmh0bWxVVAkAA03M3VdNzN1XdXgLAAEE9QEAAARQAAAAzX35d9vIkfDv/ivachKQEQ/JM85ORIl+
jsaOtevrSfIm+TRaPZAERYxAgguAOjLR//5VVd8HQFJ23tvZrG0C3dXV1dV1daH68PnPn4/P//Hl
LZtV82z47LCsHrJk+GyUTx7Yb88Y/DePi+t0ccD2BvRzmi+q7jSep9nDAXufZLdJlY7jDivjRdkt
kyKdGu3K9J/JAdvfX1aDZ4/PONQh+6MFuZsl0+qA/bi8H5hPq3wpHkLH2b7oYkL9EaG6PfZ7r5I5
9Vnao4zyqsrnMI3eD6JBVRws8qrVK5JylVVlt8jv2qyaiG53s7RKuuUyHsNYi/yuiJdNvQ6maVFW
3XzarR6WSRhGMY8zDmNCMOw+bdGpSu6rblUAOafQ44Bl+V1SjOMyEV1Fs2U8maSLa5jx8l7RqZod
JPNl9dBBjOhfbus90U48794lo5u06q5g5WD1smRcIaaLhFO2O8//GXoHIHpjWIoEVgP/jtNFUkh6
A7FnSXo9q+RoPZisJMk4z/LigF0X8YPHJyXQJ0sK3segr+g6isc310W+Wky6AgrR12+eTot4nnSY
/XB+LVclnQCd2E97e5LlJLp/4o8ceBeTuIq7yf0yXkySydHONM7KZOdSQJuk5TKLHwzKvKjyPBvF
kh7LvEyrNIcdNE3vkwkfkXj1pRy/4MOr38QCcZZeQyd6x3GaZnlcwSp2AZMkc1dWbSCfTsX1KG69
fPWqw/Qfe70/t0X7vJgkBWekMs/SCStT2NaF+bZbxJN0Veod2eP06I5WsK0W61bIIDsIA4fq+2re
PiaaTxSd00UG3NYdZfn4ZmBLKPYDdNyTkkoTvkgyINytQGS8KkrEbZJMY1hjwc2rogButrm0wOUy
34ZnzSnk9rGadnFJPYaIRzDLlSQQ8URXyCd8wAXjvtzbJD2BCeLrWtajNtTkOpmE23LycRRLGHKZ
TLrFarFAvkriInvozpOyjK8Ta3YHRFq+Ji8me6YuuBPLOMqzydqlUtz6g73RPCnSAKOJSyQr/FgL
3hEO5hslIeQIYpqwF1DHZXJLAtX4Rs+XuI7lBvJJNgXiLlbOKGoeAW0md4ai20sp7TmE+245iyf5
HX8h///FTz/9NLDkO+kTwXU56KMUNEPvZemLG+S5QSObCmHVIG7qpp3FIyW21PqKhcW1mqWTSbIw
SbTMU1AyRTe5hd1XmppJTEKpGBO2IJYwLH6QiNZwq6uA6mYlhSKOtgRJnnX/medzj3Hrxf2euav3
LKH45z/93ubf/T1v5fUjRTu5usAH7htU3OpxPRnrpxmQ/S/3NhHUJlOCLGavoA0poD1QOvx/vf94
1W4gpLYQjQl2p1lyDyMahon31EdrlMWullCMm8M8QaUCmpzx1rNzGN1eCbIBpGg6B6nZwA+2FgqP
LpXk3t7vbSX5ozZNaoYbGgKsUcWE+JADAx0H9CNuk5THDTyHzUEDFXHJ1eULoWJArZXVZltA2t8/
OkaP+i2m/krOHO1I8exHbaptatxIDqvDdMhmL10HB/7vRzQg/I6lZ0YjWw9C/pFcsP+QWlwudBe2
ZTku8ox8gMO+8LS4x8VSMCxXC7AZwMqGQenhzlC1gmbjIl1Ww2fplLXu0gVsrx5idgqqOynaQo7L
373Jar58U56DYG8BHZ7dgjV6fVVWMTLCdLUY4/Kw6ywfxdkZPm21n/EZIvjnoqn0SPA/8YgdGc/I
UgKemJ0jiQ7YxWXHf/e5muGWdN8BdW8evsRlWdN3Fpfvq2op3pLJ7TU4QaZ9F6fZCnR5XSOkQWOb
eVqWsKan3OD3MSnki98e7RflLF9lk/P8+jpLCBVoUxUrB/wUxgbwNdMk5vpbWs3OKth5ATrB7kvy
VVXTXXOMRUrV5vGZ/rNIqlWx0GwAPK444c3PP1+dvj37+uH8rJUulqtKsoPFItIpAiagRoKPBWNK
FmVlMQYnaZVlV6J979cyXxAzO02HGgPQW2n19h48yhJ+tpAuEgdkXmD45B7Gxeeg68vqBB98nrai
XiTcGORc0eyIdfdN5hVTv8DeHbazcznw6UIve+VqVFYoAVFbEbR2hzlv+CC7bL99aVMR3y/Dc+j3
2Tn443kRFw8oFTsMGDGHEdg5OItl/4zoUfa51F0+9EGLw7JfEX/0QWwB7Byd47KPjwRlr+4KUE1F
bwkOP1rJ7M+venK4dyd///j2gJ2CkzOu8gJEP4tvc1CJAGy6Qo6HmU8TEPnjBF+CfJ7RTBl4LWxZ
5GNwA9gCbOWyp+gbWqWL/cteliyuofuQvWq7RMc2A5PQQRh7DinncTWeJeUZRR3yorXIJ2Czl+Kn
KazwTU809wY3X7ZUbxCIVm9O9I/2kGFYwab1kMFK2Qis386EaRJmGaMj+nl6/rBMaqgC9gooFHoJ
O4bg816f4J/mtkA01xC67YhChXJgBy1WXLVpZItkDtqPYErkHHR6vMkxoDzh7WwI07x4G49n9OpD
irt3BuyZJWqybwowPHvArlWOQbSe6NADGykL9HLxw110Qh5hC8SWsVvF9lmVCYtXkzRnVXxdIjrs
zdefTz5zwf1aySe+XUkAnwhRBfB6qZRSH/R7Ka+wG24vLb08IM9dQYZ9UKcV8dgdAYyzsWDPXl5c
R23ee2D1XcKWTxE5CeQ1czv2e71eP2IHLIp0X8QTeonuuzSyFoge3rvMnHA/EvJBTPyRJaCEnVmh
TP8ZzAWTepac78LgVfUgqadpZvUjglk8ux6wCVJM1J2fCQIFv+R+tZDAHZ9415Y3QG+5wOUQWgko
zkMQRGMw2SNDaEgwsHT0Sk8FoLJdePoag8JxdVTdV5ElVqPDSXrLxjByeeSGNobGO3KUhxFMg+YK
S3XYh7fDQ3wkx4enXI1HfLHxASpwp82Qd43sXVWhRQR0I5uoxXlG7qwtkd3hbj15J2jI7YgRD9HV
4U3iBbwFA4hGYxSq5UMS8op+inVpHtC9AffkLRlVMYUuWiAK5yCtTGuEh/Y+pIsbWHDxXm9j/bZH
KKoV9SOCxgLbMDWI/10lxYMSz1EvBMTgIKMnvjvmQXpkvmjXG82ep+op2Bt3qeoAzlYWL8ukvotJ
xnWtBS3rkEVcBwa1QYRrC/00v0NRZOpBDacD8gxjoFHbI5wR0TdNRh+6ptJqCfyEk6DIP7eC/fYd
7lU4JAj1LbBxWsqHalOAL1cm1ZsKxA2sa9KKrBOHyOrDMefQiefPxXY7B0+haDlYxMsl+PTvzz9+
EJodj/k88yldlElRvZn8Go+BqNha06CmQSsaJSCKkrcLxI+gBrhGdIZdjX1QgGFLG8VmVjR2XbFu
4QtTtfJ25xQ0PyISa6tjI96irptwkQa2QC2B7PvL6uXe/g+Ch2u5nLdvZEVDS27KjOiCGhqNS1zT
XNPWR3LHJzzJxyuUYb1xkeAYXKK1DIrypoY8g0mapBiYQI+TLGuCOjGgYtseiIszmJZYJ4vkb8CM
ox7ChhhoncvHR7qWtT1llB82yI3JHWj/mGoKIdAuljHhgrXI74TnewP469AcTuLC0t1d1zzLuAQ3
Wl+kl7YVxt85dkxIYpPeA4PRibmEkMdVHwTiFvjK0sc00LUvbbiCjNoG6zzam9kCapnOBHMGAKQm
wv9M0cPXuSN6tQeKDYUJJdiLdxHOAO/TllFwvSWdVrhNxLChLcJbqG2xlfSsb2eIJViN/07LdJQl
byxTxNgADULEPVxGNHcuWc8ya0x99bxmPJNJxlkSFycY8r+Ns5Ydw7G4QbYxFn2D1uhVruRBiS9j
jDjiBiMbaFdGKK21NUqgQdWUTUgd9nJvb0+Z7JZ2LB8W4xb+7LC4uC7lsgKocx53a8m2LUCU4Q9k
v+yhhQQQnQbssYMRe4d5bvkikQvUypfVlbJwTe7REekjZjVi//qXYiC9+vkiezib5XdfVeBPxjZb
bS+0oGCFRCpuJZ7JIiG1o5AK3xRWFJ7+W6X8SivGvNVEwhupdh6sxkium1sD+BpIvv0CrS0TJuwu
oKQOESakdToMtIzlCxh6B/QR/JsrIC1xiZ19e6rDLgwgoI4ua8z1/zuTCDkQa6fBA/JfywRDGzbL
iZV+Hoxn98xg69Ukpb33PMvHNC4InDMeB2jraMs0zZKDfp+79Xs2GkY45C9xmXyJq5lFyZF4qHd1
CHHXrigSpHmOxAxPQjbQclMOhMbarKqWgLAbJQo03j3SY71mragPRM+Linx/+aKNsYv+CPQX+AU1
QCIYbLW46VuRIDMCFMJzw/UBN75vhz80US13HnogPa1YvIpBxCKEQEeDZLehDcODHsFFxOgHRsgp
ihAZvw778fCwRBOWQ6TEm3wxztLxDZ7r4e9WNUvL9s6QgXPwpz/vH/axvRt/EE3xD5NlOIO8Q6iW
nYr4fYpv0+sYBBal++CTluUj4VPtFncMWO0wsfA4im/sv5DUCxPPmK2dFKWmHYilCBLUdiYBO9wV
tJEkEoTWC+nj/X8V51C8Wc3jC5ncsCKrKf0tMirLWkY1nBmDVTUoDNYRLOJQLxhmtxQsLAeVbMwc
jkxLoZjfCvXaknoWzJ9xtYoz65yulM0snwSFHG9MgbCz/zr5ErkCToKliD5XGfS7RwdGrYiZcVrs
wAHK5vxXsHHImzM613lz9jj/HWerRI1DHS3HzgjA6WkohWHAEJFg9oc/WH3xv5rO0bs3Jx9kBBl0
k9ePmfCJwudv/34ewRDMfXHy8c1f3+7WvqbDDXAC294Y1soaIqjmmFk3d86v+MHiX7WcfwcuETLm
59Gv0N5kJpKu/MyXv+zZ5yXGC3CKrko6Qm/XuQ32SXtvuSpn5rjCNbQ7mVkInnayXoLFQMfEas1Q
4Wr74JnNTPas+LOBHUsytpFuqZ7CcNGXN2dnkaZGWHWuyqS8Sgx5doWmiyaSAdxa4Q22vRF1lrMC
Dvp4cnZ28umv1vbW52nz+CYBGVUkrJrFFfr9mHyqshSJlOUyhT9B+zIQuF2xr6v7iiHmuJlNuLzL
HawrEyPLhI1eDSPY+R4BPmjwavUKnuc3yaKslzs8BFmWyQR5jjzRz+DyCKKeLE6TqtBii0O72Lsk
Ejq7U7zc5y9pA0euWNVtVDfNisQo4jwQOadVYwZTdpuwspJFDPb9BMGtnYZlq9qg7TSf7YjtMBbN
AvFRm+C5fOoealstOMFo3ptPW2xnsTNAZVLWBX2m4aoIG2ggI6dh1o9bzP/49M3Z+6ie1DoT65vI
fH7y8e3nr+cNA5kpSRsPpYSbwx9GdlQAln80J6NDps0hY6BNfnwwnqZ649niOgiqYdTo6XJswk6u
Y/GkIk7Iu3hhYvpk4MhA0GrBFeB95QWNlRAXU3XY1e8DWp8vP+/gmDT4rIdHwAKTptgx2pBSYOOh
txtK3gAVB/tvRUYZkQ46gWAgInKqo/bOwTVFeqt5ZoX2RZuOORAezHforJd+Ix7P7Oi501MrOOzH
f63vNUmnU9kH/20dAoflHNpIPIniaolZP9oIoInt1syMd+EDYkMckT9jWwx8h203HPHOGuvOGkWY
l/4xIvGDUOp4cGAIkg4zvS1hvTD3YDGKPINGq1CuRNrhjByErhLaMBLtZ7gZ9ismzNXFtt2kVuVE
Ods+qJlQN9a80hN5fhSahTiFdlakKQbyxeP8LhhWlE3Wk66mIkEHDwunTDYwfbPwyPYIhkQxdsga
4fKthDqqJdT3IFYdjXg+pkugR29mNtv4mcib4WzjhvusVNtOnj06mIRIvQlwSxBb8nGwNax1/GAY
N+Y2xfnZ7hTN8QqfXy2TYqxOWrahmESDoLdwWelfoHx+347avsqpFTHacXou4gO2c3YlHJcrwto4
I9mKWkvK+8WmrkgFOE7uJdju6QKcdcxSGOVxMfl6+gG8dX6ipXErXZ8dUy6B0Ds79YfpRm9lKu3u
ptZpoIS0a64ZGkEiDGDJxBSp5kNlXebkA5pgdzo7liksA24iWG54pV2py4xEyYkkS9lXpLpSD2kj
vYCdeQfm4+lqUR6hJP8DuRlHyCaw0fNJ8vX05DifL/MFpkZI3FzLF32S0/zODpNY4QKhwg55lPcb
YwKCoyKZhIfYtsKBgtfGTqacUTK7dqJgkOZblJWPnNQmoiuRV54JiDbDw6oYSrUuHx5WEyukHAwd
m/qaR0axlxHHMUKpR6HEfxPAwB/fyRxqiArVyguKEgRUlGdRmF/AeJkiAivX+NXTa3seXAgZETf0
sdlYL9zFt6Ze4FnXpgDdUM4JOIKiW0Mx7WokCgKRBuh2AtwNSoSFOSHYfoo5JCdK2elapK8fEqf1
pBEFWeyxNoyM9X8pd/uG2z3mOWJbWu0qTmYmxBAoJ1qmv0gxRMcmY8LsYDMnZT9ybDcnztZ2pQoK
CClaaCBXamwrjzEG5bIYq5eHcmzB+N86ev0ADXzPDyheByPWSjlYaJnAD2PjUKvZ+LjQI1xyjTOc
gd7Miwc6iQ2O0AddAH+gghzaZ8e+5cM/IqGzVPHlSIeyc6oiSfi//OgAvhNJPPRPWL4wwckEMKLE
UotosBTelxNQ5tNN8oAfjCFw1wNdJHdKGQkQr1lL57wTN0N/PLeHv2wpIS1oCfwCWlyGDsI00UmN
iJYDz7wydB+mikncBk4SI9G1Ji7qZx4G10Qh0dHDBDO9oDd9iHqMQVInfigWLrxYOfa6GvNug40W
5NvIZS1PTZSXplITerXnDepfZ1hRY/d0mZ71ynyeqFw3rjgw4U2mzfCjLX2kxx6DmZK4OBnsw+N8
tag0keVHXE3RVZGDQd9oQ2dMVFCpd/TEZXkzcc7Kd6DW5JDduifGOMix7Ffau2CzhDS5ZhoKDP/U
PDsvH+1p0CMz65Zm7wRVbZAqkZq4pe26fNcIeJbEk6RwE/ArcQxqZTZatNf95ALoWDmxAIEwlpZz
pLO0VraLba7WJLwIsFZqS2B60r96T2i+BwdNYOxlXMz2Sdfxt/Q5VMtMAHG4VWZ9tA+YUmIvdoxc
oG4MBoFKMpFUFpkllCwEDbjqwpEHQazlLDlSHe4WnqivSORGLipjI8cdNjI2ckxSpoepbVmCfics
Xmsk3JzHtuHfiFg3fahFWp8Sjz1ZQm4cx4MO2/gZfJceRfSxm06Zcb1ErHnAPyjj/fGDMvOTrfrV
IjOCuik1r4+Y48mEgXzUx4RTvo8xy3E1J1WA1KY2lGGA61iiDNjGPjI+2ePY49ELnZSWcvZesBtw
xgmAmTgb4shgjczoh4sqf9HnrT07wAmjNH6NYOsgbB04ZqrPsnCwJ2lji82n2ZQWXCvMUBNnWMtm
DVEIazAKCRgu+BbLaMJx89FMce7BIxuiS5qbpzisBR1OZ2vQGi5edQACq6ocF/eUwZiBTe/gyIbz
GKqDgG4khyLdSP4rWke8DRfDcTeeuiLsqXPjsLL8Wk6PHjB4sHaGITR++/fise3CxfNllqiFo1+B
Axh3YiJRoHFqWm6jAQbm9DhbTRJZ9kR4s30KqcvqI7B0NNZdIl5DP8wZopQh2QilpQTCpWQN69hx
rxAFrCB+cIs833qT62337/F63bE815fH88wmpE7VR9GNZ61VTgmKqr6CYz65NRlKMHsSuyKDG+Eu
0nmLf23vwOIPQbEss3ictPr/c/FL+ct9vHe5+y/1r9/1McFZfJcBDPWfK6xiwmuXYO1VYgYMtrN5
vIiv6TPEHtVEOsdJn4HJRG7Eb49APeNR7wo63sEiwIREfL28vWZUkuloh9emoqpsouYT/ntneLjM
s4drTHXEqmug1/Y6e2wf/3jV2d/bkd1BIWYHL8bjMRXGub2mpbMGx1JX32P0fRp+H8ffZni0JJPJ
sUwPPtJGuzRAY0TMWS96RtYdmXa4rry56ZO0VQNqTutmjc3dSW74HctvTi0cwN1/b5nu5DhAd/60
6es73cr8rk4/dQO3JlQKZ/jNdPrzm6yAtw+nyS24WpRJqbvzz2eR/XvCqStbUSFauuKZDrVccH5a
bhC6qLtSC9szH2ohgTEdBhM8CDZA2B5o+MXg2cYz8dfsyQR4dD48Dc/ZHtDlT3t22ptFCUtfm3Jf
ww21iNc1Xzhf8E6XNokeA9sSYIQ3A35hKznF8dsJiLktrpNKfJL9l4cTWmX+UapQW8a30gSajo6E
3NcAQ1OZKa9f7slj7nkdSVAqdqw3k/ldN5/dZoPxAIgRjXdcYOkBmznDmMEKKw+7s8pZuVri500s
S+7TcX5dxMtZOiasSW0sYLnsrw7OeVpeHT/ggHrOTgBqtK7zqKazlUrNlRLHMflfjPbfYgJ/yUYP
3JsjJ9+TYWIV8KSEo3HE8Ql+88ADLRSRbJrpnrMbxSTX9x35felMTfc90oB8sSd21N4gVJ9KAzk0
kHmNZxOqVGjAmiuCQlbDBJIdihV8zRCUWV0p8KV8sJ+Jgwq4BMsNICubnr0VFxEbwvwUHjuAc+9L
K2sHGkFVfPJpNR/ZOlRtyS1kRY0UuDDHEFEHT5ZZMsDBnMf5jzFqZqKe1OELLkpcAK5aq2v5TjEv
VYoH0QtmKm+FHzVotEo2sGqsAeykDm1EhPRUvQ0h5a60HBWg16zBwjxgtbbvwFGWuqTLEWswGk3F
pPAxZxnUbEF1RrTHeX3BbP3/l+dzbbIbjzAV7u7z4ucko4/CePDYfH+FxXvf8ZKIR+xPojbqDfcB
/4ZGNTz+CQucG8/fk4WN7fEFf0PwJnY/C8wfWc24Ax+AGsAesAGEPylK/Ds2TkUUV66KrK7kQF2N
FuPwRJ8/WNVfqAiyU4PYSpBJK7I3YHBegbHV/6XbuvifX7qXf2z/gulofZ0Ja9TRw3pfG+FFTW2c
6FFkvjYFpAMTBTIWA2oRpm1vtmZXAuZuz9Ql+AZI231s7MN1naPQqFwi8Bz5lglaJMcD0a2H6PP1
7iSX+qwL7tjyPvK7zBRfBri1rhOvwo0zcupwR0EamHTmqY1NK2F3NpfELVRBEsPaJXxZglvEUimV
KBpll5oSukV/Sj1wsu+qUMEouygVYf9zOp02Vy2KLzAk9LujHdwmO5deoanvs4NDxcxdbpPHQO5z
qwiLKFrnzcWYiJFcrOdDITQXkHuCodIjvJZNH38MjAPREButkZ5G6oSdudz+npCNzNy2n2YXMgpt
/gmbh09Dy4aMSbZUz0laqIrLvApMY2cvWgNNihjTX0VdJe+VuQOdje1+3yXzto7Dp+EtXi5z4G+R
v2Ct+NLvDsxDr4CjwMCEqZ0CIEeWkjjDOvlY19OBKMRpn71kXXvSIpX876C+fVHbrhWbVb4MDSNE
cP04/3DH4eJZDxSi/BvKhNPFjbbI1NjmDgRM4/DG9pmB2/kf81WZfF5VQblMn3X26AqFZHJOkpi+
BbUf9cwCqifvTt98fBuw8+WB8cnU7c/SkvHKTndJdJuwOaI0oYOFfEonxooyzcLYjTkGZa0hBo3a
UBpbimGZ+6uebB+hqU03pulmrcBcNhcVrtp21TBZ96q5j5FUWKcka6ZcsxrfhZBOZUBT0SvMTBWo
ahiaoNhr7dOLPuAZ1c7SB2Bkprp4YFkh51lQjLkR6AB31HDImm/XOd4fRGUjw2NuFodh8UZUHVPj
v4NssmGT2GyD2HIek9Ssh/oPE+o/fKggJANAuYw0mPK5polDyhpf0Y2BNbI/LzYXqhDnxama7M9W
4n6z1MGbTtqhmFYwaLUx8JpPsRtUtdp/8WTyFm8NwohDgnAjogYyXmTLdkca6aq462ABEetBgT7Q
kPiZnZkCpk7trLww2GOJpUbk0tjNxK1u+FBWB5chPT/P7Bp0hMh/wxEf3TE5zv+VPNAULVl8a5SP
Jj2GD3rzpIqhOQoF/qCcpdPKejKuigwe1MjM8i4Ft5q1eHWy3rTI58ezuDhGn1b0Fz8tgYJXSbIo
jQ4sNrMnc8UvqjnP3+ENlZRi57DlCNjtZuAA/XUzoJ/A894Y5s1mML9gaTJgmI3hZpvB/RBvMf+k
GSYvG3WsuW4joONmoLJS3rZgq2awvNrCtkCnWwJ9xzdWA+xHf6f5zBkyZXGjuf2SypzQnmGM1Izg
zL8eFckmIUxkVWAvddYwFZoxzQxvj75o/H6Iy724GQl9iWl/jLKpFFHpQs3zXjP47nelhClB/q3U
cEXK9yHG92ELA6yI6mzNziIOR00umpG+XIPCW/NOBA8RMVDzDFrtDW9Q8BHxxHUIiUD1+k3m02qH
ye8L89CgwesVvmFYTy6HBg2URvyeQwpVUMdxlebIdQveWBpTwunwj1r0LR3OkZow+aK2yioTaYrn
/IBd2p/8k4NFVLGbRX7H4sVDNcO7teIROgoEBY0zdlKJplgBbxSPsgc2po8CMD8xZ5oCBUOoYAYT
nN6z8DysrBP4TZXRrQ8gHNqJoK9q6+0KVQQ1avPjPTwfGdhf/RrgnQ/1OUwnh0bRsOn7DWlXX0gs
LwHN/ZqbgkJDyVyfwGgTmF6VbDSo5SrbHfix7TujW1B2+s3qeNnAAIk8yu+bztqteyit8IIPxw2e
Gy22PKgSdzR6vXspbtEofKtmtKavdfxg32a+rqt54hwdzl4OpbwgSh/24cnhsuD3aFoU25EVTt9O
UpnjCg3N/P/64HYIFTOL/juspBGdcdxMkdJ+kzzwIrQW58rvqoxHPPHJTAFIlnEhvORapMDH7i6S
O7w+EHAClzEZ3/DCDr8s6GMKFnlDiblai2Jh8mueLlpqeIHSRnQxI2kiMC4uNXbHEOYwIEpo4p3G
UdC+s8woV3CSHbKNpa46sUO2J+sE8gfDI2Za6l4Ze1E1VQc8LbQ2NJhUTFC/MkK4+mFAQoq36nvB
tdEQNTXR4ckIh/EiJeEiJXMlKXOj3lpfY6wYwc5tjAYSq7pfQ7C6yO9OxVdVqnlzEBVMCNkpLfG7
YR7kBPGUF5OStdJe0lN3RKNNcJsmd5iaiDW7c/za4VfMa7+LF2Qx4GduWCcVj43gJ55NiEmJW4bV
Ncy9wAmeJOOSvgDhaPXkvfY2reo/jD2exYsGk83mltqIvsEAOnwbYu7A8U2+socZJWPULvxGbbpu
JqlM0ii+7G10EQWeMIVZVxuKupDVE91gKzUV1iGfL1ee0eLi7105VCeyNtrnXGrJpFyT+EYQpiGM
CyoKVGpZRh3WFBQ1Arn6048m+tuOXr0K0/dmi8RErcgGzufwiI8eSlYBIUZW431eYuO/8bt1y/hW
pdio+4UcPGtufgvPZpNpkOKL2k4WfSOr6mOrSBfd+I0J5XnAUD8O2KO82dOYj/vVfsh/WisEWjpD
zySfjM9bJL3Cwgl4+OZUfqbL5sGvjNwOuAZ1Ukb0aS7eKq6RxEurzSQBTBkRGNYXdBUDbFTRlbfV
nayPbXG0C/4CrOhL1Uqzqj6foWzVM0Cf8gOS6qRK5i2PiB32n2efP/X4N1Lp9KGFQwiP1WpMdxbV
URBv50YhYA55XTekKaWxo39DHRCc97JkUM2BpFgBmgZYi2XSIqDuekxQX9Lk3BK6uKQN5m06cUoi
idvNrbxzfKQM3yO+TrBA5nqEpubvefP95hkVLwSzdOH9SjKpUSOBowx7mSOaL8ZCXPllOLh844Ug
v5bJJ2HXr5dsG3q8wYF4xcntZKh9f12Ymm4b7z4UPnyTc8OjTF1Zy9LeaetqaOIxr/EwGAvhr0yu
3GDByQ2lmiAvRE0unkjfZrpayIVT3u6yzbysQLox5DYpqvNc0uq9qKqjmEfUKXJrvYrCR3WVhZvK
gD627as1/k2zTefXF2Ux3my6Vm5gu+6e6Q2QrUtYNMb+lC/c4TUdt6SNW5a8eRijrMeozDOwEu0b
ZBpXWVzVaPdUF8aE1vdxu8sSYe+d2rkt1sXvAhl+4ay6Lpvq8/+VSjgEbrYPpdewA3H/vH2B2SaM
8U40d1DSX28guo6CWRWYKFePNb3ApGuOFmVN2hpHJ8DbuaS/i9rBdJ46OobKCJiwdTbp76J26Jsu
eYl7gM51dyabQeHaDzfrEO7lwGcyPBRcCPdze6pD024u075+Hz5lmVWWMS3iRonFG03bxihUL96r
h0zXrNX0aqp8/Bi4LUFYIx/BsLD0J1kaDXrTtEgkfPy3FcFtuU/wmjnyvEU/FZszn4bsCMr0+Tm/
c/I9n9dl3b2w8eOJoCKRLRXlGEQLzrx+qLd5xnak2kN/XUbTBKaCt2LbkzPcX11wy7j/gj6GkkWe
6KOUDli+FkHMej9eeDEyP79Z0Ed3+dR32Cib3AiS8drC7+1E/82KDRkHMyYYrKthliwWnyWaQvG5
fG4U+bGlYf0Ednc9N2ImvwDk9ars23K9olVGZSZR3+vIr1MlaGm0MKoGW0Wp+PdDRuEqUZuKziKw
TzrhxTpU+afCqnMVWfWg3DcEBWWvjG10OUo7Q/G7vhdPxna78XR6q/M31wg1qISTETVIrWpWdWWu
AoTGtluURRGVyAL1UOyppbwqDV1JVFOixUFC4FnWIioKq1h1umTVFFk6zt4agVIrAc8HOcoS2PiU
5/nVVqrEJu5XOuIbvNqb2PG9lO/0w72OhV/eyQ+9T2VpnSKfU/EOjZRzwINzt87R+BZx7UUQmADh
S2y4jdb8rdKB/GLL0O1xup1d4tOvZocV6ddweopXSBerpSWPZJmcncOlEBMRsBnMb4K3ly3QpUni
InsAFVGWaMgPEVtcrOQ+RYant73D/nK4U4eAcX2TK9/t4l5AhrqeoBr54SFdrsaLlk5UESib5weN
iPAKo09BhHrCkPQ3E4uBONQWSJL7SgD3VWL9lVEdLfSMiWMLLO4ArNyn7wX6vEg21fFWBayfOr59
f1wYg1k8AUtSlyCUValaKvljkdy1ERfLJW5YFevSrS3Xxexrswi+oc9bqNx5qFxXPULOfYrb4mR3
73jk4+XhELflyqgX91Smse6hMxbtHb4QlU1bknFmCZviWQ2D3c3AiBNX4DG6whUvvEN8AnrkqZW+
wX5df4vclgQOgFBEVnxZ5UQ5Bo6OmCPdEWKV3KudlHn/pelP6aJiyyHepDFh8RilNhahMwqk8odX
olTdztD+zTX40jJsuHEjgQIzgJFqw6RnGqT1U0G0rMdah2AOLl1XpI7IlCjh1M2UJhcaXBFo04IZ
Jrk2LrLhOxtUTxYP3cI1M7TDoU4Cg2VBWnuudf70qp6Wy7bViV1Hfr/v533I5I4GHJ17Lmyk6uPD
vl3tnbpFawe2ruxyIy+1Y4es88bBNyevE/begrKPfuTPPx4MnBjQSbu02PyjJx4rPOyX4yJdVsNn
h/SFfb7I8hj8FNsS3BlqIxa9OVkeVuxFHQsUDVU7cpTyPBvFhay9vGMnmbk9RKNFXiU7w69lQpI/
7bBfO+yG5H6G5dgxx0JmfIJLDv8b4xOe+UvNZD5uh35NSaxm8TWXD3pIKaV+jW9jTomD2zydwJR1
bWgO9U2WWYm2QBQ5HK8TvR1QiV8ArHy1FWCgtBlfca9Pt6JOO0PR1IYuF8yMu6hVMwIuxpJRP2Lk
4SE/90MAvijZYVh1EmaNhz2j/B7AirM9eXQGIzQnAuwMqUaYhq39ZY7AGqSsDbg5PqHztJ2hOObi
wBoQ4B7c0Q4ysszoY+kClAWYU/mUUS1MYmaRmZfIhDpu/+xYZDXSAredgHXyyDeWgY8aFIXKYZ+G
NBhD7xnxz2eKV0yVvDNUr/tU1/TZ/wdQSwMEFAACAAgAuYAxSaEPqXMTBwEA7RwGAAoAHABzdGF0
cy5qc29uVVQJAANNzN1XTczdV3V4CwABBPUBAAAEUAAAAJz9a5MzuZUeiv4Vh79uswN3IPc3jSQf
69jWTEjyHjtOTHSwiqwqullkDcl6L9rh/34Sl0wAmXgWsrS9p/vtVicILKzLs674f//j8/0u/+P/
/R/+3/94//z4uN4e993h+r7bf5x+eXu8n8P/cjveP8+P+/jn/x9n/+k/DOI//QdlhXL/6T8I+Z/+
g5T/9n/+03/4j5+X0/P1cNw9nQ6n3elyv573j+PuY3+7H/FKZl7J/yMXjZXSQvu3/e16wSvZvCdj
/V9cWOtw/HZ6Hr8+7D8e4bvrx/G2D396vl7uj9v+dNkxJn750VpZjQvxwa/MtIinFTqsW34s8ceC
zR/z8Z+5CR9fb6fj5bF/nK6d3xai/twuf5tTH/PVb/uvv52O3/09776fDo+33eX62O1fXo7Pj9Pl
dXc5/niMd/bavrJADpfJEejhCeLXvR/P4yLXW+KmH+lzz1679+th/J93ctztetWRB7iMLGXHBT0v
qHjO4lMuhifwsbBhS9KvwfX4z42v1RH9MpPzL9vmL5sBfepY/l3R/NahAwvG6j2L9Z6lhCd2Jn8d
dtKgl8P0Mt3fVgp8LJmdPx5miS2/PXD0w9Lq6ocndi4+VvoZUVvr+aL8D+v1pp16gb8se79sDdo2
H3j+2PPIsP5pbdAvi0yvQgNUZ5boh5XtHHlg8JLZkH+Xewlb/66FpHbz7xrGtA1/M02K79G5javO
Ldj6aysgp+hCPFz7a4ZILqSpj76+bIeFg3VF6yAhl9n6h1tiydAPG9GVaashubWueFTIxmVBFTjM
142IraAukgXBgFwyDW9K1WdeS9Zg4U3xofpYrCWLcywfqiCYbBOMwbsSqtL8rY+hrROuq4u4hfuW
xb49OmgZOyjXLMt1UPyNXxYc8qfsKRQsz9x1PxYQG/Chp/ihiZaqUN2saa64EpCz86ZdkznlsIeq
m1WARrcADbTPtmbs9RVjMDQuO/+w51LJ18qPQ0PneuKokUhwwys1wBvihBGckl3dpyFTqx50tBar
zaHctWjtGsqxqGFnY9MQFXBjewe28NuB1ap+ra4dVppM9eCIhYLoRI1310ytIVa2rPftgG2y4D1K
j1gC3rEaujqAafjbsrYTbW2Nf1vVeq+hByBnC616/gWXSNeLQdYXvd43YrAId6OVkO09SwmNWw3x
mxKF/RrJe2aCS8wmg+l+baFkSMN6gFVxrO5V10Yh+CVl5k/vXTTQl4Qs4oYultBI3Uvuqh9uGHSI
JAZRS0XjwAr7gUx05VljcvGeBuOIO4cF/mn5JOwZyrKpkZdrMAjkjxxlQN4QxOfCsK7/CY8sdFfx
CovBhK4J1nBeocY33QiHgSaujFC0TRyHGntU5vWmGyEKGN1YhJIa8gRhGxeZuzwIky2ZwJtmXQZh
AhvIoQe+LJQnw7uOuoSsOeieleEc+una9OAm59AdUQsWaeE+7LRq0TUVHAaEhLZdrYuvWmjZDRtC
ejPd05xGQaFSPZ0N73nkgA7Ilsg0ulrntmgloHkz3SCWgcEz2yXzgG+Y11HOxnnh70rZIdUAPQq+
EMUGUjUGYk1pulypcMStdAzaWtNi7eUyubzJkI2NI0EebI02W142JHURuGJtKCAgQLbdkAQOenHl
uvkKaJGN7jGmhIYx3jFlJgYoTFz31C1WmLzA9eGGW5E6+MOuF5scYCxEdH1OjvlSFh5UO7nDFYzx
DUMV/VlLE0TlXBYIBNgmjp0gzbv8AaMwktWh3NYvw3vSru9vQnLZRTS2ASNw0Ipn9wmZY4VDomUu
DXxtLNSai5j90PoY61xXxxbWXHKA4UW7cFcb5NYappVEzwuCoQEue2klDh0ZyXh9zS0PHQrzUOfC
WsEBiW3yUB+5Fe/XOEEiunAA0WsQlc5tWRkFs5aMd3G9cTh8xLqhK+wICa17eXHHcdJz6CeocZhx
6IYZuR1w7rAOvDeCo+iHB9m9KwtTzFLXqM+0Mg34rrohEZyS58L2ovYSxhZkwWKmfVMwbC9598gI
12cbJ2Qwci39heXC1E76+sAwL8OV7oEvqWDAzHZ9Tgfzu2XUnrWvGGICIbqYwOE4sln4bo3YkzrA
dL7o6SABLRwXVWSzcU+Cw0vmrlNbwxn0dBXrgUYH7UxRo9JOvsFoCB9UF29yiIGU6mV1lMAhZNPh
auhRcME6nxpc3LKsWWjxJTRvskjr2Kb6gP4XF7KrAXCMT6tejG9kLZxurPNJLaMMK7ekMbUomoY3
gwN1ssteOBwr+hEcAz0Dy7v3DGO5snAd25kCB50KJrt+gWUHaFR7cZgR8kG/QPRBCIeGoh8hFDDS
JngPYGvIXnzoGWTOMWPb6p5atTiYu2Qf8WkYOBf9rAyklyjtajvBoaBd1X01gpWftn2jDF0h0499
MxwFlrILRLTBrO26Lq+CEX+uOubxAM9s+ylpWMgjTFd9cYlzHE71wpsOf7x0W1veDEw1ON5NNTiI
vqTtV49KbDCKkpy2KjEQJlvRDYBj9ix4BGXgGIxwym7OcZQ8GFLp+7wCBwms6AmlxV7YoLtFKpBJ
+CLd2bCRyGdVtf/WKpmAqlPWZqpxT9DU8GVFXwOuIudvqIB9o1QCR0T0IiLSOi6ksjDdygGJaz7d
hqpibFzLSm6g+2CmgssOwTgMAnHOuhk0BRWI5Kaj7Dks2pIlc6H8Cszu2m4Ye9SauBpn6CBOhbNR
uptLlwNkT7Xw0xtVMRBju+6RHSTXoiamIRYWYiBXoIEhtyjVUX8cJhy6+QakBmwPe3FILKlkX5Qh
tcqWDAlgMgwPGN6FXjiYwkQvX8lh6abUrgPuIcDmppu907iOxwwbsmi4SFb2wvawapxzUyekWpgP
q1wn+uVtMFonWNclYdhWiG6vEhcweGV1r4J79FthUKX8aQDuBU4fmjqt1Kq7goqk2LenXruoBvMJ
r0xNq8YN+gaqmyNWMCmuTafWHpZAcrPAyC3biktG+SKa41pfQ3Jx0a9LhmEVuaBXa+M4Gcb6mV4Y
SZJyoQ4akUoYXhX5qjycko0sHNSARdOjMO0iE4YdA2l7icsBWhtuei4cbOvivG5bbOWUoLmQfUWA
Y6Sy3wE4QAUmFki5gUawtRm6qVYYm+AFGFEmuILGtMQKan3WL0C3EPAW6gBklqASYrZC+GtiI6U7
9Cs/DYzHSNUvDcZREdWvHhc4RGC6tbKwi5iroV/uiuhluv4j9vA5ryvGGjKBflb3sS68JlVV2rfw
JvrVoZfngMzMy3YIYNsYxMhlNrttj2GOlUvVS/tJzFWFLyNAj6LDCUfR5Q2FCyh5t59/gCEv3m1p
wEE+rngHwFiY+iujoq4d2HRw+IHsR8sGmOxkrpdQEri6hNsNF4VxF+/FcQYYMCsxW5uxoUfBTTe/
C7t8eFkfh4LfuJRn6Ja4wQo3brtgz+JEa9lgZJv+G4zkcuN65HIQNg29xB8sjePG9J0vg52voV+5
hDFX2dIASi1QLMV0M9oC80fZXgm4S2uYohBmdWb/eZ4s0x/iouaITshSw+RQWwl6uZo4jRFhziP6
6amAVMFba/eI+2+nWBJDoM+hEyvO6z27zVNc/NcTjzMYmgVzAMaP9cRp6WO5dYaL/3YqyGZRuOTG
bg41V0UHQrfdGTDBRRWVEwwH7cAIF7/pydKNX5sWhgLdHP4rkc8LK20N+l1ZE8ttnN+i5nBfIFYb
9oF61fCzqkes9vwWVQTPGW6nB5Nb/C/b4uu2f9/uE1Jzr3U4MWBphgitlO0rAKg+tCi+RgNQJDxy
wSAMRNwY2vfUSMKgh6+gDtDcVlfVzIZpSDHdvWdg6fxPTxV20z3LjVENNVuMqG9RmzckmNRdakMj
owZV7bpddQEJVl+V3jr/JPym6piJg4CqK1+y/cLwEzVnw2d9u3n4STARojxt644M1HrKdCgFZp+o
OQ48K4FhY7pAzdOyCP2BAYRUmVRe4Uu2cfKJv1c2lDc0bI3EBp4q1CUIAjOMerTqYQANMY/OMgji
x2DySVB5rLIvrW4KiJhEjbZaRQeIseRS1YqNQ0T8t473FIeF1oUV3zoQvxFQTRteiYPYODUlwEtZ
4pbtY5PCt6pSHGrr0JSgZUXXnIKhKeHArPq6OR5Lw98utAecZcbgb2vdRdVQKpTRPYGSSJQ1U7QW
UFBvadVReWBkSrBopkandmOzsZrny5A6QEIW0czW8uQ2D0wJGoTX+GHzwBQ1z6ubfcXmhAcNsbGs
QZPcOjIlHHrB2WLryJSAMofKpMqtBf5q7i6ifFQw9STYY1Fpgu2VvcHIsJ7OVdB5mgc5QtOo4bda
DpXu01unngSu5l2gZzVW2Lb7tYHE1jWLbB+4EhRQ10gJeFNSLnC12FpRE7atutuGBJPc9Gz6AcYT
XHXNbuPMFDXPPoq/alAGHft8qvb5tg9NCUaKdQ0kdHQ1MzXqU5sTb4FHugIJJp8EabYdUIAGnwS5
kLVcmM2DT8K+XccHGqDrVd5V+8gOqgJex7rYxqEnATL2XWSBMZSzPZ+PQ0o706W0gCjGdTWQgZig
CJShvD90Zgr7hioOGA5oqhpyNjD2AP16IbpYxMH4r3ayBxkH6BkI2+EuhxmE2w3iBKXJVk6F2jj5
RM3zkTPuM1tbK4MC4V3to6GRKWOpIHMvIHu52p9hW0euqHlUZziyH0o9xKHUbOvklfDLpqM5JXRb
VQ3eWqwNhVl0vSGssGXhHYTBK3zj8JTgAsquzsWgkeu+/6iwndFd/KUgj3HWg1ADw8F+1vtl6BtI
VYAgNBYMqz+zUGF6c6tjQG+uDlCwjWNf1DzmmHIDLdQGTHe1AY65CV3ht+ZTAjiHxWtFJMTmZseg
xlxHfQqYppC2BzuVwg4R79gLDiNnyorKvjbUCIxOSOV6oWAYn9BcdKNf0Nho1s+OSOwDMlmDdLG1
kywgCt4xGGD0iprra0l/G4xeCeLIOzF7jp0pVWY62xRzmK95V4GhySuB3LqL4OyAo8IL7DhsbW4P
5kZt8NhhOqqOM7Su2uB9a9kzVhjlS5kFy2NBMWwcvqLmqS90EB46kaU2UG2HXWAmc7xnMNCDEYHc
pgrNbB6iEiKWrlN7AB0bKWUvQexwYNgunLlh6xQUVQwVYmhGqoDJEil1mcjfPgRFzQVFEbe2VQH6
kukqGNTEUNj/5LKHOh00U7ybpOEQjKgh66/wPBjbOkIlGPUu6hzgt3zoOWPQNZCSlze8edqDmrsk
SZaGRkq7ri8GvSkpVeeHFQ73FfgcJDyx06tFt5wGlkxp2/eYcQURr9PDavP0lKAvdReeg+Lg4Pcu
LspunL0SIjKiW/ikIPoSphcYcdDf5t1QEOiEVXPbH+XyouErIfSve/TSOAxehr/AWzMYnxfWSWgw
JxCyp2R1aklsnSUZkjSut20F08S6cD0lGJeO6dXL0UDtpcp8fHtIoILG3Kg+AmFQ9emuJrCQsUun
AqBcWOyhrenBCDTyM1zyUDO22jz2JTg0dQTMbJ3JESIbus456K1DX4Ia0Z0KhgOkl9O9BDWHBUzK
6l62QuI8ydBFAw5/XPi8wE+HsF4N9bdu88SXQC/RqzKTuI6RDR2YaqAKcf3cjsa6q59uFTgxVPw0
mNiJ4QQzPTgBjaMsk8Qg1wHvWPBOYS+2T6xfdgFRGx8qpDlsHNiiiulLOMsBQSpj1a+qrRNbVNEV
SZVcQipL2zFNEodyB94NQTMcR5Guv22otmS/GwHGjqQowrFgYBR0RNjQy8NDYWCmFyAUMBfl+rFr
h6P9BV5rXjIsqJFF8TTKo1tcqm5UL0iHYSLnvRgwrLSQg+j8roOE5rLHlRbirWHo4i2O/R/buSQJ
ez5c5XWxrTPlQyR06LSacJhz00x06wAhntZcdftjYKiIywqLN3vA4K7N0JMkDbW0NT2nCUysDKSW
nWIFDn9Yy4X4D1vfqwy6w/XL8bCaLupjwUAdaEqZrANkbut4mHDkfhacYdMkTR8uwZSbq+tZzObp
MGHftffSfMQV5yhtXTw0bBwOE+BlrwoHzYYJUlEDarF1NkyINw0dxlYwbW/6PUWw3Fz3u0UUdhPF
Iu2lNr6lqoq2bCpehCP7fOiG52CoSi/8U7H5DaHwywtHUW+c7hJsm+3VOaDpLsGtdh3vFnIIE90o
FwzQi6LjhIG5a1iFLDo4t76PF0TRdoEAjv1qsYiuuY2DYYLe6zpcuGJcsW6CEMYvpO3WhHDYiKl5
VfjTDOpBLOA6iQGoLxnvIXkw2CXIoe4ZcwxtlVHdEJXAX9va9WnV9UMpLgpblQntBUaqjbNdAs1s
h9ocp3GFqGtR5NYJLSEYOdQqV2+c0aLmuSGUCrEQOy1bMNabPkCuLnEX2DODP6y76UGY/5VKdysr
JOavoTbnw9YBL2p+xSeTWm98aE7NQ88yqh82jncJsSLZ8Z1wiZQWXT8TBgPK+CcY7GlwykrZTihx
wKpadovjBceS6Dopb477TbRYlCqZjQNagpHoFr/Apg85sK7vJbFNZYtmKLFxQEuw5ouGe751QEtQ
IN1UGYz5Sjv0gi8OJtuZ6zEI7N+Stlf4zKHC1LYjiQJGMbo1fxx+mgNr4UFCIbfPVwkum617bRsX
jKEtE0sp9h83R7OEQoP5fynW8ZwxhXE9ug67YM0gPfp8eg9x+rw1it7gr2OEMMwaRqOTDPHjsUwi
fg7ChIr4PI2HCZ+3Vb/De09x1XhyVFI3umPw++Sc+O91+3Vm7+7Dz1PmLvw8mM+s8NFT4TpBudH8
YLrnravIARK9u4f3L3v7D1Mq8PdDTf7me8n48vLXbX3B8elT6dbEtA2l7scRYNKL+XP0qNuAz52e
74u/DmYaWeLmRM3yulXRBL+WhcAMcP4n1hW21hWmVZuNf7wgOwjrWUpgUvvmzHDt6m748zGOSlHO
z77A1ybr3dtWiA1+bfPZ262UxJWn5lFi4z4ogM9te58bRmw8c6trKjlFnNoUOweNKowQcd5TML4R
HV9Y99wEryanYhLSVvhoIBRMfWPNOA6hYabXG5Nlsa1mAnxs1lUQhGGQsuRTaVqTOLB6UPO2247J
QRAwJpsklOagkEAlXy13WxE/nW0JKOUllOI0dBteFnFXLPMJiEQ7TuhD19m2nzsAv5Zd6fI1OPjU
uryuoV1DiG2/6v24FRRszKJtGPP60f9taDbVY/gmu7hZEFswPfwlCK0qCvUC3vNWA6EfushVEyDA
LkC3buZQsajlkwPY64sDMdlNffVDM5+JOYfTuI8T5ohnqqMopCIAr2GVhmo/uYPlTdBqwhDWyMlK
T/BmnApbBNX5WhCmTPU9NDNQTpLoEc1SikJVMJ83X4vFYsJ7YmKJr1l93aw5EwYTfajp1ootEl+L
zpVRRBNDodnAXBhCs2nXhZuEcjFd/8RnR7CUFIYBhJ8Ic6pq0MZa02KxkKkucLLEhUtbXVl7MA0+
d4/PQ4sxFhPbgwKUghC2optpTqXA5mSBs227MxHDGNMDfoQ/nFp+aXNiKCTiejpCErKidM8p5IRz
NT25glVMGKeGb111bt1SsbdB90SNE+KSetPnHxfNonWsmnVXNRNKZmDd0BNhTYWogyC2OewYazjX
tYgE8uOsg0Es4S8MpqvYKeRmdFc3U5FioTpbl4R6ZKJnDx3hHDJFgydO6CcuKhltxbwIZhlcLzwe
mkqwiC++b3pKhHoS3Ri1I6guZC/S6RvWMdllL0RL2FM2dP0EQkFo1TGIvjUXG2Pe4zYiPMxYX6kT
JGddn56Q0amdmfBKFcHrphv88UMQsVYeuvaIioTovPdQN2Wb813wr0tayAUVmpY1am1IuaFcYteL
yUtCp6taylrVlwSGsN3w7kBACC66ppAI2U1v+005LNFuD8DcyjvenSSYVZnSnrRSvlhEeS886wjM
yGyfZhSjKt0D68ZRsI31IOuBkFFjugbFv7aAv6833wiqE2QvGJ2Dyv0jYYltLyyuFAW8VA94SUKr
K1WbQtkcJYI/z5o1rtSctYqFnPX27hylGlnPEHMiSz89OIgD85IwaGrohgsJsnNe5Y9a8R/Cli7E
3DRryvDnukoKuGatE7YorIshfJEWJrrpaxkKOWpRCerQbHfHwDFzjHfpW02QWMxtDzX6hlN8cNaN
ThOw0dZBnFYxsaSynby886E1wR7/tOyjJ8oUuw56opI5rG/HHRUL0LYbnNYE7BSGxl6KEHFtevFl
wpLLrncmiYifct04KeHaiR7apawR173aI0vxqctQO5Seqea7Nvi6+/FCInajda+SgkicCdcNIwiC
6lLTlRCciC6n98CI7I8j8Mc014I4NqEcmO6ZA0V8bYYezTRVPdINqluq8mXg3RgGAfp4VRLQnCpL
QA9hezUBVADC9OLakgjdaL6yJKHG8uV6eexejvvH5+24ux8fj9Pl9b6L/3b/fNzdjpfD8Tb+y/bS
frJauE3u/YCQkJTZRO6+7W+n/dP5uDscX06X0+N0veB1zLxOUIQiNVWcT5fj7ul23P8Wvsr/uNt/
Pq67t58fb8fLvblsUIjh3GHVqF/MYtXd+Xq9H3dv+/PL7rf9ZY9WSqkgv1J4nEGv9re7P26n50de
CuRnxoVSqWhwnkIVm5PtbX3cRsr9OMLzpRSTCrGZ4HDbhBKKpS7X2/v+vPu43h/kYsnmh8VCUcP4
VwMOeb9+Xg679/3tN7icy7TnIS4w/lV1qI9JpoubVOHNNgPO+Xy8PI634wE4zZ5q+aDWX4V1HByz
v1YqCvNrORn+gvbVZbGkGKNLHTgEbat7lU6XtA+9d5q1ad8/os7kct5Wu4Eh1qel0RXcysJj3iwZ
Hkx5SHdTrMUCaOHghKdxob1XPjS/Jrgc2X8Iz4wOK7GMSqfPripfQCgkm+rp1wfduLuUki1vVA30
7uDeTCFKMqTuAMueLvfjx/7mdTjWGrw4qQvhBOeaG+tdqSpWMsHHRaLUU4tWlXsKL/85eMZt9LcF
7wYUMf5VNI+5hWjKFXYpPLPDe5oRi2c+rPNRayeQHGzYmMmWiYdp3+NfZW9rCm4tc1qYX6u16inH
nYRbKxbzbrlmrrcxuJbWxcZsGE3ekXS4lJIF17LgdneBAbYm2cpZH/Swuq2BNphfLYp9hdwu69Ie
qjOz4lfAYx0LoLOJ4+HV7vGvA1KMG9jVyRLfhQCNth1cAM9YaFjmdeT4V4sMcEcBObNhX+Emeyvp
Qimq8Na37XAqlEZVaEUVBja4HqfC8+VdxVHJQ9sWbVSuaij0dXjadujyKjymyTIUxu9rLroCCRez
BSYLQRIACbqITLOlmujvCuoc64pdhb/0mAJqHFWqifBKpu6SHgPrrFatNx7WSBIJENsqyOUth9Bw
W7TGsYVBYz4XPv5VxAbDb6fj94/rbZTm483vaP963J2Pl9fH2z0s1Prfvx1vj9Pz+LP78+n1gn6U
82L7vqxKpInrxE/uxlWf4YKsUJyLRDy15rf3/Y/d/ul+PX8+jnjxggdYrFDZuPz3DYubNik27P10
2bB8odRSjQuk9Ond//V++juxXGHoYjpVb6c0XrUwU3FoON+46hteszAMLKQQ1dZLw2sWLrtvhRSM
bVvz9fj46+PnGdJ1yOzrgztSbWcBvNnCxYrxcrOVqBvYqhBgGZwaG5XGllQhm8AEV3Vi++V0HvVe
1C7xz7vTfTdax/vn08doPUKQBsfJVC4qDo3a8Tn1qAoOt+vH7v62P1y/w29jGo55ZBibvFPmN23l
NsKt0+UBP7eungWUYsa3/f1tl5bYX0YZC/b+dPk2qsjD7vN2xvth8368ZpbxJMeXl+NoBkdcNJqI
y/Nx93x9D2Q5woWiEYsLeRZuHSsRZ3fe/xz/5fPb6XzAJ83TP4KvN7l6acXnt/3l9dill2H1tJbI
9Lfj+/XbcbeR5kNx3aX2zNRJC31+HPaPo+el/WPEEU8jc6d94rWL2U6h9SY5jgu6zeQ/7F725/PT
/vm3Xbh0TL7FW02uZP7A7t9ed7frFR/bqfaxV7xxOJ6P/qTkfqKLFtijKJFZHtNzROSOOz5ZJpkX
pgRTL8d7oE48ID5Ulp9swlcnOv4YF7nssdSk+GA4DcfrRD477L6P5zqOavByOF1Gqh9H13HUiHiX
MTSRlEQRmlhc30j39yPBuE4WNxj+otE+78dROL312HabOmsNwWc19HT+HAXzfPr4GM/89HPUROMh
H9cbXCaW8MZlYsIhao23z1G0w2qjAvvE0uPyxIzw4oO2pY4f/Z37b2E/u+vtcMTbMAWdvNoRNlqx
t9Ph47T7B42EK/RX/ItpE3//8iD2pjKl+RAGGcUjXl9e7s+34/EysfzufWS228/d531P6BuX5/4G
dV9q6fHSThcP7vHXiyl2lUb+GK3fiMx/7j72tztKV6nchh0GCAeXoFomm6+X2/V99DCI/ejMP6Hg
ErB3uH0veW/YLqtsl0PTD+vsiVorxgsiWzuf36b0Jt6RaiOFz0uKV2DbORS855WASJHXSkC/nx5v
u1E93V7OBF4RWdOJ+BdZQI5NCEPWutI1TTCV41Rz0ngGPlK07Ic/H2a7oX5/y2E4UdhbfMnFcny5
3Ix3jh+nPbZksjJGkuZezCg2s26QhA6EI8Ugs26Bme+n94/zVy5LtWbkpc8D3z1u+8v95Xp7x7qm
QEZqvvDIdm/fd3f//58ez9hGyQxIiwGDC2WFucXWw9WrIxzfP0Y9l8xvx1Qa3hpr7WXQa6RJ/naj
Mr+ez5E40cKM8uH/i3SPo+4Z9Spl7UXhWbAwTaV54sAHnx4r3aG3qHJ5q52mU8oEHmZbMfGT3+Th
eB89vMOeAiO8mqK8FOBX0uGqZ+qlnRTuVq3MdqPhPhzxcrLQaSoMvGtreyz7eT9KhSk0WkoErS77
d0LJDwWQCo++Oew3YUViC32PjRdlsgqS2Dk4kE7zdDu9vj1GhH0fjcf+/aNjSmXWR3Up2u76sX8+
jSwYbmuTt6wK9BPKTl1nY3ipjKlzoXmpkqbN7S+H6IjcCBayhfY3M70IuPA+fn0ib0C0HHGArSbD
iyUmIwCPbDSAWP1dZaUSkWhJ/lIAL8fXccnRot/2h9Mndm3kUNxo6E6xm0iHd5jhRYitRDkM32Sb
dZ8IRsu1s6VBtgTN8HYy8/v3w2X1fnj24kcFcR5JSOALMVT8OqwDPZ3QguS1/bMbAwuY50U1NdcQ
AZ6EMfFShXGRs8L6R6wipp8tNGsRlN4fDtuBjCiwa57WeX+7fp4PI3P6RNG3Y2UJQ/ACAyNZgZop
DJ8v4fAZHJW+CRJZnXmEYeLO/P15qQxfTP+wK7XcU4CTSUqje00x0hAx5bjn4J/rOA0imt+fo2U7
Pe+WP0OvlqoBo7cfgJWrdl5tNkmJlzp/bdN/A3eq89plcnUzIaJTApeXy60P2as6XUZQNS76eTnc
4dlNXkDMMGba3RZkOsxVTXIKvUhqkU32YpgLKMJV+/9TNd0Cwb6d7qen09mbyIiv4k0j8RnmBGLY
Kpv7ZTpbhYupebEh5kk23i28TlXcRuFfdzgRLucK5gt/kVuZzyOOgtU7XMgLLnQFFwKyboD7w5yC
Dqu68Dq1au7+cD3eg+LzGbz0I+ef03n8QT5GSSWuUWaeCFZJbOI0AZcbCmkocoU9dZLCD12NUkgs
D3+RW/YLqZzvLvgxatNeNynprFbDoELJUoK9bZ9v18eeAh/W1GkmExd7OscQdjQv/h98Gu64O92v
Z7/e7vV2/fzY4UYRXvTXhJzCpEHnpZ6uh58pD+Dp4hf0ePx6BmHksGoxSUvEdutM2bRCuduQgg5L
7pIRw0sXrb0h6j2awOWWo1++u76UaCr87+Pf3/Z3AhPE7sncsBSILZc/EMkbQPF5/zrqiw+fShgF
ejyeV+7P18vj+OOxm66HIL9utYYXPxV4r8Qjs2O/S6gnIJ7OiYoRX947Eo64jeLfXkd37nSZlMnT
9Qf8BZdSu3aROKAu/P6NIEwxq8mnDI0gloslcY9EhZFEo+95w2gtrl9waKhF025J+pCo2D8/H8++
XmtiIX+/4VJGFXP2nSH4N4oxn1WFg08Vxd/xuHrcNF7CmsZMleUebx55tzZKbK04ftk5kLd2/PF8
/ryTNGw3XOcl7teXx+7sIwJ4jWJAePH+TxawpMlm8cU56sjoxbmEzBk2Qngfn7dLyCQtpJfQD4sB
z2z5E1OebTc7UB355K0pus09l9e8JbwWtUzRuJofperS5OVliwYb6rVlyiYE87a0S/O6+Qcv1+Q7
ItvHrSiSkhGlt2wUlXyNPC8L3mChfXybGhwPc9w//E7jn7AWNFkLRqnS25VKh7OL6UpVYDKLW6z9
I3RJs0Mxfx8klWKjos0wK6Pi+6B9I74hlIZrzL9psuJm9i7mq4RQspBVZrd9v4/T+UgpElOPslhp
XjJRF7eV6e39Apnpnc8YEzmEeix5NrxhtdF07x+jOnuL+RCcmwxMywum1bmYuokBCf4sFLmMndvt
ZTKW6a1YqtkierDkuPBnguFMY/RzXuNjtHKJ9Qmuta41miSvctjffqNYtBx7mWdNtG/xcHzZjx8T
pRZ+ySHrg4BX3cJwUt575PChUCiV77Pe0hy9Lf5noiooIqya/dWKZKeXlJMhyCYrjcMo3vfMFbKY
Cf4HkInJV7gRsROEtxgj3CvFF7aFz3rCOdWqFIWYWDx1gaxVbpoDvJOImo6/8xnd/QPf0lADD4rA
z7fr/f6yn+A7XrIU2yKZtwVufAGDsQ6kKfzWGUNu91+HJXIX2/xXQhwK42l8D8Um7fiFPYuSo4ue
q/InEoieEuXR/YgItfjl5NlUDua2kHoknm09IrLU2r4WjBD88gJaEDvThdhIcwZ7VzoDREtRM9rp
lVk0Nxhnf7+06Lih0OmpMlJs9V/6UL2c1d2UGTLUHZcYWm/bUECLMECZT0K74UC5+FSsoJghVaUw
aqiVzCqBtThAMBg/do1gMVw0ZCIFecrX00sKg+GJOEMxXt8XCWjDN4anLg0nd4uDt3gT6AsuzeH6
+USh22IAVxUgKV3pYt0QdpmhyPIo1C2oGupYitPGJc9TKGl0+foEYkNTzSxieOVBkoIlRKM13/0r
/rrf+fwfEXfrWs57V0OGXIMn+/6EF4+5+4Z2XBDG60WCEsC3W5qTVCxCIDXWGDQHGG0KIG91QHnp
pRWV+VCXdfFHHRUj7UpEH7Rh4cVkRo+pDYUh+1agHADnZgtfLNFTi8WwxZDREV2dMtcnbgtv2sJM
hQdUWs53nSUhDEOJaEOaaCXinXRkZOWaA80WQ4DNgG2wcxaKaEWeRrVAYCy23SddC/83AgJG6BJE
nwsWatwN4ynETKixlAT8Rw2VaU3wXCoKosAt6glOR9z9hzOAjhX/BB8OyzD78qKSOfu5258/3vbE
turn5RIszOu87W+HXqzd6NYagAN9KjwU09JsWETzgu/XvuI5EymI6+ObXdHD/rHffd5OQZV2vNFC
NZejApaicrgeKP1ZjI0c5iFnS9ZKjsPjjVjnC/GCZUAjbtSn9DtHznIdxstLuYz09ti2eI3Qdvym
mU96BqhQNgElrS3wl2pkohmxVVpTSiBcxEmbT8Jg/uUE/7LKNRK2dz7iXFmqAvrmWy5g+gPmi6EZ
0t7kDgct7Bs6KHdYFJGqwn8iw/CTnifMpl6PAe/bkH/EftjWo2ulyzdhEKJ0J26Z15RWG9BWnyuK
1wBDaiHVgATBi+3TIUS3CzE6LwRlFTVq6pZuOVMitaHnpXCmxM31PrEnPBdQ5q9Juru5iC+OQggZ
29UGuqXCbi4eK4YauuUyRK7FzZVFajEEs/z879Qx8pSAbCCKr2dfguxTdHPNZLFQ0GmfH75z/070
tnifIal+rz+y4vY//f3m+4wmKQ5zOnCylOVZNq7ChmEGZhhgGRY5w8+nwWAuPSQpkyrwPH7MP+9L
dHzL84Sn7ng/Ju/H5d6h5qROUpDYNP0kpOcMY0MY8MUTHJ9MT5hocHm8ESkqNuHc6GHkJo3fAkRc
Imb2g+2e3j/wWvnqijLScMLvR4/risjH0fsa1xsm1zQyK8mXNEvqT6yAtyPrFTRB8P5AVJvZSblQ
NuISVPQDXj6jhf1+HSHs3asrarQqzyNRs2fsg8lTGdyMwsKwLA+bbpcjQaspTBwoH+2WnKvf40J1
dWguh9oxxvC6jBfrlgNO5nWfT7fn8T7f97dYZvWDWGzIAlCMPZ+X+rief74So2SnWFvYTRmOCT3Z
qcLBE/+YzodXml72CgXFoTVXLzfTC56znDAmyDM3bRGL2OJURb1PXoTO07Oc7CE2koi7O347Xq6H
A7Gd4srLkXCByN4kX667l9v+1Su7PxHrTC+IDHPtslrRxhcYUZQpdFNZJ1nedyoV+HxcOV5IFiQu
534g8SguvyMfqqB7EdqbiTW6KaePx+5jXOxxxY3nkWI2U6wsQFxoA4ILSk4yBYCYF6B7QIL5zZxU
jFxZS1hP+fLpVdQhDbcRRhKXJ4jLG7dy+TyfQyyC6TDRT+uljHTRPctBzmigyilQmSe9Kb8dz7Hv
jGi9iAxaiJ1wDVlJ1x9azvw0OcIq8OnV4CbBzp/vp4uvyaPXkJkffarGLEXueB7/eCd4kKulIllL
yg8fgPoIM2nibIcOoptHhbmqR2Wtm+bhTp+X04Miu1ragQGwVp9LWSb6Fs1QsNmoGQiVwwpWKxt7
VpZzk6Hh2dCUj+NsUl/UJnXbbCxYjnbLWa7ODHznb0SLARlCD5hf9r/F+Pi/wEgTy8XHcSryjJjb
hogqhmNzuD5etA0dyQrwTA87TO/Yhgx3DIaxYmepkuJ8otv441K8Aswrfb8pe8Nys8LKaK+4bVZt
GzBFsTkvJkIB7NerrWfFBDqXmh71kmDhHYH9eWpM6dAt+2ZlN/hKofRqk1guqY13oPPgtYUMwOw9
yy0QwWiyUE6tV8zlTcDz9eMnsUqhJm34y/JcsWeVlBlZQlLX0juUQqOgjijoVPS+LtmBYChRmwEF
bm20ln8/3q7ElYm22c1LURW8LBerR2Q55EKjNc6hWs+iYpGFYmG5Cm9FcFo+2FLY2tTdhnNYVgep
Fj90KY846/nspzk/3caj3VNrnQ/Mvx3vR2xwdX4LpOi59G5vLI7vdkaquXS7nD/Gpol3U1Patiki
fBjqBuo0cPf4Iw79GP9r3/Ox01Y7DrI1YRlRj6WJ7FgnjcadXD/wmYZiZFmciaRyjCGETEYDFc6G
575xZ1rjcbw8JtJgkhbt6JXXt388v+0Op28nH7z8uWN4hYKUOSblb3Z3vN2uN+I6XTFzYc6fg0uQ
mIK5GT5nzDYM453GZM7d+MWg0DnGfY/hbh+awYuUU+eKNr8QPfO8MG5j4glMDVcM2ghpHFFEG9+v
l2tQJvhzXY1VSBboiZwwl/qq5umH6fCjvfKzgTu3N5gG2R/hTR9/+XjUBitYLnfhBTLHcuBguQUm
dzHGLNuANAuqqN+EpZVqfqMzzdopUtLzvBBKaas09qUpOEHm3+6EsBaj8+wcVI6UixOcnkcfi6Bf
MYVRhwBgUqafT37swfHvp6lZdw6VhgspEBHeWx5sk1+jbkskpoyqB6up5v3i61Utnfr36/U9HuqI
Z3NxW49/lM1fVvh72frpeKO31ydMNd4ShaxC7iP9sfpg5aylIqIwcXS4u+5sPVaMVVExeJJs43xt
ZvR0DV6A1dc2lXxcn3+LEytTl2YC29fPBwokqTmjHLWZ991lmovwenz8PpnoMBV6ivp2YHag8lDf
zqp4K/cT0JMeUxVJKUF2wSlY+rhuaZ+utihlds6KpxuO+hZfjGopaW8WMKlci5HDz51eRrNIjnBh
uiVFozG7vuMflC1THnVawnZUSiP8rKnHc+mm8Ep8MaLFvzOMwlvPSiMXmUauxNepievsWL8SMoYR
4PHj0/srvc+BNwzOKhuV3+cbBXePU5PGZTzuwl/sKjl2P55fcGYsuz8hLqLTENDTcyicOB1ORcPJ
HY0yYHPtlEpPk03Bs+vlcIqoN3z0XUZHwTtVUxKYiTYqNXOmzcpFKWr9+YA+n4Y8ysUMlupz8J6z
mR+RC5+XzUr1rwu4eblh8+DJeDM/BxZ/vUAm9a/DzU/jtOSifqX+HP66LX9dgrNL+Ouu+PUyLltT
XkPKm/x5UESicXYGN5/GyjmSdAyyjSlJp9PLACvSWUg6tzy7a5wdso1RW9gGfu7khnvnBv66LShf
eFL155B0lm1gWubgr2d5V8YkoNCgPVxgGpwoF9nvevuQcaa5hnLuHm6cXkC2tQXbDuEvrc1D2lu7
ZfOYeMMGvmNQZNO06yA0MWXY4noFN1+SrihNrX8dfp4GG3ZEFpIuxqU6n3MossZtoDyDMpfGm0bS
FQGtWmShlXOFlZtfIln9Ot48K7Ki0hsqM26mRT7IuHHQSDrApK7/z9a3ydlkKvNjKGWJzv/+vD9O
Lz/7RTo5MVD0gD+NCIQchsGmJw356oWrl9Hlfbr+iI+xjH+eANHjdkSjnUWu5ZCqGss4zbi6Pc4+
Ivj5foELxKCCDLVmhQMa6uf2P073NHjyaX+DS6QKGakWhYQhFhAyrf3KJ5HnBfh1vG62mTDEqwUi
tyQHdsqv2/jvttynyKUWMk1Enx4DGJc4PY7vk6u4e4v1YMQAMpHbTcKdFG5BvOCcHfOBbXwkN6+R
Zk6zfKpITuTAiZxZC1tw+XkC//GmsleRh3uELeQpGvG3pxeLiEkSYu6YlGkYsyx2AZN4Iudl5TTw
3JRMjTnZZU7O3tz4Q/vweqOPKk8Xiq+u/OUie5hZ+f52O11+82URLye8l4inZXwSiYUIYqTe5Xr5
+X71tWwxynG8vVJ5QzE7KwsJn4mYohn39BIncudELkwK1RZy9p+KJ6n813f4eYz4R/rq2eFeCjn0
4ERuwpBTBIu7yBKpIMMfCl9N1jJFtDk6+oExKF6O3lW8Dx91EsnmBDIGEY9N/2R+WeRSFamqtoXR
8nx/nVX3KOW/hoX/vGO7P6M5hXOpEVvggNUSDC/B6CWw2hzmKE/4unpQZfo6Wo77LDV3PHzSlSM/
C0RVnWU8CVZ6w1yXljZUzDgPXx9ON3rsqC7GwZZvWk57eD1eUksj5LNhThGlTRSvznXs0DB7BHGM
qs6odEEEvvvzZE+iMsH0ILYyX6/XxR/Xe0r87vFkhmEOBaUVY1hpvcVU1AC3ZUzmuph80i3G/fPm
c2pbLBgy9YUJT9Hay9UjmfMe1YEN82vRcvVW1KwrkUsxTKA+fVy4stWheI+Dhc4nKdF1uQULtzDg
/YctnG53P9bvAikwFIQso0CrmyEPYRgWw4IUnVWmgiO2cPGmVbK5CPJ4f+xvD6heCtEua0yntYIG
35B/HeasZUcEAvd22ba8bLOW98S55+PLY0conGHYQO7p0rp7GpayqarFEiCe6jGC0ng6Pr7757Om
RCTeaak9yhcLymsIgAtTX9KH/X7b+7Ga411iOU/pWHzI69P/RgUIw5y3wnYvEXy7ntZsKfW8weoT
zf2/PWIdbYpBywQsyLvD2+JYGVUrbWKsAq0sEVTB7D0dPaH0to1PGhLCDO02KOlAm95xlCs0ZUOj
rGwYJkyxEgv40rYNR3dPgnXu6+nlGWp+s4GnLz5hQxh2W8LJmElo8HGEgl2dbcu7auh/QhNh5lGF
4NsaKCxPuXv3yeuQCbpjU2dpTVIYqXGhI2V7nWgP0V9BYOwRMLaBlSYU3QWPcpOW28CXimNLPg2j
CXPFYALTi65YghsGwDE+kd1kKDmNS7TccuWRyVP0Dfs9dqBPlbQiuaFhOw9S0cBh7tWE6vF2/T6K
2QUbRk3b96Ceb/6NsdFKYy1iNwAsvgVgSbV0b8V6pY6Ad247S+VWn6zEHkVkZ+VlYvqUeC+8bW5o
txted89fiITuyIMsDHvLa/Ux5K7vnUopElmKh8DbEKjDx7ZwpFMbXYkRUlA2RGw6Sse0dfJ/9mv4
QhHSn1eFBfO6RzC3Fod4W7stuDVVKOGbL1VPz9zYQp/G0Ui6xdjbvAZeqiDV8OhH5AF14KCXp7JA
3jEPagygF34dNbN8mPPhCdKtIUzknPNxf8MuSiEQ5UsnK8riuBzfukRXBfKOv1TLlVdgRHxK0/Ep
4snjIcdQe+a3EyFRZlPUk6KuVrS7FWTxfMUv76TyaaytMjbaaBWUpEMBLbAbQ3V9r9sNNJAr8AF9
/658tSs0ODPgqWAXhdOkr0JDXfPuaFZY2IwNDoIZaJ9jBpmYuZimdbQ3hxEHdYIUzG7QAXyLryrK
qB5fw6DZOgds1tnXIDduC5NIFCLc8nSabiKBoct38IoSpkplP10fj2s3uMQ3aCjWC1zygi3LsqIV
j2MKSUlz9kIdhBWJkFAqGO3GGDZEK6TtxT0KiN8HNCDqUEsuEXVXpcAu9GZGnakKP43+8+MEcNhB
F2/ZlY1tFOnJOEaqbE7E12viTxoBawK3McCL9a4uRI6FZxA0FDnaCNiCPj50JQwjQS2+e70FmWQt
QPC3LWB6WcpGOg+EQmEYA4b0SZzZFV/8DYnnwOzxsbmOBnXzs4Nx4FU5z2WxXlpm05KsmOU17bgN
GLHaUrRiL0IRuQZF4KhExw5m89VVOWyDF896birndC505chjCy826He2xTCzTtCVQH3Xy/knpj2j
4zB4XbwkyHn4t8inyiSiUswrVrZ81VM1ktGowXeYG+AwuQ6n+wd6k22Y3l3pcsAGI8jN10UFU9Zs
YKcpJh1GuPnAQ1i7E7pyGwO4W7C20nRuIdtamgsGsQmJbMspSU7nG9qk8132PdJtSalOsxuwDjSa
vtqFHNKGd6qf2uLHUZrQcTrq5+FIp+5n2KDaGVV4NDg6CLqqdMEqdNhUa7A9FyuGZTgTHK6n3Ycy
kx5fruskdUkYaSxGus2QAxZl1YugZAQ3YRAayXViTMEBe/hXeWnvS21JQV6JCJPlZMlIBOsBW12u
1ImMpMMAjcACbT6Nw/UnYQYJtRvNNyT0gz7r8bZZhRXVppvv+3FiQ5aEf6GiS5YhgmI6IDI33ahF
5gylwyAtrUFZBFEtaTcFr7YZVKHooEwOpvXkWcgl14PKMyLePGyA2HTNV6dWZO1gEv6XpKu1cpUG
vqpO8RhVxkRD61LXhSFMqpV8g3xYvNk+4lkeR9gaRlW2EY6vU0tFVV99QOVUssJZOv/ccMKJe9NL
v1nTALubvNBLxL4I8E5dBPvHFT09Psxdhr085/ZovRC07DZKAOAFFF5RM3NWOrddejEamNHJTsFY
L33v06fhXcJHnPI/ivEV4wKjtkawMaVdm9IBoIYPotu4OfYilsPGTQ6UFAHD9+thVA/QIsuG1MTW
fz/FLag3optgcmSDG8nmVwJyBdv15ufu7PFUB5FHnsVnBvwf62EwYbUASvxV7e8w5ilyLC60ZuR5
DfNa3a4GWzSB5deoigN12yL4fJgw6jRS5COMT7yFB8QOj7f7SJjH2/UVzpUSOVARtpLnn08xv/2L
tzzzM4nhQRy6GSvBeL/WSKRKIHajlF/9AANfV/3fjo8H1WK2aGVizd6Z3b9/nm6/ES009T3l7pGp
K+tE9N9wVtNYp66o8/7n9XN6dnRE6AdMCzX/fB4aM/UKHj49z/vxxp6qfkol1Y0zFM1AucdtPIJ/
8O7kB4uPQn2Lr1b61xbuZQvWjuzBcpkZTR7on4piUgeeHy/+7bQPXklMDeHuRNPq2MmNP/H2fdQW
v3ki8rTEqf8otT9djvc4+o1u07SuOpNs93Dhzq2i94mHuaLL5qutjY6mWEkMMTwb1woimqQpzNib
OSsU2tyOF6wPVXm6qTFrEvVdrZsJ6eAt6Zhseo9GTjbYJoUU5xCn55vXIyYPz3qseKizaE+jJoWJ
/Hr51LqYnPz5njCDFKI5zCNJUrfn62hQHm9pGFWPDrxoYRTzuyCFpooiRBCy1hLLXt7KsexbFpEb
79y8m7+P2uCAtctUTRbb9ULKbWHR5qbHjl0stFSeuVhTFRNS1Q2H6Z3vkH3chZdtyL7N6eWquQ14
xUsrE0QxiCmaikXR3eo7epd3O1J3FwYhYXMmCiYpKkU3dkEyVVjDMMrHLLuT65ZpTOSsj+x8QUvc
gK1Q5q7QbsQSiR83b22e/ZiruIR/ifU8GtcoQmGsWfwfML1F3RHO2poAK4Ki1bV4x2U2O/FppDxJ
7HJ9REA+unvfjoQZKhRM6RmXO8MM0du0q9Vf0sDTkLO66zvSMhmc4+FEc5xzRUf0wpmYKvsu+Njc
Vr3LusjoTiAZM7uqRUctrG9wzbomuDD/IkxwVtPkyohDyXZ+U2xhyNO7Eqo9XT4+wx3RsxomBy/S
sAjTZeXsd7OQHqwci6kJjJnQQMkcz13zqVMWpfTEXIq3NDZzDvyDuhYj6xkFrKLJNDkuPvU8whBM
Fd6cYJEAY78tnun6DG6aBvYoRj4EXp9HYWA2YcUgiUZKa7u+V7aCrWXbP+5vFHnM9HwcvRSzzkAQ
bup5A6T9J6uURQ7ph0V1KIvVsmju9VWab2mgMzmMQrramLrWOAU4QqEAvcvASFDGl0n+p/41Up0U
4074jBGzOqHap0V+OWfme13vZVYK8FlHkR+6mxdZhiCe6IkporhkwfNIwMghvVsdCiYPKHeare2N
S3wH0Pt93nfwzyaErAQ1J2Sa/B0WZPW4kp4jKodq9ouoneIikodBRDGrIw8HzqSkBm2KPNY/smZ8
goAym4QjNRV+xK2E4UCRsJUnjRWhLszDHMUJCjBpscPPyx4FWkV+OCscReZXyb3jFN7gC/bFD2qm
J4UwUd3JsgUee0+iGDmj/diZlu7MHWebAje65ZBNQY8N2SeRi6E8ZfPAzjDuvRN+mgYuNDyQSthv
9EAhgY1KYvG5SaJkFUznfM+ee2V+rjBc0G/H40cydiMTY0gn6hiQXUEHetZOcTPlExZtYOYVwf7b
/nQOMBYPJhf5pZ3JqeBLYnWtFtf1JCpDzbPavY2O5N89U3aHbZm8rhnmCVd53cSONJTMunKYiV4K
+VS8ecqPOEQLS6sxxtqOBVBjmCtywHVwYX7RJlfVF+FeDvvb4U6zruLtbWYlhU8oW37A5fi9eBcz
PORynx4+3Z1edq+3U/TOjhe/T3xwmw9evGK7COEkBYo5T9TgwhUDd6f3P7vPbOY5uR4maPdvq+l4
Es+nE3k6np2HqeVXUOFM5jBYNz++Ex4fXb5zHh/eyE7v1tcP1Ry5TDP8g4G0y2ncG99nU/MMmzSM
f8gthmhzVFxVzc5UGs885LJqtF5verctRi/HZ9VU97R4Pr4ph0erPL8frda7ivI5BZVnGKLlesQz
xajyuf57xfZ5zjT5AG7xMFL5Hl201n6m/5F8xp3NfbXTE7ximlH24pH9cdtrqXYo3wMe/o04jTe7
o47B+7HFw3Gx1XP5vHAsGuy/LSxa77Ed78/+XbzD9X23/zhhxWBnxaDDBNdaMXgNOT2Pi/WDWj4v
l9J7AWvs7pf9R/is+OdRBd/278ST3654XH2Yn/kpV5gnHm54qScsOeSHz31OIj2PUy75fB2Z4HTx
o8Zn1BQzZ8RG8yvixQC76qiXt+Pt9CA2ll+6D7htWC1x/3z6OP0YVXwUQGKpgmw5ZdwkW/d99CGf
LCRH+XpbBVY+FNS7E4vmR+HLgffFotPb1YVHcB7B4vi3x/hDtLcVb8Tln2DNfY/ult+nhz9hXuPn
B7Fa3nDhJFTXiwMD8cj59foisgD47n08cU80dHU+sRK2EY7c3/cocRn3JOq7ZWs+mQBixE7EUqre
jkmvEERGmxY7XejH1vmcoqJkfs4UdeVA5qUKvAN5t7tewVMmA7imnuyhqdKUzcHV8Ipp7GBKD5p+
PnxmPf6b+DNexeX/LL7Btv5iepwNjVj3L2Kmwg7HFyHn9kJgbrRfKGWcwkJlJRBYiOOFZF6ofEav
vRAYvx4WYsWOCq8a0EjChdJc1bgQ6x0NDKQPxC6OVvYbgKMRtzYUNCqcJLAjhY9WLBT7DikaCXz9
aW5q3NHQvTV8/akMI9KoyCOBhQReyHzl1sAg/bCQW96apRbCxE5DqDNnlxK/XgjzkeJfun7iaIWI
lJ3eYCEsa1I0rj+Az/i0c0M5pf8FcpXMwb3VMHu0EscrmbxSORECraTwSkNeCSu6eSWge2VO0m89
ncR0StmCsFLs3ZPknojTseJ0rH+6Aa+kvkQn8PyLzLPSN+/J4ZXkciVOroT3JAsuwJKTT6fx3bEv
0UliHtfia5yJ96QKfqrejwOnE3glW9Bp0nkx7Bie1W0ohunBXTRJ183jqGOZcFRejf3lhQa00FA0
ZmP4My8EhNnNKbO4IyjLeSEBF5LFjqC1yQsxuFDRxl4+uYxo5CCxh+Jo0GzlHcFbG9ySRpxcSMOF
THE01l9IwoXU125NwYX01xbicKGyAH56ayMITPS+CnmJBcGPt3GBt+v5AN/JDoihgGc5B9o28wzj
Tl1AIVt7LA2OwiAvtcqqup69XscX4j3IQ9m8SswoFqusiYPxvcq4rIgHonUw4lQZcRaJ//apMCZL
Y7gCbYbFbqZVqGfRwz1lR6Oo90f3hO97WOyFuieLTyTmVYrsP7AlxD2Z7KyE3AeJlohT2QL1FiGP
ap10+6mFnKJ1KrpXdVUzEC2M6U2B6XMeGx0Or2NLHxNcfV4HX5ot9iMBkeZjYZnQWSZUmBJbLJNK
ctBLXOFz3mfkeReEPCgs4fWN+/5l+rr1fN25ehrpCiLKoWtdoeCOvKx/7E83eldZxCCd8q3jdYyp
CMUHch187SYbCj3M/UJIAeH9OF0rIE65p5jaRtbHci0uJKynq9lHEmoQ+8ipgSGoQQGufOZlfBa9
gXMyaQk7M2TSonWmQ2EBtXmVEMVvUpYwmUNfvjO/YdraIv7AOoYKkza1yfnDhDkJjLIMIZVDC2W+
8KKjCDAvIZOLswnibNjopeab+aKoGBZhg3XGSsGZVqSHSWC3rJHNyKUs/o1U79hW6TIc2pMszESG
9ZeZrETs/qSvP8PTYW7oWGxqTliGf01q5gLB6y4+IFShrex62xNYbotYbqGNOMGcWA2k9rnAnAMA
G1mnYe50rtZp1G4whHIKG51ZpxEiwvo6Lf7TuNZnzHBSJB6y5ELwkkWO0G7ZlioRUKsUTTiGbYbO
qihoNDrqgu/b2Uoz+hDHAkat/FxK/tkqQcNXsIyiDC8zRcXg3Pp7rDh4IZvlQIzqeyJVwcv9h6CG
WX9P6HZWyvQq1DPtHzM8L3Muq3DftH/M8bzMIoW+osbvE8kjbqh8xvQ9cX92mXts0J8T9C+ToKvk
wER//D1TG/iPECtWnp/lJ8br7zH/sdL+qTyN5/W2P/hJBY1scphjub/tpv+E1GhCUPyNV8Q3Jlh7
x/WKfqXR+y5WxHcgCkMkgbld75DIjErqTvGKxA75lhXXZyb2aLFbg9cjbkX1w3vr9Qi+MSvkuhZL
fDwuNqgF4ueZpkoSpu8xOZjc8D3HZonLRm3F/2khkliMTOxFOVcHcJOC+jg+744/9u8f51bJCJkL
MzmDNUJv7+8Y1vZ4EAvK3A8f8ztFq9ByHzhPmB6lCkFYGSypVLa5C5xl0mpLXg/5IzI3cwcfPY98
WX6Pc7mmyHMxEPtFEETmduTw+55t21TE92ByphyqAmRCZG4/72T8EAiT+f3eTjYb8bjMjzPHFYoR
issV8C1ot20POK+rN1UcIDAhc9urX8HX+8jmGYjMsil4WQEHDWkdmftH4k0C9wOBEZkb27sUwCuY
rBOmUQZY6fWjt8oNtY/J/g0vl11gaFfUYGoHTf3bhu1h1TwU/h5OZi23R6wn+0hm7l9JzixhBIsI
ulgErNFqxN6Gr69G4Gb29dUwXGBi+2obYthqUPV6egubSLyc2L7chmyYGhaA12zZHnFa/o9wscHr
FTFzvvk2NF7P1vuzdd0tLrLNzVK+IjCp46pZyuKeCJ2bpXKvfN2sdXz4Do3n/cd9d/95ebwd/aDX
Z981QPWgpCcRYu2vzt1OYe3veKZK+Nblb3Oc0lfxH7sN0aFNJHdphEFjqRknFCvHguL7PRRFH47P
5/0tRjrHfxdGmryc/Minw/F8ej+hvlyXxxQF0hUj68aV5haGVITtZ3yFN5SJ+nKXmzb9isbHnk0C
SePOwpchbDneyh08Y+fyzJ94oTxMupnWOL17Rrp9jnLyfhx9HLxGUViTaykC9XbfTsfvo2fwuts/
HrfT0+fjiGN7LrcDhv0UOmui0PXlZdR6gTieSnHUTWqs7FEr18h4bGpTPebzfpS56Cp8vJ1GsQt/
HLeZggTi8MvH/vH2y9Px76fj7feft2/Hv11/8dOL213l/k7SyxTeXRrmnOG4kL8P3ztw/OXzEgTi
GBYfuebyy2H8xanzYv8AQyp10WvOyv5/kReKrV6fl8Nx5EzQvannGJ80srKqxUIjM97vkTxwkTQI
LUC8MBhp9FjktFDYyR/2j/0v6X3qzsw/3wBfkC7cv5sWezmdz38NXUxBrn95/rzdfOtXGL6AjzlP
+GFVNcK44OO2v9zjcFD/zuN40nHtURxj0xtaz6RKnUA2NYcE0gb/4k85Lwz3pPKecsq84o+wxnhQ
f8L79fP2fCSZIuaymBUREMp5xTi16/MenpLymtSPSySaTfwJ09uE/oQh6KPzGRc0u/msz/EX+rHM
IG8F0XLj/CRaVJtQYClb80R1ul8Ot/33QPxf3vc//jUMALq/o4ZJvxmtasYfqs3cH7frb15+9uHZ
RcxZCZY2tnUPVLnvvYCPlL8dl3RDO0sPca1FciVJdzDSL4iQBSJUnu/j9nkJQvQNsrpy9UJZdCg9
lrgVzS/SxfyhxP6zvggTCkbc8MtoJvDxCm6wJdWnDYQ5F7+krqXQPiag+hKZFXIH28yW93/xvVl/
uvyL/6fxpOfrnWCH9Pi835cp1wpMGicYJXiHJc/O2/HVNIDNbw+Ct011II205+31aXf5hBpKlDzE
Sh7KV/882soNtx1bfLJqEutTJZYkbaoxqqRNPlne0P3qaZt2dIJSZrOuFDlhP67k9/KnYDz9gyu0
4ZvaAoJZyTlIqMO3WveoKOPmcgNjtWy07xPhvwHEqaeH4eJaprRUgbvD9UWSc8jTMSuRVYmpltjf
nn8J/gteQbqFPR+wknw9X5/259+dP972kAvSdJlZQ84bmsLvk4KM0BfqNhETt2Ffrs1O5fU9Xz9+
wivT1ZUpswIEgViQkUwF5ySmz/hvwMSvYDvkTBlbwsKV6egiQ5keVwAGJOig76c4gXAE5iOdxlUl
tt4GrBbU/f8eVeyIrb8doU6TylSKVSCdNmvXO3riSOdhy6vVMp2eb6PlOIoeLBGleZRtmN+AcYSq
dIWqzMM9m7zgafevcNhhkJQCcnXQiV/s9/sPvFQBmMyCH4LJjWrkcg1jL348sLeQTWThAk+sEN3n
jo2U2lTmX66199QJHQkOGWGa4L70o0aNdrh+/yX7q+nf/P56vna3l+r3GuBy1gZB8UJtIOdNDQuf
bAlIuq6KSk+gTaw+kyo8sBH20l1jyByp2zBgjQApZTkPXGNLbZDl7+OTJpIUoi3CaxYYPRN8/6ze
yYD0itcn0MDNQ48ZNCTe5424//MyOkrX18uJwJEmKwF/TikrFvCC0g0/aFkrJrtg7QRtSuUEz5c6
XLIeyYsF1BbZiHrR259pgbMbpE5ydX/Adyh0MX2VLR2kfPWkePHseM9vI0ykvUW/6vwShhLf/T8h
Altdm7TGNuT+ho8xzUxlDQ80iNDkvezvkKapd342+GskFAsTRkb0XtXPsx9ADqVBmEqmhpVLhl8L
CyaaU4hh4f2GwRLELad0VOZfXe0mzvgN4ZoRyOzHD+G2jK5AnqIk/Pm8f/8gcINxbZy2JHdXpQqb
SV2MxelaHtruaFa5R6LtFRfvtPzSiewJFB6kYJeG5BtY7VDyxaGjV7NNJdmB8NqD/G+I3ojsmOh5
ZGfh2YxaNvo2R8z3Kj10vfZuEJFGv3uPjck00HTN+WvQRjkVhrk2N/SdU8qhtEOFT4UhAl4jDPwn
auhkcFlsbVo0kqnjv38SONzYKtouSEX4dLyjyWNhLQYuIJsI2vYa18Ymy83kILHADgYDAUaCuwik
MoCtTahg5g3oy6XidjJA6R8bIUkkBt1G8GkfKRrkjQ4O3A2irQLqGE7HA1AcmOHxDJMrc/xxuj+g
lhRStjM9NZol6SEFb1upAs7ixz8Dks1Og6VM0+P6+fyGlY81ANVMdilEZvCdJBCQ7kSwteh0Iqhm
qBiDEc7P8fBK+D2ycjMFpzD52+n17Qyzy0GZZq3HSvKW4XSvNs/4ipQrtsRLtLYOO9DC40xltnhr
M/ffjt8xuBIlkYd1QK9CwERgDzhhy3js1sin0ZXfI2zDIB8v90//1VP4dwKb5eqM/YhRsMoaW+UB
GIUGjtwnIAl1KLdA/dUqY/RcHz+D1OArELbNCwnZhVcxjhesADNja+lLyrQb2DpGQEYvC9kwVXQ3
2RQPxrDGMLx0YYbGjfvXCUJFORFgZAyCptlD9dbgF4V9blEjkWGdpIgZHA8GqfyLyo5uqNbWHEbw
f1xx5D7LQh3lbudf+0lraytfUbUDAqTmSY2OkUas2tSCRr46AxOoSC7zkFxmDas77uuGDYWQuums
NpJc+13QQlgchaidTcHbwU3aW0plgHGVXEFZ6lXCjZDWbCx6KH0tg4Ee8sZnQBAU/Mf1vJ/VNCLP
IoZo1+DkdPGcfT4GRrzfIAPNQ+rZMozc9kqCUcbOiMuqxwMoiTKUnWUkq9KT6+sv08k/fkmFethr
Hr7qNR9/WJyr0LXTbOgY/v/3irOehuk2Yk4qYGaNPZV/S0MwZkWyhppJW2f3BuNNNXTzJzm4HHUm
FVoe+DYUnK4Qa4TaQENTcCNBozJLQ6C6gAbnYYvEiV4ayhoYxzI1DI05sJX4ArF/qtm2xBydkDOi
XQy1SDELjEQBoGpJ8M+uBMs6w7xwY/79c3/wjsPzVAi4FZIaBZyrghu2VQkpztqp6yWjx/dnCT5H
uClwuq8WS/cXpnznhywwyuA1QlBtU/r4+YHJX0D3Rdoy6qmn8+ct+GwYpxTZyjx0ilDBl/37keDP
IlyhOym5PbZ+SroqUsBByH9LiigNYA1HdB1/hAjJGt1OgGboT4e6sv3VZXUJqlTBeW8t66Vc3xBs
9SoHgao/c/VReFknPYMWwDR+aycUIsmlZl+5qr88vl8/TkfscMjaCydzj5NHifGezaxVzHopc87k
Rc5vozY0cKFA/VNUW2rqiqhuFY4t6uA6VXCuvQBKj/xzqAnvZua1AJn5tG587eaX68sLkXowFlRV
rGsrb1QG0Q2VNnB0zBq/9x1i1oVNd6XvUR/sJwZ1OdVTxREaJUgFwf8XjuuLaj3Ri3Bg0y4cbdoT
Rx7fPx74eFK1ayLn3Ob143jBqU3W3kLWTbFu7ffzP0PsNWu5IHCklgtFVluVXCxEmivQ5JKzY9PE
L/HZgm9HeHHTnBezLGHF4BCji0U5rOjVbD9RCWaj+VLpDijKw3EVAnLOWjeQq5nKa8AO1uDa7sfK
vvf6Muoi4NYmUyyiW+kqeJ2vEyCMlK8zPMz2cYayZIq8S13BtWSRfhpcOQA/18XuZFGI5K4dBi2K
yoKvtr+8no+4rmxoo+qO1enYHNm+y2Jrxx/Px+OBqMbUui1ILefv9EpBUCWIlHeyXaQqVa6TPCC/
llYTuYvbpno0ZVUz9NeO1gSkgo25cMCY5+DW4Mt4aPSUZs3MdWR2JRIkVYRclNoLBKSrNP0ngS1A
zV6V1RxlfjwakdhUKKgeCm+w9hqAgsjI1meI78eR+4tgHyz44lU9pGjnm1OeF75GFeJ8qCumrGPr
BtKFRlW1FdaKXirCkAZEGIqdUFVsRtRBuNqneT/ufUQilUnRPRW2dGVUmMiDuuOOj78trQTRI1eX
nyhowjY3PeqKp0UrxUMfVdT1UbJrCk+HkS9PD8IUFtEOPY+VaFUQjTj6hsWVoTBogZRGsfUv540M
OpLrg4rB6GEJlCTZ8Ni/S9QtB2ErFaR1pm6+sXm1+YU0yvvmzGyqH47ORa8uVQq9MfESUkmdEkEh
UEBt6SvEHpew48lwwWBfZny+DPVsqr2dnh1ZFSivKw8CfIZVO6gxN4eLKKVVCLAqjWR9bSMnxVfH
cDcZKOmsu5+LnFQwvkRaSheNEuExh2GT/SXK5NTQDWeVbBBVYYcPZHbxhpJ8y1Btp4fOVo45UV2Y
+R/mkxjoxNoWtCMcKQmqshq7vF6Ish1eHrbRdUS6/UVuo4phhM9T3THuYleLOs4W2EiIARosVBxZ
Vfp4HY7TRsNCIZk2fAp6DQv+l5PTxx+4CLGsaVSLfGsq3p16y4i2RF1XU8leU+EcnPnnXPeF2EYC
hDfruf9r1r0hV8p+wSH2WWhDVkluqd9UuAyprhMUdFGIrxjs9mU4VmMY0W+mJtwpWUN/lJHfqkfF
UKfmQbFpfLn5+XrG4lhQzq4azoMuwKNbgjgPoMy7TmzhR5b1PNupUfYPOpjJSmxZR/y2VKThDFfh
U6MkSR2rm/EoRKEClkHhQmgcS3QcJAWzo+7LFnH6lUsLcl2UR0LdAHd1mxbZaR8vAEs21yAEkGzE
hmqKabi6WQRGUPjqn7yH2m1mXIztWLk4ATL6i/zEwlfkT2vuQhNd6HCLNu2IQLO26ZufNvNM9A4U
vcU1Lm3M/OkHp7glQnW3OUKtceiGbSpsK8rA9lTmWrYnZSxLfspADM7rWdXuKVkEy6L2GoUKN+GJ
dqSc2hbRDCTb26JK5wh4sqgGZH2xxmqLt2OVlBuAW9nqUL5qtMTRfdMGFAvXxrQfth82NriEzOXL
jUDowsgK0Fhq9IGHu7RDwnU3mjvhob8GHv0vYWwYFh9hwIiPmmSjucAhb+a2dqt7w4O3MrR9+FkP
x9yGwe6jRCa+FRSivUgnquoTtsEfwLULrh6VxsDJJD4Z6/Uh5F6Py+f5fP98eTn9wFxUxVuK4uQW
e4fwHi5wLGq+KkItYx69XkUp1Sa7gh0ma6i2thirDEvgAjYugGYMIPFp6vXrjThSqK00S8T3UWm8
UkVi01uzKwuyKZOOIw8uYzrDmIkv8RjgdlAblGxoi/3sOVKhtulB5a+NhyOOJWo/ysFIAr79oc7m
s4b56Q3uMKodUWn41XS/XAberix2aM/z63rAGoTEqtKJaRmidGJRXeT6wAErDi6IUWINf4ziJqN1
uxqHCm9SuRi1GFGlN7j51HrCVD1EGdrguAZOaA1tMLjyo4jO0kXcrRW6i7iNrJQ3QtTFsLofR0IE
qsLJSlEFAEFwsBirfoaiLi4h4zOLyW6o5MVbXZwv1u1UYcP/ojPPqigDWWOkNDdla7W21m1d1S6x
xhkhM4DARdNb7ZSmCyW+2A8+Ii/ch+iqCWh9t7yTmZnG5K/j9ssFC+NF6EDJ28OL6kTPk5fJC465
6Xpy1dBufKN7XrTp1TyVmJDUdKjDepmL4yS8EA4Ay5yKI/FFIbdVNLNsOO+4gVwWhdVsW/qnXwg+
6DbwIfgbx96dbBOpLcMEinfg0pZx206nmRmqhjWxrSqCmqNqa1wH+bIHgoTlIJ+yMOlUZl/UJRoY
l5WVJBvGLQ9tZ7OaSaBxBFMB2YWuwgYuZRsVXdVeTuR1XHt+CWikoLCU5lWaXfAmuXAwbemdwaPd
f94fR1ySLllbea9rDkg9twhg4sHilz3O5HLZC8GEuKUXOqqAbJpyH66dr2ZcTe3qp8uzN+G4aX8w
IBKzcOYVdubJ8Zy5Y07jjjlHxBPiSfrBbqa+VO3Sm9VVVC3aFVmKnhrcLDBsbEcs8QeGbrIeENsq
Vj1+n5AkvCpJjiaIu+pQxkhFdu62UzudxE538lKJS5+v51H1kCBJKAZGey7L8yU+J683ZQh/go7i
aWkqq2GozPGonXEcR3Tne8X6U4LYXBdQya0KBZ+Or6fovEHHBgCZ9ihuyjzIxTMBGk2Exp5RMayo
llPkQZKuPwOQqBwfQkyjQlM7lsOgkyGOfIwBjAbDrun2kC0D7xkoWmx4uVtdVG6qcgKxUuJdjWtB
VLloTtg/fz6Ilol+SWC0AM+93qhFAxNv5pkp1a/a4clGCW1SIrBEjsHKhWWtXSwxxKkE46oybdzf
MkKhw/WCu25kUR8wbBkqETqaiUFwaCZ7roehx31qQZSEbauk50q3U1oVUlXYgkkA7DMICgFgYmwA
B3XX7a65/4lDvxKkNHqTpMnx4lq5uvhiVer6fj2cXn5GdiLacVUdh7SkLbx+J6qoZDsoRrUJY1eD
m+bsp9WrEP30mCmnEq5rClcjGzoDHAUAMhn4+VE+WDGXznQ1BaFO+1G4URZjBdvDZmvDllgVGjbT
1o6tcQE4U2tM3Uq/VtLdcntrQQoI18dj96OKiku26uq9jxePH4CQStA+UEo8YyfKCtjNVopnREOE
fIp2tzueUUzMIrdVXlS1RZ2KDUpOTnJuhtFx2lkrasJIMX2hU7YuYE9LduL3l/GUXku8nl6wD595
OE4fK/yUqKyn26NDwotHwFA7QwxyYDsqJGxmePvFP2vWH/UOpoqsnkNJQXyoImoApamuGpJ/xPDF
anGfD8UlVIy1vXAi10j0Q9s608jWXNR/u026Ogxk+4leHGTgEhTow9weFjaJck3rynrCvTO18bJo
+pWfBUTEulUpsiYUh1OFOVSa0dTlC5p99TVFzBCcSdi0X4JIYgoqiDmtS9h84//t5Ux0fPABuLPr
7BDZqeUW3REOFVjS8x5tXealvj4sgRzMQzyBUMX7cOXXAOYmVxPl7/TLhNq69ilb+ecQVYX++NAu
ti0sFGVSpodY1zGCVWCFGBwqVN0nyzqvSR2OH8QU+cJ1cE3jUiWv4wRkrOuUBK8JllHnDoJUDMTC
ipjF9enxeSeCFq5XL7huUsGhHeEqkyJxOKyTHeRD3U+gqOwCEQipK9AdYU82NF6ougtugKUw3QCP
Eaitqqggm3dEQCZjkNe+iDNrHGeWTc9zLSKBn/6bf9YZd4vZjQkzv4DCmdyhDuahii8aJxdvgNjV
Gy7+MV/sDKm2L7MAxdsq8p0D+YoVgZ9Oj3dczaUH9BxqY9ABOWPDWLVlfFAX/BnhvjjeNUTicA3O
YLojUBf1WIQqEnVdXqPLrfOyGo7vlGlFPNSu/7SedyJIMygF6walv58ebxjTSQPeYW051FgijUJv
Q7SMX2+KglAcdHg1B5l0CsEkM92JR51a3M2wtRx29D8xUqh6reG88oimz/sbMcCiiKYO7S5J9HQN
8eRrkV9Q5azoKdTbmQlbFAmvH6ZYxRf7qXODnvlZ9DPiSI8Er4YmX+96P8Y3AkdF+eFtPnb4Bupt
7bmsv1PUz9san6jbIh7oRHH5/PpoekdkwytPkv8D4QiDwxGyV2KQ1iHbF7SuoX4jLDYTPmjLp+OD
MPtqNfJlSzsw5q2yaMGUhqR+oCdYFKKOWgFTWY7HCfoAYn1dpZrpyTPZAyVnhJttBYY52EpgNlan
9RU5O+by+U5NjhEgDtQcs98bacJFDmuE/xMNsE33WBgJUoSU74etH2owL0aSfV5O//6JDahEpbPE
pB6iwWKo5NisU7y9opxiiJdud8MWF3Y7+mDugbwyXeEN0XistR+bFKCGqq5W2TR3rRjCottjlqYK
vm51aTHrVvcfo9vQeOAUaDwg1B2uEy6SUpbKtX1+HPZEX6wGVZw5+tp/V1TIrjuQY6avOOOnh/rJ
KtEqXutEWmyd40fdrxu6Fzmj88ZlHpvIF8vey++rzkyiL6MuqFjHfbsYTlo0tq1RV0p2w7N2zo7q
X8dGyQ1EfMxnRXtdenJouxbE2zqEWdPd1xRDrMbggQicaOpZeBc9J0wNtj3/tFcLTrRW5k5NFaeU
SKxAbsfHJ57wJbSl8jcp89r3LYplQNOxF9vz8fKKI79iQC+LNVU2EZB2GowgbvJTemMC85Ok+Ckl
TDe4X1WEwJHPJRLPZzhwX7Os0ZKmJEjThO9HOHQlYhyiVxg/W+f+QAfWG9T9W3zV/XI/3R/E9Rjw
nNsihrmhoKd4amydlMlqg6jBWczUlV95xAWnWI3sjqye6E4GOYSrwYKBT7ESLxHI7jDzsiyYCJjV
cUPF4RzTZ08u4pEi0xx3sogh00lHZ7vjAVYTHq/vpwfBTVyIMlbSGATYs4kKDPFA7dh0gEvL3tvM
/beulAY92K0ihJ5W5YtB7JZmAOLZTVuPiNCbX+6gKyE1b79eSA92+d3lEK8D8oVrBwPysi/n6/7R
eURYsKoRUmxBTNgxFYqqPqwTeJ2opVIGPznVnpXa91M1W7wCCdyCm+8VxvFr1c6VF/Fr/0fqkV+p
LV2+G5QfoT4Z+SLm+jl6HOkqhygyXBibymK7LwiibuPMlvSoKM6rWXcWxOJjwS9MmFVt+Z0JtuRl
K1m/66vJzEe3hJTpf+CpTKIJvh4aYIhQJzF6T4JuqvYEiwAvL3dMe0c/VJQ63+niHdM2MjM2pZ/i
ltJ1G59ypBST10gwQiszM/m8sNS9LFz9qCN2RYtml/p56WXdgMB1AwxcM9n3i7dU4yUqT+6Bxu9C
2R1MwJl2Bmbda0I2dnBDFEXPBfnU44TL3hJFjgmkG26p4jyqaQpDVF4HJITalL/H4ZZhU8Y7BLhO
lLQxsvwiEZ6W+IHRXShZdRPvcYP3n1rhx06AXNt6yIQivWxCbi3qMp7j4j2b4aonByTv9K30DHRZ
psmJ3Cv9ko6wX5zlEpQJUShtO++LTvWURC3rACa8tT1KKkIvVR32ka1XPIlaWF0MrfKmzLr2xGWv
sWk0pMuupSHkg8e/KZwhpUbm6KE3RbiERcEphIV61Tx/gWaKbKtvMAZgrAoxdF52XjRRwS6h+7dX
yoFxzSBAM23ob4+yAEJZ4JmuXqglx1EYu3jTl29pXcN9x9wBwA8meVN10Jb1p8J4oSNirFJXvDTQ
sa7OFC2zdQBuWTBBjCCuE60KYxzy8ZBhqClu2oa2n7Up60EqQEoMPsA56QE8vInLCQioDGZaEjlN
ojbBbIsPcxpUiGJG2MrWFSEEcsIbA8+5rqAp+QyF5GILRgqeGpbcAc0Ibl4/PfGidJH05lprYjbf
0MxKZJxDPxjC82wH133JyFejEDqcdye7RP1GhShNDQHkpscvNMY3aBIHKln8J+IJNsOGKvpD5E9I
f0kM/0h5mcWHVHDm3ZKjaHSpFJUoC8Bk6gXbH4jquTrfgezmNqtZPp0nqXfr45vHx7cTQXg9gIKp
ZZ9afHvt/CBa1eyyfE6tUwTjLe7P5yPGcxo8MYLYM84AgO784l0WTgy0gHkGt3jcD7cqVj4GZk+O
9EJ7WC4xMYFTtYFliSfd/Vr4zegxuMnOdXIMwlXF73bj8xmdCQ4alKw0nA6i7561B2W0g4vkKOCC
7uu8aip76Tzh6tqR+7ltekMXtiqeENA+faKFQf3TVNOKUERabi6g7U7XGkC0deVjeE8l5dLivGR6
4eJVddQjngdv0E0RbCufC/I1AjGI3jtInbCwsr3muWpUIfZYtQAeK9XU212VM4UHLa2HMhDFZoWC
cqtexbVPRXaGGrKwZ54oQkzvZ92YKoXAuVTtErO6UZaqxdbWtgFTCwj87EQqJdvYRBVcHaJOPQ9k
NIx5+Dz+TaPHEXCT47KQpzkf/+P26TMnpHioovPawueSqNmQkmp9qHdyvV2IJyidaZe6FdkOKvFi
RFXeTOwjqA64C9d0aZrokeaZcpo6mFBbjY6hKzqUqIPTekPOHs9vFbbzuEYaJYPv3Thw7+TDT8SA
L+ArB5MWcXHXLBoQcaEilOQYB1fVJLfqJDp74prVozeAFrrevDcRURH9JJ+on3BuNZuBIdbE86UK
xIgXM/Ho1wPqfjVBP3PfER3bnqCMH+LDkQGLusWWAKDT7a5ZdUBhW4Wc3Xre0glkq2KZSk3tcUmL
cgpUujfc7slrhluqERZ+ZevjdhzPh5Ha8OWGbKJAZQFxLVBQeKyAGbY9+pVyZwQDSRBeBpF4mrWL
J79aMwRTZmgbkfTQzn22Ks1pr3TQ3Qfdy9jE7XHGsYnSh5er1r4tYUFl2+7jqsOcCuZxVWcpBio5
RPQDDBS+mUrcuz2rxTw71+6S+cp706oePirIF8SeR7fyfrzEkZA4jw7gBXrpFTf1W1EnUod2AH7U
dYRW0kW4s64pIwNBuA2W18/ICNEcVnL2F7q/UXjXdZ/ERc3eFM0cplk5yABPFoKvQGaHS/siFuiG
OmrebxV+vX8+jUd8flCDvVTbplRND/1Z5IaBZGo1cRXHb4uRXoGJhi+NRyYA0wDmStaxoO6rcFKa
dmxqkSMkPGUp8UzHuq3+O+n3FElw3Xi0IiETX4ZHFBXy7oDb4/kl9xQSg24lGi7Tms5ABxBtDZgd
HQfojIAtB76v8VtICHeKaFBSiK4Mx7Xclqg4q4FgT9qUJQtLj5f900js68sLVY7lSiccoTY8j8Vy
IkBaRDZ7bzYaFCJtTYfszS5ZThhs1Tf3pklxPtSvD/FNb+kQgUMDntLJCrvT464K1VFLGZ4LibOd
fOt7nUSpI2/3ATZNNDFQbOiOcI1g1ocwyTSb7D8JPxUC+LA/XdYltNyYoyYKZ6yqZghruuYCF7kU
rdIq9jZIRdZOvlyvT3vsHLuqnkdueUjp/tvxO9FQVxSHgqE6jWDOJ5HbAKOmau2G3+coNMp61FQb
H+HCCakJTkd1GFhwlOsO5zk1J3Jgs8JrOKiI6cX7D4zjOdeN8cXj/zeudjyMLsnlNXx1utz9u/fV
P+2ebrt//7yOP7FjrI3sTZ7YLEU1/3V0O41iHIiA/y55GPN3UYF6G7PzebNdiH7ddy+36/tuBHHj
3nZ3+Jq3XzBV18hJI8dbSGfx2fhRaXy87ZiCKyTYI0X1QEZa4XD6tmMcnyeB5fbH/qPd821/f4Pf
27x9D9+lKb8fr2L/2D32T6NjcxmvQ8JlVEGFHPH0dz3e4/e38W9hfjYIBQc6mrzCMJslPQzj2gx+
lWo1pCgfnHg6jpJz3O1fRqQ32tLR5O+O5+M7ai002ShKUQYfyisQmBWtau3cWCadxRRLmLLeudZq
GMSww5/xfODC49OGWWYGgu9jr1X7gAWX4gVc3m+Y2SIrRnndBZgG2WMhrWsWF1g+bL4bj3vTs9Dr
vWOiubxCUUxZSRhmTD3UEsZXH7MBf5zJXjhHiTeI65KspabUYEZdwAgpYqrBVRWd8W9aVt9w1P7a
MTnyFvGbopad9BnTjhvqiMw1PktbldY6pocdejrL5CeCZf2EYHWp+F6MbXFEsk27YCX9Gnd8QbYi
VnI1plMTF9SSQ2PYoOxA0di1tIVxo+BzQluILLQ50jB9hn+ND9WvmTVlLaasri2BLfU4wQ5CtTh+
LeV4146Vhx0qxUic1RBstDSAePuqKeh5GUpJKN0yIJ4ZPTqNVrxrwDL5vOOaYomT8BJkl4R2K6EY
1s9aVCapwS4Cs4tdnF0kRacHZvBXTNY/qWuKnS7eXezTLP/2nPWvuBzjDl3gHUHYU425VWH1F38d
Iw6jWtpLj/ypFKF6DLYN5U1jZtGsZca14s4NhITxhjbR0jqn8A3z/FOeRRM/V0yFb8e4lnOghHVm
cOirKYIgp1Kv6kr2993T9fBzdBKeziiDEWRZtNRYUvBYCgmFm0E8pfysrRkybl45q7mjcCETLeA+
HXoEzpcD9bNKdpEVFgHTdHy05mzkDswZC3Wz5gyODaJpou5kJAjU7fD9lKKDd611d9dYwxrR4uf0
cQQr/lPMHLXk87ayiv7SqEF3wdrtx5sPsTOowUzL0k8IzuhBO0siODkQpjeELu6jKt99jL7cj54b
O9Q+woBuCN+x5i0JqjQOlgMz1LRYGxOBf9nymg6s8gUJn04RbFEempDfoYaxrvppQqfLBrDkwjmB
1aurLX0DJmBVYWXL8hyOPqg18sj99Ho5vZye95dH4NkOt8i8mszPeE64mABLFcKsdeVSji7Xy24G
JJfr4bhLYQlaprKaCPULDVDiMBM2oexkAwhgwAnsKp3m3CjaFeMV9ydFbjhT0hBGz27DI5grtKxF
1qUDj1DHECaPtY47+dbEd61YUzokxTQGM83SvyAE1VS2spb1KTruo+E52IbJVqzl4nCZfwux2RDp
DF9oIRwHWDLUmkcaKluZ7qfz9fm3GC+FHkMwfnL+ukBa9df4t4fitzNk2X98nH+mr4P0S7x5k39e
zW/h1D8v8M/z/PMFCBZ20IIg2OIrW2w6R58f191UTBh0xh2vJ/sXoPEZVP46tw2sSIiJkPRUWEAU
4Q83+vGYCMlKh6+ygtKMW8NR0CR8p1s3/rR//u01tD3ufP/zbXc7Pvaj33fAux5aV6cGbpyz+NdV
fdYpwDW6GVbvMI1SaN1/l1FXSeP94/oOyvPCblV9xTW1iN81rVOWP+w7aHbPb6dzRHiR1QibKfMA
qiA0eq6ELRnu43Z9HT/qLTSY+jJbwo9lN1WMh22YeRvTZRAsZFscX/+qwb+qWwrLk/SYvp5N/Tuw
k4GGoj66bYsd/t62lIgSkg0Ck8zWqsJ/FZT9CJ7Ck3PhGzWMKAG41NY3rKTrN3VYT0jB9QC/SrYv
fhWa6idMMmglHGDi8Htq/jLHSbXUavSkiM9SHif8oC63qaSTxHciH0/kiZCaaath+Mx/x0W1zeR1
j161tBqfjeVNZtiiR/eRK2qTnDV+THOpFPpkmkcRzsVm0G1GjxB/YvPuTE4D2EENMPVgcyPGzCEy
3fRo+hRBi0zAjI4CFgMhAJsfMws/lYMsWox0N/inxFD+VLJYUkor8DcpSzf/UrIYzhhjMSlSeHL+
alJSduRPCcIMNg9Hqy+Yj6LJ8W0Vcln4jonh8RaFbRCDS2MGg79RLWYayc65cpiErEXCxO2YFLzB
FxMF8bG4qj6bRYRbTomxKK45R2dGL9gaYo+yuOYiZc0cF9pSm7QtObZ2GJyiBEzXaiMpG2tHZiQE
jLeVRqAIPpvIcmkK+sejESrK1XscqnsjvtPELhXepWxyyTBIRrDW0FI5ySLhz1hzi9FC4N+SLX4U
XA6GoH39SyzrRI5/iZnqwpKUeRmTBAcXEi1miVaDG71+LNFsaNnmdFmEymENlvrDP//3v05AZPeH
6/Onz9j8DVVPhz0Xyj8VIoTkz4/j8++v7+/7yyF8JbQEcEZleLGodDJKKaTK/FdTbrN+SSnG5kcc
7WPlM6oavbrb9/3tABebihKqGt7UWVhEk+5H/+cHKA4MC7l5IZXnomslhdBIn/jvpgQ6K+cdKS4c
c4z4bMpg+9qu8M/Vzwn8c7z6uchqI9V80dzx8GvAv7/u7z6ggdawLNNsztjp8aeVFUByVX53bNHl
MCpc5iRFoCk/werxaVpog6mTv8my+3Q77n+rI4LB8wghLriUVY2lXk6Xw19xE00gksnbzvGtGN2k
jqsLMpkyFhzIS/BRZohgBvWk5EY/DrODHCp24LMrLqSGH/FMXZkfHx5dSi0pjs2c5x2S9FUKHsf0
iW8C8bEDLGVDlpYiwq+NdoOUBPNpVzORrCpNLrH5JAaIo/P3A+6gfT9cCcYp9peq+Z1yUgvMyMo0
zzu6cQL4Gyr7UYvfihrSs/8lluQFeo//8MdJHM6n+wMruELtZnTm3RGrKMbkQ/2dXqnY96PvSsE/
PNT6Poog19LBH50mty1sxEhtgVJAgdq6VGxTgOt6PszGEauJLBOhJzSeUo4OGyERxSbz8+tKO6ah
m6yy5a97NLlmo07EfFvoo9wWNqkVwl64FgPGsvKoPn3s/Ha9EubCtjThCKS1dZjzTZaXAIoiuyWO
nRX4//68P04vP3e+CzSba3xL+TTFS4ejvrNME/rOtjhYj2iaOUw5I2qFnHWrVoS06JreEwYf9fuA
iSVNS70l3RqqcHweOeUpgqo7XWLA22ftDpsM4SDbqpf5R6yw4i3Okx8Z1MoMzmCIp2QtvnoONccY
Mw7QqTy/daZGcvxHH4HDgruwV9GCo9nWYzGxBeAoWKQSkyXrvuzP9yNe0FV0S9r2+c2/nYCrfMPp
My+EIJoplD+XIxdhAtihgXUSF72dDofjpUP5gVcKdAoyODa6PwThhakJbyabqkYXjfhO6vq7KV44
emmW+LUa0cnJcXKKkEvJq49SGuH2Gjylu8/9PaVOGGzILK9xk0y4ibkBG7Ja/6aC7wnwYO2jbQ0B
krW24//T2CHjrDrlUAkO8WOypeEjywXU7YUnq5idf5K9AzZ4Za2m4Axjo2dIbMTwlvZUo51RjPqO
iwbj81G1ERezQGaVyg1lM17H7i/Pb4TTOIiGJY90G7XOyFmecJ5QuxMaWK3yI+izwpsCCMIZAsYL
0VIxE5IlRKFWr3OxqFCUAAneMoe+a/fpOjrou/3zs89aBdb4HO3U7vV4f3zeCMcsc7jHu5Jl++qw
PeKmaV+V45oChqpl++JF3Y4f5/3zfFFPPzucbRoYM3TA+SX2VfCCsDeFM8WCXXWVrBIGWVWgMxnH
xLfRMoU7yB6ZV3CYgwtrY2dEVSbTAtw4HJ+vsZuxY0HM0HTUwmZCeUZ4dApM0QyUYU2uHlG1UISf
JZowN5v+w2n/fBu9xefRauPf1k2fP6ktIsTBWiGOOKMxclXohAsPJ2X2wCzWDAUUh5H4BKqFY/ig
mMSacGg5homjMjO/7e9EE1/gJd2C/JP2JjBzKQy5gnUUDFT4FNSYa8WjppDAcwxi+kIen1f+cXz+
DP8+dSNO/3MHDrmWjZg0LBGVkS3/fRQqH9sMQYrP0TrcdocUqcWMZSv7oiYdIZ3FhNG8pSFi9Oz6
+dhdX5Jy6Bsmq5tBUS6YJvxiUYdYxIzQRp2PsYtkrW0n3OtzkvgHHWsGgUcGDlfuFZgfx3zv96KG
W7et20vycLnu7s+36/mMP68V9GReU1SAiCa4Ngiw4/Ew1cTCcTGphpQIL+lBtQRe6/HkBADQrFKO
kyeYnAMsDMLW56pDfsTv1QHYBDhGVUZ4+qwOxk85lYENRIxO5g2G5l03w3qLSWhbrmYYjeBho7d0
WKhN7VJP+bbxLi3epdAtXRSDtkSoSdQgixdCFeIKUS3EYttRORwobeRU7ZnWEUSCA5rmMWCM4FSk
DqPdt5PvCzlORZij9+1B9I9etIDVsYZ1hdg2ZW9cK2bh8ahihOehWtfiaaIcjo9wVwONVEw0WoVr
+M/3n4fT1TOS/zfjKfY+/gB3z3MXgI+Tl6U3o5RZ0DfGc/+ldpXOVWyUCc3xVyb/1jAj97DV6PX4
gPwUJ4GrJH0SfrsoIB4ti4JJbp77zfx3OeURnzLdPY8eyMfNT94YzZu/8vTvscLnuSo47CTjrevt
420/HqOAQMkj/nyVwo17VHhFkVfMDT2BQlHU7sdHsE0jEv4kNpYvtRCc29HzxMf5lEKBAe5TsJrn
7sjFGYsdHb/5i4uzBvAqLq+SuT1sKK5yOI68irk0xQX992515QTDqfyzWcSXdPDACv9yXiIoepuW
8L7f0Tt9wTl5vB2Th0KslGWm8Jj63IKPp1hFFbZxQYkX5JlehYH3sBEEbXmewVFym/8shpsfx5A+
D989Xz9HVnnf334LNuTp+gOUWPPcPD0zXrq7x3l5MLyvLExzkVWxhfvJT2UJOyF2IapLS6YrxUT9
CfejHSx29O+fp9tveLVMqTDPNo0/Od1GPD2iRC8I/oD0sUTmozkL7328JEnvn2mmMfxet3R3Gu61
u38+4Xd6eW6WrH7+8bY/7Z4/b/fr+PujDEDfhOf2n/D72VGPPu7jGj3e0brHoIHXxefj5fVBXDNr
nWe66MfzW+xjC+N84KFki9nWa/icJcEsqmXffPbCl6IEdpnkYVddeufCiwMGi5eO6FmlWqaSuJ5w
8Jpqbkt9A88NNZGH4+t7Ud5L5HQKlKK2EBBMFAdPKx/JHKYepI/PR9QXo3CFNthRve78K9/eBQ3/
M2xzc4spGlUn4vfbuMfgx4VpOKcswXg9XfWJp8zI6VsifKziv32mcBe9lNy6VOeIom6UjlQbgUEE
Bbswwc5P3QktpD8/eusNdd/axFyjXd+PqihcwUj20BgTkH9nd0M9kKm32iI7htd1dauzS6fe357f
Rgoezwmm+1s9HH1H4jsy6+HQBRFzD+Jym/McsOMh0TT68CFamqbNwl9gzWsK33s9F/j59FJ5U7Hh
e/zhKcDT56qBtyZIUdzQX9K2mtLBkqnObhfDHHhNXXeQTmt6u7nbn89x8lda9/34eLse8Fqyurtp
FtL7serECwt+3I6eszBX1aMcpmxrS+9sZVRbC0Aqd/rY3+/fryOdjs9v13AFF4o9y+bu8FYqF1JP
C6XUfuSZ0+XhvafwwtSofhfIBP+Abcy/AFfcu1rV0GvlTYSYZWBzNMM87CgzsvDAVvigYdjVx9HP
n4xT6sI/jObYl598nDoNO5a3uo7KJe4/L8+TrxdMFl4rNw/5OIxNIHcKFsaiV8OZsRoB7BDYU7PJ
Kx5gT99x4jsxf1eWorgQDEBOL8vtaOFDtkz7pEktTzf4/fSgYvg+F1RV1XtZg90LFUayYNhKyh+E
pWN7UqoDZsJIkL+MZ3AVMUTVjr4PY0FzqWeS292Tb1Xc304jkiPI5fL9FAjdVzML8lr5/JkPjcjh
izsibj7BhvkCUihdMiZBLD9GgQsa5Xxn2lFVmHKHzcLxllheSC0Z6Onz8RglvOgFjRlwH8chlrR5
ybIkctBWEES2mRK5FGPayA0OHok/qaufFNNPylHVCor8ltXyUwX100yBSE4iasVy92tbEKMg0SsI
ttiKWRBgRD7n0TqkZO7zEeQaIj2yWghO6dS4NDAtCWYwtlJfU60xM5JzSqxMJn9w/ySkYuQfSh4K
5smuWskGxD6GLN7lGy5BvInPdKZ8CHbo4jNiq2qoP+MV01FKm9c3Lbt9b3Gbuv5MVUaCYnJNyfgW
7h4KM6GLWRBh+AWxY1OL5RwFFxLMH4ufFcrNLjPPBaBOnDUDkMOk8wghy6QQevbh86iT0Y+8h8ER
IdgS9R+xWq2yKiUsDXNq5AM02iNye6ZriPuIOaQQfdh9Ke7jeV9Plwv03lkeAhAW5LN/Nlkqn+wY
cfPl84PYUr6zEFKvrG9QQM9vAcp39Zmq2XXqMjYDGtcXdclAIJINtpawEq4pB75WX4IEdKSpqLTi
NAyZ+3k2xDl4DenWQheL5s77W/BA/KO5d0ICJSETI8L93yfiW1eoZx7eyFhx6qhBaE7NxwlZDN1R
8RQIcw2p0VoZayh4oJqoYkRCGoydi9dQi2i/iTF+xVr6rqWBHt+Po0M2l6inSre7D48R2aUgH1nQ
zIj2TPzbULbqkC6DreUkmXg3MOMIE29tZSK5Xtc3vlzP5+v3UZs+jZjl+5X2H3it4XXl8VA2N9+L
EEtFHBnp/eglI8NYQfgMA28qG2GFUoRomwInyaLpOiIeSroLR4IVtSzjyY0hPhM19ac+Vzn+IvGZ
HmqrJZdm4tv1dPCj3J6PB7qQJQogqzHW1OQZtOrpfHr8DJ+lQb1TrCos6rn7+X7HBRCiriFJ2YdX
/5QbbZ7D17lqJSgZVVQJzvsg4hVhDdYq1lusMfWX3OBDMCo/vjPVdPIpG3///Pi43h75QOHjaJES
B6MRSzxP11/kEULV1fw1TuLpOrKfWPb+fDt9xMzX58cuvrxwmNLJeC3Zyq2EnYRYYkBB+OsieZYn
FizIQBwkJ6pE8tn+T4ot/RKGv/zyr8en/3p6+L/9PjHOH47fjufrR7jD8VurlgvvxpX9207TX8d9
Jc1yfY8Rpm8xmHP2K8nwxx/+iYjwp//pn4f4S1jt15Qx+1PKt/zVv6v+6//48z//5Q9//Msf//Dr
n//5D3/89U9/++Nffve3f/7Lr3/7X//yx1+mpetzTmjfw6HCryt/6vL5/nS8/T8h548W0XmRrDjC
In/0MT2/xd+P4GxkO7BCSuMS24ippeOfjz8ev/7pz//P7/7bn/7w61//9ru//fHXP/7lL3Bjcl7W
gX39eox/Ov46yd8f0+xgsOb0fKaqRPj3ofTnfX95Pv76tr//5+Pe15H/KuGBRbUztjrv/eRfTvrz
9XAMpP/1P//pL3/926/VBZP3uiCooHYZnwZBO800LCLyXWb83Z//15Ihqf0mkxV+JQOoiiAhNUjy
odOtq/mq3Pz1z7/7l7/+l3/+G03fmgsEa7FWLKb+81/HH7+evx1vM4uhVZVuicHfPM//OcyEQ3dk
O9w0JWaD+PwDWkKh9f/448MP/jpdL18XJN1i0bBqQbLz9ToajT/73LdHE//jL3/69cf7Ga45QE00
sdFl/3F/uz5GFngnb/7X8Aof4jRR/Y6Q+PoLCl2uv/75r/DusZw1lNW//uWf//z/+fUP//z7//Hf
//jnv1E6MMWPFkLxu8coTk+f40qBsTxNL5C9RFYmgtenpeTqiyorwd2W9BI0/fPv/vsf//ovv/t9
sAO/YgujGDQFDRb+Ann/MfX4T//8z//tj7/7M02QrjqrmJlg5evtMEIlxMsFg+T0zhfpLiDdeUV3
nezQu9cMtFITQ+v4/3K7+p6t0RT8+qfLaBM+Q+1TRz1mzhqadHy6Xn3kKVra2COL7qQ6zrDtsr9u
XswAdePmH9qk2Y3D0I1Q7VAaVL1vuVWnU8pW2+r6SChDrSNVLar2H5Yn6lfswgTp7XiJvKhazwhB
M/EoGJiHxZqHF/YAymS+CiVD465UmIz/LRTP/UP4yimolL5syEMpHfwhXv/QsEn7TR7IH//nv/zl
j3/965/++c+UjZAFS+RxrgTF/gF6yQ3GcxbjSnlDze1ali2Buo7C1dCdo9XASGAf6EWKwPXQXfwg
DBFD4mkglO3j9g6iVabnxS69ui96SdbWV6JXqjDzKL6cwt7nx77KXQapITjDsIqfS0XaYLavyYqy
0PJRaATD6p6j3dTGf/3bX/40AkDyLlh9F2oTJ+2x4VAL22m3bfXP/+O//9MfO0betu6rZJs//QFy
C/8HRflyuj9+PbzfH89QnM0G1TuzUY8p1bCBcbYDGV6rGjk9YppnHYUgHU/NBbc4PP/t+VefgPRz
7W6H/WN//3yKcYvjj+fj8XCPrTM/QNRRFFHH7KSMa/p6vfApc/Dj6X3TqcdIzx+Pt3LwK7zvR3kZ
UdIlwBe0juS26nFKoY3lyWIM1f/p9fiIVfL7y8H/Mz7eou472cF0vlCDHMaRx3AU3F/RyVXor7SK
Dw8/bvtv/sX5MBIBLuM02Ex1zNj/TB+rqEqvCbYftxIL/MLhBF6CD+2L9yvcP47Pp5fT8dBhnqID
oL7/kSyxeCBmQi/H72E7h9PLyywGkEy27n6qVo3ECYvhBYr2htznPB3t+AiH4sSpRH1NDGzga6cq
mmEqWqWuzv3Br7efMDHenbWtnrlxIV+BGNq8/B9erp83LLd8wYiiOuG0h+ofCOFgdT+UKcn9fL5e
wkKY3lN9XOUcZMLEWVDzPjocaYf21fstpAVnzYaPpC3m63CiUQHFenhar0liNwUjjav5f+O1JsE/
pmpWq7kybCpEES7X5+vHz/DsD96Wq7UHRwzu/3G01Xc/EBZvbMDESo2DHXkdBKGkK3bs3Nui16rW
08XBwl+OP0ZlfSfOpfDlTeLu/+wzgwQrVV15Wc1OK0S4NvH6/j7aoosvJP9GMLlBCiotk6geDjgC
gZmCrz36MdY+8rTZkVFDF2FQWKHrDu+RVnfjSulPtOkVTrbXCYcqTIzCSzDXgs2TgpoxgCA0VDNO
XNj/CHJCZ1MYFIIhgASs7vdyfHnxfZXfekqO8ZabvLr/+d59kcKITV7wioMDeGLJ7LSOKnPxWbFM
3ydfYgY7HqB+eC6KMvBxwhfgXMudSGRLmtjvjtLGghtAe7+3x+l4j8ApgFd/i5wQFIMRRuACWuNN
bQaLXF55g34n8wWGuoNIJeIODdLDUVbvI/TZcLbpBdV54MBQGZoYRu/rvbKRfoVQ41Emvni57V9J
7DQV7K0Z3u/DOwP7RHHaHBved1dmfRDbgjEHOAyfS71EIHBm0KlW7tMGzcJ1+3AbpW96vhgjK7nF
16sEiNisxJhh6hYjVY1CpqrWyJ4xOgoZuDAVmvbtHVhezBbnNYxo8c+uHW+37MiGOPEIJ/e0wV/M
8jANuzz+kRRIYQCc2bDLWIy7YZsWxxLe9vdsamO+C8vp0IHfPtXQh7nldJHqYmrsNXcnYtIBf7Jk
/dPl854V9kg+gvnZNobxSsT/6f10OJyJ7Sm3DSIZwjSyVpib4o45zLSRhRUh8d6buh2/na6f9/Ti
dUePo3BReSHfb9fL63TT5H2U/r4sDZ4nIKmFBG8Od2g4P33sNNi2o7CMpRBxE0IlVl4UvZEiZLaS
4sL804sUc2TWEYY5KBBShngNToDSKry0yU+1FCLxg9W38J7gCkQ76oDipjhVodaLCWfTjnyg/DwK
G7EXELttg0haxxXsVwwtw0op995gkTdbwp2lUkkS8wXLuJgJhBz+UQ90UaYUmghDLPmNZn9rCNYt
9cL1PIVaLsFdJzdYeGlhxoJrwaYNEbthwN7LVxSx4HbLDRe3Ot4HkYpgbRMBouMe9NBBctt1QSai
Ub7/AExj23IRVsuAwK3fTsGrhthLztfZdaR0xGi1mieNKFPA6q0iNPennyO1PcNfrmE6EBGt2cr3
X4udD4qImhSkUwTpRKMYL9/iVv0vDRGPKhIvRHqBOxSGmAm/UWc7jjFVzN1pwoGiUkgFTTVBU9lK
1OK0XQ/ISgTEIvfMxP2a0uQg2D0lXu736/NpH3bYT764ryUqSX1HBc4rd4ngRkd4ShmrdcK+ynQc
pZYueFwf+3OaVYY9JwPQEuB12tw40U4M1vnv44Yji6LnaJ0CKW397fiyndesbRvWKpjw+H4lgglu
gw0sDWpM8sd7uL7sbwQe07wdRfBHzjFUIlRiNvnTG8RI08kBGKoitOrANuYbMgeHLPf+3OEUZzfE
TeaCBEK5KWw4XvtJabbQtcPXQutE+tVZIrZeioIlbFrOSGijPCwc/yYJwEUclIFcC3GTxO2pTijJ
/6ETjlIM31xhKCkSD72EzUjpY/TVeik6Uc3UlM3YRxnpf7yNZO+lOikvqtTPdMxfCrxMGaUn7Bnr
51wnR25DDsJVq4lljDi4nsd//9yf/368XQm1PgArdri+1/nQl1gT7tuFMIYwdKD+i8kRYVhbrW/x
smNk9zX84o3wsnk7NrU5dtz9BWk2/EKx8RB+oKMPRO1F08CTsN86HJ1bxvn6oagBnHYqAwjU2lYO
5Gi7t4gBEfZT4wMWSHJeidAmiii/KmlFlWAxMrI1x8aI7NqwmC3O22Ds7Xakcjv2i0mTHCDbyviO
KOfyiXvvc/smdmKTA1EZVPu2hOYVGBxORps2TYqJDcTC2JUO5mjxj0FGgkF4P6sTs4gxHEtB4yIq
7NZRgczyBL8KjqWm1FcURtRUeGh7QoRpugyogzZnHUFs1bKOL7H1N4if4MBqbzeMG+LPiOejyhyl
L/2J4Gwi8VOULG7RvLpmQ9nDhpG9O4iTbzSkm2LslvBBR2Jdv1/Ga+nGAxe5bFXqzNGTvR/9mFiP
8K4vk69AqE/V3tICm/dcDckkEfvcEsyRKMpZXt/l6mt7/YQ3KsPM6eKIwPTjSjTsdWJjPiTJah+Q
W4H3Nd7+hsopqRf2Uq6DnoIwUYowlfFrRXytiRuOXxvia0vE/zN/UIXSekuWPmPvPkgWblNIp6/D
ho3wOIX9ew7poEGFK4qzllCCAFtsi+vVLYUynZDyFhkVg8KasOXqdvLttl+d9VpofkKNDUQ1RCn1
mgAiAx3D2ZDbHpA2JcJA8W3VSckRPpMGrsFcKrm5ElRxImJRcv5mHVkcvHgdEnZ59eLcpg9y75v4
okxbyVUAMlegjYs+DkQozNStoBL3HcXODyqBogHcASLUS4MgP2oZ6u20nElayYwL3K7XXsnZQJia
yR8jGUkx3okMtJsECJEctjpM/bJLblD2OdVibytWlsx+tfhylpwJ3EeoT0B8hYov28E/Oodl9aaC
lc3qQljcLDdDvX56QjqGLfh6nRFX+7aNTrsjJxrDpj48yiOmAHUFF+nYnaZkaWPzgHQW1wmX7BW5
6fo5uh5hCC/leEjKdMzZbjryUOS91vq0YCiqwoWBZgQq/duxO8aSEc5xxX7qxmGAFMG2JZSfo+HD
nHE5n7c41oyDcsY5/LS1+le44WsZ3l7RRDmzcuUQFfGDTueO7uPHOJbx+tJxY3kdqVM9yBGCnMfv
HeMsONZzy8BBp4JH40BbITCSEBi+pe6laXS2Jlw0UZ4QmZ/ApIyoUdpWWDINK58GIPFV3jRLzfP1
43SkqlyR3/u1zhQqmCgwbxSKdFObrUO5vqWi3wgfFBebOpI7XaQGp7HL9rwNxZ8aR14Bnrn60QZk
KN2qL+YHl2mSDb0lA9GUX1wycbNuWxxza4zCqo2OsiTErDl6pmN6u0VXelNCeLoBskZN2W1N0L2G
etlmEE+qflmAKGRIxcCJ9JPVw3SUMBNFrGaitH3AFHYAukTkn/KaypXFMCg0cLlTi6l5sUUcpN1x
Si/G5sWyDogq8g/poH4KFQpgihyX8UvY8qW7eRTbn//KGbEDUx/HFlsolkBBUJEZfkGR+hRo4ozI
vdzhe7as6YD3LYgzybxgngIMHFH6fnjjflD/Lb2SXtE5rDX95//lb//9v6W5YAwfbUrceHWQzaL/
diI0cddTh7P/uLDa1deW+Gk5f53hg//499dzejuYE5eSYqPTzlXrc4JPU+o/7D3b8HLvjKB+6rIw
uhrjXtJc4oOnwoX1zv8pPJ0zraDxz9t8a4WQlZsXxLVxU3+dN/9P18PPPtNMidnp5lyD9NTnTtVs
w5fE4/joU/1Y+Fg3P+YE5V3nY0bwq1DVqbOo/NP+fpy+J3gmubsT2RM6WZJdEmTn1e6LW5+Orgi6
8d7RCaILATh2+mGCbFKhH/6nv2yhWs2sxee/Gw3CtABhDRLSmblNrpWUIWRFVF8XvP47/9zCo890
U+4+LGGbG6C4jmUtWUyHXZ7fEufP9M/2fCGshDF2Dlz97y7Pb9fbdH5C02qB1E36WBD2SQ7l7of1
3RFcyzkyT32+m1IZvXNT9764ObeSGkJHC1tLjQC/T6hZrbrWmTBSbEBf11aK0lfFGWSlMaszUGBU
mQqMglug2F8V5xjmfsj1EsQ5lK7gfgtpUJ87ja6yNBzERZqe1aIUmMxcGIbku6b+IBSAkcDs1fQj
9q8KD6fef70EIUuqQOC1Dq25kWAEB61nvYuBkChe6QQGNkEhJ1PrBHQOghRW10usjDFxgmlAHDTk
BCNMExPXrkKtkQhJ0LrHyIRCkqz3sSM+7v2yIH5ZsY4BI+DH1DC+pvhs/InrYl3sQjHbMKCva44n
hF9l1aOiyzQCySZuJRaxCknebIgI4MpZz4wRBmRKyqy11/zTBAZgFhGw0PyEm+YskJjic0LdDBwB
x5LwlJtYIBBRm89C9xMLGAGoVxyAgN4DcnT/4JPCG3TdYPu/T6AHZ1Bw4/Rty6+b6tfXuJVgHel6
oJdgWsWRlShiG9TGJYptlPdOKGrDKp8BgV+C9NpscXYpv29A3nZlKIktWHgFtfoj+F/lSKQ21sW/
DSUf3cbbuN62HGjQwA/bENKcBjE0NFHfEZiGr7bsQMEOlCfj0GWWC1CuyAD4qb5MQpU4gVTZTD7C
E2SiYwWocB2DBqjmI2L3GiKIQpERF+Bkx5PlBIiQpsY+jQAIwXm85rx10ImKNMqsv0MjatuCUTIs
etCBUsIcOqD9n56KCYjIOCFyrJCY/CD3UmKIgxve0RbUjXONzl3LGxX2Ye24S8GvlK81LA1/eE/2
m09Rhv/+cLp/+Ckxf/zW8doka2SjTpfTI35J6W7e8Nqr36WCVlJ2vybkVarGrtPrIN86tle09p1P
TAVL6uSfWe+Z/F1T/e6S0tRpbSOpVf8uYRuE7lKa2LU0ja9LShMcImQdlxCrj6lts97HxE0JUYcz
WocmflvqxkXnq6LINTTiafVVEWZMcvJ3KT9SNK5pUmXh6/QQL8532hbJ8o9T5HJd/iS2LoZW9Kr+
nNi3UI0fD1/9be9nenTP7bpCTTGa7X5NOKCyvjW9YnFq30OVM0/yUf80JZtuJV65kkPWlRxFHcyP
9/Px8nz1D7rDFi/PxCmuYSfXWlSNCvvD9SNUrMBGr2IGtq1TQ9Ma9+PDV/P5Uprb9fb8dnz+zW+K
4wV1Apq2QhzTerdjHK52OArqYMn1s3V0cL0Ip06WIta28tsba1AbccVGstikQTb3kR7ve1/Odrq8
XGGNbjElUUxUHhBVDEUVW20mwcjVdSNDw4sO+jZRIuulGjhGLaOHmi7wlgfqPAPBKf4BhsuHH8aS
BIFTglAwcQ4VtK9JUtck8jVxgsIUy3BX78UC0sDXpsJZOqQpronaiy72ktPOQYznErmpdGj/6F16
IdkFWPCFdbEbqliH5MHkx06Hk9Xh5kqmQ6eAJSxl6i0l7fW8v1wvp+f92T/BhvAxL8YtCp1mwWri
SJSuYVlPFMa5uYylljHzMnZ17VmfU0LFNcE5QJ1LSp2LaksSaVFGaVGOtOjpfjqQitOpWnG6DrNQ
0mAW22Bt8kpNrCFdg7wVvzFNHWeYj4Pk+v7YXw57X3hOraS0aQojWooSIi2opQplTt3xwFsSsKSt
oJSeFJ0jtXiXxEemdVlxdGLw/u8UXaY55f6ytLHe5I1/M7Zx5YZahWUOzvkPzMGUmjFyEwIQ1G0L
0xJGuB/S1tlC/eYQzSzYipIEPpOlwPSQKpQopNogW8clGzqKUr0uC3YxbW5t+qk1hKhkoHcmShYM
eUvZFFDb4QsULcEaJF5k1ZEUAawoIUjpfqDGC1BE4V9rCeyab4iyjkJRKiaThGI3XsMXRsNWUj99
jV+oezKCUL8FfamDWUPQd60YqO3YwtQ6zL6Soo5sIpkmpqIkiVkCEGWVSZ1G2E2eJLnGUHCeAJ7X
zDSUDdC1f22AFFC2mrcuetbagpLjjF8Khd++FIrVmKpVE3SSKGF2rOvLFgiIpKmm7Or9C2BKM9k6
WVtjUuDDZtjglVaqzadcN+reCle7GLWxlgKKa4SuIkVJd7ZPRln+VM8h6qwSvDfSv5Ut/xYIFRlA
sJu8HHIN24SvNVB01B2JwhdlIXAJboliZeG+pMSpCzeuhUFq55pkOlMjX2CwJXUcuU31kjjIui24
QVJ3K9Um6EGpPMG/cjHkgYymUMz9y46SZnzL8QS1J8lb2qEdsiKdUVuv03K3qIDBUPsVwNxzagvc
UuaRdO9FrdoaEkOqaVdIjKqMR/hp0l64/Kmg4u4Ujw6GAimFuFEia6kI1JrRKQtvqptIrnPb4lDX
YlV9LSjwQ+E3aTZpAAqJCtk3ENQVO10Fj1jNHFRc27EWbKt/eaCEKpvskNMSCUDUK5A7sDV7DjTC
IpWVImx1vkzKsklJRKALWaFuc3CtnENjEUrVDLXb1gnikRkZVW1nAYWK7VCiO+iW/KeZiGSwTLE6
uLoemlZCMeogaqCw+Mq/JpfK1xx6lgVHoU0yaDAwKhaz2hFFYKWKHc3WrbEf6liuBUYoz4AMcmY2
VrEhWErkI5PwZiCkco07yaTOUEsWCtJQ0skVEVop6EzFm9y2eBOJxhmlJBZSQYb7ee3pMGSZyXCt
7CYvyJCta2VH2+aYDCLwyi+AyXDSmLqBcv2yGaAuWA51/QSEO2Soq+kaNCMi1F6YpjO+0x8/byfa
k2XbU+GUN2ptM9JDJ2PIjelNEW2yAkKyRpRzRkBUANoVCMbMDYRrnUKauNqPhGxLreFEnWZAcX1K
jNnQcrVqv5xU+brGYrAyhlJIboWH/089uiPUOPHVtJovP6TS2kEIfIbbCG2tjpjEtHhaGq0WEfK8
moaj0tACEdyHBVYz/OAjLGCx1C22XgzMhJ6HVe7je6GYZnmT9cTdafbleFjvpMepwnB3tk359htK
YJXU0R/3Uj3Du33sMVq62GD5OgTx3AVaKWaQ54vQ2+buotVizrPNIxXh8nAzSD0B7qD/NhZaUouN
10ofMganwjJF/VPreW/EX0xgMi2f5Ua7sKa9xtcm8cHlWT5kocb7L/giwYz1dG3ar163hGd2bR3W
G4OM1pOZXRejGdFIbcharH28/Fre6hEwRCkJVCN6UhbqCFndYH5h+quzGiGLFPpN4+nmx/7Fpkni
kz7Dbw60XotFQiYZ5rj2WyxQq9W7k1texoYnJXRQ8XAntEwtTPCFlyPRtviwiVgd7T+0bUlrWjpk
qiyS3iPUeAYyxCmClJ/1eF+0FcEJc5F3Uj0TB20Gb5Nm9YgC3Ixun2o5oBLTRbr2CtRDO4gNC9TQ
fAt4/QgmVMGqLVvtN+9I1hED0ubduedQ3GR7d+sHDrDhM22btZy6SUJJp4B+XAE+CnWnITtrjt76
NjQ64+AwiJxe4oFq2hK3Vup+uIJQ2LMpRQPugSsG2Hkh6tj86zaflK+3QwI4QIANjuTz9fOSB+5C
p4hwZ+oZ0hCwMqx9ipeeoOpRPXVRSfn+ZTx0tFlY2B3JNnmGMOQaRmDwLkXSvLvWkdrjYDGMkjSo
JR7QhrTJFrB+/AS/SQpBpKgwntwwPBxSbMAYLxN8i7RR/ExMf4bMTbjA3jos3kGBtsJgGRmV87fT
9fOenu6klDRXwybnkLQX1uIjVRIfn8uGlOHtKwtRhfwSKX0csyHSs3gCCYJn195Pmamqxp5jmFlo
fNFa6otO2yAIdZTJHRAH5muHJKQxdZhjcCZBfIIYGo7OZQds2BbP0aJTDYqICeFXcqCpXaA8tuHp
IoiHHFYk0xuA0GwDLJV07P5w2KRg2VArWI3fUYQEJhzd9dM6cBWO1dfx5cW3k3zrePFSftFPbjwa
DEVfEQJWsFH5MARkIQeCxF9/Zh3KjdwW0NjiPMoS69TwFDwmCvldAtlZP3MA73jY5s70Od+Jto1q
vOkNNV1LO22OhuAIAkNuUvtVjR/vWKxYwWumBFA5Mjg9AUe47rwXEly5bf6p8VHqMbCj8DN8sxLi
DQLbTcejFkjjwhtGouDw7ZEbVVhjM6e9t75bBNWG7GckXrcEixXHweLCdcH8oDmygetX0CBcHTbg
Muqdl64KpJzq4phfiekucpBbXgeCSxHYtlgKh0ypkH9+EQ9+rbEerYEVbbX1BpObnwyEEQJDQoj6
KW+4F1O5nfUjOoWJxnEYFMlBAGJ+FBmiBr5hwcYjy5BOiKe//EQllJqCiMPcr7/1tWS4byLhuHxX
DtpruwnHT0734fTy0mUZQ8hQsabBHGOwf7J+0wgeTX/ZvmLDaird3DZli+AQthQa29VmzcUGHcqA
rU5H/H67Xl4n0lFGVtqe82QxcAP33nmYDS6nSF8M5YVfO2whBTCzEzcsUrGkppaGJHv7EUu4mNyi
hwotQbj4hkAj+T0vGN4hvPs553L898/9+e/H2xWjEY4ZvVAEG8J5Qht8nvrNc3gm3kezXf9GSr7d
ptI23taxKke+1g0zvESOZjoUKQ5SKhwhKH1aAvRIEJieo8mP2+fx+frx0+8IextULKAKAG/xrpnd
pmO/Ytgk06RGKt7MhUF81r6vr7/DCKEGwaDUc/cQUWvAYfDdWWj2FE67dlPlXFmiFmcOxWJgL2z7
18lHwqH/b+s6KvaFVyFhsNluQLWZHQKqJWGtdV/ktRnVbktAWuDs1MH2lNzAx0bVWvXFEpUhdKZt
SwRNGLCHKmo1LoP1DWLPzqPR0MXRWFZekxuKeV1qQpV6v3HfjT5TtYxepYcU0+Xa1+oM6+EZSYx3
ROOILXCk6w9LviEcNXPcbX95JQpsGaBw/41eqFMMKLxLl/aFbGN6fASn1DpR1A0JjkUZ4peC7RvV
i6DLWjZulQ8MKf6v0YIomcw79XlRLXBB0fgrI1thPKftlkNPyA6fuVAAGpXAxnRaSCTR7qrF3niV
9fgKlBKo0mLpLEbYc/18XF+evB4nytc0RgjbwqdcdVLRm6qs+SCJQO50dyTokhKDuFYYny4zAyp4
YwJvfyMicbIOyQsUqaTbO3Q/5kpEbBVZhPn6FXe+MDThZVkUuiJgJoTf7depiYS/wLHk+kSUw2Ek
Ft6lU0VG1pmjOxNaiJdOLBdGquiYXhMbu/SCjvDt7/fr82kfgiXdkigG6urb1hdbXgfC5e2iOAxJ
ba3BxQqB+U1FrUZxtOUbMoL9KLHcoEKorrh+NeMAOlPWGVUMe3ug1f+BrI0SFhbZNR4bJ6r/UDlL
3/famIZb1NdWkGNT9SeXhrBSM7l86AZTSwKYMZUkBrQzMzsdly2ChaFmhvVwRqcAUAB/uvLpxlNi
BeywAi5yiWRnR1G0aZch8VwO8R27Pppt6xCwGNPIr7XcRVjYSZoTQaZcXNmFlumtnI5eybqk4zQb
RXB0SaxR7/Vq/ySTZGQ/mzu6+o/XSJw7dIGEN2/JqCP0X7BtIfofZsEnIM6wxUeZVMD+frwfL/cT
qf0HtaVaftaRCaF2ykot8DDWMXa8L7MhJpfbJTFGdZuqfzfkiKwGPO4VSSh4ub7vb799fmCNwr8Y
FlyVyfVdd7WtqXxrDJopEuelDc7U82S4H88v2Dwz5B7PWU6My6XeFmDv16oM2zpccJ5ciV6y1mHr
RpYr5WMQjheqjiYS7CEasj93kMBQS272KqOojAv3osqOKF0rSiNov9n127M259V1K5nNNWda/7q/
7y84w2eBl5QvWWBeRVGWkHMhmJMrTeY55wgyHYaUm/K/G8yx0LZTDBAT7b38m6QzeHMaSmDjWWex
WPk0kqjHhoyq8neTTvrzXzmD12RQJWjD6bjgHJdESXLQvUQu1bQz0bQXhyJK6bXAK0yPj/1tlD+i
i1CjWRvtOFi6O+JQ9mvBGZJAQ2etrZdWVEsVh6zpROhx/aVQYY+9pV41T1TTcdbPEMOlFGsF3qt3
X6HTotTQCn9UT3Dij9MrT557ime4wgucIxrNL+ai73mzsXH18jb6vFS6zefuiZ9OI3LD1puPploo
cFoO9bem9Wwp/GE+f1zM7V5fN+bjYQDXnT518NRa6frCVt8q/C3L39bPnKdPDf5U9D5l+FNZfbq6
Jgk/nR6J858O+F16yFy2x1wa37HrkRkzFxtoWlmHb5dXn3L4njlUJK2eksVjwFAXqPnHVRz5IdGL
6gTmd80hBCVzc3x81aG6GbBIC0D1P+Rnd6AKtUiFTm9HYy4bBGDvgkcxzZszWoof1nDTOs2wxmyG
aaXynhePlNfPXUOt7+hdW3zFsrhiNgd5yhfCsTqwWR0sXiefflfi3zX174rmkaFQK9GaHrd+qRrT
rFnaX4oFvi6Nr2vxTDb8cdNhcEItWF1RfS3QAn/rOmZD40MLUV/Y6j13hZmMqY61wlIlOlJFgBnL
EXsWb8BDg1Pwtm7JhcS3OyCDU77hLrHNaDWol9SyWKpYR+liEKQKNG4Y8/Ll/yaBySO2z2llNGBU
ozWCgSX6xUfgsocw8LaN6Sgzg2GC5LVsrDmNYFPNWgWZ1ccYFxWJnqKKYclrBD5p1RqvNRkmueC0
GiUcJcsQuvhDfvAKUq1gFdOSzwHbHt27aoFtnuugZ41/lpsOQMBaUFpkLWsYKLGL00ym/+7j43x8
3DM0wjDS1eUlBnAK5nPhaLVGeMWObVCo+JcXvRwrFGuxRpK1wWRNlEIoJN2x8w77aaqwQHlm95ri
WDk069+DfPlEZ3/3zfRrpZgw0iiCsAvFNMkYlm3XERQiFuAE0sQTSsFCxiz6NopJN46gmOz5LZhJ
B97BVw57uGpAmrRwerB4Sd0xmwROcqoKCazpjcEKZ/1oAmYS2TE8GksWl4C/asHCzC2QV1/qI4JN
msn+kt4YW7pOMINjDnO8A6UJNAwDAeWJiXgq0kQTl2C/g0OJ/sPpNnLJ9bZBDyuESWvziWfiLeti
VyIyYHbTEgVG/+kvG0yIQMxSkh4LN2cA4U1+DAaHQy+iobHddMhFzsJN+LiK0cJtMbWl7FgAjf1U
rjYpBqyUmuUpJbHxkYca0IrVtwIbeud6bh8GtFogQ13cFP68HBaZH/Qo3SbMJMJBg1uJ5YDF0tJ6
hWOaWUSzEtnhm+YWJVqmq8YqjaHQaH1snOkaWEcbSXzuwdFC7fB9KYfc84nc2G7ZgfabBiyVuheF
1hgZ8YGGJw67a8r0Ug6YUqwrkJhSupfqIOKKZuiFvIhcReEWBxdvhV6JOIKxfX1P7FtWwdg1IHIY
tSv4y7U04dkPzZE1Fc2wNGlbhwltgU6+bcAlAhjngmr4x2XXPyN+WbXGuqzjfLjyo2wXEJV/+of8
fDr8eVNbnUaGHTt55bQpaLLw0ZsT40qLhVWRUMBlmVQCxiUM4pISx2ERYUPPacDS6Wwvdo9jm5zT
GtRgDSo6fvyApVpDqe4HoK2pZLJhHTFvDOiCa2WCa1oGgwKqBawg6jcMsuw1BMV4X9gOn1jskStW
hZzW32rMJ6LjXWocZOOaxgYKsxjrsJjEG2a8Z6OxK23YNqODS8wG1Sk5wRvXvBO+Jmy8tZ3kocTc
wRjSIiVvY3O1rI1de2b4twWKABeGkkhSDK0BxCW18S9r1qG2xjCQu01AH1cRDgKZydJoYJIz17eU
BKqTogMwiESJEZ0EDWGhrer48AQ4sKIDnyW2HEPPcgisdwfWyXFjJ0WsYnr+2+M3X34e/vvT5fT4
4zdaobiWK3w43T/81NX4Mc4ONSfv1B8TVaDNCqP6a+zC21avWz4wdoJd6/m/WHva3XHr9ZLyU0wp
07Lv1Vk5seU6rCUbhMIf21ZN6iSI4ePf7+/kqUUdqpELUmM11BxHWB8a+wm2lffLv4pJ3XxjpqYW
3nJzBEf+VaJeTnR4AweJTXOEcfkt3q+xJJXwjzbfAquphJWGVd2P8S9b2dU42OluTmAqSYUFwbQ6
L8NHf9v7CUM9MZA9XccJnuTdM2PfwLZa8upfxtu2q/HI6fnX5+v7L3ufoPzlX49P//X08H/7/fUS
Rm7+wbd2XD+8htiNFsYMy5V343l8H8z011HHsH/74qp2+6r7y+k9thiET347/ny57d+Pu/3n4/p8
vt6Pu6fb/rndAzNeW+Q45qshMrvOa+7eTo/d43gf/3LbX+7+UV60kMgLhehHFLfz9fLqH3TdPU7v
p8vr7uXzgosixhVi2D2uojITh87x3UjAj9D8u8sb7O4rOmBhxRBr0Glnj9vp9fV4Gxe9+AbH8U/3
59uI4Hb3MLEJLTf1uzqZzsnTamkbu8u4Kf/C6/l487Mm8DpyXkd7BaldFJvxP3vsb49deCAp7Qku
kjJRTqZmJiEjJnw9jgc6Pe9ebtf33eMKLz/TRoQuwPDxx3n/czdu4nHcxa187D/vxElSJjJsIsyq
ShTOl3QIaUX/p9sxvMy7ezmNlH5HvfIyAs2JEULXG+fJd34/3e+BleizDbw+20JadvfRWwhvDe9i
mw88Xwykxp1kxzSx5CRud8h+hVhw7+6Nf41Cdv+8+563zMGZqzHT8ExqGx/jrWgSOgDvO9+PN28N
EsjMO/M1jolzwsV8Xu7H8dpv14/jzXeKoSUiTJ2lNcnCfLfTbcPP8w5UfBKVyz7rvO1vh+/723F3
/dg/n0CzvYyXlVb3Gf7BdFQJvMHMSGHeq0xicvj8OJ+evZSMlIYk0vn+w3u7gplMpPHWx5Mc7kFZ
796Op9e3B1zI5oV0mIphWuKQ2QluachS773RdJyn0+vudn2QpJBZO4eIb7zvp+vhZxSi/Xn3fNvf
3+D3Bb/k0P5MyEMWp92F4FydJdILp2xR1EtW0GFwkXyW0GIsUrz+8HP86VF13h8/z8f723EUhPN1
f0BTfvxKOrNxYGnjEvS63u+7l/0oCN+PT7+NlvR9f/9t93T9sRtZ7hXvLDOuP6leisTJ9xZf9ueR
bcADJzI+RLI2x5RcecM1yRaUKVVIrM85LFZ93p/PT/vn37y593bs/QPKfl4oBKLEimZP19thtICB
VLv79fOGQYwu7JjadNgFHLn3T54v2bucTlbCN6Ouvs4cVK12Bdor3EnBuH6RKET3j9sWfMV5Yazt
PNmquMERDnnIMVL+4FEI5jC7MtAyEuU8oqmoy/rK1dnqMKnd9fPycTu+nH6UGgGeSOYTBaK65RIx
6rN7D//gp0Hspv8JrykylbwdEQmIZv10urx4V/K4G//vFvE3PGOBRIZ5mBXBnXBbpQnwcczxr7qJ
Rkj1qQr94nuGdCLZNMhjdziOCBDDvYw5Vex7ls5uB3x9SSvNkwqTMSB088fcBT0BTU4+bHgBhVsO
YfbuMv5LCugObfQVbN4uHHY0gl4M+6BiqC2pWCCnyY4JqPIKU5r+utLG499upx+7+V7vo3o+juAu
/ntoOVytoOLdykP4TzNYHdWcH98BJ794NRcW8uYsrhkVVXAs9o9goYNodnw4zwLzQpEjEphP58t7
8gM8OrT3TuW8mo8QWVlKUF7rdMk7RCuxeSVtfTLacDVxVxiZErje80P3hCKTyt+s8FwKmB5yui5w
qmerhca6fj521xdaWpxqGdJkW/wD4gQM4inR6hL6SKZldKfH/2h/OV4/78mf7PrsnGfnOCA8vbRS
I0i4fY7M7G8cK95a7xpoW8Ja2BiofK5/DF3ApUsU1IBT+8NsvU4enF0OZ3x3+ep8KtUsIzlZ3A6j
lrtdPWT3c9DxgjyrGOEdH5E8hRnsrEBU92JttmDBl1ge+PvxPHpmo6bav+xvEHnIEnqI4FOL5XET
evRztl/O1+9Qjdb7cXRoCA93k3n0/AytBsT/5+PLA7N+hh4FPiy4tqsIphFxTlZhneQufynewHK8
QYV89XIzfbw7TZb0a/iAq+PA1O380Pfd4fNGbskUUJ/FaowUF8rSnFw4qBa+7C10IUsRRB2vzy7B
IqVenG7FqQqgOeHLXRiUHtw07wG+Elo8b8f4+JNRdcizp8glq/knbilEAWn/nrPMvOHpEW5RQBmi
jyLaZuf0ehGSPG0whZxl++ExcvirnYLwT0WQJIY8jv9XgEZQsxaRMp09rsf1owhEexMdI3pYtLOC
iMW7rr7s3f14Du0XGbKNwvXsZxfjaIHVdXjSldDIbw9yydBySzLj+aFq+3FLI7dQgWy7WCbFWQ8H
72y9nUYbnciCl8gQ3fh8jklkKS69F4FW5XUHmWa256CP0v1x3D8IQRgE7bj5+YfPt+Px4uNuo/0L
f4ZGK2sdD/6NnegUZmG2tDJUqYV4+wuYHN74obcQPnSFpTvr9KLkfK2PoQbO7uzgS14HzZehG98L
GXfRiXQVS82zYLy5PH2cCyB/35o9GmydPTI5N3OKgOpS5o4kNuUllA14fBmmSbAsplchY/NqP0ZB
TBZU2oZYgqhtl7bQNfbI53ai4paySE2Yudq4G3BxpiMV3j75GFAnFpxp49NQicBlgCVMAyWD605s
jazszyFm+ujmJAq/PCDpWkHPvPkPQN/CtfJg2q5yJWQWyhQwwasSkawQBOMwcmBNK+mXN7JMKHQZ
wsgiYBO8T7nKI3YsI8vyxpkLbeED7yrwrVpBtiKuv//rX//rdLK/eFcyxJLgAEs5efshbBZeZNKG
6XasEeveApeEifJ8Rf2Jw/pkLwLJAZaoJbLu8qQp3LEwZT1J0Gb/VYgWUlxkI8Pg7346snDFeJ2O
pPLEpohWeYdVpjTO6f1j1IRQBkSlRtO+p4ys/2/fC/vTu1We44Kh6Eha1rYWl+tj9+wfKzzvn7CF
FnlzccCbiUcK3mefL3SWb1/OM0U7w4lCsPPDJ1Se989vRPK9yDP7PLEYlnmC7JZ8Laggihi219ki
cW2KMfm87Gcfw/AM+ELXTcfQC8zAOXkQR/Glg2bdhXWWXfsYJlHbq/Ld/efleVMwmDNXQDIRQk60
cod8vQh5aSp1+AVdI3TtlTGa3hzTO1+c8RlEk0JA27cyDEWcixkZ/2ZIAcbbyZ4u1y6Unw1LLfoP
OOCmkGATMhAmhWOjWqKRkc3IKNe05ZjUJgERthWzXMfesYTlBVLMXbXNpncP348jjbB+zLzj5nbm
ArKGmNjXtIg0LTC19O3Dn859994W+XYWZgciRwQypWsB0W13pYqSN7ksebtejqQTrzIIcN4Cu2TK
vp8Oj7fdZzDDx3cCkLjCdM2hjSKFNNFgyuzf+6l9kSU0Dtw0vJ1iiR7i4fO2LWVWBjrikzUxR/J8
v/OYnDr+ePya8WH4d9/8n8fN/zo6E6/tte0cEvS6xadfUgFHWM8/yUCEJO0c1B6GyIwJX4aPaQRm
5+jJMFQtHd+vt8Ovdx+vBd6bnbPK4VdzdiP8KnnUBP/Dd2LuUg3f+WcegEqws20J+lfPsfLz8THK
fm+zyfnx3waOY3OhwK9E1ZOdo1vTbr1BC9rZj65++NjNr15Hxy/jSr9eX371C7d5XswBV6Eqt3eE
Zd/2+BuVv8n2b/S1T3/3OYLzr3lDcAkzLyGypEVPeX5sHn5s88fD7LPNvL3h14d6AV2mKQ/933fz
56FkbEiSd96PSP/FF2+N8hG+86GfX7G+Y0lczDC45I5NRSPTd79+XCOogAsM8wKF8i8WwDEnltg4
fh2amYbl1/AVCJb0RPppMdsyX2+OKiZYkrj4kZJzEuX72wgsgtzgX+M1pRLzP1/P19uvI+L61Svk
15t/BzN8nf/x1xjbhNcp5uv0sUidKgDz5+QViFn5xLfZ5jssFsBXIGZtK6bp4nb59cjLo3sCX4AQ
szIKJ/Cr6eUSgUjw66G1AfKTlFMJGiA39+cfhD9la0qlO3y6/lhaqpfzdf+YJXFUxr/ejzeUWFOz
D+trBgo9FvOev8IUo5pLUkOxAZ+Z+H1/ex1/8+n6eFzff416Cf60zSuo2eKFA8BPctVFUTafdht/
FJaRmFz+oedamfTp4/rxawA7nS2bvEjRw1hQa9Mq2rQOnlbBWk/NUfPw+2p5/lswXJuOkUtOQo3F
sF6mcwJXETOFWZ7Px/3tV/oC8y8XJjz9MhYdNVdnxuKWrCxwIYqawV4orQnNEeWvdU4oavbWKXt5
8LHwSCP06ZAvyTtQZlgzabwluO1M3SK3Mv12YDN68wOrxCRlkjOvQ77IMl3MVq5kGl5sIV5Zl097
3qQPnK2PXZPci2jn1EWlmMjavOCt3p3zllhEjRqJAE9f1JYNS+VCMou2LTU6HbpDsIJP3Oyep+si
rtnJWouocrckZxpb678hyz38ZKh+bMHMxC4HWWvJ6nQdy1KoJzHj1FLB9hSkqFhJaCTCnXXUUBUv
Tqml59PhV1i+oGZ/PNDMLi9otlVw81nrhcd/dNtIQY4sPh9m65ToTvKyy/ITS1LXOrMnwgXd2dIy
FvYN7r1J74JwnWtXNcvp8ugb9K5jlTDPBaaTQPY+V9Xpp6qVSD/4kSYgySa9q2xlWROOrVU3/HXT
MlXkHQ15wzK0Nq34q0cmUd3SYr8UZnWZPXycypmVZHQMhKrRi1ryB1RIQ20dS8aC3yzkMD3Sd6Qk
0KrWVZaavScBC5OSCog/7sfPwzX89/swIQU5KkN2ygxjnt7j34bEyGGRhW8SS5VgyCCNgJP16LuQ
C4wxo93983a7vqIUi5jgWFhCxVHvWrnlMvBjMX8cnGdTfIjIKCbblT+rQ8G/LigBV1F5lWQBY5Dp
/rw/xOcAYyZgT7i4i4CR+LdiiV8xehYzAwbvmMdQXfRW76fn9ChhqGyFHjZLDlsMPuhcaZJe2rzD
r3KARMohJ6W9k/yBdCFLMCxFZYaZW0J86df9feY29LnJISHpdank0ySOt9GHfviUK/xlnUM6coZi
nkDHH4/P/bnD6Sw54unHVY7sHbZsPIh9/euxouCU5tTkAsBfw79ECw28XkjnkAb9oStIZ2fsXdXi
hqYp3z5A7yAfpTAoIThCXPyQiVeMPPy8nfHvZFYp6lfOx8vrqCPpHWbmnMrt012HAOrIJDEQEwvg
/PuyH+P5n7zYExWzLNm1REMX09ExSn1Z5SPCv/u2v532WPScrU+YSoX8l9+xEWHJrUgfFm6Q//Bl
/346wxClU4X8zD6g/xB+kW/Bk3Uo9khGf10OhgazIIvvTn/Hn2Up9WpFTw+tPt9+fjyieYt/3N32
l8P1fao9wf0hfG6nZ1Fj+Ojsv+U1d6/P8LvUGeG/85RLh/9+vf12vN3Lzbw+7+K/xVuQ81LCBFVv
y03Up+mtFauoZMyJe9YZ/yYNXi9Qp7uqnldV8XEcZYk1z6f3UQS7i6r52IbxCDq4SHYqdkv/9fNp
NPHh45GM7VrNYWotEyHLnntowOUNU3ZSyCmaKNN/D4pEhqlkJf6CFLHtcZ7XtD+fr9+PB1+WThx5
mBqyQ8JVD+Hpr/FvMqE0gpKYhCxzTlGVnqm290XcTyMH+lepfWHFLtjT9oJ8GnTBla1c57f3/fPu
+COULYxrwK9V8XUGsPe3/U6D8V3+qxhJDl8VibXbfT/9ZJhkMs0GwHvX+dfDVC9pp26v77f9x3/1
Z387Pv+2+7yjvETYzZDPwGflNO7mPm7o47fnO99947/qeVOBqKGj+HwMIwJCD0soXg37vyB8Ffje
5S3rOIRpPrzPxP44Hg5P+Gs2f+3ZPqVw/LfX/fFj93HenwKC2UXDiNeR+chZH/trk2BCdCCUydeW
o/mBVSKd9+fX6wi83t4xvxQ/nHHXaL/9YI7wfvphF2+PqJYJe8l0LCYM/u/vv+1SsY1vW4kihdlH
1Mybqt1ur2ESnG8E80XDKCEWhGeohUeVGtKzyUwRaFj4NGskrOLxt021MkmQj5ew3u5wjH+PvexE
kGHSDesLHhllXLRg6bQm5pN848EbKW7843p//PfjnZQsZatdTF0i6WB8EMvD4fNkvgm6dD7Ppn2Y
TI0i+by/3fY/d0+fLy+jW/rtdPweWjuOeBMqS18RuvHH+e17uO0RTZ4+Ps+4biTwjGkp3Er+Q7VZ
VIW+ZHT3cTt9Qx5zYORM5yLXPNE5ydP4C3hPvJKmlEgIzLKBvLLQaXZOEgUuKXUmpquuZVl2KYIp
kbfiE1C6RdwuNYf6OHYp1MGc3EmJzpolHg6YlPvp9bIblczpBVPHihbzBuomVTdqPbyThc42YCcb
lrIFk7hZ5Sb2DyyWOG1P6FyZWbWY4uMtD8c/LFvcWcCFdKMkk2lTa0Rbm86t+zcZcoQ5Anq2O2kv
W+xOJmQ5T2ck5AbEJQtdJmcCzufYrIZMYfxccBv5fBUCPAQSLiP/vpsfUAwfCQI5qFrCWVkWS/Gc
ZrUF4ZVm6+u1Js75Cjh0hc7P9RYzuWf9FvXT47Z/jiqbukKT71972KqtrI41kn+7YVS1hQaGfjN7
Z/G0IbSwFDVSxHQLky0va0kqfHkFh+a8QVB8hd7czQ0SWAe6eiHXMo8v+9P580bshlV8zzc4CZjK
2cKEx/u04F21vLu/j14nuaxllSMzdXBnC07653yqEUrQxOTZDwCKYqY0FcFlzd6bSCRsreZ08/Lx
lQ+14ItqBxsUj3A11qsJMbUpdtwsMVQOhr8Q5Pdjh19kh5/nNV7290cs/ztfn3+Lnv/TfbzrUaud
zodiikUswL7Hzr7b8RxbzMff930BYF6CD66nl0NCeCr4alNa+xZdkFBF4MOnqcHo+Xo+7z9C7TlZ
32jSc8Vh4VgVlRpWfAHzPLsjngPvzuVFiqS5J0ZouEqNlfHUH/ubd+h8Bujp+sPfIfQt/dpRP4e1
zRzSjkuHk6dG16mONlH85eqDQmHuz6jd8OJ6XpyXKe/Dz2nd+EudLbpqFbFtj3g5U1Az1CEkkb3f
j6OgfH87Xnbn/U+fDbhdR+qeUlebZ4EjcUnDvGzuaYmbTFcS9hrSDrF3obNNkU+dJ0nGBf3UnMT6
NOUy9xVVS3ENH4ueunzoITJhJTWvlIcox4VSL1jcz+HoZ47u4t1ef/T2J0vmGzbd60hKH3xK/5vf
9B2vX4h1nO9TFm3sXk7pUm5xlJ+XSSphaMzQkObY+OHRVeKa4+3mB1xcd/vH43Z6+nxgjTc/n+ZS
BdKyUDjG2l9v+8PJs1D+H3w87jeiCFwPphLseHAGRpz7Dwq5KJ79uF+97g9Ztl1KGfrms8f1hpUe
L1bKAzvmTpHxJoMK6JQWh5UKzaeKcazh+jxR/MShj/PpsWExPRQSlQtUY/4yDFTKxI3nvb6k2Zx5
2gPeaRaQYEOXF1nMLUgD+Y7lpv9KZIa0y2xcvETzdjp8nIrocYtJwsiWp4/Tj+N512s6MCzTR/jw
p7A2ZbYh9+3CJjDFdYMHV3zgv97EDEPLDpTLxZU28pbIylHPmyuOONFrh0XG8Urns+USPRm1BXub
GfVvmKEbrisrzyKj2bqs0WM9YN2uh4K9YnnCsDzI8/n0EUz9LgweO/zER2KV7Cfv9/qx//fPYxoy
5odq+dj9lktipcYtxgl46xWrB2LeepfqILB51rUMLY/oBRC8PBFmzWnypv3X4MFHlkZUFayWCxDw
dk2lqyZcVv+gwz9oGj+4OKzChy0VwZxknyhdMpbHEASmDydRLeW1OMmAT1Iwp210pYTPJf48S6ia
PdnF1xwTYqCVeqAj3ru0tR1UrV83eO+q4rkmCzD8466me/NzgX+c1caSzUVDo+iGZvhnDxrxtWeW
90hkehKg/n2Bf1+zCnA2BQ5zsBIVlmlLO6a8XPCsaO0ds40aWmC53jtWNSqrmrKZpN47Fn1pmn5D
vXfMNsrVv946usffLWSDL7OQwjhpsSUKDHODLNzoPIVlsSuf1vKxjn+ZC8p2uNg3bKvQc4PNM0AW
28J6XcpSu7QkjGHVJDNRZA73Lj7HTCaGFVxfGO00V96T5nD99IHaXqmatgXvhVZmxjAUCK5TfEsm
h2Dw0lWgIcVavX9dQq7bCBReQywf8wLnpXRNjcoBDD+dHu/7jwoAj67d6fJFHFwwW3xyxpS/sSTw
pBODPkwTqC/H4+G+ex+dJD+J/fl0J35PD1nk4gvx3EGiY/IKGoqGaR8h+LC/Hfe0X66tog1XxsZx
jAXFUk4V1JQ5zlqslpthd6Pzvz9jF3VoR9MIPsJsJCrbngJ+kI++wEB6KLYZZwv1HSmBV1OVEyWx
YxkEcqEUSa9VuwIktHp+dz70OqL1UtDPV0LIZQv9x1bt8N/PYz9j+UGaULkrnDis8GoIHtXl5fqX
sMLvrzc/CO/3o5zgBexaA8U2hw0mTMhS60BETHSlh1VchWZXuGSix4b9iNp1dNl1bNMYr6Rqt5rX
TyVsXMSsDlYNmCkiWrsYaMXqV7eCls2VNoyfCSvmzYWOYAP89N7LQoHDi5BiLqD798/T7bd7nKY0
xz6LnWItVLvLa+nOmrZnu52uPaVU5/btdSR4eJcHb8LSrsIuue/eCn0UkSaCSoUGjG9CRQ14fbo/
f9584KewbSFwHCflxPwNvsgyTeOpL3DUZhJOrFhdFqHQ/6FzdiJH1aKNnwzK+C98Mms0N1hd146L
ynLpudXvjjifqhM9qnc6fDbZtOBk4JSON+mB14BzxaoJawVjnNqH8P5Y7VnLDbHYLVHYVsBxpvvu
7fT6dg6x/tM8fhWfV7acfwQQkuL+GtDk7fTEPOb49fTihXdDbLvMdPD44Fc1Et+Pik2v/vbuxjDX
5J3X3090/P31AwcA3dAKHOTJzX19pIuEnwrWSRhgJ7cZAO1MK/If0PAimoUNXHFXISg2Pf7h8X4z
+I6ZVBbKkYUp/8vjpWhm4v2nT8JjW7v71Xyz9M2ovu/FY1W7OHRxfswMiEHIULk5Q5X1GVrwcPRI
fuIwARdNWWe/aJhvaMhVp2mrU7UyTqelNKV2Fevi4/tBpXiXKaWr3Wxu5BdOjzcpMkXzWwr0JvFi
rNgj6+/xhEfUhuVkXq58bnWe0xl8DN/MNCWQd8d3omsukNHWl5J6YLLXFys6shN4OL7sxwV2p2fC
ySpiSkKFv6TKirxONCde943I5ZnQN7yl6YuFRvP/On6D8U5RoRFs42orvuzqI/DwM+k6FhUTKpYm
qeVSL9dzeDWQJE4Rx/G5AKFWZ/JtNKcHoTTLAoScMSlW6Hwua7eCLT/vhw6KkorgCax24LuTnrz6
3bCW7NzxvNYBTBQIq4gqHy1Wq5z3T6Pln3EGXijba81mBVgs1OETzQB0yCt8PnBitijnECbkUoeO
8IySfj+N3s3nPeSuw/+2PxOhmgXAc8v1Pf/GiqUX/4TG8cfjeCHDZLqs2wkFrnx1h9TVqaahnILG
sWP9GustTh/7OG8uFuqMYPFw/HZ67sST/YmdsaGd3PvDeohNnFHbPT+PCuT0dBox98+o8G6n/W70
hm4EFivaeQcf8NVyWOmDDpzLjbvFxJTxoLvwbNP+cb2lrt3nz3vyv3y90zzzEFfryapYLymqWBF8
8zVt1/Pn+2X3dtwf0OjcuamOTZWUslxltHvhvdtpObiGXJUNTmvcg9dA2Kb8Za7Qv6RXQk+vn/5J
q9Gh/w0tkJ4SDAvUs0ZfTsdzaJrc/wgZUrSCFjUB0nCq68fn6F98Ph7jXsL3UbWgVaRo7SPSfkfO
cuDzy6+x9nPWs7G3zgczLtfd6fVy9X57b6k0yS7sg83XORdCeaAeX3H1twp9fT69njs3bfK8pfe9
r+uNX4d14LCLuRw6Hi2Xtn7ezviJprnXsnWrIyue8VXmftVgr9xq08GFHT2od7hfm5fQ81WE+re3
aPdJZpJFu3d+2dL7XGE8xXR9EcVh+z33f+Xe28nbCa/EnYrS1cPpG9xN5quQlUylG0cfAooppCAk
8POCB3L3xyjW5CWoQhLkXLwwsnCMM3lhTjoJynRxBzaX9nt1/eFR4JF6d5tPL+6Fz3OcJPxurGp8
Dx1VMJvD5/cRpsYAqVeMFEIXRNPLPN4rbEPkMGp4wyOUK4bqYLiDQo7zuO8JBz/tIfGkrMk/Dcq7
3/3I5w73sopy0wQ33yl7+7iesEtla16dpoKhavX5DbapQSkNX9w/Pd1GO0+SNW9ROb9JLVIL6+ny
8fmI77P6+eFQ1w6VghRl4MtHFwmukFmXFa1Uvqw+Gu+X080/guptV0iG9BzRobqp6YWQ0UuJZgdu
o/ndyQ/WHkEDMRHB1rY2stR5fzl4nt7BocR8fmWK82p2ztt+lKLrp/e4v8WS9/vjeCE2oGrBZDXp
46mhRMi8fZUnOKYnZ59SPiKomAj14FmG+iwT98RnK2iwwWrFlOopr6+vPi9CXpqWyKKNlLuFJzMJ
F17zGmCliMX+cLp2fleqestsxiUeBQR9GBQrCW64qeR76mkqEXVcJcHGVCYOl6tM7Eo/Xy/nn0Qo
fG7QzitMLxyNtsynymha8gUvF9YlOo+p9D3xA6UQFvw8TM96jF7ax/m6P3TuhjcxYwwQdZiYF7DX
zdMU6xt5IxR2TcAElDxMCalmYhrCNEBguetRz316XBVN2xFiCqFbSmiCRf7X8ZkL1a/ncWFz2CBA
Avhx7SZMwwEqesU31oPDQFfT8Ok9Sc5zJfTMRFEGOq0HLEpBHqQ0+V0ZYszvTdSAO/ZLpIaji893
4tsS00V7Ug+5ALxY9MMbXO9kXRCfi0lgwyKhtmV+P8S3VfrulZii/na6n8IEgSlJloda+Jel4csB
rBgV7yGIlmbtboRzl8GP0UmEI/aabymsaTmyjK8V6hJR1IPZRZoM9X48nPbzsLsREy+CF8/n6/0Y
38KKczROzw+PvEcWm/74bTTb15SQDzFiqjF0inAMYRqpCvNzfcVcmlN1ff9l//ExAvN/PT7919PD
/+33vmFk1AJ/GA30+foRZMzHYMRy7d24uH+YbvqrD338W3r5RPyS3j5hjknGd8+K8923kZS318uO
sd0T4nBVVMiX9zCuo3fPWvNh93Q7jJexG1eFgUzB03QoV2X8H0wxzuTueH/e+xFTzOCNSM1bwbAH
01z4AwmZXpAL3jZ1JFl09RRv0T64ZYaJ3dMhNOm8nEf+/L4TYgeTUMqKVoH5YzzTSDbfMeCLf3yY
f/wnvJ1UJewLLOaX2B7cjMR41kbswgsQu/tHONNuD6OzMpXX+3Vy9Vq+KL07hZuiSCPSE2PS1Sca
SSziu1aj3HFBLGDzYYrG/bwLF9nl4bexx+wi8zZy+Ypnl3Eblu9evh/m2oSRti9wlF+edGcY89fl
/2aI+9Yc37cucs1lT1bjvgkSyVQQH0iU0/aeRMqTiFk/rOfiJUrgk3FjmiRqHkpqgonLkpec7msv
xBmxkGlVmz84Y25UN2p3voSCnnHNA8HFImWBPHXyY78PPt68l3It1e5pdJ8/RmUxUotYSCm1/VyK
IlDRgGWr65LhusSIc70WvQUpx0zNp5FydV51PNaoAoXMj3vc4+QD/274CGWv36c2TcZ4wDKN94+k
zs818SHUjrl1OtxHDe+n53EhB9YRPD9SVRS+75/u1/NnGloxd5LGuD6LFeeNxdLTh/OrVXNCb2qn
Z7F7oLUPVjzoFIogq7HX8eZO2TsfjY9FSxnXJk3yc/Yf8Tni8LfRV8DnUSY9dscr5ZiqH73ZDq/N
Xgn6qunFTF4ZsakLvSBuHAM9LjWgc4mCujk2RV4VR/SeRlyGxdTsFcfP5lVmYseK+tb57DCfr7BB
HrTFV8MqLlRwFTOvIqK/LIpnsBpEQlcmnavpLQkizauh06W55IFIWeUuNzXRWqPTMTbvaVjf23o7
iJm4zEKfVWX7bO/7H3lBCRYc8np25s3r5yO+0h2qaLZxuVSZ6kXrz5rLJxUChVcVfMmXJXhrLYCl
xbBCoRRV7/h4XMLjFUxV9nriO8SCp0R1h6ZkKUotQI43eXNKBjgnpe1sT0IVXtqVLD/BTDU2hVhe
Fpyay+8bipNDlcCzSsgVVHEfTU3H4VZYxeRxK3MiZttmtCz0U8CrnLK2ElpbUatw1bUGAloD1tAF
UF8iyZVDPlmu/ZzmxMSASijWD1sc//w4BZM57BEDDflJR93Rv+nqhIJGamjopxJOQDXCitcsqwfV
IQPBtaQwDQYKvUVoMETsiiteqCyqrhei1MNUyXmY6clpfSiRGIj0RFCkSJi9ZUhbDUGRzbq+LsQk
uBjCPlFxi8sU8kz3BTZWunFHxI6gsRYy0ykDmmxWR/3lTSuBiExGfCoPDz/8vOzfR8J6kJ/qRUb1
iaRIMtXm3w3GHtF6GCrEp7bARw0ls9I+U2QW2hss4qrYlc3j+2i8hkTVuQqvbToiQzvjujJhlPRi
46NUrfALDr/vxsPD74APsyZx2oKGV1U8lZvR50vIaEePKA3gwZwjeaFNN4o8JIkolHrx4ljIc6fX
gqfhSGFIGGFOlVNLsywIYYOyJttIMd0SoeSlKr3wEGnWW8UUgnzGa4mIgn+8vhBKR7KhzS/IV4EL
DRl2FQ+VdcIU8gzDFOW+QnWC3SLgiBNdHa2Qqjxk06rDg8YoWDjoHISlwx5Qh5XE17Mv3YSY2Gyo
bDaECIXkbO0abHddpc3ArqgkjhKfvs6jxxnHMZDs4FcFpADHQB2iJMYxk9xXYBxa6KGpU6FmxEbM
qPreetgKok03tK014Uob6GuKQqcVa6GbEzioUoSe8sM7hJGGTqGyJbpKfUWTEQMDKMKd23ZQb4N/
8QT9ixrpdeID2AyZwhWLr84wUmNKqDFd5ahKchUFVxlaMaLC1YEHYUWgo1Qcbf0DQzgqH0OY8BfR
QRwWIg5TxxZZL/AClY8sArBN87FZ/3DD60C328iJ6gWtWKBNQ0Uo+rqaFwYkT3uaF8huWXh3i3Q+
cqixqNSg7doAEbCqw59V+DsNcz3GEZ9EPF4JXWg0E3IOvegZhxHQOiLANkQXJPRhXMWmXf0o4Uq6
znvgIH+PS4ViDe+TUNlwS6UDkTFJK3UBeYkVQd38BBsKBcLwibQVFwm2FSFD/VJoPJ4nP9NMDkEA
Z7XsiQ0+I2TPwlFaPbe9lhio9kQhxWXbLFR72HSb0nXLKTm0kIX60/FS223VnvoZ2nHeiBATKgH6
S4WLPY/DbfsrTy/PdE6V1ZBgHulYY++eayHKmIZcjIduO8sMOsuulfNrm3aogJUtTDujTPusVyCH
q1Zgv4whElF0W0BbFodcdNAbTFuboX1VRHwXeiZC1wGJyNvx0YDZxYXxWWZbkUeYr4In0kMbK6es
dWgL889/7MNAIQoCFEAudmJ083qQc2SZ9ygHsUP8BcW0xNt5ZnMnsCCwrIIAGfbeoIwVWV7BAvlZ
NyQFqe/Ewo1PBcbPWvFdWnH8Hm6mcG+qzRCwBMqq1jhFBHQaFBLHN5ZCQF2muKzxRFPOoJvFXCN+
0Az04SV4K3BQl4VQgiXKiJGjE24w2jjwFqpqHgQamDKUL77gywzQlxlsFXQUvRoFjmMFrHb+iIuC
zjATjbtGwBMnflurEFoQhpnFsLRbhnTyoa0YCnc2N7nF0C4OvquFf580Cq4Z6OYUbV2QIrr4BGah
i+R6kdBuuRnQxnBWilUvkQ2F2w2twh9oDgQsHCmALk8Zjw3+BXTEmGvZPeLWFKS120pr6Fgw3c72
d1wxLO3sS9E4WHYinGpnmJDrBGuthGyHqwm5h2vJQlXTSbgukOfSNessc4APRypZiQyL+EknMwAt
kLVNScEcCXcmNcGRqzuDfoEQS5RpaJSpIMq0svbmZcuBm0kERU2ZVmiIqnCANOJDq4YQHs3ALJN1
m4v/JkMEI3tF2cUqZv01U+LqMq0+coZc4PSyBlRSNVYwhFbk7QtJA+kqaE4UI5NMOGqFGIGui1p7
4DAQo/mXK7Zh8oLzmqnaRjNOmWQWmsxBbMvIdYnESzyRw5Z0thhap0GSkcf1QlBeVDNEUKZnIG2K
+EAofZjTMzgdAg2SKuKCLEwKTk+9xgOkuTtRjKNbQ8BjszhTLyiPQ6hStUKoLWACs55saIDAkr4w
G1xWSlUznUiBgFq2UNdutmiUPoOXVWjGKkTVx+1QKRUZ3ZwdaAcDIaVVUWrPglSojrGFysOKdUi4
VykCAzqGLQM6A2m7IZQs4sHZTkYfC+YoSpsxhAkyhnZDcB6XtcBVB6rBfVlXp/C3VhdhHFoUO3lV
LQ1JZFym71qohnIhYU205I2CeOxCQEXgbLvA9YuRLqHZlwCbhIbaskbh3UI7iz3UiKIVLcN0wcaZ
F66VyVOlCU0PtWNRHLvEVkQQF1eH2a9Uh1UwC9p8XenvdsqaCRyNGNoR77aWhSEjVQbOdfbZiAYG
XAHOgaHuVS7AGhpXw/8tZbIwGStE3fMnO9YEQj/La7kbOilPuCOz6ELslQjBWHxRMlJ3fcCgElRy
VreV0yItgCO+poNy1g4EBLO6rnDvFmNAQiv5BU8LWsyi40uXfm0vs4wrxFiDu1FQAgd9+VKCcfcn
XISZRm1YIuxHfnCJCNYYBUvogD2CytsMoN6lp0cOUI+YBqUpsAxRqbNLVNrtkoT8XRScZACIEA6U
2NLlyzCAyC9D/S2a+rttUAZoUIZlScjQC9vhFpeqpch2MtYYKBWAi0WXtBdqhcEfyTqh1i+1bPGi
z872sRNObxjZzgXUOcOoEu5k7lC30qdEUhc620Xiu6qA80K8IFBSVTjbzIdlaDlxFWyVxwc05AEx
kEMsUWQkdfHI61r5Qp5ittFB2m78hApclyUrOqf+ytAEVCFFGrPK3FUach7IdKcSN66I/OjwyqCG
MdsNTfJFJn7oRNkqtxKCN6ZaUIAKmEPXUmiqBLJZ4gm3JVoN820WgGULmrUzSn3DCdVTEZi0S8+w
TS2c9lwUafYycDDl4UqEWRzzmx9y9TyeJzz0vgvzT8mBEKUlL6zCBlWAdN5Qp1DFsMXr5Njr1Ft7
62YsDfNNWtShT7MxxAfRcFEjtx458VUQI22jySmGwuAGCtNZAc5mBQeuimON5kmQyYGRiyI5saUY
GlZ4cd0KCVI1ojhMWSxVRQqnxpxKpcD2XgOasUuzAiW17FeMGQXew6bwtoWE/alfa5eVYvhCzQ7c
zzKjPHTAKcS41XykemRHz92Bow2KFnqzZXgDx6UcojVlgzKX8KBCNiQNNfVDnGN1ewAPxszwbGVe
qaqibks/PFhR91S8zQpDLzB0YkW7R5esEYfGQ4GG1lZDNUzkyUKzVeUuy8lLpKXVumUqiLwi9r6G
dh91p0sXHc+ZVhIXo17c3132xBa500ZnFJGI04vKMNWLLMBqJ8mbhf0QbMFi7yJEFRLEgm1uR4MN
FU43QOVX24aFks0JNfCIMDpQdMe1A1dfKjXirNTni3ll1UoZAEJd94+MCENX6epSXNNhCdioI6z6
Ugc/rhcd9JcGJ2HwKOr6WdFbCFYaFMNCdF+TY97UpT8dXm3jvRgYzjraL/E57kYvG6zKwBzs18Y2
uHA088jctrcKAwW6VJmseOwV0whqKSVaAeN24BLaFlXO6BiKS4MqBd5ZoeGqeAq+NehaWNY2wH0F
DDVU0UaSM48IiGHlVCQOw9h+sTlMf4Q7sw3c2r5GyFeqDIS1+lKa3gL0m4X80ugF6IALx9pqM6G7
8FrpVB7lkR41SE/8I4Xf8Ihc1mnIzdMaYWKD1fIoeyfFpV/8K3n3bms9rys4+jVTOMxZcL+KdSad
LDD0+U0dRuwxGHRnrOlM4lpV8EL4aG0jdL9h9CO+x0KwR74x4XXkqp3jC46ksl9MeEHvph7qtj2j
C/OMg2hAWyLNhBurXbv4DfMFJJe1X5nQ1i3MGureNEm0TcHMtyyHKJd9453wIZyqZ8vGp3VtR5tb
kSQ53Sg17kdKMfMPJc4dYD8i9At5Pd05lQcTDA/pJFo9wCj2BfG2VFRHfDPxAbWf0OumeErFQPUn
mpEqwnmG1aJ1O95AVZo77Di3ol00jaA6Ludp56kriwI9XNohGxXLtU4iYJ4wX0TFuH6yqhApgjdU
fIsoyeMgegc1JEzk2eEf0ZAQ/hQxEy+5Rm3An/DueS2xopH1fhs9tr97a5VSX71J6EY1irMx2WDV
meXt+0SBADzKr96Q2tD+jaflsbJxsAfKIII1rjkZquni4ngeGkDbDjBD/iyHtYgVgfzLFUQGXSzl
l7UrTbGnzss5DeGZHDJOjhvM6Hrlr03nXHbyDEXKEBouXnIsr8LHPciHcy1Do10q7gNH1SVw6ous
Goy/FcMBqlgzuA5oMLlsjQCCjQRY4myd2O8NFoH2Qas2KGwHAHDvUZEhCq86KdYcn4AHScpG0/mG
mQUwrLF4vUDh1ACe6+7I6okkxOmlNIJ5NG/VmeBMDCw2kSUuKKLmG5u6FOON4G8H/uMxAYoYkbpO
v+OOxaGK3afS5cXgDzzatn6RQPQEgR/gLRX6wTewCM2g1wBxH2+F1/FuoJ7Quq00Cf8DTosWrlk6
XzSXQ7TBHKhx//pYCSHNl2LqsMVVFK3OG6vdcUOfqkVTkL4Z7sGQX5o5i6PEptng+qyV3D1+PHaH
43NwHBh+V6CIOwSJ7xezYLAPyltBCT+etOK+NmkFVjlL3Xlo5WuFjk42UD7qBIC16UK1p/ERtQh7
yNmg8AegDChqnH+1gAS61KIptc16BowAQTCsakzudyS3DHrHeOFCOtN6koio8cMV16ye7jlgoIHT
cqaq1RC9HCh0WrT7ajgaOmN2aM18ahlD7MOohjFsUgZXWNtW1pMIMMGqWqnBhF9KdaB9OdUcvIh1
Gg71lAWxRf8ldAlgN/CwqA3th/WgUyB4U+jbeh86XIrwFqEp5eBhLjzAHYYUzWLaC+Rg7NYw1xJM
PB8Vp3/ZF4sDIfqRqnU3yVNqILINbR4lPgzJ6Y7+wZsrmysb+dZ2tBFX04p2NW3rCiFo4KIaatXp
j9OQSmUFTip3IJ6NldSzsbJ6Jljkl1HV7nlEereP8+7pyQeYOk+j8vKB32H1vm94Wfc7/bIuyw8x
Fw80chEWMXJ3Pt0fu8fPj84TyixvZQ4AtikzGIIyKr/EPOclHqOFdeNmhI1v6XK2e4b7iNo0vqU7
zG8RVO8V30cxJR4sdrx+jXd6alizYffsH00+3MmnrdPE6PwQ77B6zvc0vedLP+CcHOP5bvTigm28
YF8iiSmSoODqgnV4TlroSNPvD/p6owwFopRP3vrXuj1V7Ejb91SQyollXH4ROL9sPRPGJcI8heeS
iYdzbaZw+SSw8PvZ3Z+vnlk5JkkyuetnugdP2BG07F7Oc5EE8Ya5cPXT1nwWY+mfAlb+XWyv4L/3
BDmpqLghVmzI+HU4z+FJTNvUaB/ZLgPa+qVu6tnx1Mw4PxcuS6LowCnnx1s4y/MO6yQpWs81M+0f
Nd4dru+7Nx9Y9Df8vDtd8ZPs+Y3l1tvlJr1d/tx5NpzVr5fbWZbDY83jTT+f9/d76FjCF52GtsTr
qSU6vvisd+HBZ38mLMv5BXNd8Gyt2kjh4a58Fn6+3xFa7kZrtgtx0lF0NHHFKl9xmIzPCTmm1EF0
DSY5Ll72rrfiqK2YWs0O1HPlgnquXLSf9R61gZebESAcSG2QcsYz37OKY5/FeKTnx+mbf67cM8nu
hNmEl1QZZl4bWXZk2MPx/ny8HPbBfyPMBzMtfT3zmoq8do5ySBgPZVqvi8e7lrtxM/uPY+eaY0w/
3lGpUlp3ZBVh1oUqzfq0Tkvx890LofjNUMuzmc8k/VJG7T5vp6ASsIaS5fv2xSJtsOIosOIqHcUX
pzK7cKhHMvNYM7jqwlVbMxBinSqxe6CH0C2pim1typrSyChpZG1pbC3EB2IhM9QLDVksg1B+3I+f
o029PL91xDI9UxOZhleCMFLHjgz3/TDe1O3us0ue/9BCIZ9kBu8sWQptj3Qm7GMh3qV9jFJ5ik8k
DATANYXvkCN7K3YZKHYpLrsg7YT5TcT898c5UhbrmFRQNqH+wg5EyKDmEAFJkpiBXPgOhRidJjni
tBxlypYYNV2QEPGCxksnEF020oYxHx72fzMLJGQ8Eno+33oqODURhIN5WCQnt8h4e6SVzW9iYEFI
jZOzzV56AaMohHOdOydjFXGykvFWZaRN4JqX/fvp/LPj6BXbyW8ZtQWcUQKuhxpU6ZXdjUhxg92V
laqY3enWlhyxJS0XOmfBiqPjGTjRe38EHzrZNFLce37PgXs8re9/73g5aehgFlO1EIwhCcY5LYSh
gFVNf6lp8Ki4hZKVGbfEOoIyEpZVhlNl+fKCMTlg/uKJ3SjOa6dJLpCSGOGfh0qjnCqaPpK1oZK/
8efR8Qm25ro7nt8jeMMon8t6JbuwEkPyW24dv8XWJksSlFYUjQbZAl5tAGcpAGeRBxTPlZTrrWf+
0rNOUcMWSJB7CLe7v+0vhw2ekHSlwRgKEDhadMN3t+N5dz5eevGVNOcknkpXt7XE2pK4czXUd+4K
B+R9/A9P8UEeygPRtS+kFtSViWue6FheGteTI0/TTkakEyyOHOXg9Xbs0UVJ11TNIcAid99O99PT
6Xx6/CRPlR4HWiG4tlqmmE9a4D1Mt3SaronTcq46kbkCanQgu25C9qZ4Kko8s19ke2LuqHXcdlJr
RkWmWXNDIwiKkEXtvu3Pr5foYlEBLd2McLd0s+noZtG2pq2jGcp48aYqrIG3o4C3aAPvpotkKBfJ
oIBFgN8qwu/T+2sHN6eHyTNA0JR2p0gjtlsJTbn5rHbzy8j56bC7j1r5/vPy2P8g3SxeBKxD4ZNZ
aEOVAO93Eqimd28biY3CJ+aUT+xUFRdSc0xWJXzqYYE/GA1P06TeKSzkoI3h3pnAusvWuivD5XCi
EVZ+3D1IuRzvNEaRpbJYRb+nQO+UW6VjvYUjqTpRA0NFUrhrAcJVPFFQ8URWuUlFML5eQ1FriPZ5
qhA6FdQ0RfbJNgLF+bKpULFyNfobmoCCDGmaps+4dszpWIVexP+a9KByaaYd5G0F/miDa1yNsXQR
w5l0iiZ0ClNtki6Q0cfdL0P59KnOeeUjtlENZWpl2wnK7u/L9fnzvsX9FZXWVQUcHhcyYpok24fD
qm3hPN/FSgAaxdoqhji7hyYwndK+gPFx21/u3Y3IrHnjjIIKf/picH+cy/Vy7CBQ3jxQuKlnj6ov
b7vPy3iw8+lCB+V5gawd0gyUNTKsGUovIP6M8DsOlGlCz0bsjtTdqWx6pS9bCK2DqoXdjtAGCuer
dlo2C+kIFV+9Hu/sSBWB+TJOUZZXnLaUV4h25G2Vy+SdXKZqFDXMhJaJ0F0dKG2tAwcIznkn21wA
UDcPQF+G1keZ+K0jFLUX1M46DBTCkm0Ce0yud/vHb8efNMiTpvZU59DfyuPtcEwR+asiCoVvoAhI
pV2taNS8jbAJPjd8EuE+ZssSi3XRyFQzIgkzZ2w7kNUoPemEDA2vhJqEdopTrmmVFJ0hhAk7UmJ3
Pj688vTj7cnwfiqxz96OXDDL7TOiIiJrXQHxCkOs8kCMyAPpOQ9Ugrx2iovKXJce5ZL9iwwtsYRU
tqoJsDiSSsVjmSu9/mVsLyUYHl3T5EwzvJKFUY/CuHs5/Th0PFtVlIH5IhupQC6Hhq9lRYwuYETT
MFF5AbVIVVAWTlLhWCebrn+L1ESlDneuIvRa640fv57ew9MBJIlUEVorVfjapMhgUrCTW3hwoVhc
EXWElIyy2gUDRsVQRoVVCSrRcPx3nPICbbuCqQGMOuV7okpIDgX4HIHn8XZ6BNYZFXKw/XgZ3lTq
7bSLpdIuFnHfyhuTdP0drwXdAF+buialKtdwGeURbIp5dzIlBTC3c3tAmXCZ8i1UdpQ3a27aPh1V
virN9jjsQEXSVLNgJgv46HS/vvz4uPdS0KpUXWxdejOnNDus7EQ7+pRjcqciKEdUG6sq/UPFUI2m
AkZtL3wZnHs+37vROV6vpIuVRoUhp+LLVLf1hBeqalupmlIPzwmrNVSlthTw4hTwMryNLhrpY+WL
roj0sWlWUbbjzJyKM3MQgs9BHArdMtE2e83SAyoCr9tiWhd4bCh1XdT/iqL+t1HITzhkssq6lBEc
W4TMibrqOv8jVshrJM9r3wdRsh0BimjA1zO//T1NviDtQ1FGE+rRyLiwoMRcNNPO7RunhEFnzisr
IBrhv54+Ze0YxdL0UW5vAdor9qs9GbL+lrcSLVwH0RYyVZjEYUlkWT+r3AcF6polXWmqVTOnn03M
aZuN4e04Up2xoXIATjdc6AmC6ghBQ/yILHBSzbKbNtyikrtWtRVwWevw1I+ryjLLwsiaCepYsvIU
SRVOGV6h6VL4IhnfSewqvbkoyVFGRXK0o1XMg0a1ZmFeeNP1oDoorGtHwJvwj8oNFFrGVBUl5U6o
cLPVlQ9DhjoUEerI6FrJUEcrlWmFvqk8quG1QyZW9Tofbz/vc8EONnKijdQawQ4q6sJZq7NkpcCp
e1aLE5UG24wnkjneRydc2pUAC0MgKUOgYEhrwg2KQlSy0twau7q6U6UBdXfQvTzq3sPp/nHuaF/W
DglXMPrl9CADWkIAC9vQUp3SQCXbzvei3Jq6I8G6WeXRrhkis+aGtkmqRJBytk2tDkyVTwu3sv+5
JZ8mML9OcXIuqBoag/DlsoieMvPM1nE9C2BLr7uy4Nn8Mi2wiVT1gnCgPm0KVkbfmHSMRUYdKjbT
SjkAX10QEu1UOwMwMJ/Fna56mhUbIu5X7NIqoCrVl8r7i8B9mW7Kjujkh9L1/dZtd0MNlWfktlXk
1mzUElSj1qJMw2Hg0cmgGlapYQpxaupgrI7mUt6SokzkILaHsSRVl1j4pWXLYsi/a2XCSKP4bhyN
XfmGoDCnGh+dayfXVsl3qsN20NvzCZIKxDq73a1VVOJmYKhhYWXnOvk+xav+kCzqo5lTyoOq5PfT
GXNT1T+RKtVRbobUzYKwpkRQqpm1a93qZADFOFa2WW/VwkNGRGTZKi4anrbcbawBcE0WrDPVkspU
2+39eYziYW1pR1DsJuhIlbpJjRLWK8kUlGTaSoGSNVlUIaysC2Flsx6BCsSVXYudOjPRCTQJFL5d
0peuG5WqGblf+JJUUaMTdfwBpKmJJdIguXWCeQkA5O6Fyi8zlIRY1kjQJDF15IFS44rqYBuGZmlD
E49Q6WU+9CIYeV4IGYgzqjkCYuFPKsqf1BU00rB1TVJ92pKbyt9gGBl13C9TOaiUXHNKWRnbbmhp
xvQoQGPddvWpqB0N7Z6WRqk8pfe4aELQnL933nKH8XV0/VPRAZBHF7TprCk6a6S0VvUNFNByXwgN
UukDKQh1vmGmShoSOJFlrpGsKuVPl1heQ3cCZxjhq1IEaXYpaK5Fcy5KM7BH+ImB/VINE6sKxOso
GFXcrer+1LnHR0dbx8XOT6z8SOVURFzv/1/al2w5suvWfpG8gl00Y3vmD3gjDyKlyEz5KKW0mqrK
Wuv9u0mwA0MEGPKdnHNvnQqIDQii2dgkOv39/bKfbzzYXSEkgdtoujOR9SAk9n/Z0qLgED596UHU
wCdsbajPjqI7k7Kv55u4y1bW96We1+COj5T1Jq6CCYvrR+yIzshnQG+jIXGFDK4fRNca0ai0SmXK
XFy9K4gx3OFpTjYXZyWM9NGTk6Aa+p8K8w0YjqGaIgrHjLvvdc4smql3Vsr+S9d511hBUpSQfbbA
xDlDctrcEim4Gj9ONT6DK0OukouUsM+AuyEqrrxquPIr1B8LkOdKXVoU/cqySh5iuOhvqudfa8hv
xSG/x4LMik2EcGX5EU2oBRQYuThfVRvIYGHkzoVtl+uhRXYk6k3laGkHTl1EobdVw88ltXtZrR0W
pRwu8dutuiY5X7nnoGdCV3N2K1swcLZAVwsea7vE1Uz0WNpIzpxozgxMPZ8hEz6MbnZ8S1MUC9iU
Xc9BBEVfdfxXRUznAzKAIZToLfoMe2BA3Cvp3Kb9fGj6XiiEZeC2nN4Ow3bmKJbOA+UImjGa4dyW
Tm7uZpZceD9MFFz2KbnK39Na1muIIUrTErqRPoPzQqOzhCZgYshE9ZyJqrFvlqnQnvFbBl1Nhdb8
lkblbZBV/HDh8bOmWpVtpUwzHQejn8ZqQ1UlL8UZ3mGqobwzR+sxk7QyMOY6vrbuPnHIEdlxtUgc
DbEro2psUWURni/Am3p3YaGrHOjJ6Bpgr8YBwFaKZZFIGPKLRDf46/7Jgfl8Of98XR633eXtv5f9
/baT3fhvfz7va5E65dg6IwsWeUqQEB0lKDxxDIKQDScFaVLQkAV1ebcoQR0pSCBBqMmVEiTJqSn1
0hpN5IjCawZpagMrqFPkrnVoRKI9tYEU5AMmEIQ4H8mZkUtkdDkz2RjQRArqXhiQYzenVihPDPmv
pDaS4wnPeMaVjiEGJcj05ErnLXNHRTXUehhIQVmJ+ubM3LuCdTnhOTGYmCP06/nxaPp0TOUK8ROT
nSFNkSgFmYYySlKH+lcOfjcJ0oLIV6YmenrzsylCgCVyrUlt1Pl04HuVmpmkLNGE9mxKb6HQWk0P
SL9k9XtSi3z2dbOgidQiMxXGWjYskSD3TE7FnjXk0JZIi0JO64Ilz71Ce6+bl4egz5lY3UL8iDpN
30LDS0ZfkAdWmsLoN4z1RG5Z3xU2TTYEdaQgkfceXulpXNQTeT7E6l5sXB8jfcGK13wQRQoaijVq
CiKNozEvHbSOHJHoizWSLaNGCZrGwuybhjPTkwdE94UtaqmRIGcm+1f0mpyYUP1L91BHqqOUL1lZ
OmyQorxiGyNStH81FtaxsWeCHJASrxy0jr5iu/GltSav2MBvkpeo4ajR7oxQpeHvGz4xbfi7V6bW
afIq6soT21IjSdoQpbGX3hJDrpAyr1yNHXnnT+WWqYZtHOkoBm2ZbPppkr6Ielkcj6mx9fSFJl7a
ekXqUNe9dF5JOXIsPdmGUitaF/MKYXIt0qSRguTKeWg46fQx07KI9LRsHDN6rfVLV7Ugj5nUxT3U
so2kFnXmNf+K9GaEecVaS3rT+lVqpuEUj7Q3I1/JOyh6iUR58qf4qlqRl2b7yyaqZQhQMSG97mg2
Ws8wdWZ7CaLnCrVC8Dio2BJybRE66zphcQlIlRyCqasB+krgxNtp/08T2q06itrST2kMU7o3Et1k
f0pZ/2Lpivrt29RxcDXzwn5PHFwdkUL2T7jLADQTLNBsrD9hUDxixDV8TrIsiTBoBdFAK9Rb5aE7
xvX8QP3313xtdJaLOtDmGUnKs36J2tsg5UtvinvpbaqWEUoEIMsZNtRbYTpoYXG99qEHSvI9UF31
1Yxa7azRKzQoCjH/VJVs9GxqzVXhQo2G6+Yz/XZG7IGricu+yQvSc9AHU0OjlPPgAISUGXhG0TZY
BDFgrtX/LTjqgF5v5gnjQI3jUJTxnh9KWP6gdxJogKaoE0ZXVK5R+FVTnSGuWpvnwAKDqsJgazgm
9qnOvkoLvEaqsJCqfMFq3yqhpKT7qPmHLeVY5aF6pmPTLTq20u7pikYvDh7SghzIrsJdXr9ouRsb
LRI2w2U9uUGL1Jc994rsh+He6lD9ZmS54g7oqF8Aq3Bwx26q4YUrs2q0fijFE3T1uy3vZSLA7lRY
UsdrsIG7X1Gdjd4TB/7H/Xz+Nbc4WMbak4ylNyQ5kK6u859X7QwHHxt63hAjPAXbOdrVaM9WfTms
G19niHpGqrSQN/VXBCpXneZDJcwDU+OzRgCNxnt4gnp7yb9rYI3D8Xq77073e8PlRC01zdt35BCQ
SlebTwsoJ9cz2usa+coaQclttyg44BBjhN5dL5c7w2Q4lexxuuYwc4ZNdTxrHHoih7/KzFDH/q87
ikWjo3goceU9w2zG+PFarfR1JBhluRhLiir1+rpnhstVqHJ7pircku1Hnur9yCvlYkOz1ZLSTWOq
YQN0/cCtxtJzUGG1vVeF1Vujabg/RoBzsZ6ux9BVr5IjhhCl6rOTUhwCdaz3QhSZMZaPStSYbCsx
OKsuqvYMTj0nxiETCd4l4ILQ1ttZ4iMKB/ZpiG47O5vgOjn7sc4mVWMB4UIIREZTYwsWwfW/t9mC
dZWBoZqL4uDPWtabRIqU36bXS0XZszjWOmg4DOc6ip1owi7Bw93zOXCrJHviLlGNuyTbToeZVNwS
Gy5fgRKQQ/ES+zpMk60wLbssYIpZfktOm81YDSOKreJSIL2p9zU/pbl4Zw61kzUfDJdcYxAiuKw9
gm7CqWo8QxfAkU/MlOj9F0fDPZ/3C//ShSzfElNPXNWbqKrHKu0Ael1HcCHNqiNmIm/tjiM/0LJc
WaJnkL0mV486DTUfU3JJ2ZGvjqDYgbvdOlVnIa8qG1cGGAz13CVu6eQo48eh3hqxWlWuacqUj1Mo
6gDyXFt6rD2ljROp3Mt7XVdlwERpxyPq32deQJ5Klhru0Q8+9agkz5sTqd74F5mNrJmB1f5yqjb2
Vf686sXB1Ym6ok5UrWZwFOOSKHzV3n1gaZ6J3tiynToYWN5H0OWVqnz1dn/5stHQ8X48f/iv7qf4
b/c473w//qobW3eOfGHZBbLZ1roPj+/X+Wtxodbl9LiT3weAlPteQVpgLeD9+Gc5kF9P+WuVUN7u
a/6zPn0G+MenH23OuqNG7Z6Yej9dftvbynoVx4MVczmTYkQehxMlk5jb/no5nVxD4O+jtSPwENv7
5fq1HJCreyPlqjw89xOC2pU0XHKlhiTJFaCMKhe4/b0pZzik75uKodOXgOEeva6+H0/OAMAHt9+O
T/lgF9sN4zR/33af8Y9oG5WoNHIAcHNpymXnzyIs+O2Xe/rG/RR9xSdBCtBUIXC0g3KPetq1qYyt
+C90DJckO08+wLQu3/PePeIcyCAv5zC+xVGIHK0yWI27X3bOO7rdL/SwxyzctQjKoY/DPs0/1sq/
sJQdEpW0rL4pIJvOK2R6k9DQ4CQlJfXGyc7Yz/1gZ7qLNsv+P1q2uz5Ai9xLPrBh4YQtH1acVyKv
x/iAWenn2f0PUrFdb4o3IVIXTRgusVR8vnu/Xr7CWdkk12S5UCH1V2hFgJd8edzZUXZ5lOidHzRZ
v+nH882GHbun/0DJ9c2lIBcIMuTkDUPaqUJssomfx4MNbkihebDQpyyHiZz8/nT8RpaQXM0xr2aX
zM8L2+EjLT+mTJRRTvMW5xnUavN8VZbtOJSsX0rO9+NyL3bne74u9LRDq5EM6dNQ4azJfUGmLmVq
ZsP9QmxeB4HWAcgQvDJ92e+DXK/r5yQZDN3l/klrqOcDCTsv4PltchGCoUI2hZSqSnWgZZ4ut5d2
TGbB2SMhj/2TnSEPwJTkZlcY7ou4V8iQ1rdtZ//v7XHbHY6/yNGjY+bvQm8O99f5hpyXUj3IIeOd
84+MtQ/dZl2TSDj8w/wLS8JPpJ8q9gz721b+efkAR3P31zGT/rE33PF0IO+yLl1mEKh5h8O7dMEj
Sm6j/1NyjbNZAz9rDItgHYv9vP+Mx+5+XUgRGmmWAND8f63mFn1Nxxj8xei+RBsOiAwQ5BPMKDRp
TEnlKTl4XrAh18Xv7PzupNlD6QT5VXqbrzdyfZBJGtxOetcGvts9ewzLaeEmaLChd9YZS/uwcg6w
7a09ywbYxS+h/+e0zL+WF5ZJo2VSaZneFiuhUPzgqQblIrcuS3MxhxmDDpzPiw2vX9i8fCzdSRmD
Zp9/HW9Hh1FuzKk0niFTTI/COg5Ov0krr/LuQ1Q5oHO2ux3/Lu7++btcL+SAROHEBc8Yra6/DBrT
kivnxSthwf9/e7zx66oLEbpDZtlBvpfd8otRXJUVdwIsux9CuC+/l5bK6nIGgaksLGSy58nPh8jr
ez4AEU54Bh1MkhsvOcapuJKVWqlOocjOftOjVcy2bw05ZEppeHUEr1vVl621ekNhhEIcGObzZGdJ
KTmgcCZ7kvjAb95JmaW4M6+wR5k2snHGs4gePGu8vPvL94+Lab1RJEXkFTHAgRdsPHiKURKnLAaF
GDJtMW0pJLkeWesgL6IbghQ5JTSiPvEmpDSUszbkznalfZCc5pNCdKH0McEDP0xquJHlL4fczF9f
GYEPsmMDnOt/qqKA3ANkAYWACpfjKie5ixNqxHsh6xw8JKf3xu+vPfTfR2cwdyHRg4V7TwdMj12o
vVPk+eStPDz5Ne//ccSoZ9IrC6rgftM4v8GENbwvf+47cFevHwufpDDIsZNQMiosxs5O/nyI2dmw
refglkLgYqNhx9xKL3KXFlmO4ECEm8D5HfYq2sXs0ufjYyGl+JKY3yoFiY8YBdq/uFx/LTd1iJLo
oYg8lAnyB6Y+lPMlzo8e0JQHBN68k+W15/T4Cgke7M2f7PXycTzP3rUH15AG3+X8nknW9/N4v9v1
L8zvOQulIYU5VaZSD/j1cp+3SpBdKWFcuxRhyjTMJX8PKUv/vVOcjSNAUzDpno3pxt0rksZyKE+B
w+n6wjaZ2rCI7dn9vvpD/3VxkeOJxueWIzTEYrs48H7cW3vByEIb1yc9eva0W/vXZ3UcUyLzVTXU
5WKxQrg5SZT7TnP6WKxLcb/+7L6sScpi5pu1DfT+ZWUAT87v3+OMw6sXZylFMctYOfC3QHGv3MCK
4j+yse/+H2e13Sl3fwCX5+/L9R/S/A/JdkNhTQUn+XDZP1xQiG4Q/84ceXdplKpGOdWb1a9o++/H
U8rZXpf943rjqku5ggKUTAavg0PgRMfN1XHe33dvP5Bi+/1pjfB6XVAO57YDc09fwoEqzU1kUBBn
+hP++D7YbfNG2Rp3/+BpKGeE/1YVOYVTPgCbAhQxpfPcUIYMCjenC1Bokutr8kaZ5DymjIlf38tj
/xmcUBfkOatGLi8qbQ3J8mAJbuE48zUkH98XEuE4dZyY3e17PtNlv1zWVP58961KCvg9z4Ep661k
H8sd/t4bEV/zCVkoX/85XOff1H50IccSqj6B1QBlbOCDqOj0EoouRoBAsYTC//Py+/SDp8ZHF2Cm
uywos7lbp/4Owborr7H1ThiMzjJyhhidNBerkMkiGIVJElyQ0+ui/Pe23H8vy5kvn4IYlcRAPsNv
U7GizoQQRWSYypgkiB64nUTySkOJ2x0Rvzz0OHSxqMEWZI10AwHDDrLSbrF1TBGLhmihn7yIZIC5
7JyIJeEwzzFJui7/8zjavwn2u3WSfWa2FDPU1RCvPS1L5Mll5xNDCm67y3NGgtlLNLgJzRHinObM
xnILu7KKWFhyUojJqwz4VMOqtaQHI8vBxKjXmsk0E1BK+z8WRn36vCAmDafI8Pqzcm6ruMl2A4GT
bylb2ISCwLyyFUOsTJUBXR42rHy3QfFCWyGT9cdVgGL++vPq0PC0cYdP0frqpMZxYVOlLz0W0th2
ndfZ3Rgh/WTVZgk+kRfXkKKyTZS951/3t0V2rnA1H/0pKTKvkAbfOvSYrAW4GTfyDk5ah2y2s7y9
cqfEe8VWDWfv4dNq1McYPSQBUtLYe89uFL+PVhGCu5TP3voCb+dIkJuZz+Gzc4zyIs7rjFU3d4s+
3r7tKp2SN0HOKHtclQL3v4Tq6PNaDSk1HpyXmA2J5+WFEeu8B/CakBoCXNatgK+MfT1s+P9+mu/3
hRRjEOpEgvvd5XA7+poxaaIOUVwIlajxdYBfxy7TVGRfaoJCdEnJ62vxYHjl/mq96cfNGvdw/4H6
/rnTPnEHWNgU6w5A9lKRuC6mrn+BBELmyYeWYkAJLIfjDJ9aS+lu6+vOJbTnq/MgqA1SOWiDlJ2/
Dn8dD8sF/jb8r8CHwysNmMwBuSIwedGNWWIeXLB114W/Ckxf3P4Sy4IDGS6U3e3yuO6ZKzff2w5b
M2A5xZbQErLd7Z0j14f35O2S3Lk7JPt8GiZjQgwOgZq31Mgl9uFb9LNJx2hMGchuCr2Tqgtg5evj
vAcjezheYc9c5t2JJSVNWdIARWgdymvwvcP/8d8P6XvnXhuJQtxNUwkpWT8A9TSA78N7YwB9/l6m
xD3gotyVBVJKz5MXZ/J8jA8XkpMH+xQBBvMpXD/eeEMgPxP5nSmk0kLkrlMF0pXhHyd7VNfySDE6
i5Ep2I7eo6s9gQNIfi7T55Cw0jFNDPt088PIEzy0YZTI0nUpqgnlBZBB9xvXcmdncDP8ZgEr19d8
vx7/0EhuBL2ELGUXMsrWZcmuxq0xFF2mJr0O//XbYW8S+sOhQKiGKgDlQ+A003kXFrhh6yXKMCb4
FvgOgEdY7k+5/S1gE5GQL1CJGPyxAU0AmgP4+/N+byPG4LJ59gM0JxLDmi8n4eOr0j31uT/4cP2H
O3+t0h7w5JPvQX+7IScZn0TNp+/P2V8SXCFmih4rYEzNANC20K7xJNNrNSVnzAcTm7EnKdEmku7D
5N2HIGsEsEwfDgc2Y0+SIWH5bZ3Tb2vyKND+FEogUTz8Y6KHSkePU3Chw5zhOMi6IN5fmiKiy0vy
xbCeGFLw+y878tRMITMXJtjDLOvSIsaCG9qALCaA0mVDFqu/fR6Z85ak4fSXXC207IJZ9qQslCBV
0TPvp7qQ0QUi76GchQtGpLefYxGVjGEI3GN6q6gdsWGgztlz1Na+CpmC9Mv7uzWF1o92V9WPgwvY
f5PjDMToyelVXDDmTEgZkG1JDYvsV8MVFdDr9i557mPhoY5TuQqGQFD9C7GeyEGaGQErHkAcj1wP
8Oucl+Pt8ofpiRiTjemmjIxITSu7y35/etwA8gRmGpABlKShcO9CCbIuiBKBnGWdCxQulM0CQOXn
65GovYzJd4IpDQm9uD/ZECs2NtAIkzEeffc5vOnRhQLf60uri+kk9V2tyNvpceVXNnv+iJy1Kocc
SvbdIY+ockL0BH5DezIqT6bLtblYQi0hNHCNOBTNORyjdQTNZPQyZ6tTzSklFqOBeztd9v/cgvvs
Krc0jsRn8KLzlL3w0/HrGOzCLljQ7PJRogKbfURxhBaFkO2yslyW83y57w4XwqsXCSnuGZ+T5QXK
HT8aH47RC6PT94Co7ajpYLPFV4DS2yMwqC5B7mP+dJ34pMeWl9pF0+HYJLxBuAAaHQsiv2IBhgn6
IqpWHxvWjxDB7G5fsz2h1o2xdwLkmx0BJ/VDA3KsRwD34DIB9G9cjx/2oNufc9hZnxpvLEKfZXbJ
CLL61oolRaJBX6neE6qbPASyGNS6VaO9JQMSoLhTtGEwkbAchGWyjdX25nRxfaOtoSJXa+yKQ6Zz
JpP6okeakOuxSPOD28Ll/O3vor3PgKXKKiVj6A4+uedZmqtmBWBgBC05Y9MKIETq+fMBHoBidbWa
QU4pL4wvaGw+iqQq5REBkLQCxAmW4vC4BjfJTZZPNLuhDoVaqdxBvMXkmNoJ8Zt2eEAUE6s+AfN3
WBY7Unu37T/JHUSKriAFIoucOjKt5P7lSancDFoFMb+4DdnmK53KEdyEG3NFFkJ3GUEeeMvCQENz
JYe3TP2knvrDZWJ9qubx0bC941TqaiwN+ADp43xxpfHgfhx+zvPXce+amf4yYN/Ul5iSL0/4M/fd
jsQ8i9Rp5iRk2qVPe7P8dTH7C/fimAX5iKs9P3JMsjwrY+NY83s/DIWPFextcIy+5uv/PBarUMcv
eusMcq0GmXEbr10K5MKhPexTiNc63KSmi9I7Ia18OXjGr0Q+nUh4+iAk2nscjZNRqEjdkzA6Vy0L
GJOblwQ3D6esQ4ess8idjJucL+5OHlZ+uJ/k8vV9/9ktX2+AMiGRPanhNh5DNbxqB/nBjeXFPbFb
Su6jKS9sUYGqcpBZkfovV3d+/Yhvr6CL1FWflr9vHQFyknkfFQryt+ae3GnM6i7WdAEt754Bw6UO
/+RZZLcvXDzk4uhicYJDWl11UoSquX6hGgtDAPVuezHx9ZwUQARMBoLRwli+j2RuL4Md0fM7vtKR
MGxPKad6e+iNxElgkgqVWyJc10vObR0uyw1C4o+l6D9Adny+kck/jTJzEuo2E5pKmkEW5qM1soCO
1gX48PoNOJL0KyEAmPf7x9fjNHsl5XpY+lCsCtAMaPgI3YSp1GUdIXs3PlVYqEBFhhTbupn/7XL4
wTWG2z9wGikZIjdhOYRbiAhQ99Pb4hxT8GxIGahNUgGUGDuQaUvIz4eC5EPkdbEHnG9VFIgoIofC
fiXDnoU0HdkIJ8rGwHrFgfo6T/zpwaXv+Xqn+45zq+aI64/OlMOwY8sYWS2RCRC+IkfBkwdb8z3f
yX5CMaGdc8cikvWsEnS+v5vBaMrYCLfeRoaESKZ+N1lSg9UWgvZzZGo9iGIk9um4+EImJFbUIIVd
TXsPni9n+pqXMQ+aJxCBOHbQxxM0pLF0DhINPGcA10c4FGEoIXkPES/yWg3IEaD+TTOGytZ24/2k
KJwJ71FxxVO+YhMeWxtD7TJXRA7Lr+PeHihnekl7jq4gXMa1JjtSsFz2jvGCsdB6QlcMXP9y1SP2
dC0cXwMUKnRPQhOuLhbAL/hzqS3cN6TUDPrTAN9XGAzsAGWgQNzMEaYy93jFvfVwJ0j/2nthF7pk
MY+bR7/nbo90p/FQXYlwxwqO8VgO/Jb1F9JcvzlEtMyosyFdBfnKbjU+yLHowojWNOp3XswGUl2g
roOcHX0+JwDM4NdHiALKrP7vlCAiYm7yBEv3Y/dhZd62iNEl7jyUjj4XB155fwe/1pq/x7xlyacC
d75e8vlxD3hB30103tC+UoLQQ3CPybZIP1Z0sa4OLSeZiiEn+9vNM3nD8qMxzmJmtxQqCeeLp5Bu
w/wzMnNMVKKBLyCtEzAG0A0HMgPiXUQ5rm74eMHmhab1cSq7OgxGLbd3WxR7g9Kfyc458NcVTSzg
TmmRxXgiTaRvCmFtnojosdxSokTtwL+qf8IUTTShyHu4wN0ZWhAed6hVrjuGns0n+Suo90NDW+zK
yOCLagP4XyA7PAEIWK3XAjBviKQ+Em9wCyw0NshifOVSEhGjiDqkhnJQfgg/L+/Qqlsq8K2kDszd
s8mnN2IsFDDkgzFf2M4ntTb083Rlg9MQOl4uj9MBlMcN6+oS5oGQwtULYmTu18BZFbCZ8W84/oe1
Prs/40+5RGjwCWWu/BG1982y6Z4wZS+iqZ0uepOyhusMulhfoltMliyuK8Xf6smBY653tDrBiuVY
IyLjfS9uhFP8ZXkgdKJbMoHgxaxcl/nw3/M+QZduLWnoyXbE7Im7b5jCpU5sVOnpZ1NLyTW6ynSM
SkwIDFU1he/tPZ8g0ClBEEckq/le1FYW7VVkvKJ1TacUQlou9bRcMN3rl/Vo0q3EzFur2svZkelk
G0OpTk59eus8dMCtm1miXKZNRifqIhPyHeoJlhrqj7vYirNTpCz0Djc0dxSUWta8WEvazofplAIx
gf9sUNXrt6HrEr8uDplI1dINrhimUz7MyCKpslXXSKmyPA2mWLTmUg3F9tUxElFZ0dCOZ7rLUgcv
Ir2DTlRRzptWbSjPkKb06/94/rMtcSmKwbDlQI+HgNoyN3uBpp9r3mlLcsKL3JW+eNlead5ORo22
V8SNyBDomFA0sqB7rhmPOeSGv+lTL6dClU2X6DiWHVD3AAAzHdjWtYJeux/9G2uKPPusu6NT3ssE
/rvQv5ZuzFDh2Tw2nQ+t8rFFV1+4Gzm78oDKsQRBX+9Ha/4ZOJ5OBJ6wQJDd6VTbdmxQCYEMZU/B
nkv+b+sDsqpvShvX1beR3Lz8OczZH8cv+zeOLoP3z/Ljm1y275/Iaq99j3yPCKbUoambeYkgf6Uo
+3O7H/f//JATy64ALmfWoOvkTHQ5EvoAx6v2wNy1Kg9I5nRGTRpzX4+lmZero7bdACBzMsKrBor1
SUg5Q2E3w1HLfeIByluENsgdo8Sap3s7p1ZX7ebXBe6dlGBGvHne4/41nx507y3K4ho4DsF6XT4+
Sm4+siiLWiQ64f8ZDhHXDLx7O5IiVc6tuyQP6izJ1EAwvNhy2HHIEZEjsKHo4XUC320wskMVDusi
qEMT6ikSY8EQzL8f4u/P4325fTuZ58sBigyRsYQWNCRJQmfCnPThRpSyyMmAIRTwBMbSbxiJyVMS
KcitLdI7iTcViXzB3dHGBYC9mCZKEikEzSTvVzhLAJLfMp+86aoshlY2fcuWZ25MxNpyu7je79D7
5ilzN77/4VtpEBXkkLvgyu2na14R2B5kTGnXVwI2HxRRzjHmaL9PdskCPmuTUutiTJKaFJhXZwlJ
SZnlEvzS6uyaaGGRcycDLlKXVAgb5pWnhSKfr/n2zyuLMxTGSPGLwzFuTuWBLW6JFTNxqvLdVugP
DPsg0R4juiQgPZiIOKJB9izWrpoD+XOE6SHZKXLTNlyicoWF9eNcoRcZDt5IsYBYQkOO9f3dujmO
z2jDqPquaAiPT9QEblAvYH+av74ZGo+Sr1L3qzxq6LwAWaSMPBPIYK2Bwrv54GCFUDqhT3Rkw0CM
jrX5IMqS1tRQj/qUTOp1eT/Z0xflkR/LYk6RI+Fyvtm1OZ4TpRK7w2htdTqAiBDm7+XyxQzBFI8k
KbNB58ihTCV1QG7oAzgkk0LpQvNC+DjzsKGN4FeypI8NpaJ0s6G8Fy/HyJqm+qPcAKVHXhH/NSR6
DcK9utZo9pf79cNX5r9WWMDGWe+HgoBGxNc8oAIHlvjtx7NMR4+evYz7mK1wRm5MmUCUOVnZzQ/I
Uy6HW6I5853v3v65g0kiDPu1Ne1jeeT3M5O8c+ndzu7eHvc7w5WE2J005CT8gv5e3j7834f/tY3/
dEiPBQCtS2aC9TLCeWfITk1+Sg/KAab4muXgNPkJQ8T/5z+1dyTdYjskzAuQgPbJlY7fnu25CHH9
EXotlzP5JqHJTwqCK92XMKIYP3MoFHRnipSJD3wykWOnGVyJHFyBTxar1PiEQyhEDkOUYJghgIBC
mOwBmo+b84EPx/18pzVClQSrmeHxAfVeYB0MfU3woge5SXllByAR6mPg7eL3+87uin8HAwW6tB0a
4rn1r04Cnaxf6pi58QAfcqPRi4iIwiiirFyS15ex+UTSEE81zMuAZ4+Xes2bDAldBk03hDgK5BkN
1fcpZChzjoNzNIf42h7MDYgVAt2fJ7NpTwiR4WrA+ZrVz7f0d4jstOkwF6THsYc10waU6PgGNYPC
MC9ATK0wD/fr4+sb9W16HSXFIY6DcRsTX8LSHBo54j7l1+F2cZHVKDPnO5gElwJ/Kn+cn3+a+gEE
9xtMfknyiYMTsdHBhQXmAyP1OJuGcOa5vdWFPzdEiO3+P8kaR7zTmfKtIIx+qr2g3Vf59ze4jlrW
POGCbjwCjDm4faTijV4wVA0HTDiFVJhditKBCQrn5wFTgpibZE+KvLRoOczzFcMOoCtI7IcOB7Mt
yi2tS096fEqGeEHk9yhU87RtqKcF9uC5CYhZCoWCyS711cMyXt4T5JJ1ZzUijcpUnOFpnrZmq7wg
CmIjJRgFc6edldavl4eTFsyFdY8a7zMoFA3q1GcZkqnceEz5umx61KsyGvK30ZMVmH/UepOL9Zlt
3ILOX7NzP5LZxjFF4qcSsB7oI3OizwOjfB6k0UgqRElIUbSBJCA/R0bsZKCmwxxhoREFm+F9VJ5/
QaBWvhx8I1kFYTd3uYO03HYIKVZNS6NlqIJbIDgIz7Pz+GDZYtkQQ0nFIJgJNoqgIG7VbqaedNad
QiT+/rjG1xfskVjIB00h51plTAlQLib2h29zK6Tjcxjlep5YTenprfgL1FoKEE9at9re/u0uSiH6
YkJKZM68Vbo8NXWt0+g2xCIqd2PM6HfBE1R0cQGOAiUF8WKq3ERakfJ5XK7z1Ybvjp+Fx2SMsZjT
hbc5wlLWxNLz6xCx0gS5SClJMQyJ3xiTzLBUQ+7ZrNUtOA5RWfJN9ektJrib73ZpQuo2BqP4P5Bv
jZUPrYWXSiM7qv+cfIG1bPAbEdbw9vQ4NVOY7hM6wTNOQ8l9wM/xvRplKxSrA74zUVjf78s1kK1G
Klj/Z4VjHlj3yJ3IpFtKQ+QyFuSyFYnBXQ9X+jLTxLUKMd9O+bHftmxSImL2wt4tLZGUBHZO+o4P
Jy6AdriV5HqOgvNxfpxOzkebOgEkyEbplliXLSebD8eE5g+OaOZXZESSoUZMpvqJ696/FWaaY3Rw
bVKgqTMtc7tM4wvG1EYBAr0z1scHX2Jur+R0zSLzU8+tLKBA0f+UHKhQtfAFjJYImTN6LmU+aHzM
N3wui0eXgv7l7zZQRA0J3ImfbsrzaA9CdcUypJpqGgTKJkpyDDkbIwXqnkpCIMvFZWJQfmpInigW
wLSWDgknNXky0mBlniNepD/keuRNATtO7CkuyZPLIlDGN/OpOY6T08/uSSQ5JLHa4R6VMtCIIOtD
hklDAkz5N59SiYudGrneXZE6U+wqHdlDIMrJaRzYcjtIzlIUujh0xNCgc4mxQ0PCyqVZcmeDnN9Y
Ho2iKI8VfMtZF6Y4JpJa9pjWJeX0hSbo7qmZZqMRVUg1M6nYq9OSulgjcloNIyCGYnWSJQwFMA9H
a84IqY8H3utVYnnz4qDbAcgeS085RGMbFLor1jgSkwRikdgwnUp/TXKMnCYd4BH1+ByWr02S56GP
OfdEtItCfAdztrMIl7J1k8G3ZTDTU3Jr1Fg0z8Rs2NsPTyM5pR5JNRZXVxSAx0UOIXNqI35X1eZ2
nBIyTsUHVnoEY2YmjXjLp2RS5LZfzMzYHsWEjwkfRU7JcwaWbplZ2iKg1HtPn8vx4/PuO2fJV+un
1HkdhxLBfGHpW60tU3LxgFN+SF1noag8n1kCjCkFFvC5yi9BJ5qdGLAhADjNLdHHchbwO8PLnGaY
8uPS/zZ/u3j4/y1v/3m8u3/9e8ir/cfyazldvgE7az1qNawl70QMCPw/3etPuMXPox9jqOuhg77X
HFC4N1dtdI/L2S0m62CiqCpHiO/Jhake4hoftyOLjKhEOUC6Hcvww3H+8GG+k7Vto8radqh9XA7H
9584g92DeCV2SCxl8L1nMQzqiZbk/Xg+3j5d+tCzyHPj6U15o6hN0nZ3V3Py836c4W+TP5AHjLjj
/KfeM2suO/KZPcikf1r2zVpg+sLTjOUBTqFemeyEXh7NiB4k3f79b+vBLl6ovdd+mjKHwu8LjYYB
PWvPFVkTH8qoKSagKoMhfxq5ZHr109vUvZcl3KAjJbyyyvmeh+YTidSBXREzITgIMOt3L6j7ps1C
kUMmMacVYNt8kRM6JCd0g85uGfGAnKbcOonPVktLjCmOVHHCXzdIZvXA8tjQmE27IopQVY2v3ljK
bLyx/v//AlBLAwQUAAIACAB4fzFJcZoevOEEAAAGGwAAGQAcAHdwdHdrX3Byb2Nlc3NfbG9nLm91
dC50eHRVVAkAA+PK3VfSyt1XdXgLAAEE9QEAAARQAAAA7Vhbc9o4FH73r9BDZ5JsAr5giNFsd4db
Mp1m053QNDuz2WaEfQgqtuVKcij/fo8MIWkhaQxhm86sBoyR9Z27PnHo9trnx3QCg0oWMz0UMqlo
UFrRY8HTa6IFyRWQTEhNGt5h3bG65QCu9eb06N3K9ZCCZNqAUpiQTovwlNgfRJwnoOwu08zuXfTt
Cxi85Xr+0c55HNlnEANTUOHZSKSgeJKjZCHtmE1FrgvxFQkqj7WyryaZvgpBavWI5XeWMOI5fkAG
XJOzfotkkt8wDWQMU6u6PPb39635x0TyhSv3UCYeO1t0yg4ZaqlmkOxYFTOsh908V8bAUKRDfp0b
f0VKhlIk2wy6LTJIlYqr4fDa6owgHBM9YhovQCR8zhFFEqbDEahiTvHrlOlcgtW/vSNibHVQFh/y
0ES1C5rxWFGLzEcfJGcxOc2TAUhKGrXAcw/JrvOlOYic5t5i3QcW84jr6WLCjFOhSRswSkBRUEYQ
6Xm03qQ1B0vBbZDjP94vAVpDDZJQ8i7UjwP6+eAThJp+JSEUSSLSU5YA+Wa8JstpW0D/qjvNmxqB
LxojirlTX0udP24zxUPSwcdaMp5i2on1rZpOi74/O++tgs8NJm+xdN9EkJqom6AuyWi3ac+lTp12
HeoHtNekTpt2PNroUBRfP6RtfNWo71IXrx3qdmjTp66HN6v0tnI9EriFpt/XjPXOI/pc+s3ocmmy
Qe3O6etHEnA7VFFv1GnSdhev1ip/jBfnil3DqvDfK2ZT5avwPZPlCKJHBb0/6RPcomYD3GA9mhia
uIXF1v5qz3BliGgAJJxNouAcV8YPVjDZxS8Rm6o9y7rAvOAuzDVOaDZAEiATrkfELcgONUoOyK74
zFQfkPMM10FkPZX5RwJJwBi2BYZ+tjGn+qW5H8X7sQhZbCJXRW3/c/997g9uuZ/9XNy/SOl2KP+o
ddLfjPP9hvHVDahzRLs+PexR36dBi3Y9etg2j4KeYdtajwZNioHBG8ejPYd6zR/O+WVJusuvucbK
WpTiAWY/JWeQ5REv9s9Bge+lIe4KkAlavyUifyRlrRiLEe3jN0CKI2yFI6d9uqisg+LrZDKpfjP1
Ja1U0uBTI1L1WjyZjOXn0Y0XsFXL4huoNGIWVZeleivm3Lu5F3skVWKWp8hDko60zg6K7oUGgePg
Ldad32ge1kpC3Tuo/13oRKk5smiZ7qDeE6BzpN907it1n2TvLbjp+7U7bH2GTUR0lU1RghLhGHRV
aZZGLMYToIrF2i8mZxVLOxJMTmcLiUipSdYBQXt2dm7fey9Xqrck9MGD9AyLDttbps3Go+SjvVv9
Ze9VaSPaPI2ezaM7Yd7GsvpjnpHBlAzxnM3NwQhSCrnrByiuFUV4yivCYgxhNDX9Ovb6ZaN1Wc2m
a0TshCtk0gdjVtIEPDIVGlE2zWW1pNPL6kTIMcjL6idVXsBakXr+Ap97MtJJvEYQ1gj1xqErr3Cm
a01D55F5sSywbixeGHsoo8Xsilc/F+Wsb3f5zfP7n7+qDMLf/v5o/7O/Z2shYvUD2OuZzShNPRso
XIMJ1tN2Oe+Ty+LWKqd1lT1PJmcomacpSDsvfo1fXiUs5UNcX9aV7Qlbz62NgvFfFc22g/bQn319
zWTxD5npN4iadbjYSS+6wqJb2gzubAA3rY/1L1BLAQIeAwoAAAAAAG9/MUkAAAAAAAAAAAAAAAAL
ABgAAAAAAAAAEADtQQAAAABfd3B0X2NlcnRzL1VUBQAD0srdV3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAG9/MUnkU6yhDgkAADoRAAAVABgAAAAAAAEAAACkgUUAAABfd3B0X2NlcnRzLzA5QkQw
OS5wZW1VVAUAA9LK3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABvfzFJx9ZZHN4JAAA7EgAA
FQAYAAAAAAABAAAApIGiCQAAX3dwdF9jZXJ0cy8wOUJEMEEucGVtVVQFAAPSyt1XdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAb38xSeRTrKEOCQAAOhEAABUAGAAAAAAAAQAAAKSBzxMAAF93cHRf
Y2VydHMvY2FjZXJ0LnBlbVVUBQAD0srdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAG9/MUmC
83hiQwUAAM8GAAAUABgAAAAAAAEAAACkgSwdAABfd3B0X2NlcnRzL2Nha2V5LnBlbVVUBQAD0srd
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAG9/MUkDfxuwSQAAAGUAAAAUABgAAAAAAAEAAACk
gb0iAABfd3B0X2NlcnRzL2luZGV4LnR4dFVUBQAD0srdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AgAAAG9/MUmYXHl/FQAAABUAAAAZABgAAAAAAAEAAACkgVQjAABfd3B0X2NlcnRzL2luZGV4LnR4
dC5hdHRyVVQFAAPSyt1XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAb38xSZhceX8VAAAAFQAA
AB0AGAAAAAAAAQAAAKSBvCMAAF93cHRfY2VydHMvaW5kZXgudHh0LmF0dHIub2xkVVQFAAPSyt1X
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAb38xSa0W63g3AAAANwAAABgAGAAAAAAAAQAAAKSB
KCQAAF93cHRfY2VydHMvaW5kZXgudHh0Lm9sZFVUBQAD0srdV3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAG9/MUk6DOdbAwUAAIsGAAAYABgAAAAAAAEAAACkgbEkAABfd3B0X2NlcnRzL2xvY2Fs
aG9zdC5rZXlVVAUAA9LK3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABvfzFJx9ZZHN4JAAA7
EgAAGAAYAAAAAAABAAAApIEGKgAAX3dwdF9jZXJ0cy9sb2NhbGhvc3QucGVtVVQFAAPSyt1XdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgACAAAAb38xSQPJziYHAAAABwAAABEAGAAAAAAAAQAAAKSBNjQA
AF93cHRfY2VydHMvc2VyaWFsVVQFAAPSyt1XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAb38x
ScCa4w0HAAAABwAAABUAGAAAAAAAAQAAAKSBiDQAAF93cHRfY2VydHMvc2VyaWFsLm9sZFVUBQAD
0srdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAG1/MUkAAAAAAAAAAAAAAAAOABgAAAAAAAAA
AACkgd40AABhY2Nlc3NfbG9nLnR4dFVUBQADzsrdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
AHN/MUkAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQSY1AABhY2Nlc3NpYmlsaXR5L1VUBQAD2crd
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHN/MUnzyhHN8wAAAB0CAAAlABgAAAAAAAEAAACk
gW41AABhY2Nlc3NpYmlsaXR5L2FyaWEtY3VycmVudC1zdGRlcnIudHh0VVQFAAPZyt1XdXgLAAEE
9QEAAARQAAAAUEsBAh4DCgAAAAAAc38xSQAAAAAAAAAAAAAAABwAGAAAAAAAAAAQAO1BwDYAAGFj
Y2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9VVAUAA9nK3Vd1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACABzfzFJJc3huPQAAAAdAgAAMwAYAAAAAAABAAAApIEWNwAAYWNjZXNzaWJpbGl0eS9pb3Mt
c2ltdWxhdG9yL2FiYnJldmlhdGlvbi1zdGRlcnIudHh0VVQFAAPZyt1XdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgAAAAAAc38xSQAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BdzgAAGFjY2Vzc2liaWxp
dHkvdGV4dC1tYXJrZXIvVVQFAAPZyt1XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAc38xSa94
EYb2AAAAHQIAAFYAGAAAAAAAAQAAAKSByzgAAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvY2hh
cmFjdGVyLW9mZnNldC12aXNpYmxlLXBvc2l0aW9uLWNvbnZlcnNpb24taGFuZy1zdGRlcnIudHh0
VVQFAAPZyt1XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAJ4AxSQAAAAAAAAAAAAAAAAsAGAAA
AAAAAAAQAO1BUToAAGFuaW1hdGlvbnMvVVQFAAM6y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAc38xSQAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1BljoAAGFuaW1hdGlvbnMvM2QvVVQFAAPa
yt1XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAc38xSTIaQVr1AAAAHQIAADYAGAAAAAAAAQAA
AKSB3joAAGFuaW1hdGlvbnMvM2QvY2hhbmdlLXRyYW5zZm9ybS1pbi1lbmQtZXZlbnQtc3RkZXJy
LnR4dFVUBQAD2srdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHN/MUli5BGz9AAAAB0CAAAw
ABgAAAAAAAEAAACkgUM8AABhbmltYXRpb25zL0NTU0tleWZyYW1lc1J1bGUtbmFtZS1udWxsLXN0
ZGVyci50eHRVVAUAA9rK3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAlgDFJG3HwlkMAAABG
AAAAKwAYAAAAAAABAAAApIGhPQAAYW5pbWF0aW9ucy9tdWx0aXBsZS1rZXlmcmFtZXMtY3Jhc2gt
bG9nLnR4dFVUBQADNcvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACeAMUmD9GhU8wAAAB0C
AAAkABgAAAAAAAEAAACkgUk+AABhbmltYXRpb25zL25lZ2F0aXZlLWRlbGF5LXN0ZGVyci50eHRV
VAUAAzrL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABzfzFJAAAAAAAAAAAAAAAABwAYAAAA
AAAAABAA7UGaPwAAY2FudmFzL1VUBQAD2srdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAHN/
MUkAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQds/AABjYW52YXMvcGhpbGlwL1VUBQAD2srdV3V4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGGAMUkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQSNA
AABjYW52YXMvcGhpbGlwL3Rlc3RzL1VUBQADpsvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AHN/MUl9rTz88wAAAB0CAAAyABgAAAAAAAEAAACkgXFAAABjYW52YXMvcGhpbGlwL3Rlc3RzLzJk
LmNhbnZhcy5yZWZlcmVuY2Utc3RkZXJyLnR4dFVUBQAD2srdV3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIALiAMUl8tycWNEsAAByGAQBMABgAAAAAAAEAAACkgdBBAABjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQuZmlsbC5kZXN0aW5hdGlvbi1pbi1jcmFzaC1sb2cu
dHh0VVQFAANMzN1XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAF4AxSVLgaCb1AAAAHQIAAEQA
GAAAAAAAAQAAAKSBio0AAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY29tcG9zaXRlLnVuY292ZXJl
ZC5maWxsLnNvdXJjZS1pbi1zdGRlcnIudHh0VVQFAAMdy91XdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgACAAAAOIAxSfNhw5Y2AAAANgAAADsAGAAAAAAAAQAAAKSB/Y4AAGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuZmlsbFN0eWxlLnBhcnNlLmhzbGEtMS1jcmFzaC1sb2cudHh0VVQFAANcy91XdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAOoAxSeEu+J71AAAAHQIAADgAGAAAAAAAAQAAAKSBqI8AAGNh
bnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLmhzbGEtMi1zdGRlcnIudHh0VVQF
AANgy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuIAxSYhjOnvYSgAA6YQBAD0AGAAAAAAA
AQAAAKSBD5EAAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5iYXNpYy56ZXJvY2FudmFz
LWNyYXNoLWxvZy50eHRVVAUAA0zM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABhgDFJfhIG
kPUAAAAdAgAANQAYAAAAAAABAAAApIFe3AAAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXR0ZXJu
LmNyb3NzY2FudmFzLXN0ZGVyci50eHRVVAUAA6bL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CAC4gDFJCJd450FMAABTjgEAOwAYAAAAAAABAAAApIHC3QAAY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LkRldmVsb3BtZW50LTQ3MjM3LWNyYXNoLWxvZy50eHRVVAUAA0zM3Vd1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAC4gDFJfIYAGj5KAADaggEAOwAYAAAAAAABAAAApIF4KgEAY29tLmFw
cGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTQ3MzU3LWNyYXNoLWxvZy50eHRVVAUA
A0zM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAC4gDFJzSu/VxlNAACxlAEAOwAYAAAAAAAB
AAAApIErdQEAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTQ3MzYyLWNy
YXNoLWxvZy50eHRVVAUAA0zM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAC4gDFJvNHRVHNL
AABUhQEAOwAYAAAAAAABAAAApIG5wgEAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVs
b3BtZW50LTQ3MzY5LWNyYXNoLWxvZy50eHRVVAUAA0zM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAC4gDFJYCiMfxZLAAAChgEAOwAYAAAAAAABAAAApIGhDgIAY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LkRldmVsb3BtZW50LTQ3Mzc0LWNyYXNoLWxvZy50eHRVVAUAA0zM3Vd1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAC4gDFJcN7foFRMAADzigEAOwAYAAAAAAABAAAApIEsWgIAY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTQ3Mzc5LWNyYXNoLWxvZy50eHRV
VAUAA0zM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAXgDFJAAAAAAAAAAAAAAAADAAYAAAA
AAAAABAA7UH1pgIAY29tcG9zaXRpbmcvVVQFAAMey91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAc38xSRkpqmH0AAAAHQIAADgAGAAAAAAAAQAAAKSBO6cCAGNvbXBvc2l0aW5nL2Fic29sdXRl
LWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1zdGRlcnIudHh0VVQFAAPayt1XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAc38xSQAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1BoagCAGNvbXBvc2l0
aW5nL2FuaW1hdGlvbi9VVAUAA9rK3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABzfzFJLUix
d/MAAAAdAgAAQgAYAAAAAAABAAAApIHxqAIAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVk
LWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRlbi1zdGRlcnIudHh0VVQFAAPayt1XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAc38xSQAAAAAAAAAAAAAAACAAGAAAAAAAAAAQAO1BYKoCAGNvbXBvc2l0
aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvVVQFAAPayt1XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAc38xSbzJj6P1AAAAHQIAAEEAGAAAAAAAAQAAAKSBuqoCAGNvbXBvc2l0aW5nL2JhY2tmYWNl
LXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1zdGRlcnIudHh0VVQFAAPayt1XdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAdH8xSQAAAAAAAAAAAAAAAB0AGAAAAAAAAAAQAO1BKqwC
AGNvbXBvc2l0aW5nL2JhY2tncm91bmQtY29sb3IvVVQFAAPbyt1XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAdH8xSXr4C3b1AAAAHQIAAEsAGAAAAAAAAQAAAKSBgawCAGNvbXBvc2l0aW5nL2Jh
Y2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci1hbHBoYS13aXRoLW9wYWNpdHktc3RkZXJy
LnR4dFVUBQAD28rdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAHR/MUkAAAAAAAAAAAAAAAAY
ABgAAAAAAAAAEADtQfutAgBjb21wb3NpdGluZy9iYWNrZ3JvdW5kcy9VVAUAA9vK3Vd1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAB0fzFJ5OzXn/UAAAAdAgAAQQAYAAAAAAABAAAApIFNrgIAY29t
cG9zaXRpbmcvYmFja2dyb3VuZHMvZml4ZWQtYmFja2dyb3VuZC1vbi1kZXNjZW5kYW50LXN0ZGVy
ci50eHRVVAUAA9vK3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAB0fzFJAAAAAAAAAAAAAAAA
FAAYAAAAAAAAABAA7UG9rwIAY29tcG9zaXRpbmcvYmFja2luZy9VVAUAA9vK3Vd1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAB0fzFJTBkxvvQAAAAdAgAANwAYAAAAAAABAAAApIELsAIAY29tcG9z
aXRpbmcvYmFja2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWZsaXAtc3RkZXJyLnR4dFVUBQAD28rd
V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAABqAMUkAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADt
QXCxAgBjb21wb3NpdGluZy9wYXR0ZXJucy9VVAUAAyPL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAC4gDFJePsJRkJMAAADiwEARgAYAAAAAAABAAAApIG/sQIAY29tcG9zaXRpbmcvcGF0dGVy
bnMvZGlyZWN0LXBhdHRlcm4tY29tcG9zaXRpbmctcG9zaXRpb24tY3Jhc2gtbG9nLnR4dFVUBQAD
TMzdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIABqAMUlao59D9QAAAB0CAAA/ABgAAAAAAAEA
AACkgYH+AgBjb21wb3NpdGluZy9wYXR0ZXJucy9kaXJlY3QtcGF0dGVybi1jb21wb3NpdGluZy1z
aXplLXN0ZGVyci50eHRVVAUAAyPL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAB2fzFJAAAA
AAAAAAAAAAAAEQAYAAAAAAAAABAA7UHv/wIAY29udGVudGZpbHRlcmluZy9VVAUAA+DK3Vd1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAB2fzFJ1F2FC/IAAAAdAgAAMAAYAAAAAAABAAAApIE6AAMA
Y29udGVudGZpbHRlcmluZy9hbGxvdy1tZWRpYS1kb2N1bWVudC1zdGRlcnIudHh0VVQFAAPgyt1X
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAFoAxSQAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1B
lgEDAGNyeXB0by9VVAUAAxvL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAYgDFJAAAAAAAA
AAAAAAAAFAAYAAAAAAAAABAA7UHXAQMAY3J5cHRvL3dlYmtpdFN1YnRsZS9VVAUAAx/L3Vd1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAC4gDFJgSnMzMhNAAAFlwEANgAYAAAAAAABAAAApIElAgMA
Y3J5cHRvL3dlYmtpdFN1YnRsZS9kaXNhbGxvd2VkLWluLXdvcmtlci1jcmFzaC1sb2cudHh0VVQF
AANMzN1XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAGIAxSSM777n0AAAAHQIAACMAGAAAAAAA
AQAAAKSBXVADAGNyeXB0by93ZWJraXRTdWJ0bGUvZ2MtMi1zdGRlcnIudHh0VVQFAAMfy91XdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAOIAxSQAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1BrlED
AGNyeXB0by93b3JrZXJzL1VUBQADXMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALiAMUlj
BDDHFU8AAJWnAQA/ABgAAAAAAAEAAACkgfdRAwBjcnlwdG8vd29ya2Vycy9jcnlwdG8tcmFuZG9t
LXZhbHVlcy1saW1pdHMtd29ya2VyLWNyYXNoLWxvZy50eHRVVAUAA0zM3Vd1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACAAYgDFJnvX0n/UAAAAdAgAAOwAYAAAAAAABAAAApIGFoQMAY3J5cHRvL3dv
cmtlcnMvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMtd29ya2VyLXN0ZGVyci50eHRVVAUAAyDL
3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAC4gDFJbBHOguFMAACgkwEAOAAYAAAAAAABAAAA
pIHvogMAY3J5cHRvL3dvcmtlcnMvY3J5cHRvLXJhbmRvbS12YWx1ZXMtd29ya2VyLWNyYXNoLWxv
Zy50eHRVVAUAA0zM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAXgDFJAAAAAAAAAAAAAAAA
BQAYAAAAAAAAABAA7UFC8AMAY3NzMS9VVAUAAx3L3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAA
AAAZgDFJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UGB8AMAY3NzMS9wc2V1ZG8vVVQFAAMhy91X
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuIAxSUcfTA5ISwAAFY4BACAAGAAAAAAAAQAAAKSB
x/ADAGNzczEvcHNldWRvL2FuY2hvci1jcmFzaC1sb2cudHh0VVQFAANMzN1XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAGYAxSWtkgMH0AAAAHQIAACwAGAAAAAAAAQAAAKSBaTwEAGNzczEvcHNl
dWRvL2ZpcnN0bGV0dGVyLXN1cnJvZ2F0ZS1zdGRlcnIudHh0VVQFAAMhy91XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAYYAxSQAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1Bwz0EAGNzczIuMS9V
VAUAA6bL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAmgDFJAAAAAAAAAAAAAAAAEAAYAAAA
AAAAABAA7UEEPgQAY3NzMi4xLzIwMTEwMzIzL1VUBQADOMvdV3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIACSAMUnEUhepQwAAAEYAAABCABgAAAAAAAEAAACkgU4+BABjc3MyLjEvMjAxMTAzMjMv
aW5saW5lLWJsb2NrLW5vbi1yZXBsYWNlZC1oZWlnaHQtMDAxLWNyYXNoLWxvZy50eHRVVAUAAzPL
3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAmgDFJa3RkgvUAAAAdAgAAPwAYAAAAAAABAAAA
pIENPwQAY3NzMi4xLzIwMTEwMzIzL2lubGluZS1ibG9jay1ub24tcmVwbGFjZWQtaGVpZ2h0LTAw
Mi1zdGRlcnIudHh0VVQFAAM4y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuIAxSdGtvyla
TQAA9ZIBACkAGAAAAAAAAQAAAKSBe0AEAGNzczIuMS90MDQwMTAzLWVzY2FwZXMtMDQtYi1jcmFz
aC1sb2cudHh0VVQFAANMzN1XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAYYAxSV0ns1z3AAAA
HQIAACYAGAAAAAAAAQAAAKSBOI4EAGNzczIuMS90MDQwMTAzLWVzY2FwZXMtMDUtYy1zdGRlcnIu
dHh0VVQFAAOmy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAF4AxSRDCyC1DAAAARgAAAC8A
GAAAAAAAAQAAAKSBj48EAGNzczIuMS90MDQwMi1jNzEtZndkLXBhcnNpbmctMDMtZi1jcmFzaC1s
b2cudHh0VVQFAAMdy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAGYAxSacK+X71AAAAHQIA
ACwAGAAAAAAAAQAAAKSBO5AEAGNzczIuMS90MDQwMi1jNzEtZndkLXBhcnNpbmctMDQtZi1zdGRl
cnIudHh0VVQFAAMhy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuIAxSX3ig3MITAAAVYkB
ACoAGAAAAAAAAQAAAKSBlpEEAGNzczIuMS90MDgwNS1jNTUyMi1icmRyLTAyLWUtY3Jhc2gtbG9n
LnR4dFVUBQADTMzdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADyAMUkCDnUk9AAAAB0CAAAo
ABgAAAAAAAEAAACkgQLeBABjc3MyLjEvdDA4MDUtYzU1MjItaWJyZHItMDAtYS1zdGRlcnIudHh0
VVQFAANky91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAUYAxSQAAAAAAAAAAAAAAAAUAGAAA
AAAAAAAQAO1BWN8EAGNzczMvVVQFAAOKy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAG4Ax
SQAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1Bl98EAGNzczMvYmxlbmRpbmcvVVQFAAMmy91XdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAGYAxSfiL7RNDAAAARgAAAEcAGAAAAAAAAQAAAKSB398E
AGNzczMvYmxlbmRpbmcvYmFja2dyb3VuZC1ibGVuZC1tb2RlLWJhY2tncm91bmQtc2l6ZS1jb3Zl
ci1jcmFzaC1sb2cudHh0VVQFAAMhy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAG4AxSe1l
Go/0AAAAHQIAADkAGAAAAAAAAQAAAKSBo+AEAGNzczMvYmxlbmRpbmcvYmFja2dyb3VuZC1ibGVu
ZC1tb2RlLWJvZHktaW1hZ2Utc3RkZXJyLnR4dFVUBQADJsvdV3V4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAAByAMUkAAAAAAAAAAAAAAAARABgAAAAAAAAAEADtQQriBABjc3MzL2NvbmRpdGlvbmFs
L1VUBQADKMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACGAMUkAAAAAAAAAAAAAAAAVABgA
AAAAAAAAEADtQVXiBABjc3MzL2NvbmRpdGlvbmFsL3czYy9VVAUAAy3L3Vd1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACAAcgDFJdi6arUMAAABGAAAAMgAYAAAAAAABAAAApIGk4gQAY3NzMy9jb25k
aXRpb25hbC93M2MvYXQtc3VwcG9ydHMtMDA3LWNyYXNoLWxvZy50eHRVVAUAAyjL3Vd1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAAhgDFJV0KeC/UAAAAdAgAALwAYAAAAAAABAAAApIFT4wQAY3Nz
My9jb25kaXRpb25hbC93M2MvYXQtc3VwcG9ydHMtMDA4LXN0ZGVyci50eHRVVAUAAy3L3Vd1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAAAhgDFJAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UGx5AQA
Y3NzMy9maWx0ZXJzL1VUBQADLcvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAB2AMUmeZ7+T
QwAAAEYAAAAxABgAAAAAAAEAAACkgfjkBABjc3MzL2ZpbHRlcnMvZmlsdGVyLWFuaW1hdGlvbi1t
dWx0aS1jcmFzaC1sb2cudHh0VVQFAAMpy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAIYAx
SQ1Hxhb0AAAAHQIAACgAGAAAAAAAAQAAAKSBpuUEAGNzczMvZmlsdGVycy9maWx0ZXItYW5pbWF0
aW9uLXN0ZGVyci50eHRVVAUAAy3L3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABBgDFJAAAA
AAAAAAAAAAAADQAYAAAAAAAAABAA7UH85gQAY3NzMy9mbGV4Ym94L1VUBQADacvdV3V4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAEOAMUkAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQUPnBABjc3Mz
L2ZsZXhib3gvY3Nzd2cvVVQFAANty91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuIAxSQHM
8Y05TAAAPo0BADAAGAAAAAAAAQAAAKSBkOcEAGNzczMvZmxleGJveC9jc3N3Zy9mbGV4Ym94X2Nv
bHVtbnMtY3Jhc2gtbG9nLnR4dFVUBQADTMzdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEOA
MUmpZ8e59gAAAB0CAAA+ABgAAAAAAAEAAACkgTM0BQBjc3MzL2ZsZXhib3gvY3Nzd2cvZmxleGJv
eF9kaXJlY3Rpb24tY29sdW1uLXJldmVyc2Utc3RkZXJyLnR4dFVUBQADbcvdV3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIALiAMUnm5huoFUsAAG2KAQA4ABgAAAAAAAEAAACkgaE1BQBjc3MzL2Zs
ZXhib3gvbXVsdGlsaW5lLW1pbi1wcmVmZXJyZWQtd2lkdGgtY3Jhc2gtbG9nLnR4dFVUBQADTMzd
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEGAMUnjzslt9gAAAB0CAAA3ABgAAAAAAAEAAACk
gSiBBQBjc3MzL2ZsZXhib3gvbXVsdGlsaW5lLXJldmVyc2Utd3JhcC1iYXNlbGluZS1zdGRlcnIu
dHh0VVQFAANpy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAGIAxSUr3YBdDAAAARgAAADAA
GAAAAAAAAQAAAKSBj4IFAGNzczMvZm9udC1mZWF0dXJlLXNldHRpbmdzLXBhcnNpbmctY3Jhc2gt
bG9nLnR4dFVUBQADH8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIABqAMUm/eS6H9QAAAB0C
AAAvABgAAAAAAAEAAACkgTyDBQBjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy1yZW5kZXJpbmct
c3RkZXJyLnR4dFVUBQADJMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAEaAMUkAAAAAAAAA
AAAAAAANABgAAAAAAAAAEADtQZqEBQBjc3MzL21hc2tpbmcvVVQFAANzy91XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAQ4AxSUGzOo5DAAAARgAAADIAGAAAAAAAAQAAAKSB4YQFAGNzczMvbWFz
a2luZy9tYXNrLXJlcGVhdC1yb3VuZC1hdXRvMi1jcmFzaC1sb2cudHh0VVQFAANuy91XdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgARoAxSQ49zoP0AAAAHQIAADAAGAAAAAAAAQAAAKSBkIUFAGNz
czMvbWFza2luZy9tYXNrLXJlcGVhdC1yb3VuZC1ib3JkZXItc3RkZXJyLnR4dFVUBQADc8vdV3V4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAEOAMUkAAAAAAAAAAAAAAAAQABgAAAAAAAAAEADtQe6G
BQBjc3MzL3NlbGVjdG9yczMvVVQFAANty91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAARYAx
SQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BOIcFAGNzczMvc2VsZWN0b3JzMy9odG1sL1VUBQAD
ccvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEOAMUklSiCHQwAAAEYAAAAyABgAAAAAAAEA
AACkgYeHBQBjc3MzL3NlbGVjdG9yczMvaHRtbC9jc3MzLW1vZHNlbC03MmItY3Jhc2gtbG9nLnR4
dFVUBQADbcvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEWAMUkhMuwR9QAAAB0CAAAuABgA
AAAAAAEAAACkgTaIBQBjc3MzL3NlbGVjdG9yczMvaHRtbC9jc3MzLW1vZHNlbC03My1zdGRlcnIu
dHh0VVQFAANxy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAARoAxSQAAAAAAAAAAAAAAABYA
GAAAAAAAAAAQAO1Bk4kFAGNzczMvc2VsZWN0b3JzMy94aHRtbC9VVAUAA3PL3Vd1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAAjgDFJ0UVN4fMAAAAdAgAALgAYAAAAAAABAAAApIHjiQUAY3NzMy9z
ZWxlY3RvcnMzL3hodG1sL2NzczMtbW9kc2VsLTEtc3RkZXJyLnR4dFVUBQADMcvdV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAESAMUmZBi5oQwAAAEYAAAAzABgAAAAAAAEAAACkgT6LBQBjc3Mz
L3NlbGVjdG9yczMveGh0bWwvY3NzMy1tb2RzZWwtNDNiLWNyYXNoLWxvZy50eHRVVAUAA2/L3Vd1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABGgDFJkCMivwwBAAA6BAAALwAYAAAAAAABAAAApIHu
iwUAY3NzMy9zZWxlY3RvcnMzL3hodG1sL2NzczMtbW9kc2VsLTQ0LXN0ZGVyci50eHRVVAUAA3PL
3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABHgDFJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA
7UFjjQUAY3NzMy9zZWxlY3RvcnMzL3htbC9VVAUAA3XL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAAjgDFJn18XqfIAAAAdAgAALAAYAAAAAAABAAAApIGxjQUAY3NzMy9zZWxlY3RvcnMzL3ht
bC9jc3MzLW1vZHNlbC0xLXN0ZGVyci50eHRVVAUAAzLL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACABEgDFJSgACNUMAAABGAAAAMAAYAAAAAAABAAAApIEJjwUAY3NzMy9zZWxlY3RvcnMzL3ht
bC9jc3MzLW1vZHNlbC00Ny1jcmFzaC1sb2cudHh0VVQFAANwy91XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAR4AxSVbNu8cNAQAAOgQAAC0AGAAAAAAAAQAAAKSBto8FAGNzczMvc2VsZWN0b3Jz
My94bWwvY3NzMy1tb2RzZWwtNDgtc3RkZXJyLnR4dFVUBQADdcvdV3V4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAAFKAMUkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQSqRBQBjc3MzL3NoYXBlcy9V
VAUAA4zL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABRgDFJAAAAAAAAAAAAAAAAGgAYAAAA
AAAAABAA7UFwkQUAY3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lkZS9VVAUAA4rL3Vd1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAABUgDFJAAAAAAAAAAAAAAAAIQAYAAAAAAAAABAA7UHEkQUAY3NzMy9z
aGFwZXMvc2hhcGUtb3V0c2lkZS92YWx1ZXMvVVQFAAOPy91XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAUYAxSSt6o2xDAAAARgAAAEgAGAAAAAAAAQAAAKSBH5IFAGNzczMvc2hhcGVzL3NoYXBl
LW91dHNpZGUvdmFsdWVzL3NoYXBlLW91dHNpZGUtZWxsaXBzZS0wMTAtY3Jhc2gtbG9nLnR4dFVU
BQADisvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFSAMUnAq9RT9gAAAB0CAABFABgAAAAA
AAEAAACkgeSSBQBjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRlL3ZhbHVlcy9zaGFwZS1vdXRzaWRl
LWVsbGlwc2UtMDExLXN0ZGVyci50eHRVVAUAA4/L3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAA
AABUgDFJAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UFZlAUAY3NzMy9zaGFwZXMvc3BlYy1leGFt
cGxlcy9VVAUAA5DL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABSgDFJFj3/Z0MAAABGAAAA
OQAYAAAAAAABAAAApIGtlAUAY3NzMy9zaGFwZXMvc3BlYy1leGFtcGxlcy9zaGFwZS1vdXRzaWRl
LTAxOC1jcmFzaC1sb2cudHh0VVQFAAOMy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAVIAx
SQnx4230AAAAHQIAADYAGAAAAAAAAQAAAKSBY5UFAGNzczMvc2hhcGVzL3NwZWMtZXhhbXBsZXMv
c2hhcGUtb3V0c2lkZS0wMTktc3RkZXJyLnR4dFVUBQADkMvdV3V4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAAFmAMUkAAAAAAAAAAAAAAAAEABgAAAAAAAAAEADtQceWBQBkb20vVVQFAAOay91XdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAV4AxSQAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BBZcF
AGRvbS9odG1sL1VUBQADlcvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFeAMUkAAAAAAAAA
AAAAAAAQABgAAAAAAAAAEADtQUiXBQBkb20vaHRtbC9sZXZlbDIvVVQFAAOVy91XdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAAWYAxSQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BkpcFAGRvbS9o
dG1sL2xldmVsMi9odG1sL1VUBQADmcvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFeAMUnE
pXWLQwAAAEYAAAAxABgAAAAAAAEAAACkgeGXBQBkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MRG9j
dW1lbnQxMS1jcmFzaC1sb2cudHh0VVQFAAOVy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
WYAxSffJ2tL1AAAAHQIAAC4AGAAAAAAAAQAAAKSBj5gFAGRvbS9odG1sL2xldmVsMi9odG1sL0hU
TUxEb2N1bWVudDEyLXN0ZGVyci50eHRVVAUAA5nL3Vd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAA
AAA6gDFJAAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UHsmQUAZG9tL3N2Zy9VVAUAA2DL3Vd1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAAA6gDFJAAAAAAAAAAAAAAAADwAYAAAAAAAAABAA7UEumgUA
ZG9tL3N2Zy9sZXZlbDMvVVQFAANgy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAOoAxSQAA
AAAAAAAAAAAAABUAGAAAAAAAAAAQAO1Bd5oFAGRvbS9zdmcvbGV2ZWwzL3hwYXRoL1VUBQADYMvd
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADqAMUlUhSq/9wAAAB0CAAAvABgAAAAAAAEAAACk
gcaaBQBkb20vc3ZnL2xldmVsMy94cGF0aC9BdHRyaWJ1dGVfTm9kZXMtc3RkZXJyLnR4dFVUBQAD
YMvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGSAMUkAAAAAAAAAAAAAAAAKABgAAAAAAAAA
EADtQSacBQBkb20veGh0bWwvVVQFAAOsy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAWYAx
SQAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BapwFAGRvbS94aHRtbC9sZXZlbDEvVVQFAAOay91X
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAXIAxSQAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1B
tZwFAGRvbS94aHRtbC9sZXZlbDEvY29yZS9VVAUAA5/L3Vd1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAC4gDFJOHE2QZ9KAACghAEAOAAYAAAAAAABAAAApIEFnQUAZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU3LWNyYXNoLWxvZy50eHRVVAUAA0zM3Vd1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACABcgDFJCuFuqfUAAAAdAgAAMQAYAAAAAAABAAAApIEW6AUAZG9tL3ho
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0Y2hpbGQtc3RkZXJyLnR4dFVUBQADn8vdV3V4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAAGGAMUkAAAAAAAAAAAAAAAARABgAAAAAAAAAEADtQXbpBQBk
b20veGh0bWwvbGV2ZWwyL1VUBQADpcvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGOAMUkA
AAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQcHpBQBkb20veGh0bWwvbGV2ZWwyL2h0bWwvVVQFAAOq
y91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuIAxSQ5kFJ1wTAAAkZEBADcAGAAAAAAAAQAA
AKSBEeoFAGRvbS94aHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDA1LWNyYXNoLWxv
Zy50eHRVVAUAA0zM3Vd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABjgDFJy6Ee4PQAAAAdAgAA
NAAYAAAAAAABAAAApIHyNgYAZG9tL3hodG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50
MDYtc3RkZXJyLnR4dFVUBQADqsvdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGSAMUkAAAAA
AAAAAAAAAAARABgAAAAAAAAAEADtQVQ4BgBkb20veGh0bWwvbGV2ZWwzL1VUBQADrMvdV3V4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAAGeAMUkAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQZ84BgBk
b20veGh0bWwvbGV2ZWwzL2NvcmUvVVQFAAOxy91XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
uIAxSXdTnrlkTAAAeo4BADMAGAAAAAAAAQAAAKSB7zgGAGRvbS94aHRtbC9sZXZlbDMvY29yZS9j
ZGF0YXNlY3Rpb25zMDEtY3Jhc2gtbG9nLnR4dFVUBQADTMzdV3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAGeAMUkWdG/l9QAAAB0CAAA+ABgAAAAAAAEAAACkgcCFBgBkb20veGh0bWwvbGV2ZWwz
L2NvcmUvY2hlY2tjaGFyYWN0ZXJub3JtYWxpemF0aW9uMDEtc3RkZXJyLnR4dFVUBQADscvdV3V4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGiAMUkAAAAAAAAAAAAAAAAIABgAAAAAAAAAEADtQS2H
BgBlZGl0aW5nL1VUBQADs8vdV3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGiAMUkAAAAAAAAA
AAAAAAARABgAAAAAAAAAEADtQW+HBgBlZGl0aW5nL2RlbGV0aW5nL1VUBQADs8vdV3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAGiAMUmQ+VyMQwAAAEYAAABTABgAAAAAAAEAAACkgbqHBgBlZGl0
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
qABSRQAArdAHAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289211</attachid>
            <date>2016-09-18 14:21:06 -0700</date>
            <delta_ts>2016-09-18 14:49:25 -0700</delta_ts>
            <desc>fixed the crashes</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>161073</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAxNi0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgTWFya2VkQmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9j
YXRpb24gYW5kIG1hcmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgQ29uY3VycmVudCBHQ3MgbXVzdCBhbGxvdyBmb3IgbXV0
YXRpb24gYW5kIGFsbG9jYXRpb24gZHVyaW5nIGNvbGxlY3Rpb24uIFdlIGFscmVhZHkga25vdwor
ICAgICAgICBob3cgdG8gbXV0YXRlIGR1cmluZyBjb2xsZWN0aW9uLiBXZSBoYXZlIGEgd3JpdGUg
YmFycmllciBmb3IgdGhhdC4gQWxsb2NhdGlvbiBkdXJpbmcKKyAgICAgICAgY29sbGVjdGlvbiBp
cyBtb3JlIGludm9sdmVkOiB0aGUgY29sbGVjdG9yIG1vZGlmaWVzIHRoZSB0aGUgbWFyayBiaXRz
LCBhcyB3ZWxsIGFzIG90aGVyCisgICAgICAgIGtpbmRzIG9mIE1hcmtlZEJsb2NrIHN0YXRlLCBp
bi1wbGFjZSBkdXJpbmcgYSBjb2xsZWN0aW9uLiBUaGUgYWxsb2NhdG9yIHVzZXMgdGhhdCBzYW1l
CisgICAgICAgIE1hcmtlZEJsb2NrIHN0YXRlIHRvIGRlY2lkZSB3aGljaCByZWdpb25zIG9mIG1l
bW9yeSBhcmUgZnJlZS4gVGhpcyB3b3JrcyBpZiB0aGUgYWxsb2NhdG9yCisgICAgICAgIG5ldmVy
IHJ1bnMgd2hpbGUgdGhlIGNvbGxlY3RvciBpcyBydW5uaW5nLCBidXQgaWYgd2Ugd2FudCB0byBh
bGxvdyB0aGVtIHRvIHJ1biBhdCB0aGUgc2FtZQorICAgICAgICB0aW1lLCB0aGVuIHdlIG5lZWQg
dG8gaGF2ZSB0d28gdmVyc2lvbnMgb2YgdGhlIHN0YXRlOiBvbmUgdmVyc2lvbiBidWlsdCB1cCBi
eSB0aGUKKyAgICAgICAgY29sbGVjdG9yIGFuZCBhbm90aGVyIGNvbnN1bWVkIGJ5IHRoZSBhbGxv
Y2F0b3IuIFdlIGNsZWFyIHRoZSBjb2xsZWN0b3Igc3RhdGUgYXQgdGhlCisgICAgICAgIGJlZ2lu
bmluZyBvZiBjb2xsZWN0aW9uLCBhbmQgc3BsYXQgdGhlIGNvbGxlY3RvciBzdGF0ZSBvbnRvIHRo
ZSBhbGxvY2F0b3Igc3RhdGUgYWZ0ZXIKKyAgICAgICAgY29sbGVjdGlvbi4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgY291bGQgYmUgc3VwZXIgZXhwZW5zaXZlLCBidXQgd2UgY2FuIG1ha2UgaXQg
Y2hlYXAgd2l0aCBzb21lIGNsZXZlcm5lc3MuIFRoZSBiaWdnZXN0CisgICAgICAgIG9ic2VydmF0
aW9uIGlzIGp1c3QgdGhhdCBtb3N0IG9mIHRoZSBzdGF0ZSBpcyBhIGhhbmRmdWwgb2YgYml0cyBw
ZXIgYmxvY2s6IGlzIHRoZSBibG9jaworICAgICAgICBmcmVlLWxpc3RlZD8gaXMgaXQgY29tcGxl
dGVseSBmdWxsPyBjb21wbGV0ZWx5IGVtcHR5PyBpbiB0aGUgaW5jcmVtZW50YWwgc3dlZXBlcidz
CisgICAgICAgIHNuYXBzaG90PyBpcyBpdCByZXRpcmVkPyBpcyBpdCBpbiBlZGVuPyBUaGVyZSBp
cyBhbHNvIHN0YXRlIGluc2lkZSBibG9ja3MsIGxpa2UgdGhlIG1hcmsKKyAgICAgICAgYml0cywg
YnV0IEkgaGF2ZSBhIHNvbGlkIHBsYW4gdGhlcmUgYW5kIEknbGwgc2F2ZSBpdCBmb3IgYW5vdGhl
ciBwYXRjaC4gT25jZSB3ZSB2aWV3IHRoZQorICAgICAgICBzdGF0ZSBvZiBibG9ja3MgYXMgYml0
cywgd2UgY2FuIHB1dCB0aGF0IHN0YXRlIGludG8gYml0dmVjdG9ycywgc28gdGhhdCBpZiB0aGUg
Y29sbGVjdG9yCisgICAgICAgIG5lZWRzIHRvIHRyYW5zZm9ybSB0aGUgc3RhdGUgb2Ygc29tZSBi
bG9ja3MsIGl0IGNhbiBkbyBpdCB3aXRoIGEgc2luZ2xlIG9wZXJhdGlvbiBvdmVyCisgICAgICAg
IGJpdHZlY3RvcnMuIEkgbGlrZSB0byB0aGluayBvZiB0aGlzIGFzIDMyLXdheSBwYXJhbGxlbGl6
aW5nIGJsb2NrIG9wZXJhdGlvbnMsIHNpbmNlCisgICAgICAgIGRvaW5nIG9uZSBvcGVyYXRpb24g
b24gYSAzMi1iaXQgd29yZCBpbiBvbmUgb2YgdGhvc2UgYml0dmVjdG9ycyBpbnN0YW50bHkgYWZm
ZWN0cyAzMgorICAgICAgICBibG9ja3MuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBj
b252ZXJ0cyBhbGwgcHJldmlvdXMgY29sbGVjdGlvbnMgb2YgTWFya2VkQmxvY2tzLCBhbG9uZyB3
aXRoIHRoZSBNYXJrZWRCbG9jaworICAgICAgICBzdGF0ZSwgaW50byA4IGJpdHZlY3RvcnMgKGxp
dmUsIGVtcHR5LCBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIGVkZW4sIHVuc3dl
cHQsCisgICAgICAgIG1hcmtpbmdOb3RFbXB0eSwgYW5kIG1hcmtpbmdSZXRpcmVkKS4gVGhlIGJp
dHZlY3RvcnMgc2VwYXJhdGUgYWxsb2NhdG9yIHN0YXRlIChlbXB0eSwKKyAgICAgICAgYWxsb2Nh
dGVkLCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSBmcm9tIG1hcmtpbmcgc3RhdGUgKG1hcmtpbmdO
b3RFbXB0eSwgbWFya2luZ1JldGlyZWQpLgorICAgICAgICAKKyAgICAgICAgQXMgYSBuaWNlIHNp
ZGUtZWZmZWN0IG9mIHN3aXRjaGluZyB0byBiaXR2ZWN0b3JzLCB3ZSBnZXQgc2l6ZSBjbGFzcyBy
ZWJhbGFuY2luZyBmb3IgZnJlZS4KKyAgICAgICAgSXQgdXNlZCB0byBiZSB0aGF0IGlmIGEgTWFy
a2VkQWxsb2NhdG9yIGhhZCBhbiBlbXB0eSBibG9jaywgd2Ugd291bGQgb25seSBhbGxvdyB0aGF0
CisgICAgICAgIG1lbW9yeSB0byBiZSByZXVzZWQgYnkgYSBkaWZmZXJlbnQgTWFya2VkQWxsb2Nh
dG9yIGlmIHdlIGRpZCBhbiBpbmNyZW1lbnRhbCBzd2VlcCBvciBhCisgICAgICAgIGZ1bGwgZWFn
ZXIgc3dlZXAuIE5vdyB3ZSBodW50IGRvd24gYWxsIGRlc3RydWN0b3JsZXNzIGVtcHR5IGJsb2Nr
cyBiZWZvcmUgYWxsb2NhdGluZyBuZXcKKyAgICAgICAgTWFya2VkQmxvY2tzLiBJdCB3b3VsZCBi
ZSByZWxhdGl2ZWx5IGVhc3kgdG8gYWxzbyBodW50IGRvd24gZGVzdHJ1Y3RvciBlbXB0eSBibG9j
a3MsIGJ1dAorICAgICAgICB0aGUgdGhlb3J5IGlzIHRoYXQgdGhvc2UgbWlnaHQgYmUgZXhwZW5z
aXZlIHRvIHN3ZWVwLCBzbyBpdCBtaWdodCBzdGlsbCBiZSBiZXR0ZXIgdG8gbGVhdmUKKyAgICAg
ICAgdGhvc2UgdG8gdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIuCisgICAgICAgIAorICAgICAgICBU
aGlzIGNoYW5nZSBpcyBwZXJmLW5ldXRyYWwgYWxsIGFyb3VuZC4gSSBkaWQgc29tZSB0ZXN0cyB3
aXRoIHR3byBkaWZmZXJlbnQga2luZHMgb2YKKyAgICAgICAgYWxsb2NhdGlvbiBzdHJhdGVnaWVz
IC0gc29tZXRoaW5nIHRoYXQgaXMgc29tZXdoYXQgZWFzaWVyIHRvIGRvIG5vdyB0aGF0IHlvdSBj
YW4gbG9vayBmb3IKKyAgICAgICAgYmxvY2tzIHRoYXQgYXJlIGNhbmRpZGF0ZXMgZm9yIGFsbG9j
YXRpb24gYnkganVzdCBzY2FubmluZyBzb21lIGJpdHZlY3RvcnMuIEkgdHJpZWQgdHdvCisgICAg
ICAgIHZhcmlhbnRzOgorICAgICAgICAKKyAgICAgICAgLSBBbGxvY2F0ZSBvdXQgb2Ygbm9uLWVt
cHR5IGJsb2NrcyBmaXJzdCwgbGVhdmluZyBlbXB0eSBibG9ja3MgZm9yIGxhc3QgaW4gY2FzZSBh
CisgICAgICAgICAgZGlmZmVyZW50IGFsbG9jYXRvciBuZWVkZWQgdGhlbS4gVGhpcyBpcyBzb3J0
IG9mIGEgYmVzdC1maXQgc3RyYXRlZ3kuIEkgdHJpZWQgdGhpcworICAgICAgICAgIGZpcnN0LCBh
bmQgaXQgY2FuIGJlIGV4cHJlc3NlZCBhczoKKyAgICAgICAgICAKKyAgICAgICAgICBtX2FsbG9j
YXRpb25DdXJzb3IgPSBtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkuZmluZEJpdChtX2FsbG9jYXRp
b25DdXJzb3IsIHRydWUpCisgICAgICAgIAorICAgICAgICAtIEFsbG9jYXRlIG91dCBvZiBsb3dl
ci1pbmRleGVkIGJsb2NrcyBmaXJzdCwgdHJlYXRpbmcgZW1wdHkgYW5kIGNhbkFsbG9jYXRlQnV0
Tm90RW1wdHkKKyAgICAgICAgICBibG9ja3MgZXF1YWxseS4gVGhpcyBpcyBzb3J0IG9mIGEgZmly
c3QtZml0IHN0cmF0ZWd5LiBUaGlzIGlzIHdoYXQgSSBlbmRlZCB1cCBzZXR0bGluZworICAgICAg
ICAgIG9uLCBhbmQgaXQgY2FuIGJlIGV4cHJlc3NlZCBhczoKKyAgICAgICAgICAKKyAgICAgICAg
ICBtX2FsbG9jYXRpb25DdXJzb3IgPSAobV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IHwgbV9lbXB0
eSkuZmluZEJpdChtX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpCisgICAgICAgIAorICAgICAgICBU
aGUgYmVzdC1maXQgc3RyYXRlZ3kgbWVhbnQgMSUgcmVncmVzc2lvbnMgaW4gTG9uZ1NwaWRlciBh
bmQgT2N0YW5lIG92ZXJhbGwsIGFuZCBhIDExJQorICAgICAgICByZWdyZXNzaW9uIG9uIE9jdGFu
ZS9lYXJsZXkuIEZpcnN0LWZpdCBtZWFucyBwZXJmLW5ldXRyYWxpdHkuIE1vc3QgZ3JlYXQgYWxs
b2NhdG9ycyBza2V3CisgICAgICAgIHRvd2FyZHMgZmlyc3QtZml0IGJlY2F1c2UgaXQncyBlbXBp
cmljYWxseSBiZXR0ZXIsIHNvIHRoaXMgcmVzdWx0IGlzIG5vdCBzdXJwcmlzaW5nLgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgICogaGVhcC9DZWxsQ29udGFpbmVyLmg6
CisgICAgICAgICogaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpD
ZWxsQ29udGFpbmVyOjp2bSk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmhlYXApOgor
ICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgor
ICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjphYm91dFRvTWFyayk6CisgICAgICAgIChKU0M6
OkNlbGxDb250YWluZXI6OmlzTWFya2VkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2VsbENv
bnRhaW5lcjo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0NvbnNl
cnZhdGl2ZVJvb3RzLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlND
OjpIZWFwOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjplbmRNYXJraW5nKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpjb2xsZWN0SW1wbCk6CisgICAgICAgIChKU0M6OkhlYXA6OnNuYXBzaG90TWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkhlYXA6OnpvbWJpZnlEZWFkT2JqZWN0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrU25hcHNob3RGdW5jdG9yOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yOjpvcGVyYXRvcigpKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6cmVzZXRBbGxvY2F0b3JzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJr
ZWRDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKToK
KyAgICAgICAgKiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXBV
dGlsLmg6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpmaW5kR0NPYmplY3RQb2ludGVyc0Zvck1h
cmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwVXRpbDo6aXNQb2ludGVyR0NPYmplY3RKU0NlbGwp
OgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKiBoZWFwL0luY3Jl
bWVudGFsU3dlZXBlci5jcHA6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5j
cmVtZW50YWxTd2VlcGVyKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3
ZWVwKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jayk6
CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyk6CisgICAg
ICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKToKKyAgICAg
ICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oOgorICAgICAgICAqIGhlYXAvTGFyZ2VBbGxv
Y2F0aW9uLmg6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJrZWQpOgorICAg
ICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2VkQ29uY3VycmVudGx5KToKKyAgICAg
ICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAg
ICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6
TGFyZ2VBbGxvY2F0aW9uOjppc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJr
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjpmaW5kRW1wdHlCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6
dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OmFsbG9jYXRlSW4pOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnRy
eUFsbG9jYXRlSW4pOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xv
d0Nhc2VJbXBsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2Nh
dG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OnJlc3VtZUFsbG9jYXRpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmJlZ2lu
TWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9y
OjplbmRNYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZv
ckVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hv
dEZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmaW5k
QmxvY2tUb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzd2VlcCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQWxsb2NhdG9yOjphc3NlcnRTbmFwc2hvdEVtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpkdW1wKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkdW1wQml0
cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmV0aXJlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmaWx0ZXJOZXh0QmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dlZXApOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxv
Y2F0b3I6OmZvckVhY2hCaXRWZWN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6bmV4dEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4
dEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2Nr
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRl
ZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0
U3dlZXBNb2RlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxw
ZXJTZWxlY3RGbGlwTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnVu
c3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpI
YW5kbGU6OnNldElzRnJlZUxpc3RlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
OjpyZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9N
YXJrU2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjptYXJrQ291bnQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0VtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcik6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlTbG93
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1
cmluZ01hcmtpbmdTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6d2lsbFJlbW92ZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0ZWQpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjppbmRleCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjph
Ym91dFRvTWFyayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc09uQmxvY2tzVG9Td2VlcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNldElzT25CbG9ja3NUb1N3ZWVw
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RhdGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01h
cmtpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlw
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
OjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcEZvckVkZW5Db2xsZWN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFk
Q2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRz
U3dlZXBpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0FsbG9jYXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTWFya2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbCk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpyZXNldFZlcnNpb24pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3Bw
OgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6dHJ5
QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3dlZXApOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNsZWFyTmV3
bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmZpbmRFbXB0eUJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90
KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFzc2VydFNuYXBzaG90RW1wdHkpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZHVtcEJpdHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6em9tYmlmeVN3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OnJlc2V0QWxsb2NhdG9ycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZlcmlmeU1hcmtlZDo6
b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmbGlwKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpuZXh0VmVyc2lvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmaXJz
dEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3JFbXB0
eUFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRv
cik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpibG9ja3NXaXRoTmV3T2JqZWN0cyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzZXRJc01hcmtpbmcpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbCk6IERlbGV0ZWQuCisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6Zm9yRWFjaERlYWRDZWxsKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKToK
KyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6Om1hcmtBdXhpbGlhcnkpOgorICAgICAgICAoSlND
OjpTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogaGVhcC9XZWFrLmg6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+Pjo6ZW1wdHlWYWx1ZSk6CisgICAg
ICAgIChXVEY6Okhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+Pjo6cGVlayk6CisgICAgICAgICogaGVh
cC9XZWFrQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpXZWFrQmxvY2s6OnNwZWNpYWxpemVkVmlz
aXQpOgorICAgICAgICAoSlNDOjpXZWFrQmxvY2s6OnJlYXApOgorICAgICAgICAqIGhlYXAvV2Vh
a0lubGluZXMuaDoKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+OjplbXB0
eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+
OjpwZWVrKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVN
YXAuaDoKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvV2Vha0dDTWFwLmg6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlw
ZS5jcHA6CisKIDIwMTYtMDktMTYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICB0ZXN0MjYyOiBWYXJpb3VzIENvbnN0cnVjdG9ycyBsZW5ndGggcHJvcGVy
dGllcyBzaG91bGQgYmUgY29uZmlndXJhYmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5OCw2
ICs0OTgsOCBAQAogCQkwRjdDMzlGQjFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkEx
QzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLzsgfTsKIAkJMEY3QzM5RkQxQzhG
NjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAv
KiBERkdPcEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLzsgfTsKKwkJMEY3
QzVGQjgxRDg4OEEwQzAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjcxRDg4OEEwMTAwNDRG
NUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovOyB9OworCQkwRjdDNUZCQTFEODg5NTA3MDA0
NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3Bh
Y2VJbmxpbmVzLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbElu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAy
M0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC01NzYsNiArNTc4LDcgQEAKIAkJMEY5RkI0RjQxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNr
TGF5b3V0UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5RkI0RjIxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3Bw
ICovOyB9OwogCQkwRjlGQjRGNTE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkI0
RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCAqLzsgfTsKIAkJMEY5
RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRL
aW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEZBMTMxNzExRDhERDcyQjAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTEzMTcwMUQ4REQ3Mjkw
MEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggKi87IH07CiAJCTBGQTJDMTdCMTdEN0NG
ODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMkMxNzkxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RS
dW5uZXJVdGlscy5jcHAgKi87IH07CiAJCTBGQTJDMTdDMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0
UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQTJDMTdBMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkE1ODFCQTE1MEU5
NTJDMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2Rl
RmxhZ3MuY3BwICovOyB9OwpAQCAtMjczMSw2ICsyNzM0LDggQEAKIAkJMEY3QzM5RkExQzhGNjI5
MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdD
MzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGggPSBk
ZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI3MUQ4
ODhBMDEwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFya2VkQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGN0M1RkI5MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkU3BhY2VJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAv
KiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA4LDYgKzI4MTMs
NyBAQAogCQkwRjlGQjRGMjE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdGFja0xheW91dFBo
YXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkI0RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5
b3V0UGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RhY2tMYXlv
dXRQaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0S2luZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkExMzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBlTWFw
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b3R5cGVNYXBJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTJDMTc5MTdEN0NGODQw
MDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZBMkMxN0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVG
bGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlRmxh
Z3MuY3BwOyBwYXRoID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MzM4LDkgKzUzNDQsMTEgQEAKIAkJCQlDMkI5MTZDMTE0REEwMTRFMDBDQkFD
ODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi8sCiAJCQkJMTQyRDZGMDYxMzUzOUEyODAwQjAyRTg2
IC8qIE1hcmtlZEJsb2NrLmNwcCAqLywKIAkJCQkxNDJENkYwNzEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suaCAqLywKKwkJCQkwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2Vk
QmxvY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQxNDQ4Q0ExM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtl
ZEJsb2NrU2V0LmggKi8sCiAJCQkJMTREMkYzRDgxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNw
YWNlLmNwcCAqLywKIAkJCQkxNEQyRjNEOTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2Uu
aCAqLywKKwkJCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVz
LmggKi8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8s
CiAJCQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAogCQkJCUFE
REIxRjYyMThENzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi8sCkBAIC02MDc2LDYg
KzYwODQsNyBAQAogCQkJCTY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi8s
CiAJCQkJMTREODQ0QTIxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlwZU1hcC5jcHAgKi8sCiAJ
CQkJMTREODQ0QTMxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlwZU1hcC5oICovLAorCQkJCTBG
QTEzMTcwMUQ4REQ3MjkwMEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggKi8sCiAJCQkJ
NzlCMDBDQjgxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuY3BwICovLAogCQkJ
CTc5QjAwQ0I5MUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggKi8sCiAJCQkJ
NzlCMDBDQkExQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5T2JqZWN0LmNwcCAqLywKQEAgLTczOTQs
NiArNzQwMyw3IEBACiAJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5j
eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjE4MTZEMDJFQjIwMDU1QTVEQiAvKiBE
RkdBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTQ2MTUzNENCQUYwMDBGOTQ1
NiAvKiBERkdBcmd1bWVudFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDNUZCODFE
ODg4QTBDMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJERDgxMjFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTQxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0Fy
Z3VtZW50c1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIxODc3NTA1NjAw
ODNCNjg3IC8qIERGR0FyaXRoTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODg3LDYgKzc4OTcs
NyBAQAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMy
QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTEzMTcxMUQ4REQ3MkIwMEVDMTMwQSAvKiBQ
cm90b3R5cGVNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMDE3QjZCNUFC
MDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFG
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIw
MjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtNzkxMSw2ICs3OTIyLDcgQEAKIAkJCQlBNTAzRkEyQTE4OEYxMDU5MDAxMTBGMTQgLyog
SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlB
MjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUxM0U1QzAxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjdDNUZCQTFEODg5NTA3MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyog
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0NDJD
QjI1MUE2Q0RCOEMwMDVEM0Q3QyAvKiBKU0lucHV0cy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19n
ZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJu
YWxzX3dyYXBwZXJfaGVhZGVyLnB5CShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3Jh
cHBlcl9oZWFkZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDggQEAgY2xhc3MgQnVp
bHRpbnNJbnRlcm5hbHNXcmFwcGVySGVhZGVyR2VuZQogCiAgICAgZGVmIGdlbmVyYXRlX3NlY29u
ZGFyeV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CiAgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsK
LSAgICAgICAgICAgIChbIldlYkNvcmUiXSwKLSAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRD
b3JlIiwgInJ1bnRpbWUvVk0uaCIpLAotICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldl
YkNvcmUiXSwgKCJKYXZhU2NyaXB0Q29yZSIsICJoZWFwL1dlYWtJbmxpbmVzLmgiKSksCisgICAg
ICAgICAgICAoWyJXZWJDb3JlIl0sICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIikp
CiAgICAgICAgIF0KICAgICAgICAgZm9yIG9iamVjdCBpbiBzZWxmLmludGVybmFsczoKICAgICAg
ICAgICAgIGhlYWRlcl9pbmNsdWRlcy5hcHBlbmQoKFsiV2ViQ29yZSJdLCAoIldlYkNvcmUiLCBv
YmplY3Qub2JqZWN0X25hbWUgKyAiQnVpbHRpbnMuaCIpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRT
cGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm90ZWN0Lmgi
CiAjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9DZWxsQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ2VsbENvbnRhaW5lci5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsy
OSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBDZWxs
OwogY2xhc3MgTGFyZ2VBbGxvY2F0aW9uOwogY2xhc3MgTWFya2VkQmxvY2s7CiBjbGFzcyBXZWFr
U2V0OworY2xhc3MgVk07CiAKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKQEAgLTU2
LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCisgICAgVk0qIHZtKCkgY29u
c3Q7CisgICAgSGVhcCogaGVhcCgpIGNvbnN0OworICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fZW5jb2RlZFBvaW50ZXI7IH0KICAgICAKICAgICBi
b29sIGlzTWFya2VkQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRQb2ludGVyICYmICEo
bV9lbmNvZGVkUG9pbnRlciAmIGlzTGFyZ2VBbGxvY2F0aW9uQml0KTsgfQpAQCAtNzMsMTMgKzc4
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8TGFyZ2VBbGxvY2F0
aW9uKj4obV9lbmNvZGVkUG9pbnRlciAtIGlzTGFyZ2VBbGxvY2F0aW9uQml0KTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24pOwotICAgIHZvaWQgZmxp
cElmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lvbik7CiAgICAg
Ym9vbCBuZWVkc0ZsaXAoKSBjb25zdDsKICAgICAKLSAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7
CiAgICAgYm9vbCBpc01hcmtlZChIZWFwQ2VsbCopIGNvbnN0OworICAgIGJvb2wgaXNNYXJrZWQo
SGVhcFZlcnNpb24sIEhlYXBDZWxsKikgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlB
bGxvY2F0ZWQoSGVhcENlbGwqKSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSBjb25zdDsKICAgICAKICAgICB2b2lkIG5vdGVN
YXJrZWQoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q2VsbENvbnRhaW5lcklubGluZXMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTQgKzI5LDIwIEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJWTS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoKSBj
b25zdAoraW5saW5lIFZNKiBDZWxsQ29udGFpbmVyOjp2bSgpIGNvbnN0CiB7CiAgICAgaWYgKGlz
TGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtYXJr
ZWRCbG9jaygpLmhhbmRsZSgpLmlzTWFya2VkKCk7CisgICAgICAgIHJldHVybiBsYXJnZUFsbG9j
YXRpb24oKS52bSgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLnZtKCk7Cit9CisKK2lubGlu
ZSBIZWFwKiBDZWxsQ29udGFpbmVyOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJnZtKCkt
PmhlYXA7CiB9CiAKIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXBDZWxs
KiBjZWxsKSBjb25zdApAQCAtNDYsNiArNTIsMTMgQEAgaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5l
cjo6aXNNYXJrZWQoSGVhcAogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkKGNlbGwp
OwogfQogCitpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwVmVyc2lvbiB2
ZXJzaW9uLCBIZWFwQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaXNMYXJnZUFsbG9jYXRp
b24oKSkKKyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CisgICAg
cmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJrZWQodmVyc2lvbiwgY2VsbCk7Cit9CisKIGlubGlu
ZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCog
Y2VsbCkgY29uc3QKIHsKICAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKQEAgLTUzLDYgKzY2
LDEzIEBAIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXcKICAgICByZXR1
cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiB9CiAKK2lu
bGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVy
c2lvbiB2ZXJzaW9uLCBIZWFwQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaXNMYXJnZUFs
bG9jYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZCgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZCh2ZXJzaW9uLCBjZWxsKTsKK30KKwogaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5l
cjo6bm90ZU1hcmtlZCgpCiB7CiAgICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlvbigpKQpAQCAtNzMs
MTYgKzkzLDEwIEBAIGlubGluZSBXZWFrU2V0JiBDZWxsQ29udGFpbmVyOjp3ZWFrU2V0KCkKICAg
ICByZXR1cm4gbWFya2VkQmxvY2soKS53ZWFrU2V0KCk7CiB9CiAKLWlubGluZSB2b2lkIENlbGxD
b250YWluZXI6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAg
ICBpZiAoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIG1hcmtlZEJsb2NrKCkuZmxpcElm
TmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLX0KLQotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6
ZmxpcElmTmVjZXNzYXJ5KCkKK2lubGluZSB2b2lkIENlbGxDb250YWluZXI6OmFib3V0VG9NYXJr
KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24o
KSkKLSAgICAgICAgbWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgbWFy
a2VkQmxvY2soKS5hYm91dFRvTWFyayhoZWFwVmVyc2lvbik7CiB9CiAKIGlubGluZSBib29sIENl
bGxDb250YWluZXI6Om5lZWRzRmxpcCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRC
bG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlIDx3dGYvT1NB
bGxvY2F0b3IuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwu
aCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1By
b2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN1cGVyU2Ft
cGxlci5oIgpAQCAtNTI2LDExICs1MjcsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAg
ICAgfQogICAgIAogICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Nj
b3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1fb2JqZWN0
U3BhY2UuZmxpcCgpOworICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUo
KnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29iamVjdFNw
YWNlLmJlZ2luTWFya2luZygpOwogICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElz
TWFya2luZyh0cnVlKTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNl
dCgpCkBAIC03NzksNyArNzc4LDcgQEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAgICBBU1NF
UlQobV9zaGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXJzLnJlbW92ZUFsbCgpOwogICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5n
KGZhbHNlKTsKKyAgICBtX29iamVjdFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6ZV90IEhl
YXA6Om9iamVjdENvdW50KCkKQEAgLTkzOSw3ICs5MzgsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RB
bGxHYXJiYWdlKCkKICAgICAgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAgICBtX29i
amVjdFNwYWNlLnNocmluaygpOwogICAgIH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBzaG90Lmlz
RW1wdHkoKSk7CisgICAgbV9vYmplY3RTcGFjZS5hc3NlcnROb1Vuc3dlcHQoKTsKIAogICAgIHN3
ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiB9CkBAIC0xMDM5LDcgKzEwMzgsNyBA
QCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAgcmVhcFdlYWtI
YW5kbGVzKCk7CiAgICAgcHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWFwcygpOwogICAgIHN3
ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAgc25hcHNob3RNYXJrZWRTcGFjZSgpOworICAgIHNuYXBz
aG90VW5zd2VwdCgpOwogICAgIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKICAg
ICByZW1vdmVEZWFkQ29tcGlsZXJXb3JrbGlzdEVudHJpZXMoKTsKICAgICBkZWxldGVVbm1hcmtl
ZENvbXBpbGVkQ29kZSgpOwpAQCAtMTA0OCw3ICsxMDQ3LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwog
ICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKIAotICAgIHJl
c2V0QWxsb2NhdG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdXBkYXRl
QWxsb2NhdGlvbkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUp
OwogICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTA2Myw2ICsxMDYyLDExIEBAIE5F
VkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXAKICAgICAgICAgZG91YmxlIGFm
dGVyID0gY3VycmVudFRpbWVNUygpOwogICAgICAgICBkYXRhTG9nKGFmdGVyIC0gYmVmb3JlLCAi
IG1zXVxuIik7CiAgICAgfQorICAgIAorICAgIGlmIChmYWxzZSkgeworICAgICAgICBkYXRhTG9n
KCJIZWFwIHN0YXRlIGFmdGVyIEdDOlxuIik7CisgICAgICAgIG1fb2JqZWN0U3BhY2UuZHVtcEJp
dHMoKTsKKyAgICB9CiB9CiAKIHZvaWQgSGVhcDo6c3dlZXBMYXJnZUFsbG9jYXRpb25zKCkKQEAg
LTExNjIsNDQgKzExNjYsMTAgQEAgdm9pZCBIZWFwOjpzd2VlcEFycmF5QnVmZmVycygpCiAgICAg
bV9hcnJheUJ1ZmZlcnMuc3dlZXAoKTsKIH0KIAotc3RydWN0IE1hcmtlZEJsb2NrU25hcHNob3RG
dW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgTWFya2VkQmxv
Y2tTbmFwc2hvdEZ1bmN0b3IoVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tzKSAK
LSAgICAgICAgOiBtX2luZGV4KDApIAotICAgICAgICAsIG1fYmxvY2tzKGJsb2NrcykKLSAgICB7
Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KSBjb25zdAotICAgIHsKLSAgICAgICAgYmxvY2stPnNldElzT25CbG9ja3NUb1N3ZWVwKHRydWUp
OwotICAgICAgICBtX2Jsb2Nrc1ttX2luZGV4KytdID0gYmxvY2s7Ci0gICAgfQotCi0gICAgLy8g
RklYTUU6IFRoaXMgaXMgYSBtdXRhYmxlIGZpZWxkIGJlY2F1ZSB0aGlzIGlzbid0IGEgQysrIGxh
bWJkYS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5
NjQ0Ci0gICAgbXV0YWJsZSBzaXplX3QgbV9pbmRleDsKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6
OkhhbmRsZSo+JiBtX2Jsb2NrczsKLX07Ci0KLXZvaWQgSGVhcDo6c25hcHNob3RNYXJrZWRTcGFj
ZSgpCit2b2lkIEhlYXA6OnNuYXBzaG90VW5zd2VwdCgpCiB7Ci0gICAgVGltaW5nU2NvcGUgdGlt
aW5nU2NvcGUoKnRoaXMsICJIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlIik7Ci0gICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHJlbmFtZWQuIEl0J3Mgbm90IGFjdHVhbGx5IHNu
YXBzaG90dGluZyBhbGwgb2YgTWFya2VkU3BhY2UuCi0gICAgLy8gVGhpcyBpcyB1c2VkIGJ5IElu
Y3JlbWVudGFsU3dlZXBlciwgc28gaXQgb25seSBuZWVkcyB0byBzbmFwc2hvdCBibG9ja3MuIEhv
d2V2ZXIsIGlmIHdlIGV2ZXIKLSAgICAvLyB3YW50ZWQgdG8gYWRkIG90aGVyIHNuYXBzaG90dGlu
ZyBsb2dpbiwgd2UnZCBwcm9iYWJseSBwdXQgaXQgaGVyZS4KLSAgICAKLSAgICBpZiAobV9vcGVy
YXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIGZvciAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogaGFuZGxlIDogbV9vYmplY3RTcGFjZS5ibG9ja3NXaXRoTmV3T2JqZWN0
cygpKSB7Ci0gICAgICAgICAgICBpZiAoaGFuZGxlLT5pc09uQmxvY2tzVG9Td2VlcCgpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbV9ibG9ja1NuYXBzaG90LmFwcGVu
ZChoYW5kbGUpOwotICAgICAgICAgICAgaGFuZGxlLT5zZXRJc09uQmxvY2tzVG9Td2VlcCh0cnVl
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fYmxvY2tTbmFwc2hvdC5yZXNp
emVUb0ZpdChtX29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgpLnNpemUoKSk7Ci0gICAgICAgIE1h
cmtlZEJsb2NrU25hcHNob3RGdW5jdG9yIGZ1bmN0b3IobV9ibG9ja1NuYXBzaG90KTsKLSAgICAg
ICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgfQorICAgIFRpbWlu
Z1Njb3BlIHRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6c25hcHNob3RVbnN3ZXB0Iik7CisgICAg
bV9vYmplY3RTcGFjZS5zbmFwc2hvdFVuc3dlcHQoKTsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVT
b3VyY2VQcm92aWRlckNhY2hlcygpCkBAIC0xMjIyLDkgKzExOTIsOSBAQCB2b2lkIEhlYXA6Ondy
aXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluCiAgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJp
ZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKHRoaXMpOwogfQogCi12b2lkIEhlYXA6OnJl
c2V0QWxsb2NhdG9ycygpCit2b2lkIEhlYXA6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKLSAg
ICBtX29iamVjdFNwYWNlLnJlc2V0QWxsb2NhdG9ycygpOworICAgIG1fb2JqZWN0U3BhY2UucHJl
cGFyZUZvckFsbG9jYXRpb24oKTsKIH0KIAogdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGlt
aXRzKCkKQEAgLTE0NzMsNyArMTQ0Myw3IEBAIHB1YmxpYzoKIHZvaWQgSGVhcDo6em9tYmlmeURl
YWRPYmplY3RzKCkKIHsKICAgICAvLyBTd2VlcCBub3cgYmVjYXVzZSBkZXN0cnVjdG9ycyB3aWxs
IGNyYXNoIG9uY2Ugd2UncmUgem9tYmlmaWVkLgotICAgIG1fb2JqZWN0U3BhY2Uuem9tYmlmeVN3
ZWVwKCk7CisgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgIEhlYXBJdGVyYXRpb25TY29w
ZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENl
bGwoaXRlcmF0aW9uU2NvcGUsIFpvbWJpZnkoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNywxMSArMzI3LDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZWFwV2Vha0hhbmRsZXMoKTsKICAgICB2b2lkIHBydW5lU3RhbGVFbnRyaWVzRnJv
bVdlYWtHQ01hcHMoKTsKICAgICB2b2lkIHN3ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAgdm9pZCBz
bmFwc2hvdE1hcmtlZFNwYWNlKCk7CisgICAgdm9pZCBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICB2
b2lkIGRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1l
bnRhbFN3ZWVwZXIoKTsKICAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0Nv
ZGVCbG9ja3MoKTsKLSAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFy
ZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAg
IHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwogICAgIHZvaWQgY2xlYXJV
bm1hcmtlZEV4ZWN1dGFibGVzKCk7CkBAIC00MjIsNyArNDIyLDYgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsKICAg
ICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICBWZWN0
b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tTbmFwc2hvdDsKIAogICAgIFZlY3RvcjxI
ZWFwT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw5ICs4MSw4IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZChjb25zdCAKICAgICBpZiAoY2VsbC0+
aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlv
bigpLmlzTWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxv
Y2soKTsKLSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3Bh
Y2UoKS52ZXJzaW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGJsb2Nr
LmlzTWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5pc01hcmtlZCgKKyAgICAgICAgYmxv
Y2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseShjb25zdCB2b2lkKiByYXdD
ZWxsKQpAQCAtOTIsMTAgKzkxLDggQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2Vk
Q29uY3VycgogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1
cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYg
YmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGlmIChibG9jay5uZWVkc0ZsaXAoYmxv
Y2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICByZXR1cm4gYmxvY2suaXNNYXJr
ZWQoY2VsbCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkQ29uY3VycmVudGx5KAorICAgICAg
ICBibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKIH0KIAog
QUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQoSGVhcFZlcnNpb24gdmVy
c2lvbiwgY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTEwNCw3ICsxMDEsNyBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgSGVhcDo6dGVzdEFuZFNldE1hcmtlCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxv
Y2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS50ZXN0QW5k
U2V0TWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2so
KTsKLSAgICBibG9jay5mbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKHZlcnNpb24pOworICAg
IGJsb2NrLmFib3V0VG9NYXJrKHZlcnNpb24pOwogICAgIHJldHVybiBibG9jay50ZXN0QW5kU2V0
TWFya2VkKGNlbGwpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwVXRpbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBV
dGlsLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBVdGlsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDggQEAgcHVibGljOgogICAgICAg
ICAgICAgaWYgKCFmaWx0ZXIucnVsZU91dChiaXR3aXNlX2Nhc3Q8Qml0cz4ocHJldmlvdXNDYW5k
aWRhdGUpKQogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0NhbmRpZGF0
ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtp
bmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXND
YW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7CiAgICAgICAgICAgICAgICAg
cHJldmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5o
YW5kbGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYg
KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHByZXZpb3VzUG9pbnRlcikp
CisgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVD
ZWxsKGhlYXBWZXJzaW9uLCBwcmV2aW91c1BvaW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBm
dW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDEw
ICs5OCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFzZXQuY29udGFpbnMoY2FuZGlkYXRlKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElm
TmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLQogICAgICAgICBhdXRvIHRyeVBvaW50ZXIgPSBbJl0g
KHZvaWQqIHBvaW50ZXIpIHsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlz
TGl2ZUNlbGwocG9pbnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5p
c0xpdmVDZWxsKGhlYXBWZXJzaW9uLCBwb2ludGVyKSkKICAgICAgICAgICAgICAgICBmdW5jKHBv
aW50ZXIpOwogICAgICAgICB9OwogICAgIApAQCAtMTcwLDcgKzE2Nyw2IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtpbmQoKSAhPSBIZWFwQ2VsbDo6SlND
ZWxsKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgY2FuZGlk
YXRlLT5mbGlwSWZOZWNlc3NhcnkoKTsKICAgICAgICAgaWYgKCFjYW5kaWRhdGUtPmhhbmRsZSgp
LmlzTGl2ZUNlbGwocG9pbnRlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCShy
ZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZp
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJh
dGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAg
c3RhdGljIGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVNdWx0aXBsaWVyIAogI2lmIFVTRShDRikKIElu
Y3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXAsIENGUnVuTG9v
cFJlZiBydW5Mb29wKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCksIHJ1bkxvb3ApCi0gICAg
LCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQorICAgICwgbV9jdXJyZW50
QWxsb2NhdG9yKG51bGxwdHIpCiB7CiB9CiAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBJbmNyZW1l
bnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICNlbGlmIFBMQVRGT1JNKEVGTCkKIEluY3JlbWVu
dGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXApCiAgICAgOiBIZWFwVGlt
ZXIoaGVhcC0+dm0oKSkKLSAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25hcHNo
b3QpCisgICAgLCBtX2N1cnJlbnRBbGxvY2F0b3IobnVsbHB0cikKIHsKIH0KIApAQCAtODYsNyAr
ODYsNyBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogI2VsaWYgVVNF
KEdMSUIpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFw
KQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVh
cC0+bV9ibG9ja1NuYXBzaG90KQorICAgICwgbV9jdXJyZW50QWxsb2NhdG9yKG51bGxwdHIpCiB7
CiB9CiAKQEAgLTEyMSwxOSArMTIxLDIwIEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3
ZWVwKGRvdWJsZSAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmxvY2tzVG9Td2Vl
cC5jbGVhcigpOwogICAgIGNhbmNlbFRpbWVyKCk7CiB9CiAKIGJvb2wgSW5jcmVtZW50YWxTd2Vl
cGVyOjpzd2VlcE5leHRCbG9jaygpCiB7Ci0gICAgd2hpbGUgKCFtX2Jsb2Nrc1RvU3dlZXAuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3NU
b1N3ZWVwLnRha2VMYXN0KCk7Ci0gICAgICAgIGJsb2NrLT5zZXRJc09uQmxvY2tzVG9Td2VlcChm
YWxzZSk7Ci0KLSAgICAgICAgaWYgKCFibG9jay0+bmVlZHNTd2VlcGluZygpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG51bGxwdHI7
CisgICAgCisgICAgZm9yICg7IG1fY3VycmVudEFsbG9jYXRvcjsgbV9jdXJyZW50QWxsb2NhdG9y
ID0gbV9jdXJyZW50QWxsb2NhdG9yLT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgYmxvY2sg
PSBtX2N1cnJlbnRBbGxvY2F0b3ItPmZpbmRCbG9ja1RvU3dlZXAoKTsKKyAgICAgICAgaWYgKGJs
b2NrKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChibG9jaykgewog
ICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MobV92bS0+aGVhcCk7CiAgICAgICAgIGJs
b2NrLT5zd2VlcCgpOwogICAgICAgICBtX3ZtLT5oZWFwLm9iamVjdFNwYWNlKCkuZnJlZU9yU2hy
aW5rQmxvY2soYmxvY2spOwpAQCAtMTQ2LDExICsxNDcsMTIgQEAgYm9vbCBJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dl
ZXBpbmcoKQogewogICAgIHNjaGVkdWxlVGltZXIoKTsKKyAgICBtX2N1cnJlbnRBbGxvY2F0b3Ig
PSBtX3ZtLT5oZWFwLm9iamVjdFNwYWNlKCkuZmlyc3RBbGxvY2F0b3IoKTsKIH0KIAogdm9pZCBJ
bmNyZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2VlcGluZygpCiB7Ci0gICAgbV9ibG9ja3NU
b1N3ZWVwLmNsZWFyKCk7CisgICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbnVsbHB0cjsKICAgICBp
ZiAobV92bSkKICAgICAgICAgY2FuY2VsVGltZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZpc2lvbiAyMDYwMzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDEyIEBACiAjZGVmaW5lIEluY3JlbWVudGFsU3dlZXBl
cl9oCiAKICNpbmNsdWRlICJIZWFwVGltZXIuaCIKLSNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7
Ci1jbGFzcyBNYXJrZWRCbG9jazsKK2NsYXNzIE1hcmtlZEFsbG9jYXRvcjsKIAogY2xhc3MgSW5j
cmVtZW50YWxTd2VlcGVyIDogcHVibGljIEhlYXBUaW1lciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC01Niw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRp
bWVyKCk7CiAgICAgdm9pZCBjYW5jZWxUaW1lcigpOwogICAgIAotICAgIFZlY3RvcjxNYXJrZWRC
bG9jazo6SGFuZGxlKj4mIG1fYmxvY2tzVG9Td2VlcDsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1f
Y3VycmVudEFsbG9jYXRvcjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw5ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc05ld2x5QWxsb2NhdGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc05ld2x5QWxsb2NhdGVkOyB9CiAgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzTWFya2VkKCkgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29y
ZGVyX3JlbGF4ZWQpOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2VkKEhlYXBDZWxs
KikgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9
CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9u
LCBIZWFwQ2VsbCopIHsgcmV0dXJuIG1faXNNYXJrZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsgfQogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCkgeyByZXR1cm4g
aXNNYXJrZWQoKSB8fCBpc05ld2x5QWxsb2NhdGVkKCk7IH0KICAgICBib29sIGlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChIZWFwQ2VsbCopIHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRl
ZCgpOyB9Ci0gICAgYm9vbCBpc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiwg
SGVhcENlbGwqKSB7IHJldHVybiBpc01hcmtlZCgpOyB9CiAgICAgYm9vbCBpc0xpdmUoKSB7IHJl
dHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsgfQogICAgIAogICAgIGJvb2wgaGFzVmFs
aWRDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWYWxpZENlbGw7IH0KQEAgLTEwNiw4ICsxMDcs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmli
dXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgIAotICAgIHZvaWQgZmxp
cElmTmVjZXNzYXJ5KHVpbnQ2NF90KSB7IH0KLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmlu
Z01hcmtpbmcodWludDY0X3QpIHsgfQorICAgIHZvaWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24p
IHsgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKCkKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUg
IlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogTWFya2VkQWxsb2NhdG9y
OjpNYXJrZWRBbGxvY2F0b3IoSGVhcCogaGVhcCwgTWFya2VkU3BhY2UqIG1hcmtlZFNwYWNlLCBz
aXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiAg
ICAgOiBtX2N1cnJlbnRCbG9jaygwKQogICAgICwgbV9sYXN0QWN0aXZlQmxvY2soMCkKLSAgICAs
IG1fbmV4dEJsb2NrVG9Td2VlcChudWxscHRyKQogICAgICwgbV9jZWxsU2l6ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY2VsbFNpemUpKQogICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCiAg
ICAgLCBtX2hlYXAoaGVhcCkKQEAgLTUwLDExICs1MCwxMyBAQCBNYXJrZWRBbGxvY2F0b3I6Ok1h
cmtlZEFsbG9jYXRvcihIZWFwKiBoCiBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChk
b3VibGUgZGVhZGxpbmUpCiB7CiAgICAgdW5zaWduZWQgaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sg
PSAwOwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja0xpc3QuYmVnaW4o
KTsKLSAgICB3aGlsZSAoYmxvY2spIHsKLSAgICAgICAgYmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2so
YmxvY2stPm5leHQoKSk7Ci0gICAgICAgIGlmIChibG9jaykKLSAgICAgICAgICAgIGJsb2NrLT5m
bGlwSWZOZWNlc3NhcnkoKTsgLy8gRm9yY2VzIHVzIHRvIHRvdWNoIHRoZSBtZW1vcnkgb2YgdGhl
IGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVjdC4KKyAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgbV9ibG9ja3Muc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3NbaW5kZXhdOworICAgICAgICBpZiAoYmxv
Y2spIHsKKyAgICAgICAgICAgIC8vIEZvcmNlcyB1cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRo
ZSBibG9jaywgYnV0IGhhcyBubyBzZW1hbnRpYyBlZmZlY3QuCisgICAgICAgICAgICBpZiAoYmxv
Y2stPm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAgIGJsb2NrLT5ibG9jaygpLnJlc2V0VmVy
c2lvbigpOworICAgICAgICB9CiAgICAgICAgICsraXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2s7CiAg
ICAgICAgIGlmIChpdGVyc1NpbmNlTGFzdFRpbWVDaGVjayA+PSBIZWFwOjpzX3RpbWVDaGVja1Jl
c29sdXRpb24pIHsKICAgICAgICAgICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCk7CkBAIC02Niw4NCArNjgsODAgQEAgYm9vbCBNYXJrZWRB
bGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBNYXJrZWRBbGxvY2F0b3I6OnJldGlyZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKLXsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOyAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIGlu
IHBhcmFsbGVsIGR1cmluZyBHQy4KLSAgICBpZiAoYmxvY2sgPT0gbV9jdXJyZW50QmxvY2spIHsK
LSAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gdGhlIG11dGF0b3IgaXMgcnVubmluZy4gV2Ug
ZmluaXNoZWQgYSBmdWxsIEdDIGFuZCBtYXJrZWQgdG9vIGZldyB0aGluZ3MKLSAgICAgICAgLy8g
dG8gcmV0aXJlLiBUaGVuIHdlIHN0YXJ0ZWQgYWxsb2NhdGluZyBpbiB0aGlzIGJsb2NrLiBUaGVu
IGEgYmFycmllciByYW4sIHdoaWNoIG1hcmtlZCBhbgotICAgICAgICAvLyBvYmplY3QgaW4gdGhp
cyBibG9jaywgd2hpY2ggcHV0IGl0IG92ZXIgdGhlIHJldGlyZW1lbnQgdGhyZXNob2xkLiBJdCdz
IE9LIHRvIHNpbXBseSBkbwotICAgICAgICAvLyBub3RoaW5nIGluIHRoYXQgY2FzZS4KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoYmxvY2sgPT0gbV9sYXN0QWN0aXZlQmxvY2spIHsK
LSAgICAgICAgLy8gVGhpcyBjYW4gZWFzaWx5IGhhcHBlbiBkdXJpbmcgbWFya2luZy4gSXQgd291
bGQgYmUgZWFzeSB0byBoYW5kbGUgdGhpcyBjYXNlLCBidXQgaXQncwotICAgICAgICAvLyBqdXN0
IGFzIGVhc3kgdG8gaWdub3JlIGl0LgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJFTEVB
U0VfQVNTRVJUKGJsb2NrLT5pc09uTGlzdCgpKTsKLSAgICBpZiAoYmxvY2sgPT0gbV9uZXh0Qmxv
Y2tUb1N3ZWVwKQotICAgICAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBmaWx0ZXJOZXh0QmxvY2so
YmxvY2stPm5leHQoKSk7Ci0gICAgYmxvY2stPnJlbW92ZSgpOwotICAgIG1fcmV0aXJlZEJsb2Nr
cy5wdXNoKGJsb2NrKTsKLX0KLQotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9y
OjpmaWx0ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCitNYXJrZWRCbG9j
azo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJsb2NrKCkKIHsKLSAgICBpZiAo
YmxvY2sgPT0gbV9ibG9ja0xpc3QuZW5kKCkpCisgICAgbV9lbXB0eUN1cnNvciA9IG1fZW1wdHku
ZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKKyAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBt
X2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBibG9j
azsKLX0KLQotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dlZXAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spCi17Ci0gICAgbV9uZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVy
TmV4dEJsb2NrKGJsb2NrKTsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV9lbXB0eUN1cnNvcl07CiB9
CiAKIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0lt
cGwoKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsK
ICAgICAKLSAgICBpZiAobV9jdXJyZW50QmxvY2spIHsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVu
dEJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCk7CisgICAgaWYgKG1fY3VycmVudEJsb2NrKQog
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7Ci0gICAgICAgIHNl
dE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAgfQogICAgIAog
ICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQobV9uZXh0
QmxvY2tUb1N3ZWVwICE9IG1fYmxvY2tMaXN0LmVuZCgpKTsKLQotICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiYgYmxvY2sgPSBtX25l
eHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgbmV4dCA9IGZp
bHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAgICAvLyBJdCB3b3VsZCBiZSBz
dXBlciB3ZWlyZCBpZiB0aGUgYmxvY2tzIHdlIGFyZSBzd2VlcGluZyBoYXZlIGFueXRoaW5nIGFs
bG9jYXRlZCBkdXJpbmcgdGhpcwotICAgICAgICAvLyBjeWNsZS4KLSAgICAgICAgQVNTRVJUKCFi
bG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAgIAotICAgICAgICBGcmVlTGlz
dCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJl
ZUxpc3QpOworICAgIG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsKKyAgICAKKyAgICBmb3IgKDs7
KSB7CisgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9jYXRlQnV0Tm90RW1w
dHkgfCBtX2VtcHR5KS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAg
IGlmIChtX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24g
YSBjb21wbGV0ZS1mdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0
Ci0gICAgICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8g
aXQgc29tZXRpbWVzLgotICAgICAgICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOwotICAgICAgICAg
ICAgYmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLT5pc01hcmtlZCgpKTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBzZXRJc0NhbkFsbG9jYXRlQnV0
Tm90RW1wdHkobV9hbGxvY2F0aW9uQ3Vyc29yLCBmYWxzZSk7CiAKLSAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBibG9jazsKLSAgICAgICAgc2V0RnJlZUxpc3QoZnJlZUxpc3QpOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4obV9ibG9ja3Nb
bV9hbGxvY2F0aW9uQ3Vyc29yXSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
ICAgICAKLSAgICBpZiAoIW1fZnJlZUxpc3QpIHsKLSAgICAgICAgbV9jdXJyZW50QmxvY2sgPSAw
OwotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoT3B0aW9uczo6bG9va0ZvckVtcHR5QmxvY2tz
SW5PdGhlckFsbG9jYXRvcnMoKSkgeworICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2sgPSBtX21hcmtlZFNwYWNlLT5maW5kRW1wdHlCbG9jaygpKSB7CisgICAgICAgICAgICBi
bG9jay0+c3dlZXAoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSXQncyBnb29kIHRo
YXQgdGhpcyBjbGVhcnMgY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBhcyB3ZWxsIGFzIGFsbCBvdGhl
ciBiaXRzLAorICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBhIHJlbW90ZSBjaGFuY2Ug
dGhhdCBhIGJsb2NrIG1heSBoYXZlIGJvdGggY2FuQWxsb2NhdGVCdXROb3RFbXB0eQorICAgICAg
ICAgICAgLy8gYW5kIGVtcHR5IHNldCBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICAgICAgYmxv
Y2stPnJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgICAgIGFkZEJsb2NrKGJsb2NrKTsK
KyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZUluKGJsb2NrKTsKKyAgICAgICAgfQogICAgIH0K
KyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAordm9pZCogTWFya2VkQWxsb2NhdG9yOjph
bGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIHZvaWQqIHJlc3Vs
dCA9IHRyeUFsbG9jYXRlSW4oYmxvY2spOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0
ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIEFTU0VSVChibG9jayk7Cisg
ICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgQVNTRVJUKCFi
bG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxv
Y2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgCisg
ICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGVseSBmdWxsIGJsb2Nr
LiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0CisgICAgLy8gdGhhdCBhbGdvcml0
aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCisgICAgaWYgKGZy
ZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7CisgICAgICAgIEFTU0VSVChibG9jay0+aXNG
cmVlTGlzdGVkKCkpOworICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVk
KCk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgQVNT
RVJUKCFpc0VtcHR5KGJsb2NrKSk7CisgICAgICAgIEFTU0VSVCghaXNDYW5BbGxvY2F0ZUJ1dE5v
dEVtcHR5KGJsb2NrKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKKyAg
ICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOworICAgIHNldEZyZWVMaXN0KGZyZWVMaXN0KTsKKyAg
ICAKICAgICB2b2lkKiByZXN1bHQ7CiAgICAgaWYgKG1fZnJlZUxpc3QucmVtYWluaW5nKSB7CiAg
ICAgICAgIHVuc2lnbmVkIGNlbGxTaXplID0gbV9jZWxsU2l6ZTsKQEAgLTE1NSw2ICsxNTMsNyBA
QCB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91CiAgICAgICAgIHJlc3Vs
dCA9IGhlYWQ7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgc2V0SXNF
ZGVuKG1fY3VycmVudEJsb2NrLCB0cnVlKTsKICAgICBtX21hcmtlZFNwYWNlLT5kaWRBbGxvY2F0
ZUluQmxvY2sobV9jdXJyZW50QmxvY2spOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMjcs
OCArMjI2LDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlSQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIGFkZEJsb2NrKGJsb2NrKTsKLSAg
ICAgICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOworICAg
IHJlc3VsdCA9IGFsbG9jYXRlSW4oYmxvY2spOwogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CkBAIC0yNDksMzcgKzI0Nyw3NSBAQCBzaXplX3QgTWFya2VkQWxsb2Nh
dG9yOjpibG9ja1NpemVGb3JCeXRlCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0
b3I6OnRyeUFsbG9jYXRlQmxvY2soKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9o
ZWFwLCB0aGlzLCBtX2NlbGxTaXplLCBtX2F0dHJpYnV0ZXMpOworICAgIAorICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCk7Cisg
ICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fbWFy
a2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsK
IH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9m
cmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMu
aXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAg
IHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxv
Y2tzLmFwcGVuZChibG9jayk7CisgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9s
ZENhcGFjaXR5KSB7CisgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAg
ICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYmxv
Y2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2
ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBh
Y2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7CisgICAgICAgIEFT
U0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgbV9ibG9ja3NbaW5kZXhdID0gYmxvY2s7
CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJp
dFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvciwgIXZl
Y3RvcltpbmRleF0pOworICAgICAgICB9KTsKKworICAgIC8vIFRoaXMgaXMgdGhlIHBvaW50IGF0
IHdoaWNoIHRoZSBibG9jayBsZWFybnMgb2YgaXRzIGNlbGxTaXplKCkgYW5kIGF0dHJpYnV0ZXMo
KS4KKyAgICBibG9jay0+ZGlkQWRkVG9BbGxvY2F0b3IodGhpcywgaW5kZXgpOwogICAgIAotICAg
IG1fYmxvY2tMaXN0LmFwcGVuZChibG9jayk7Ci0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChibG9j
ayk7Ci0gICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soYmxvY2spOworICAgIHNldElzTGl2
ZShpbmRleCwgdHJ1ZSk7CisgICAgc2V0SXNFbXB0eShpbmRleCwgdHJ1ZSk7CiB9CiAKIHZvaWQg
TWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykK
IHsKLSAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gYmxvY2spIHsKLSAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2sobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAgICAg
IHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotICAgIH0KLSAgICBpZiAobV9uZXh0QmxvY2tUb1N3
ZWVwID09IGJsb2NrKQotICAgICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fbmV4dEJsb2NrVG9T
d2VlcC0+bmV4dCgpKTsKKyAgICBBU1NFUlQoYmxvY2stPmFsbG9jYXRvcigpID09IHRoaXMpOwor
ICAgIEFTU0VSVChtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPT0gYmxvY2spOwogCi0gICAgYmxv
Y2stPndpbGxSZW1vdmVCbG9jaygpOwotICAgIG1fYmxvY2tMaXN0LnJlbW92ZShibG9jayk7Cisg
ICAgbV9ibG9ja3NbYmxvY2stPmluZGV4KCldID0gbnVsbHB0cjsKKyAgICBtX2ZyZWVCbG9ja0lu
ZGljZXMuYXBwZW5kKGJsb2NrLT5pbmRleCgpKTsKKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9y
KAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgdmVj
dG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOworICAgICAgICB9KTsKKyAgICAKKyAgICBibG9j
ay0+ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
c3RvcEFsbG9jYXRpbmcoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3Mo
KSA9PSBGdWxsQ29sbGVjdGlvbikKLSAgICAgICAgbV9ibG9ja0xpc3QudGFrZUZyb20obV9yZXRp
cmVkQmxvY2tzKTsKLQorICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVy
KHRoaXMpLCAiOiBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nIVxuIik7CiAgICAgQVNT
RVJUKCFtX2xhc3RBY3RpdmVCbG9jayk7CiAgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykgewogICAg
ICAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOwpAQCAtMjkyLDI5ICszMjgsMjUgQEAgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKICAgICBtX2ZyZWVMaXN0ID0gRnJlZUxpc3Qo
KTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAw
OwotICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxw
dHI7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogICAgIHNldEZyZWVMaXN0KEZyZWVM
aXN0KCkpOwogCi0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2Jsb2NrTGlzdC5iZWdpbigpKTsK
KyAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSAwOworICAgIG1fZW1wdHlDdXJzb3IgPSAwOworICAg
IG1fdW5zd2VwdEN1cnNvciA9IDA7CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxsKCk7CiAKICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7Ci0gICAgICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6Okhh
bmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7
Ci0gICAgICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0g
ICAgICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6
SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAgICAgYmxvY2stPnphcChmcmVlTGlz
dCk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICB9CisgICAgICAgIC8vIEZJ
WE1FOiBUaGluZ3M/CiAgICAgfQogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5j
ZVRvRmluYWxpemUoKQogewotICAgIG1fYmxvY2tMaXN0LnRha2VGcm9tKG1fcmV0aXJlZEJsb2Nr
cyk7CiAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKSB7CiAgICAgICAgICAgICBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAg
LTMyNiw0ICszNTgsMTIxIEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzZXRGcmVlTGlzdChjb25z
dCAKICAgICBtX2ZyZWVMaXN0ID0gZnJlZUxpc3Q7CiB9CiAKK3ZvaWQgTWFya2VkQWxsb2NhdG9y
OjpyZXN1bWVBbGxvY2F0aW5nKCkKK3sKKyAgICBpZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3Vt
ZUFsbG9jYXRpbmcoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOwor
ICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0
b3I6OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICAvLyBNYXJrIGJpdHMg
YXJlIHN0aWNreSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNs
ZWFyIHRoZXNlIGR1cmluZyBmdWxsCisgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2
aXZlZCB0aGUgbGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNv
IGxvbmcKKyAgICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRlbi4KKyAgICBtX21hcmtpbmdOb3RF
bXB0eS5jbGVhckFsbCgpOworICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKK30KKwor
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcoKQoreworICAgIG1fYWxsb2NhdGVkLmNs
ZWFyQWxsKCk7CisgICAgCisgICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0
byBjb21wcmVoZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0
bworICAgIC8vIGtub3cgd2hhdCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xl
ZGdlIGlzIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCisgICAgLy8gdmVjdG9y
cy4KKyAgICAKKyAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CisgICAgICAgIC8vIElmIGJs
b2NrcyBuZWVkIGRlc3RydWN0aW9uIHRoZW4gbm90aGluZyBpcyBlbXB0eSEgVGhpcyBpcyBhIGNv
cnJlY3QgYXNzZXJ0aW9uIGJ1dCBtYXkKKyAgICAgICAgLy8gYmVjb21lIHdyb25nIG9uY2Ugd2Ug
Z28gZnVsbCBjb25jdXJyZW50OiB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBibG9jaywgaXQgd2lsbCBm
bGlja2VyCisgICAgICAgIC8vIGludG8gdGhlIGVtcHR5IHNldCBmb3IgYSB0aW55IG1vbWVudC4g
T24gdGhlIG90aGVyIGhhbmQsIHRoaXMgY29kZSBpcyBsaWtlbHkgdG8gYmUgcnVuCisgICAgICAg
IC8vIGluIHN0b3BUaGVXb3JsZC4KKyAgICAgICAgQVNTRVJUKG1fZW1wdHkuaXNFbXB0eSgpKTsK
KyAgICAgICAgbV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ID0gbV9saXZlICYgfm1fbWFya2luZ1Jl
dGlyZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9lbXB0eSA9IG1fbGl2
ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKKyAgICBtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgPSBt
X2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgIAorICAg
IGlmIChmYWxzZSkgeworICAgICAgICBkYXRhTG9nKCJCaXRzIGZvciAiLCBtX2NlbGxTaXplLCAi
LCAiLCBtX2F0dHJpYnV0ZXMsICIgYWZ0ZXIgZW5kTWFya2luZzpcbiIpOworICAgICAgICBkdW1w
Qml0cyhXVEY6OmRhdGFGaWxlKCkpOworICAgIH0KK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6
OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3Vuc3dlcHQgfD0g
bV9lZGVuOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RVbnN3ZXB0Rm9yRnVs
bENvbGxlY3Rpb24oKQoreworICAgIG1fdW5zd2VwdCA9IG1fbGl2ZTsKK30KKworTWFya2VkQmxv
Y2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaW5kQmxvY2tUb1N3ZWVwKCkKK3sKKyAgICBt
X3Vuc3dlcHRDdXJzb3IgPSBtX3Vuc3dlcHQuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUp
OworICAgIGlmIChtX3Vuc3dlcHRDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV91bnN3ZXB0Q3Vyc29yXTsKK30K
Kwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN3ZWVwKCkKK3sKKyAgICBtX3Vuc3dlcHQuZm9yRWFj
aFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1fYmxv
Y2tzW2luZGV4XS0+c3dlZXAoKTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpzaHJpbmsoKQoreworICAgIG1fZW1wdHkuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZd
IChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1fbWFya2VkU3BhY2UtPmZyZWVCbG9jayht
X2Jsb2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6
OmFzc2VydE5vVW5zd2VwdCgpCit7CisgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIGlmIChtX3Vuc3dlcHQuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgZGF0YUxvZygiQXNzZXJ0aW9uIGZhaWxlZDogdW5zd2VwdCBub3QgZW1w
dHkgaW4gIiwgKnRoaXMsICIuXG4iKTsKKyAgICBkdW1wQml0cygpOworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAoreworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOiIsIG1fY2Vs
bFNpemUsICIvIiwgbV9hdHRyaWJ1dGVzKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmR1
bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgdW5zaWduZWQgbWF4TmFtZUxlbmd0aCA9
IDA7CisgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBbJl0gKEZhc3RCaXRW
ZWN0b3ImLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBzdHJsZW4obmFtZSk7CisgICAgICAgICAgICBtYXhOYW1lTGVuZ3RoID0gc3RkOjptYXgobWF4
TmFtZUxlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgZm9yRWFjaEJpdFZl
Y3RvcldpdGhOYW1lKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvciwgY29uc3Qg
Y2hhciogbmFtZSkgeworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgIiwgbmFtZSwgIjogIik7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXhOYW1lTGVuZ3RoIC0gc3RybGVuKG5h
bWUpOyBpLS07KQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIpOworICAgICAgICAgICAg
b3V0LnByaW50KHZlY3RvciwgIlxuIik7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2Nh
dG9yLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVk
ZSAiQWxsb2NhdG9yQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5jbHVk
ZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNyw2ICszOSwxNDkgQEAgY2xhc3MgSGVhcDsKIGNsYXNz
IE1hcmtlZFNwYWNlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisjZGVmaW5lIEZP
Ul9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2
ZSkgLyogVGhlIHNldCBvZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAq
L1wKKyAgICBtYWNybyhlbXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0
IGhhdmUgbm8gbGl2ZSBvYmplY3RzIGFuZCBub3RoaW5nIHRvIGRlc3Ryb3kuICovIFwKKyAgICBt
YWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGxibG9ja3MgdGhhdCBh
cmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90
RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBh
cmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtl
ZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0
IEdDLiAqL1wKKyAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9c
CisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCisg
ICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyhtYXJraW5nUmV0
aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBy
ZXRpcmVkLiAqLworCisvLyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5
IGFuZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6CisvLworLy8gICAgIGNhbkFsbG9jYXRlQnV0Tm90
RW1wdHkgJiBlbXB0eSA9PSAwCisvLworLy8gSW5zdGVhZCBvZiBjYWxsaW5nIGl0IGNhbkFsbG9j
YXRlIGFuZCBtYWtpbmcgaXQgaW5jbHVzaXZlOgorLy8KKy8vICAgICBjYW5BbGxvY2F0ZSAmIGVt
cHR5ID09IGVtcHR5CisvLworLy8gVGhlIGxhdHRlciBpcyBwcm9iYWJseSBiZXR0ZXIuIEknbGwg
bGVhdmUgaXQgdG8gYSBmdXR1cmUgYnVnIHRvIGZpeCB0aGF0LCBzaW5jZSBicmVhdGhpbmcgb24K
Ky8vIHRoaXMgY29kZSBsZWFkcyB0byByZWdyZXNzaW9ucyBmb3IgZGF5cywgYW5kIGl0J3Mgbm90
IGNsZWFyIHRoYXQgbWFraW5nIHRoaXMgY2hhbmdlIHdvdWxkCisvLyBpbXByb3ZlIHBlcmYgc2lu
Y2UgaXQgd291bGQgbm90IGNoYW5nZSB0aGUgY29sbGVjdG9yJ3MgYmVoYXZpb3IsIGFuZCBlaXRo
ZXIgd2F5IHRoZSBhbGxvY2F0b3IKKy8vIGhhcyB0byBsb29rIGF0IGJvdGggYml0dmVjdG9ycy4K
Ky8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMjEKKworLy8g
Tm90ZSB0aGF0IHRoaXMgY29sbGVjdG9yIHN1cHBvcnRzIG92ZXJsYXBwaW5nIGFsbG9jYXRvciBz
dGF0ZSB3aXRoIG1hcmtpbmcgc3RhdGUsIHNpbmNlIGluIGEKKy8vIGNvbmN1cnJlbnQgY29sbGVj
dG9yIHlvdSBhbGxvdyBhbGxvY2F0aW9uIHdoaWxlIG1hcmtpbmcgaXMgcnVubmluZy4gU28gaXQn
cyBiZXN0IHRvIHZpc3VhbGl6ZSBhCisvLyBmdWxsIG11dGFibGUtPmVkZW4gY29sbGVjdC0+bXV0
YXRlLT5mdWxsIGNvbGxlY3QgY3ljbGUgYW5kIHNlZSBob3cgdGhlIGJpdHMgYWJvdmUgZ2V0IGFm
ZmVjdGVkLgorLy8gVGhlIGV4YW1wbGUgYmVsb3cgdHJpZXMgdG8gYmUgZXhoYXVzdGl2ZSBhYm91
dCB3aGF0IGhhcHBlbnMgdG8gdGhlIGJpdHMsIGJ1dCBvbWl0cyBhIGxvdCBvZgorLy8gdGhpbmdz
IHRoYXQgaGFwcGVuIHRvIG90aGVyIHN0YXRlLgorLy8KKy8vIENyZWF0ZSBhbGxvY2F0b3IKKy8v
IC0gYWxsIGJpdHMgYXJlIGVtcHR5CisvLyBTdGFydCBhbGxvY2F0aW5nIGluIHNvbWUgYmxvY2sK
Ky8vIC0gYWxsb2NhdGUgdGhlIGJsb2NrIGFuZCBzZXQgdGhlIGxpdmUgYml0LgorLy8gLSB0aGUg
ZW1wdHkgYml0IGZvciB0aGUgYmxvY2sgZmxpY2tlcnMgb24gYW5kIHRoZW4gZ2V0cyBpbW1lZGlh
dGVseSBjbGVhcmVkIGJ5IHN3ZWVwaW5nLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmlu
aXNoIGFsbG9jYXRpbmcgaW4gdGhhdCBibG9jaworLy8gLSBzZXQgdGhlIGFsbG9jYXRlZCBiaXQu
CisvLyBEbyB0aGF0IHRvIGEgbG90IG9mIGJsb2NrcyBhbmQgdGhlbiBzdGFydCBhbiBlZGVuIGNv
bGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygpIGhhcyBub3RoaW5nIHRvIGRvLgorLy8gLSBi
eSBkZWZhdWx0IHdlIGhhdmUgY2xlYXIgbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIGJp
dHMuCisvLyAtIG1hcmtpbmcgYnVpbGRzIHVwIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJl
ZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQg
Yml0cy4KKy8vIC0gZm9yIGRlc3RydWN0b3IgYmxvY2tzOiBmcmFnbWVudGVkID0gbGl2ZSAmIH5t
YXJraW5nUmV0aXJlZAorLy8gLSBmb3Igbm9uLWRlc3RydWN0b3IgYmxvY2tzOgorLy8gICAgICAg
ZW1wdHkgPSBsaXZlICYgfm1hcmtpbmdOb3RFbXB0eQorLy8gICAgICAgZnJhZ21lbnRlZCA9IGxp
dmUgJiBtYXJraW5nTm90RW1wdHkgJiB+bWFya2luZ1JldGlyZWQKKy8vIFNuYXBzaG90dGluZy4K
Ky8vIC0gdW5zd2VwdCB8PSBlZGVuCisvLyBQcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBj
bGVhciBlZGVuCisvLyBGaW5pc2ggY29sbGVjdGlvbi4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxv
Y2sgdGhhdCBoYWQgc29tZSBmcmVlIGFuZCBzb21lIGxpdmUgb2JqZWN0cy4KKy8vIC0gY2xlYXIg
dGhlIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgYml0CisvLyAtIGNsZWFyIHRoZSB1bnN3ZXB0IGJp
dAorLy8gLSBzZXQgdGhlIGVkZW4gYml0CisvLyBGaW5pc2ggYWxsb2NhdGluZyAoc2V0IHRoZSBh
bGxvY2F0ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3YXMgY29tcGxl
dGVseSBlbXB0eS4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8gLSBjbGVhciB0aGUgdW5z
d2VwdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChz
ZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9jayB0aGF0IHdh
cyBjb21wbGV0ZWx5IGVtcHR5IGluIGFub3RoZXIgYWxsb2NhdG9yLgorLy8gLSBjbGVhciB0aGUg
ZW1wdHkgYml0CisvLyAtIGNsZWFyIGFsbCBiaXRzIGluIHRoYXQgYWxsb2NhdG9yCisvLyAtIHNl
dCB0aGUgbGl2ZSBiaXQgaW4gYW5vdGhlciBhbGxvY2F0b3IgYW5kIHRoZSBlbXB0eSBiaXQuCisv
LyAtIGNsZWFyIHRoZSBlbXB0eSwgdW5zd2VwdCBiaXRzLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0
LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBTdGFy
dCBhIGZ1bGwgY29sbGVjdGlvbi4KKy8vIC0gYmVnaW5NYXJraW5nKCkgY2xlYXJzIG1hcmtpbmdO
b3RFbXB0eSwgbWFya2luZ1JldGlyZWQKKy8vIC0gdGhlIGhlYXAgdmVyc2lvbiBpcyBpbmNyZW1l
bnRlZAorLy8gLSBtYXJraW5nIHJlYnVpbGRzIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5ncmV0aXJl
ZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQg
Yml0cy4KKy8vIC0gc2V0IGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkvZW1wdHkgdGhlIHNhbWUgd2F5
IGFzIGluIGVkZW4gY29sbGVjdGlvbi4KKy8vIFNuYXBzaG90dGluZy4KKy8vIC0gdW5zd2VwdCA9
IGxpdmUKKy8vIHByZXBhcmUgZm9yIGFsbG9jYXRpb24uCisvLyAtIGNsZWFyIGVkZW4uCisvLyBG
aW5pc2ggY29sbGVjdGlvbi4KKy8vCisvLyBOb3RpY2UgaG93IGluIHRoaXMgc2NoZW1lLCB0aGUg
ZW1wdHkvY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBzdGF0ZSBzdGF5cyBzZXBhcmF0ZSBmcm9tIHRo
ZQorLy8gbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIHN0YXRlLiBUaGlzIGlzIG9uZSBz
dGVwIHRvd2FyZHMgaGF2aW5nIHNlcGFyYXRlZCBhbGxvY2F0aW9uIGFuZAorLy8gbWFya2luZyBz
dGF0ZS4KKy8vCisvLyBBZnRlciB0aGlzLCB3ZSBqdXN0IG5lZWQgdG8gYW5zd2VyIHRoZSBxdWVz
dGlvbjogd2hhdCBkb2VzIGFuIG9iamVjdCBhbGxvY2F0ZWQgZHVyaW5nIGVkZW4gR0MKKy8vIGxv
b2sgbGlrZSB0byB0aGUgR0M/CisvLworLy8gSSd2ZSBjb21lIHVwIHdpdGggdHdvIGNvbXBlbGxp
bmcgYW5zd2Vycy4KKy8vCisvLyAxLiBBTExPQ0FURSBCTEFDSworLy8KKy8vIEkgdGhpbmsgdGhh
dCB0aGUgZWFzaWVzdCBhbnN3ZXIgaXMgdG8gYWxsb2NhdGUgdGhlIG9iamVjdCB3aGl0ZSBhbmQg
dGhlbgorLy8gaW1tZWRpYXRlbHkgbWFyayBpdC4gVGhpcyBtYWtlcyB0aGUgb2JqZWN0IGJlaGF2
ZSBhcyBpZiBpdCB3YXMgYWxsb2NhdGVkIGp1c3QgYmVmb3JlIHRoZSBzdGFydAorLy8gb2YgR0Mg
YW5kIGl0IHdhcyBvbiB0aGUgc3RhY2sgYXQgdGhlIGJlZ2lubmluZyBvZiBHQy4gV2Ugd291bGRu
J3QgaGF2ZSB0byBkbyBhbnl0aGluZyBkaWZmZXJlbnQKKy8vIHdpdGggdGhlIHZhcmlvdXMgYmxv
Y2sgYml0cyB3aGVuIGFsbG9jYXRpbmcgZHVyaW5nIEdDOiB3ZSBjb3VsZCBzdGlsbCBzZXQgZWRl
biBhbmQgYWxsb2NhdGVkCisvLyBzaW5jZSB0aGV5IHdpbGwgYmUgY2xlYXJlZCBhbnl3YXkuCisv
LworLy8gQnV0IHRoaXMgbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdvbid0IGJlIGVsaWdpYmxlIGZv
ciBmcmVlaW5nIHVudGlsIHRoZSBuZXh0IGZ1bGwgR0MuIElkZWFsbHkKKy8vIHdlJ2QgbWFrZSB0
aGUgb2JqZWN0IGlzIGVsaWdpYmxlIGZvciBmcmVlaW5nIGF0IHRoZSBuZXh0IGVkZW4gR0MuIFRo
ZXJlJ3MgYSBidW5jaCBvZiB0aGluZ3Mgd2UKKy8vIGNvdWxkIGRvIHRvIG1ha2UgdGhpcyBoYXBw
ZW4uIEhlcmUgYXJlIHNvbWUgaWRlYXM6CisvLworLy8gLSBJbnRyb2R1Y2UgYSBuZXcgQ2VsbFN0
YXRlLCBjYWxsZWQgRmxvYXQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG9iamVjdCB3YXMgYWxsb2Nh
dGVkIGR1cmluZyB0aGUKKy8vICAgR0MuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IG1hcmtpbmcg
ZG9lcyBub3RoaW5nIGZvciBGbG9hdHMuIFRoaXMgd291bGQgbWFrZSBtYXJraW5nIGEgdGlueQor
Ly8gICBiaXQgbW9yZSBleHBlbnNpdmUuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBiYXJy
aWVyIHJlY29nbml6ZXMgc3RvcmVzIHRvIGEgRmxvYXQgdGhlIHNhbWUKKy8vICAgd2F5IHRoYXQg
aXQgc2VlcyBhIHN0b3JlIHRvIE9sZEJsYWNrOiBpdCBwdXRzIHRoZSBvYmplY3Qgb24gdGhlIG1h
cmsgc3RhY2suIEZsb2F0cyB3b3VsZCBiZQorLy8gICBwdXQgb24gdGhlIG1hcmsgc3RhY2sgYXMg
RmxvYXRHcmV5IHRvIGluZGljYXRlIHRoYXQgdGhleSB3aWxsIGJlIHNjYW5uZWQgYnkgdGhlIEdD
IGJ1dCB0aGF0CisvLyAgIHRoZXkgYXJlbid0IGFjdHVhbGx5IG1hcmtlZC4KKy8vCisvLyAgIE5v
dGUgdGhhdCB0aGlzIGltcGxpZXMgaGF2aW5nIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhvc2Ug
Y2VsbHMgZnJvbSBGbG9hdCB0byBzb21ldGhpbmcgZWxzZQorLy8gICBhdCB0aGUgZW5kIG9mIEdD
LiAgSSdtIG5vdCBzdXJlIHRoYXQgdGhpcyBpcyBzbyBncmVhdC4KKy8vCisvLyAtIE1hcmsgdGhl
IG9iamVjdHMgYWZ0ZXIgYWxsb2NhdGlvbiwgYnV0IGFsc28gc2V0IHNvbWUgb3RoZXIgYml0cyB0
byBpbmRpY2F0ZSB0aGF0IHRoZSB0aG9zZQorLy8gICBvYmplY3RzIHNob3VsZCBiZSB1bm1hcmtl
ZCBhdCB0aGUgZW5kIG9mIHRoZSBHQy4KKy8vCisvLyBFaXRoZXIgb2YgdGhlc2UgYXBwcm9hY2hl
cyB3b3VsZCBtYWtlIGNvbGxlY3Rpb25zIG1vcmUgZXhwZW5zaXZlLCBidXQgaXQgZmVlbHMgbGlr
ZSB0aGUgbGF0dGVyCisvLyBhcHByb2FjaCB3b3VsZCBiZSBhIHByb2ZpdGFibGUgb3B0aW1pemF0
aW9uLiBJJ20gYWxzbyByZWFsbHkgZ2V0dGluZyB3b3JyaWVkIGFib3V0IGhvdyB0aGlzIEdDCisv
LyBleHBlcmllbmNlcyBiYWNrd2FyZHMgdGltZSB0cmF2ZWwsIHdpdGggYWxsIHRoZSByZW1hcmtp
bmcgb2YgdGhpbmdzIGxpa2UgbmV3IG9iamVjdHMgYW5kCisvLyB3aGF0bm90LgorLy8KKy8vIDIu
IEFMTE9DQVRFIFdISVRFCisvLworLy8gSSBkb24ndCBrbm93IGlmIHRoaXMgaXMgc291bmQsIGJ1
dCBpZiBpdCB3YXMgdGhlbiBpdCB3b3VsZCBiZSB0aGUgb3B0aW1hbCBzb2x1dGlvbi4gQWxsb2Nh
dGlvbgorLy8gd291bGQgd29yayBhcyBub3cgYW5kIGNvbnNlcXVlbnRseSwgZXZlcnl0aGluZyB3
ZSBrbm93IGFib3V0IHdoYXQgd2FzIGFsbG9jYXRlZCBkdXJpbmcgYSBHQyBpcworLy8gZm9yZ290
dGVuIGF0IHRoZSBlbmQgb2YgR0MuIEJ1dCB0aGF0J3MgZmluZS4gRW5kIG9mIEdDIG11c3QgcmVz
Y2FuIGFueSBoZWFwIGxvY2F0aW9ucyB0aGF0IGdvdAorLy8gc3RvcmVkIGludG8gYW5kIGl0IG11
c3QgcmVzY2FuIHRoZSBzdGFjay4gU28sIHdoaXRlIG9iamVjdHMgYWxsb2NhdGVkIGR1cmluZyBH
QyB3b3VsZCBnZXQKKy8vIG1hcmtlZCBpZiB0aGV5IHNvbWVob3cgc3Vydml2ZWQuCisvLworLy8g
VGhpcyBtZWFucyB0aGF0IGZvciBleGFtcGxlIGlmIHRoZXJlIGlzIGEgZmllbGQgdGhhdCBvZnRl
biBnZXRzIHN0b3JlZCB0byB3aXRoIG5ldyBvYmplY3RzLCB0aGUKKy8vIEdDIHdpbGwgbm90IHNl
ZSBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGF0IGZpZWxkIGJ1dCBpbnN0ZWFkIGl0IHdvdWxkIHBv
bGwgdGhhdCBmaWVsZCwgaG9wZWZ1bGx5CisvLyBzb21ld2hhdCByYXJlbHkuIFdlIGNhbiBtYWtl
IGl0IHZlcnkgcmFyZSBieSBvbmx5IGluZnJlcXVlbnRseSBkb25hdGluZyBmcm9tIHRoZSBtYWlu
IHRocmVhZCdzCisvLyBzbG90IHZpc2l0b3IgdG8gYW55IG9mIHRoZSBvdGhlcnMuIFNvLCB3ZSB3
b3VsZCBvbmx5IG1hcmsgc29tZSBvZiB0aGUgbmV3IG9iamVjdHMgdGhhdCBnb3QKKy8vIHN0b3Jl
ZCBpbnRvIHRoYXQgZmllbGQuIEl0IGFsc28gbWVhbnMgdGhhdCBhbnkgb2JqZWN0IGFsbG9jYXRl
ZCBkdXJpbmcgdGhlIEdDIHRoYXQgZGlkbid0IGdldAorLy8gc3RvcmVkIGludG8gYW55IG9iamVj
dCB0aGF0IHdhcyBsaXZlIHNpbmNlIGJlZm9yZSB0aGUgc3RhcnQgb2YgR0Mgd291bGQgc2ltcGx5
IGRpc2FwcGVhci4gVGhpcworLy8gbWVhbnMgbXVjaCBsZXNzIHJlc2Nhbm5pbmcgdGhhbiBhbnkg
b2YgdGhlIG90aGVyIHByb3Bvc2Fscy4KKy8vCisvLyBJIHJlYWxseSB3YW50IHRvIGdvIHdpdGgg
dGhlIGFsbG9jYXRlLXdoaXRlIGFwcHJvYWNoLCBidXQgSSBuZWVkIHRvIHRoaW5rIG1vcmUgZGVl
cGx5IGFib3V0IGl0CisvLyBiZWZvcmUgSSBjb21taXQgdG8gaXQuCisKIGNsYXNzIE1hcmtlZEFs
bG9jYXRvciB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApAQCAt
NDYsOSArMTkxLDE2IEBAIHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvcihIZWFwKiwgTWFy
a2VkU3BhY2UqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsK
ICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7Ci0gICAgdm9pZCByZXNldCgpOworICAg
IHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKCk7
CiAgICAgdm9pZCByZXN1bWVBbGxvY2F0aW5nKCk7CisgICAgdm9pZCBiZWdpbk1hcmtpbmdGb3JG
dWxsQ29sbGVjdGlvbigpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNo
b3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICB2b2lkIHNuYXBzaG90VW5zd2VwdEZv
ckZ1bGxDb2xsZWN0aW9uKCk7CisgICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc2hyaW5rKCk7
CisgICAgdm9pZCBhc3NlcnROb1Vuc3dlcHQoKTsKICAgICBzaXplX3QgY2VsbFNpemUoKSBjb25z
dCB7IHJldHVybiBtX2NlbGxTaXplOyB9CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYg
YXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgIGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9
PSBOZWVkc0Rlc3RydWN0aW9uOyB9CkBAIC03Miw2ICsyMjQsNDYgQEAgcHVibGljOgogICAgIGJv
b2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgIAogICAgIHN0YXRpYyBzaXplX3Qg
YmxvY2tTaXplRm9yQnl0ZXMoc2l6ZV90KTsKKyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRP
Ul9CSVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAgICBcCisgICAg
Ym9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1f
ICMjIGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5h
bWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0
YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpKTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFs
Qml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV8gIyMgbG93ZXJCaXROYW1lW2lu
ZGV4XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzICMjIGNhcGl0YWxCaXRO
YW1lKGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hl
Y2tJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgcmV0dXJu
IG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhpbmRleCwgdmFsdWUpOyB9IFwK
KyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFt
ZS5hdG9taWNTZXRBbmRDaGVjayhibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgRk9SX0VB
Q0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKQor
I3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykK
KyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFt
ZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOwor
ICAgICAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJ
VF9DQUxMQkFDSyk7CisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRW
ZWN0b3JXaXRoTmFtZShjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNkZWZpbmUgTUFSS0VEX0FM
TE9DQVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAg
ICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSwgI2NhcGl0YWxCaXROYW1lKTsKKyAgICAgICAg
Rk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJB
Q0spOworI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAor
ICAgIE1hcmtlZEFsbG9jYXRvciogbmV4dEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4
dEFsbG9jYXRvcjsgfQorICAgIAorICAgIC8vIE1hcmtlZFNwYWNlIGNhbGxzIHRoaXMgZHVyaW5n
IGluaXQuCisgICAgdm9pZCBzZXROZXh0QWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2Nh
dG9yKSB7IG1fbmV4dEFsbG9jYXRvciA9IGFsbG9jYXRvcjsgfQorICAgIAorICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGZpbmRFbXB0eUJsb2NrKCk7CisgICAgCisgICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogZmluZEJsb2NrVG9Td2VlcCgpOworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OworICAgIHZvaWQgZHVtcEJpdHMoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmls
ZSgpKTsKICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CkBAIC04
MiwyNSArMjc0LDM3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29s
bGVjdGluZygpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCk7
CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5QWxsb2NhdGVCbG9jaygpOworICAgIHZvaWQq
IHRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSopOworICAgIHZvaWQqIGFsbG9jYXRl
SW4oTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkb1Rlc3RD
b2xsZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgdm9pZCByZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRs
ZSopOwogICAgIAogICAgIHZvaWQgc2V0RnJlZUxpc3QoY29uc3QgRnJlZUxpc3QmKTsKICAgICAK
LSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaWx0ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6Okhh
bmRsZSopOwotICAgIHZvaWQgc2V0TmV4dEJsb2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxl
Kik7Ci0gICAgCiAgICAgRnJlZUxpc3QgbV9mcmVlTGlzdDsKKyAgICAKKyAgICBWZWN0b3I8TWFy
a2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tzOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mcmVl
QmxvY2tJbmRpY2VzOworICAgIAorI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJB
VElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCisgICAgRmFzdEJpdFZlY3RvciBt
XyAjIyBsb3dlckJpdE5hbWU7CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFS
S0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04pCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9C
SVRfREVDTEFSQVRJT04KKyAgICAKKyAgICAvLyBBZnRlciB5b3UgZG8gc29tZXRoaW5nIHRvIGEg
YmxvY2sgYmFzZWQgb24gb25lIG9mIHRoZXNlIGN1cnNvcnMsIHlvdSBjbGVhciB0aGUgYml0IGlu
IHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0dmVjdG9yIGFuZCBsZWF2ZSB0aGUgY3Vyc29y
IHdoZXJlIGl0IHdhcy4KKyAgICBzaXplX3QgbV9hbGxvY2F0aW9uQ3Vyc29yIHsgMCB9OyAvLyBQ
b2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgYWxsb2NhdGlv
bi4KKyAgICBzaXplX3QgbV9lbXB0eUN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0
IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGVtcHR5IGFsbG9jYXRpb24gKGFsbG9jYXRp
bmcgaW4gZW1wdHkgYmxvY2tzKS4KKyAgICBzaXplX3QgbV91bnN3ZXB0Q3Vyc29yIHsgMCB9OyAv
LyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgaW5jcmVt
ZW50YWwgc3dlZXBpbmcuCisgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9jdXJyZW50
QmxvY2s7CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0QmxvY2tUb1N3ZWVwOwotICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRC
bG9jazo6SGFuZGxlPj4gbV9ibG9ja0xpc3Q7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtl
ZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+
PiBtX3JldGlyZWRCbG9ja3M7CisKICAgICBMb2NrIG1fbG9jazsKICAgICB1bnNpZ25lZCBtX2Nl
bGxTaXplOwogICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIEhlYXAq
IG1faGVhcDsKICAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAgICBNYXJrZWRBbGxv
Y2F0b3IqIG1fbmV4dEFsbG9jYXRvcjsKIH07CiAKIGlubGluZSBwdHJkaWZmX3QgTWFya2VkQWxs
b2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0KCkKQEAgLTE0OSwyMCArMzUzLDEyIEBAIEFMV0FZU19J
TkxJTkUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGwKICAgICByZXR1cm4gaGVhZDsKIH0KIAot
aW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKLXsKLSAgICBp
ZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ZyZWVMaXN0
ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKLSAgICBtX2N1cnJlbnRC
bG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOwotICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKLX0K
LQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRv
cjo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9ibG9ja0xp
c3QuZm9yRWFjaChmdW5jdG9yKTsKLSAgICBtX3JldGlyZWRCbG9ja3MuZm9yRWFjaChmdW5jdG9y
KTsKKyAgICBtX2xpdmUuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgp
IHsKKyAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzYsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBib29sIGNvbXB1dGVCYWxhbmNl
ID0gZmFsc2U7CiBzdGF0aWMgc2l6ZV90IGJhbGFuY2U7CiAKLU1hcmtlZEJsb2NrOjpIYW5kbGUq
IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmli
dXRlcykKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoSGVhcCYg
aGVhcCkKIHsKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFsYW5jZSsrOwpA
QCAtNDgsMjYgKzQ5LDE3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlD
cmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkp
CiAgICAgICAgIHNjcmliYmxlKGJsb2NrU3BhY2UsIGJsb2NrU2l6ZSk7Ci0gICAgcmV0dXJuIG5l
dyBIYW5kbGUoaGVhcCwgYWxsb2NhdG9yLCBjZWxsU2l6ZSwgYXR0cmlidXRlcywgYmxvY2tTcGFj
ZSk7CisgICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYmxvY2tTcGFjZSk7CiB9CiAKLU1hcmtl
ZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9j
YXRvciwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzLCB2b2lkKiBibG9ja1NwYWNlKQotICAgIDogbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsg
YXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQotICAgICwgbV9lbmRBdG9tKGF0b21zUGVyQmxvY2sg
LSBtX2F0b21zUGVyQ2VsbCArIDEpCi0gICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKLSAg
ICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgotICAgICwg
bV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+aGVhcCgp
LT52bSgpLCBDZWxsQ29udGFpbmVyKCkpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVh
cCYgaGVhcCwgdm9pZCogYmxvY2tTcGFjZSkKKyAgICA6IG1fd2Vha1NldChoZWFwLnZtKCksIENl
bGxDb250YWluZXIoKSkKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1NwYWNl
KSBNYXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCiAgICAgbV93ZWFrU2V0LnNl
dENvbnRhaW5lcigqbV9ibG9jayk7CiAgICAgCiAgICAgaGVhcC5kaWRBbGxvY2F0ZUJsb2NrKGJs
b2NrU2l6ZSk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAg
ICBBU1NFUlQoYWxsb2NhdG9yKTsKLSAgICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxLaW5kICE9IEhl
YXBDZWxsOjpKU0NlbGwpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0cmlidXRlcy5kZXN0
cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKIH0KIAogTWFya2VkQmxvY2s6Okhh
bmRsZTo6fkhhbmRsZSgpCkBAIC03OCw0NSArNzAsMzUgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6
fkhhbmRsZSgpCiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRh
TG9nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9CisgICAg
cmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgIG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwogICAg
IGZhc3RBbGlnbmVkRnJlZShtX2Jsb2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1Np
emUpOwogfQogCiBNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmIGhhbmRs
ZSkKLSAgICA6IG1fbmVlZHNEZXN0cnVjdGlvbihoYW5kbGUubmVlZHNEZXN0cnVjdGlvbigpKQot
ICAgICwgbV92ZXJzaW9uKHZtLmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpCisgICAgOiBt
X3ZlcnNpb24oTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uKQogICAgICwgbV9oYW5kbGUoaGFuZGxl
KQogICAgICwgbV92bSgmdm0pCiB7Ci0gICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtl
ZFNwYWNlOjpibG9ja1BheWxvYWQgLyBoYW5kbGUuY2VsbFNpemUoKTsKLSAgICBkb3VibGUgbWFy
a0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2Vs
bHNQZXJCbG9jayk7Ci0gICAgCi0gICAgLy8gVGhlIG1hcmsgY291bnQgYmlhcyBzaG91bGQgYmUg
Y29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2UuCi0gICAgUkVMRUFTRV9BU1NFUlQobWFya0Nv
dW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90
Pjo6bWluKCkpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzIDwgMCk7Ci0gICAg
Ci0gICAgbV9tYXJrQ291bnRCaWFzID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFya0NvdW50Qmlh
cyk7Ci0gICAgCi0gICAgbV9iaWFzZWRNYXJrQ291bnQgPSBtX21hcmtDb3VudEJpYXM7IC8vIFRo
aXMgbWVhbnMgd2UgaGF2ZW4ndCBtYXJrZWQgYW55dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0ZTxN
YXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpT
d2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxhdGU8
TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9k
ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSwgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6RmxpcE1vZGUgZmxpcE1vZGU+CiBGcmVlTGlzdCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwKCkKIHsKLSAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgQVNTRVJUKGJsb2NrU3RhdGUgPT0gTmV3IHx8
IGJsb2NrU3RhdGUgPT0gTWFya2VkKTsKLSAgICBBU1NFUlQoIShkZXN0cnVjdGlvbk1vZGUgPT0g
RG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoIShkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlv
biAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CiAgICAgCi0gICAgYXNzZXJ0RmxpcHBlZCgp
OworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKwogICAg
IE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7CiAgICAgCi0gICAgYm9vbCBpc05l
d0Jsb2NrID0gYmxvY2tTdGF0ZSA9PSBOZXc7Ci0gICAgYm9vbCBpc0VtcHR5QmxvY2sgPSAhYmxv
Y2suaGFzQW55TWFya2VkKCkKLSAgICAgICAgJiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNO
b3RIYXZlTmV3bHlBbGxvY2F0ZWQKLSAgICAgICAgJiYgZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb247Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKSAm
JiAoaXNOZXdCbG9jayB8fCBpc0VtcHR5QmxvY2spKSB7Ci0gICAgICAgIEFTU0VSVChibG9jay5t
X21hcmtzLmlzRW1wdHkoKSk7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1Bv
aW50ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAhXG4i
KTsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6dXNlQnVtcEFsbG9jYXRvcigpCisgICAgICAgICYm
IGVtcHR5TW9kZSA9PSBJc0VtcHR5CisgICAgICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBE
b2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkKSB7CisgICAgICAgIEFTU0VSVChmbGlwTW9kZSA9PSBO
ZWVkc0ZsaXApOwogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRPZkxhc3RDZWxsID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsgbV9lbmRBdG9tIC0gMSkp
OwogICAgICAgICBjaGFyKiBwYXlsb2FkRW5kID0gc3RhcnRPZkxhc3RDZWxsICsgY2VsbFNpemUo
KTsKQEAgLTEyNCw3ICsxMDYsMTAgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Bl
Y2lhbGl6ZQogICAgICAgICBjaGFyKiBwYXlsb2FkQmVnaW4gPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+
KGJsb2NrLmF0b21zKCkgKyBmaXJzdEF0b20oKSk7CiAgICAgICAgIGlmIChzY3JpYmJsZU1vZGUg
PT0gU2NyaWJibGUpCiAgICAgICAgICAgICBzY3JpYmJsZShwYXlsb2FkQmVnaW4sIHBheWxvYWRF
bmQgLSBwYXlsb2FkQmVnaW4pOwotICAgICAgICBtX3N0YXRlID0gKChzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0KSA/IEZyZWVMaXN0ZWQgOiBNYXJrZWQpOworICAgICAgICBpZiAoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgICAgIHNldElzRnJlZUxpc3RlZCgpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0
cnVlKTsKICAgICAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6OmJ1bXAocGF5bG9hZEVu
ZCwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7CiAgICAgICAgIGlmIChmYWxzZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIlF1aWNrbHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcih0aGlzKSwg
IiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSgpLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0
cmlidXRlcywgIjogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTEzNywxNCArMTIyLDE0IEBAIEZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICBGcmVlQ2VsbCogaGVhZCA9
IDA7CiAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9t
KCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgaWYgKGJs
b2NrU3RhdGUgPT0gTWFya2VkCi0gICAgICAgICAgICAmJiAoYmxvY2subV9tYXJrcy5nZXQoaSkK
KyAgICAgICAgaWYgKGVtcHR5TW9kZSA9PSBOb3RFbXB0eQorICAgICAgICAgICAgJiYgKChmbGlw
TW9kZSA9PSBEb2VzTm90TmVlZEZsaXAgJiYgYmxvY2subV9tYXJrcy5nZXQoaSkpCiAgICAgICAg
ICAgICAgICAgfHwgKG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBt
X25ld2x5QWxsb2NhdGVkLT5nZXQoaSkpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAg
ICAgIAogICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBD
ZWxsKj4oJmJsb2NrLmF0b21zKClbaV0pOwogCi0gICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUg
PT0gTmVlZHNEZXN0cnVjdGlvbiAmJiBibG9ja1N0YXRlICE9IE5ldykKKyAgICAgICAgaWYgKGRl
c3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGVtcHR5TW9kZSA9PSBOb3RFbXB0
eSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpLT5jYWxsRGVzdHJ1Y3Rv
cigqdm0oKSk7CiAKICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsK
QEAgLTE2Myw3ICsxNDgsMTkgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lh
bGl6ZQogICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKIAogICAgIEZyZWVMaXN0
IHJlc3VsdCA9IEZyZWVMaXN0OjpsaXN0KGhlYWQsIGNvdW50ICogY2VsbFNpemUoKSk7Ci0gICAg
bV9zdGF0ZSA9IChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0ID8gRnJlZUxpc3RlZCA6IE1h
cmtlZCk7CisgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHNl
dElzRnJlZUxpc3RlZCgpOworICAgIGVsc2UgeworICAgICAgICB1bnNpZ25lZCBjZWxsc1BlckJs
b2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7CisgICAgICAgIGlm
IChjb3VudCA9PSBjZWxsc1BlckJsb2NrKSB7CisgICAgICAgICAgICAvLyBPZGRseSwgdGhpcyBt
YXkgc2V0IGVtcHR5IG9uIGEgYmxvY2sgdGhhdCBhbHNvIGhhcyBtX2NhbkFsbG9jYXRlQnV0Tm90
RW1wdHkgc2V0LgorICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25lIGNvcm5lciBjYXNlIHdo
ZXJlIGJvdGggYml0cyBtYXkgYmUgc2V0IGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMgbWFrZXMKKyAg
ICAgICAgICAgIC8vIHRoZSBibG9jayBlbGlnaWJsZSBmb3IgdXNlIGJ5IHNvbWUgb3RoZXIgYWxs
b2NhdG9yLgorICAgICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBhbHNvIHJlc2V0
IHRoZSBlbXB0eSBjdXJzb3Igd2hlbiB0aGlzIGhhcHBlbnMuCisgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIyCisgICAgICAgICAgICBt
X2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KICAg
ICBpZiAoZmFsc2UpCiAgICAgICAgIGRhdGFMb2coIlNsb3dseSBzd2VwdCBibG9jayAiLCBSYXdQ
b2ludGVyKCZibG9jayksICIgd2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0
cmlidXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIik7CiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTE3MSwxNSArMTY4LDIwIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnNwZWNpYWxpemUKIAogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXAoU3dl
ZXBNb2RlIHN3ZWVwTW9kZSkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKKyAgICBtX2FsbG9j
YXRvci0+c2V0SXNVbnN3ZXB0KHRoaXMsIGZhbHNlKTsKICAgICAKLSAgICBIRUFQX0xPR19CTE9D
S19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotCiAgICAgbV93ZWFrU2V0LnN3ZWVwKCk7CiAKICAg
ICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwT25seSAmJiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24g
PT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAK
KyAgICBpZiAoVU5MSUtFTFkobV9pc0ZyZWVMaXN0ZWQpKSB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOworICAgICAgICByZXR1cm4gRnJlZUxp
c3QoKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKCFtX2FsbG9jYXRvci0+aXNBbGxvY2F0ZWQo
dGhpcykpOworICAgIAogICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNE
ZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2Rl
PE5lZWRzRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2Vs
ZWN0U2NyaWJibGVNb2RlPERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CkBAIC0x
ODksNDcgKzE5MSw1OSBAQCB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2Rl
CiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxl
TW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygp
KQotICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZTxkZXN0
cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOwotICAgIHJldHVybiBzd2VlcEhlbHBl
clNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgRG9udFNjcmliYmxlPihz
d2VlcE1vZGUpOworICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVz
dHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxw
ZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9k
ZSk7CiB9CiAKIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+Ci1GcmVlTGlzdCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVw
TW9kZSBzd2VlcE1vZGUpCitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBl
clNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIHN3aXRjaCAobV9z
dGF0ZSkgewotICAgIGNhc2UgTmV3OgotICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVw
VG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPE5ldywgU3dlZXBU
b0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZD4oKTsKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAgIC8vIEhhcHBlbnMg
d2hlbiBhIGJsb2NrIHRyYW5zaXRpb25zIHRvIGZ1bGx5IGFsbG9jYXRlZC4KLSAgICAgICAgQVNT
RVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICByZXR1cm4gRnJlZUxp
c3QoKTsKLSAgICBjYXNlIEFsbG9jYXRlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7Ci0gICAgY2FzZSBNYXJrZWQ6Ci0g
ICAgICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2Vl
cDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUs
IEhhc05ld2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVw
PE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3
bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gc3dl
ZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRT
d2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1v
ZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAgICAgICA6IHNwZWNp
YWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVN
b2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgICAgICB9Ci0gICAgfQotICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZyZWVMaXN0KCk7Cisg
ICAgLy8gSXQncyBub3Qgb2J2aW91cywgYnV0IHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGtub3cg
aWYgdGhlIGJsb2NrIGlzIGVtcHR5LiBJdCdzIHRoZSBvbmx5CisgICAgLy8gYml0IHRoYXQgY2Fw
dHVyZXMgdGhlc2UgY2F2ZWF0czoKKyAgICAvLyAtIEl0J3MgdHJ1ZSB3aGVuIHRoZSBibG9jayBp
cyBmcmVzaGx5IGFsbG9jYXRlZC4KKyAgICAvLyAtIEl0J3MgdHJ1ZSBpZiB0aGUgYmxvY2sgaGFk
IGJlZW4gc3dlcHQgaW4gdGhlIHBhc3QsIGFsbCBkZXN0cnVjdG9ycyB3ZXJlIGNhbGxlZCwgYW5k
IHRoYXQKKyAgICAvLyAgIHN3ZWVwIHByb3ZlZCB0aGF0IHRoZSBibG9jayBpcyBlbXB0eS4KKyAg
ICAvLyAtIEl0J3MgZmFsc2UgaWYgdGhlcmUgYXJlIGFueSBkZXN0cnVjdG9ycyB0aGF0IG5lZWQg
dG8gYmUgY2FsbGVkLCBldmVuIGlmIHRoZSBibG9jayBoYXMgbm8KKyAgICAvLyAgIGxpdmUgb2Jq
ZWN0cy4KKyAgICBpZiAobV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcykpCisgICAgICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPElzRW1wdHksIGRlc3RydWN0aW9u
TW9kZSwgc2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNl
bGVjdEhhc05ld2x5QWxsb2NhdGVkPE5vdEVtcHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxl
TW9kZT4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1w
dHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KK0ZyZWVMaXN0IE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dlZXBN
b2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAgcmV0
dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2Rl
LCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwg
c2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworfQor
Cit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0
cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJs
ZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1v
ZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAo
c3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVy
U2VsZWN0RmxpcE1vZGU8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHN3ZWVw
SGVscGVyU2VsZWN0RmxpcE1vZGU8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7Cit9CisKK3RlbXBsYXRlPE1h
cmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUs
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVl
TGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCkKK3sK
KyAgICBpZiAobmVlZHNGbGlwKCkpCisgICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPGVt
cHR5TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlB
bGxvY2F0ZWRNb2RlLCBOZWVkc0ZsaXA+KCk7CisgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8
ZW1wdHlNb2RlLCBzd2VlcE1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXds
eUFsbG9jYXRlZE1vZGUsIERvZXNOb3ROZWVkRmxpcD4oKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9j
azo6SGFuZGxlOjp1bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKQogewotICAgIGZsaXBJZk5l
Y2Vzc2FyeSgpOwotICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhp
cyk7Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAg
ICBtX3N0YXRlID0gTWFya2VkOworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNGcmVlTGlzdGVkKTsK
KyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnNldElzRnJlZUxpc3RlZCgpCit7CisgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhp
cywgZmFsc2UpOworICAgIG1faXNGcmVlTGlzdGVkID0gdHJ1ZTsKIH0KIAogY2xhc3MgU2V0TmV3
bHlBbGxvY2F0ZWRGdW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7CkBA
IC0yNTIsMjYgKzI2NiwxNyBAQCBwcml2YXRlOgogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN0b3BBbGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKIHsKLSAgICBmbGlwSWZO
ZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwor
ICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZyFcbiIpOworICAgIEFTU0VSVCghYWxsb2Nh
dG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAgIGlmIChtX3N0YXRlID09IE1hcmtlZCkg
ewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4gdGhlIE1hcmtlZCBzdGF0ZSB0aGVuIHdl
IGtub3cgdGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAgLy8gY29uZGl0aW9ucyBob2xkczoKLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90IHVzZWQgZm9yIGFsbG9jYXRpb24gZHVy
aW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xlLgotICAgICAgICAvLyAgIEl0IG1heSBo
YXZlIGRlYWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25vdyB0aGVtIHRvIGJlIGRlYWQgYnkgdGhl
Ci0gICAgICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1hcmsgYml0cyBhcmUgdW5zZXQuCi0gICAg
ICAgIC8vCi0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0
aW5nKCksIGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAgICAgICAgLy8gICBoZWFwIGl0ZXJhdGlv
biwgYW5kIHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAgIC8vIEhlbmNlIGlmIHRoZSBibG9jayBp
cyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJrZWQuCisgICAgaWYgKCFpc0ZyZWVMaXN0
ZWQoKSkgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgZWl0aGVyIGRpZG4ndCB1c2Ug
dGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24gc2luY2UgbGFzdCBHQywKKyAgICAgICAg
Ly8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCkgYmVmb3JlLgog
ICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOwot
ICAgIAogICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVyZW50IHN0YXRlIGZvciBIZWFwIGludHJv
c3BlY3Rpb24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxsb2NhdGVkIGZyb20gb3VyIGZyZWUgbGlz
dCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQgYW5vdGhlcgogICAgIC8vIHdh
eSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApAQCAtMjkwLDExICsyOTUsMTIgQEAgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgICAgICAgICAgY2xlYXJO
ZXdseUFsbG9jYXRlZChjZWxsKTsKICAgICAgICAgfSk7CiAgICAgCi0gICAgbV9zdGF0ZSA9IE1h
cmtlZDsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOwogfQogCiB2b2lkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKKyAgICBhbGxvY2F0b3IoKS0+c2V0
SXNBbGxvY2F0ZWQodGhpcywgZmFsc2UpOwogICAgIG1fYmxvY2stPmNsZWFyTWFya3MoKTsKICAg
ICBtX3dlYWtTZXQubGFzdENoYW5jZVRvRmluYWxpemUoKTsKIApAQCAtMzA0LDE0ICszMTAsMTEg
QEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaQogCiBGcmVlTGlzdCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKLSAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotCi0g
ICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKKyAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5p
c0FsbG9jYXRlZCh0aGlzKSk7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAKICAgICBp
ZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgLy8gV2UgZGlkbid0IGhhdmUgdG8gY3Jl
YXRlIGEgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwLiBUaGF0IG1lYW5zIHdlIHdlcmUgYWxyZWFk
eSBNYXJrZWQKLSAgICAgICAgLy8gd2hlbiB3ZSBsYXN0IHN0b3BwZWQgYWxsb2NhdGlvbiwgc28g
cmV0dXJuIGFuIGVtcHR5IGZyZWUgbGlzdCBhbmQgc3RheSBpbiB0aGUgTWFya2VkIHN0YXRlLgor
ICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgYmxvY2sg
d2hlbiB3ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwog
ICAgIH0KIApAQCAtMzQ1LDQwICszNDgsMjggQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpm
b3JFYWNoRnJlZUNlbAogICAgIH0KIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNz
YXJ5KCkKLXsKLSAgICBmbGlwSWZOZWNlc3Nhcnkodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKSk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5
KCkKLXsKLSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeSgpOwotfQotCi12b2lkIE1hcmtlZEJs
b2NrOjpmbGlwSWZOZWNlc3NhcnlTbG93KCkKLXsKLSAgICBBU1NFUlQobmVlZHNGbGlwKCkpOwot
ICAgIEFTU0VSVCghdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsKLSAgICBj
bGVhck1hcmtzKCk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmlu
Z01hcmtpbmdTbG93KCkKK3ZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyhIZWFwVmVy
c2lvbiBoZWFwVmVyc2lvbikKIHsKICAgICBBU1NFUlQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgp
LmlzTWFya2luZygpKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChu
ZWVkc0ZsaXAoKSkKLSAgICAgICAgY2xlYXJNYXJrcygpOworICAgIGlmIChuZWVkc0ZsaXAoaGVh
cFZlcnNpb24pKSB7CisgICAgICAgIGNsZWFyTWFya3MoaGVhcFZlcnNpb24pOworICAgICAgICAv
LyBUaGlzIG1lYW5zIHdlJ3JlIHRoZSBmaXJzdCBvbmVzIHRvIG1hcmsgYW55IG9iamVjdCBpbiB0
aGlzIGJsb2NrLgorICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hl
Y2tJc01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOworICAgIH0KIH0KIAogdm9pZCBN
YXJrZWRCbG9jazo6Y2xlYXJNYXJrcygpCiB7CisgICAgY2xlYXJNYXJrcyh2bSgpLT5oZWFwLm9i
amVjdFNwYWNlKCkudmVyc2lvbigpKTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJr
cyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKK3sKICAgICBtX21hcmtzLmNsZWFyQWxsKCk7CiAg
ICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICAvLyBUaGlzIHdpbGwgYmVjb21lIHRydWUgYXQg
dGhlIGVuZCBvZiB0aGUgbWFyayBwaGFzZS4gV2Ugc2V0IGl0IG5vdyB0bwotICAgIC8vIGF2b2lk
IGFuIGV4dHJhIHBhc3MgdG8gZG8gc28gbGF0ZXIuCi0gICAgaGFuZGxlKCkubV9zdGF0ZSA9IE1h
cmtlZDsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotICAgIG1fdmVyc2lvbiA9IHZtKCkt
PmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CisgICAgbV92ZXJzaW9uID0gaGVhcFZlcnNp
b247CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0zOTgsMzEgKzM4OSwzOCBAQCBib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRzRmxpcCgpCiAgICAgcmV0dXJuIG1fYmxvY2stPm5l
ZWRzRmxpcCgpOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OndpbGxSZW1vdmVCbG9j
aygpCitib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25zdCB2b2lkKiBwKQogewotICAgIGZs
aXBJZk5lY2Vzc2FyeSgpOworICAgIHJldHVybiBpc01hcmtlZCh2bSgpLT5oZWFwLm9iamVjdFNw
YWNlKCkudmVyc2lvbigpLCBwKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRD
b25zdW1lRnJlZUxpc3QoKQorYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5
KCk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICAKLSAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKKyAgICByZXR1cm4gaXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwor
fQorCitib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVh
cENlbGwqIGNlbGwpCit7CisgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh2bSgp
LT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKK30KIAotICAgIG1fc3RhdGUg
PSBBbGxvY2F0ZWQ7Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlz
dCgpCit7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyks
ICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCFcbiIpOworICAgIEFT
U0VSVChpc0ZyZWVMaXN0ZWQoKSk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKKyAgICBh
bGxvY2F0b3IoKS0+c2V0SXNBbGxvY2F0ZWQodGhpcywgdHJ1ZSk7CiB9CiAKIHNpemVfdCBNYXJr
ZWRCbG9jazo6bWFya0NvdW50KCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1
cm4gbV9tYXJrcy5jb3VudCgpOworICAgIHJldHVybiBuZWVkc0ZsaXAoKSA/IDAgOiBtX21hcmtz
LmNvdW50KCk7CiB9CiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNFbXB0eSgpCiB7Ci0g
ICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkICYmICFi
bG9jaygpLmhhc0FueU1hcmtlZCgpICYmIG1fd2Vha1NldC5pc0VtcHR5KCkgJiYgKCFtX25ld2x5
QWxsb2NhdGVkIHx8IG1fbmV3bHlBbGxvY2F0ZWQtPmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIG1f
YWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMpOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhckhh
c0FueU1hcmtlZCgpCkBAIC00MzIsMjkgKzQzMCw3OCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpjbGVh
ckhhc0FueU1hcmtlZCgpCiAKIHZvaWQgTWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KCkKIHsK
LSAgICBoYW5kbGUoKS5tX2FsbG9jYXRvci0+cmV0aXJlKCZoYW5kbGUoKSk7CisgICAgaGFuZGxl
KCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nUmV0aXJlZCgmaGFuZGxl
KCksIHRydWUpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21BbGxv
Y2F0b3IoKQoreworICAgIGlmICghbV9hbGxvY2F0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBtX2FsbG9jYXRvci0+cmVtb3ZlQmxvY2sodGhpcyk7Cit9CisKK3ZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKKyAgICAKKyAg
ICBtX2luZGV4ID0gaW5kZXg7CisgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7CisgICAgCisg
ICAgc2l6ZV90IGNlbGxTaXplID0gYWxsb2NhdG9yLT5jZWxsU2l6ZSgpOworICAgIG1fYXRvbXNQ
ZXJDZWxsID0gKGNlbGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplOworICAgIG1fZW5k
QXRvbSA9IGF0b21zUGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDE7CisgICAgCisgICAgbV9h
dHRyaWJ1dGVzID0gYWxsb2NhdG9yLT5hdHRyaWJ1dGVzKCk7CisKKyAgICBpZiAobV9hdHRyaWJ1
dGVzLmNlbGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKKyAg
ICAKKyAgICBibG9jaygpLm1fbmVlZHNEZXN0cnVjdGlvbiA9IG5lZWRzRGVzdHJ1Y3Rpb24oKTsK
KyAgICAKKyAgICB1bnNpZ25lZCBjZWxsc1BlckJsb2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5
bG9hZCAvIGNlbGxTaXplOworICAgIGRvdWJsZSBtYXJrQ291bnRCaWFzID0gLShPcHRpb25zOjpt
aW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uKCkgKiBjZWxsc1BlckJsb2NrKTsKKyAgICAKKyAgICAv
LyBUaGUgbWFyayBjb3VudCBiaWFzIHNob3VsZCBiZSBjb21mb3J0YWJseSB3aXRoaW4gdGhpcyBy
YW5nZS4KKyAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzID4gc3RhdGljX2Nhc3Q8ZG91
YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptaW4oKSkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKG1hcmtDb3VudEJpYXMgPCAwKTsKKyAgICAKKyAgICAvLyBUaGlzIG1lYW5zIHdlIGhh
dmVuJ3QgbWFya2VkIGFueXRoaW5nIHlldC4KKyAgICBibG9jaygpLm1fYmlhc2VkTWFya0NvdW50
ID0gYmxvY2soKS5tX21hcmtDb3VudEJpYXMgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihtYXJrQ291
bnRCaWFzKTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVGcm9tQWxs
b2NhdG9yKCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworICAgIAorICAgIG1faW5k
ZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworICAgIG1fYWxsb2NhdG9y
ID0gbnVsbHB0cjsKK30KKworYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3Qg
SGVhcENlbGwqIGNlbGwpCit7CisgICAgcmV0dXJuIGlzTGl2ZSh2bSgpLT5oZWFwLm9iamVjdFNw
YWNlKCkudmVyc2lvbigpLCBjZWxsKTsKK30KKworYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCit7CisgICAgcmV0dXJuIGlzTGl2ZUNlbGwodm0oKS0+
aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiBuYW1lc3BhY2UgV1RGIHsKIAotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2Nr
U3RhdGUpCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgbW9kZSkKIHsKLSAgICBzd2l0Y2ggKGJsb2NrU3RhdGUp
IHsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpOZXc6Ci0gICAgICAgIG91dC5wcmludCgiTmV3Iik7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpGcmVlTGlzdGVkOgotICAg
ICAgICBvdXQucHJpbnQoIkZyZWVMaXN0ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
TWFya2VkQmxvY2s6OkFsbG9jYXRlZDoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvY2F0ZWQiKTsK
KyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
U3dlZXBUb0ZyZWVMaXN0OgorICAgICAgICBvdXQucHJpbnQoIlN3ZWVwVG9GcmVlTGlzdCIpOwog
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TWFya2VkOgotICAgICAgICBv
dXQucHJpbnQoIk1hcmtlZCIpOworICAgIGNhc2UgSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpT
d2VlcE9ubHk6CisgICAgICAgIG91dC5wcmludCgiU3dlZXBPbmx5Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMjAgKzQ0LDYgQEAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogdHlwZWRlZiB1aW50cHRy
X3QgQml0czsKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKLS8vIFNldCB0byBsb2cg
c3RhdGUgdHJhbnNpdGlvbnMgb2YgYmxvY2tzLgotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFU
RV9UUkFOU0lUSU9OUyAwCi0KLSNpZiBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwot
I2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgZG8geyAgICAg
ICAgICAgIFwKLSAgICAgICAgZGF0YUxvZ0YoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAiJXM6JWQgJXM6IGJsb2NrICVzID0gJXAs
ICVkXG4iLCAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgX19GSUxFX18sIF9fTElO
RV9fLCBfX0ZVTkNUSU9OX18sICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICNoYW5k
bGUsICYoaGFuZGxlKS0+YmxvY2soKSwgKGhhbmRsZSktPm1fc3RhdGUpOyAgICBcCi0gICAgfSB3
aGlsZSAoZmFsc2UpCi0jZWxzZQotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lU
SU9OKGhhbmRsZSkgKCh2b2lkKTApCi0jZW5kaWYKLQogLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBw
YWdlLWFsaWduZWQgY29udGFpbmVyIGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgogLy8gT2Jq
ZWN0cyBhcmUgYWxsb2NhdGVkIHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3Ig
YSBnaXZlbgogLy8gbWFya2VkIGJsb2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXplLiBP
YmplY3RzIHNtYWxsZXIgdGhhbiB0aGUKQEAgLTc2LDggKzYyLDYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgSGFuZGxlOwogcHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0
ZSA6IHVpbnQ4X3QgeyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAg
ICAgIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBibG9ja01hc2sgPSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVz
dCBiZSBhIHBvd2VyIG9mIHR3by4KQEAgLTg2LDEyICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWNfYXNzZXJ0KCEoTWFya2VkQmxvY2s6OmF0b21TaXplICYgKE1hcmtlZEJsb2NrOjphdG9t
U2l6ZSAtIDEpKSwgIk1hcmtlZEJsb2NrOjphdG9tU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdv
LiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShNYXJrZWRCbG9jazo6YmxvY2tTaXplICYgKE1hcmtl
ZEJsb2NrOjpibG9ja1NpemUgLSAxKSksICJNYXJrZWRCbG9jazo6YmxvY2tTaXplIG11c3QgYmUg
YSBwb3dlciBvZiB0d28uIik7Ci0KKyAgICAKICAgICBzdHJ1Y3QgVm9pZEZ1bmN0b3IgewogICAg
ICAgICB0eXBlZGVmIHZvaWQgUmV0dXJuVHlwZTsKICAgICAgICAgdm9pZCByZXR1cm5WYWx1ZSgp
IHsgfQogICAgIH07Ci0KKyAgICAKICAgICBjbGFzcyBDb3VudEZ1bmN0b3IgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBzaXplX3QgUmV0dXJuVHlwZTsKQEAgLTEwNiwxMCArOTAsOSBA
QCBwdWJsaWM6CiAgICAgICAgIG11dGFibGUgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgIH07CiAg
ICAgICAgIAotICAgIGNsYXNzIEhhbmRsZSA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxI
YW5kbGU+IHsKKyAgICBjbGFzcyBIYW5kbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShIYW5kbGUpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIERvdWJseUxpbmtlZExpc3ROb2RlPEhhbmRsZT47CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRC
bG9jazsKICAgICAgICAgZnJpZW5kIHN0cnVjdCBWZXJpZnlNYXJrZWQ7CkBAIC0xMzAsNiArMTEz
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgVk0qIHZtKCkgY29uc3Q7CiAgICAgICAgIFdlYWtTZXQm
IHdlYWtTZXQoKTsKICAgICAgICAgICAgIAorICAgICAgICAvLyBTd2VlcGluZyBlbnN1cmVzIHRo
YXQgZGVzdHJ1Y3RvcnMgZ2V0IGNhbGxlZCBhbmQgcmVtb3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUg
dW5zd2VwdAorICAgICAgICAvLyBzZXQuIFN3ZWVwaW5nIHRvIGZyZWUgbGlzdCBhbHNvIHJlbW92
ZXMgdGhlIGJsb2NrIGZyb20gdGhlIGVtcHR5IHNldCwgaWYgaXQgd2FzIGluIHRoYXQKKyAgICAg
ICAgLy8gc2V0LiBTd2VlcGluZyB3aXRoIFN3ZWVwT25seSBtYXkgYWRkIHRoaXMgYmxvY2sgdG8g
dGhlIGVtcHR5IHNldCwgaWYgdGhlIGJsb2NrIGlzIGZvdW5kCisgICAgICAgIC8vIHRvIGJlIGVt
cHR5LgorICAgICAgICAvLworICAgICAgICAvLyBOb3RlIHRoYXQgeW91IG5lZWQgdG8gbWFrZSBz
dXJlIHRoYXQgdGhlIGVtcHR5IGJpdCByZWZsZWN0cyByZWFsaXR5LiBJZiBpdCdzIG5vdCBzZXQK
KyAgICAgICAgLy8gYW5kIHRoZSBibG9jayBpcyBmcmVzaGx5IGNyZWF0ZWQsIHRoZW4gd2UnbGwg
bWFrZSB0aGUgbWlzdGFrZSBvZiBydW5uaW5nIGRlc3RydWN0b3JzIGluCisgICAgICAgIC8vIHRo
ZSBibG9jay4gSWYgaXQncyBub3Qgc2V0IGFuZCB0aGUgYmxvY2sgaGFzIG5vdGhpbmcgbWFya2Vk
LCB0aGVuIHdlJ2xsIG1ha2UgdGhlCisgICAgICAgIC8vIG1pc3Rha2Ugb2YgbWFraW5nIGEgcG9w
IGZyZWVsaXN0IHJhdGhlciB0aGFuIGEgYnVtcCBmcmVlbGlzdC4KICAgICAgICAgZW51bSBTd2Vl
cE1vZGUgeyBTd2VlcE9ubHksIFN3ZWVwVG9GcmVlTGlzdCB9OwogICAgICAgICBGcmVlTGlzdCBz
d2VlcChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAKQEAgLTE1Myw4ICsxNDUsNiBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIGFuZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZh
bHNlIG90aGVyd2lzZS4KICAgICAgICAgYm9vbCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgdm9pZCBmbGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsKLSAgICAgICAg
ICAgIAogICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAgICAgICAgY29uc3QgQWxsb2NhdG9y
QXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OwogICAgICAgICBEZXN0cnVjdGlvbk1vZGUg
ZGVzdHJ1Y3Rpb24oKSBjb25zdDsKQEAgLTE2NCw5ICsxNTQsMTQgQEAgcHVibGljOgogICAgICAg
ICBzaXplX3QgbWFya0NvdW50KCk7CiAgICAgICAgIHNpemVfdCBzaXplKCk7CiAgICAgICAgICAg
ICAKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2Vs
bCopOworICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhlYXBWZXJzaW9uLCBjb25zdCB2
b2lkKik7CisKICAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSGVhcENlbGwqKTsKICAgICAgICAg
Ym9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKKwogICAgICAgICBib29sIGlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOworICAgICAgICBib29sIGlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKICAgICAgICAgICAg
IAogICAgICAgICBib29sIGlzTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2
b2lkIHNldE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKQEAgLTE3NCwzMSArMTY5LDI1IEBA
IHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSBj
b25zdCB7IHJldHVybiAhIW1fbmV3bHlBbGxvY2F0ZWQ7IH0KICAgICAgICAgICAgIAotICAgICAg
ICBib29sIGlzQWxsb2NhdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNNYXJrZWQoKSBjb25z
dDsKLSAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdDsKLSAgICAgICAgYm9vbCBuZWVk
c1N3ZWVwaW5nKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgd2lsbFJlbW92ZUJsb2NrKCk7Ci0KICAg
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNo
Q2VsbChjb25zdCBGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVh
ZENlbGwoY29uc3QgRnVuY3RvciYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rv
cj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYp
OworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0
YXR1cyBmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICAgICAgCiAgICAg
ICAgIGJvb2wgbmVlZHNGbGlwKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgdm9pZCBmbGlwSWZO
ZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uKTsKLSAgICAgICAgdm9pZCBmbGlwSWZO
ZWNlc3NhcnkoSGVhcFZlcnNpb24pOwotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICAgICAgCisgICAgICAgIAogICAgICAgICB2b2lkIGFzc2VydEZsaXBwZWQoKTsKICAg
ICAgICAgICAgIAotICAgICAgICBib29sIGlzT25CbG9ja3NUb1N3ZWVwKCkgY29uc3QgeyByZXR1
cm4gbV9pc09uQmxvY2tzVG9Td2VlcDsgfQotICAgICAgICB2b2lkIHNldElzT25CbG9ja3NUb1N3
ZWVwKGJvb2wgdmFsdWUpIHsgbV9pc09uQmxvY2tzVG9Td2VlcCA9IHZhbHVlOyB9CisgICAgICAg
IGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyZWVMaXN0ZWQ7IH0KKyAg
ICAgICAgCisgICAgICAgIHNpemVfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0K
KyAgICAgICAgCisgICAgICAgIHZvaWQgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAgICAK
KyAgICAgICAgdm9pZCBkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3Qg
aW5kZXgpOworICAgICAgICB2b2lkIGRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKICAgICAgICAg
Ci0gICAgICAgIEJsb2NrU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0g
ICAgICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBIYW5kbGUoSGVhcCYsIE1hcmtlZEFs
bG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYsIHZv
aWQqKTsKKyAgICAgICAgSGFuZGxlKEhlYXAmLCB2b2lkKik7CiAgICAgICAgICAgICAKICAgICAg
ICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlPgogICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBl
clNlbGVjdFNjcmliYmxlTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwpAQCAtMjA2LDM1ICsx
OTUsNTAgQEAgcHVibGljOgogICAgICAgICBlbnVtIFNjcmliYmxlTW9kZSB7IERvbnRTY3JpYmJs
ZSwgU2NyaWJibGUgfTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlv
bk1vZGUsIFNjcmliYmxlTW9kZT4KLSAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RT
dGF0ZUFuZFN3ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICBGcmVlTGlz
dCBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAg
ICAgICAgICAgCisgICAgICAgIGVudW0gRW1wdHlNb2RlIHsgSXNFbXB0eSwgTm90RW1wdHkgfTsK
KyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBT
Y3JpYmJsZU1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlB
bGxvY2F0ZWQoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCiAgICAgICAgIGVudW0g
TmV3bHlBbGxvY2F0ZWRNb2RlIHsgSGFzTmV3bHlBbGxvY2F0ZWQsIERvZXNOb3RIYXZlTmV3bHlB
bGxvY2F0ZWQgfTsKLSAgICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRlLCBT
d2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1v
ZGU+CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9k
ZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3
ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAg
IAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2Rl
LCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dl
ZXBIZWxwZXJTZWxlY3RGbGlwTW9kZSgpOworICAgICAgICAKKyAgICAgICAgZW51bSBGbGlwTW9k
ZSB7IE5lZWRzRmxpcCwgRG9lc05vdE5lZWRGbGlwIH07CisgICAgICAgIAorICAgICAgICB0ZW1w
bGF0ZTxFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUs
IE5ld2x5QWxsb2NhdGVkTW9kZSwgRmxpcE1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHNwZWNpYWxp
emVkU3dlZXAoKTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgogICAgICAgICB2b2lkIGZvckVhY2hGcmVlQ2VsbChjb25zdCBGcmVlTGlzdCYsIGNvbnN0IEZ1
bmMmKTsKLSAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0ZyZWVMaXN0
ZWQoKTsKKyAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fcHJldjsKICAg
ICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0OwogICAgICAgICAgICAgCi0gICAgICAg
IHNpemVfdCBtX2F0b21zUGVyQ2VsbDsKLSAgICAgICAgc2l6ZV90IG1fZW5kQXRvbTsgLy8gVGhp
cyBpcyBhIGZ1enp5IGVuZC4gQWx3YXlzIHRlc3QgZm9yIDwgbV9lbmRBdG9tLgorICAgICAgICBz
aXplX3QgbV9hdG9tc1BlckNlbGwgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
IH07CisgICAgICAgIHNpemVfdCBtX2VuZEF0b20geyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpIH07IC8vIFRoaXMgaXMgYSBmdXp6eSBlbmQuIEFsd2F5cyB0ZXN0IGZvciA8IG1f
ZW5kQXRvbS4KICAgICAgICAgICAgIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpCaXRt
YXA8YXRvbXNQZXJCbG9jaz4+IG1fbmV3bHlBbGxvY2F0ZWQ7CiAgICAgICAgICAgICAKICAgICAg
ICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7Ci0gICAgICAgIEJsb2NrU3RhdGUg
bV9zdGF0ZTsKLSAgICAgICAgYm9vbCBtX2lzT25CbG9ja3NUb1N3ZWVwIHsgZmFsc2UgfTsKKyAg
ICAgICAgYm9vbCBtX2lzRnJlZUxpc3RlZCB7IGZhbHNlIH07CiAgICAgICAgICAgICAKLSAgICAg
ICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9y
KiBtX2FsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFr
U2V0OwogICAgICAgICAgICAgCi0gICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrOworICAgICAg
ICBNYXJrZWRCbG9jayogbV9ibG9jayB7IG51bGxwdHIgfTsKICAgICB9OwogICAgICAgICAKLSAg
ICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBNYXJrZWRBbGxv
Y2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKKyAg
ICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmKTsKICAgICAgICAg
CiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBAIC0yNDgsMzQgKzI1MiwzNSBAQCBw
dWJsaWM6CiAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogCiAgICAgYm9vbCBpc01hcmtlZChjb25z
dCB2b2lkKik7CisgICAgYm9vbCBpc01hcmtlZChIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOwor
ICAgIGJvb2wgaXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsK
ICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICAKICAgICBi
b29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOworICAgIGJvb2wg
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwog
ICAgIAotICAgIGJvb2wgaXNNYXJrZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24sIGNv
bnN0IEhlYXBDZWxsKik7Ci0KICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAgdm9p
ZCBjbGVhck1hcmtlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIAorICAgIAogICAgIHNpemVfdCBj
ZWxsU2l6ZSgpOwogICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBj
b25zdDsKLQorICAgIAogICAgIGJvb2wgaGFzQW55TWFya2VkKCkgY29uc3Q7CiAgICAgdm9pZCBu
b3RlTWFya2VkKCk7CiAgICAgICAgIAogICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKLQorICAgIAog
ICAgIGJvb2wgbmVlZHNGbGlwKEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxpcCgpOwot
ICAgICAgICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNp
b24pOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZs
aXBJZk5lY2Vzc2FyeSgpOworICAgIAorICAgIHZvaWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24p
OwogICAgICAgICAKICAgICB2b2lkIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAgCiAgICAgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9
Ci0gICAgICAgIAorICAgIAorICAgIGlubGluZSB2b2lkIHJlc2V0VmVyc2lvbigpOworICAgIAog
cHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRv
bVNpemUgLSAxOwogCkBAIC0yODQsOSArMjg5LDkgQEAgcHJpdmF0ZToKICAgICBNYXJrZWRCbG9j
ayhWTSYsIEhhbmRsZSYpOwogICAgIEF0b20qIGF0b21zKCk7CiAgICAgICAgIAotICAgIHZvaWQg
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3coKTsKLSAgICB2b2lkIGZsaXBJZk5lY2Vz
c2FyeVNsb3coKTsKKyAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbik7CiAgICAg
dm9pZCBjbGVhck1hcmtzKCk7CisgICAgdm9pZCBjbGVhck1hcmtzKEhlYXBWZXJzaW9uKTsKICAg
ICB2b2lkIGNsZWFySGFzQW55TWFya2VkKCk7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xv
dygpOwpAQCAtNDY5LDQwICs0NzQsMTMgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Om5lZWRz
RmxpcChIZWFwVgogICAgIHJldHVybiBoZWFwVmVyc2lvbiAhPSBtX3ZlcnNpb247CiB9CiAKLWlu
bGluZSB2b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24gaGVhcFZl
cnNpb24pCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24g
aGVhcFZlcnNpb24pCiB7CiAgICAgaWYgKFVOTElLRUxZKG5lZWRzRmxpcChoZWFwVmVyc2lvbikp
KQotICAgICAgICBmbGlwSWZOZWNlc3NhcnlTbG93KCk7Ci19Ci0KLWlubGluZSB2b2lkIE1hcmtl
ZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJz
aW9uKQotewotICAgIGlmIChVTkxJS0VMWShuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKSkKLSAgICAg
ICAgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3coKTsKKyAgICAgICAgYWJvdXRUb01h
cmtTbG93KGhlYXBWZXJzaW9uKTsKICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKIH0KIAotaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9u
IGhlYXBWZXJzaW9uKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJzaW9u
KTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5
RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBibG9jaygpLmZs
aXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwRm9yRWRlbkNvbGxlY3Rpb24oKQotewotICAgIGFz
c2VydEZsaXBwZWQoKTsKLSAgICAgICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJ
VElPTih0aGlzKTsKLSAgICAKLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBOZXcgJiYgbV9zdGF0ZSAh
PSBGcmVlTGlzdGVkKTsKLSAgICAKLSAgICBtX3N0YXRlID0gTWFya2VkOwotfQotCiAjaWYgQVNT
RVJUX0RJU0FCTEVECiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YXNzZXJ0RmxpcHBlZCgpCiB7
CkBAIC01MTQsOSArNDkyLDE2IEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFz
c2VydEYKICAgICBibG9jaygpLmFzc2VydEZsaXBwZWQoKTsKIH0KIAotaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHApCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6aXNNYXJrZWQoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqIHApCiB7Ci0g
ICAgYXNzZXJ0RmxpcHBlZCgpOworICAgIHJldHVybiBuZWVkc0ZsaXAoaGVhcFZlcnNpb24pID8g
ZmFsc2UgOiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKK30KKworaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OmlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBj
b25zdCB2b2lkKiBwKQoreworICAgIGlmIChuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgcmV0dXJuIG1f
bWFya3MuZ2V0KGF0b21OdW1iZXIocCkpOwogfQogCkBAIC01NTAsNDMgKzUzNSwxNCBAQCBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5lCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxv
Y2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qg
SGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKLSAgICBy
ZXR1cm4gbV9ibG9jay0+aXNNYXJrZWQoY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNO
ZXdseUFsbG9jYXRlZChjZWxsKSk7CisgICAgcmV0dXJuIG1fYmxvY2stPmlzTWFya2VkKHZlcnNp
b24sIGNlbGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkp
OwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVk
KGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2Vs
bCkKIHsKLSAgICBBU1NFUlQobV9oYW5kbGUubV9zdGF0ZSA9PSBNYXJrZWQpOwotICAgIHJldHVy
biBpc01hcmtlZChjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBtX2hhbmRs
ZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25z
dCBIZWFwQ2VsbCogY2VsbCkKLXsKLSAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc01hcmtlZChjZWxsKTsKLX0KLQotaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxs
KQotewotICAgIGFzc2VydEZsaXBwZWQoKTsKLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBj
YXNlIEFsbG9jYXRlZDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIE1hcmtlZDoK
LSAgICAgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKLQotICAgIGNh
c2UgTmV3OgotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc01h
cmtlZCh2ZXJzaW9uLCBjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBtX2hh
bmRsZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAogaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQpAQCAtNjAzLDEzICs1NTksNiBAQCBpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkK
LXsKLSAgICBpZiAoIW1fYmxvY2stPmlzQXRvbShwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7Ci19Ci0K
IHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewpA
QCAtNjIyLDYyICs1NzEsNiBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpI
YW5kCiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPgotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6
SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBm
bGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVz
LmNlbGxLaW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRv
bTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOwotICAgICAg
ICBpZiAoIWlzTGl2ZShjZWxsKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlm
IChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4K
LWlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRD
ZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0g
ICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNl
bGwpIHsKLSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFw
Q2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKGlzTGl2ZShjZWxsKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQp
ID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc1N3ZWVwaW5nKCkg
Y29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+Zmxp
cElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwotfQotCi1pbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0FsbG9jYXRlZCgpIGNvbnN0Ci17Ci0gICAg
Y29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgp
OwotICAgIHJldHVybiBtX3N0YXRlID09IEFsbG9jYXRlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFy
a2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4g
bV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzRnJlZUxpc3RlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFu
ZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IEZy
ZWVMaXN0ZWQ7Ci19Ci0KIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpoYXNBbnlNYXJrZWQoKSBj
b25zdAogewogICAgIHJldHVybiBtX2JpYXNlZE1hcmtDb3VudCAhPSBtX21hcmtDb3VudEJpYXM7
CkBAIC03MTEsNyArNjA0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpN
YXJrZQogICAgIHR5cGVkZWYgTWFya2VkQmxvY2tIYXNoIEhhc2g7CiB9OwogCi12b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSk7
Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjpTd2VlcE1vZGUpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtlZEFs
bG9jYXRvci5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNpb24gdmVy
c2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCit7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQo
KSk7CisgICAgCisgICAgaWYgKFVOTElLRUxZKGhhc0FueU5ld2x5QWxsb2NhdGVkKCkpKSB7Cisg
ICAgICAgIGlmIChpc05ld2x5QWxsb2NhdGVkKGNlbGwpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIAorICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7
CisgICAgCisgICAgaWYgKGFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCisgICAgaWYgKGJsb2NrLm5lZWRzRmxpcCh2ZXJzaW9uKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOwor
fQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKEhlYXBWZXJz
aW9uIHZlcnNpb24sIGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20o
cCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNMaXZlKHZlcnNpb24sIHN0
YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4KK2lubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9y
RWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSGVhcENlbGw6Oktp
bmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAgICBmb3IgKHNpemVfdCBpID0gZmly
c3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKKyAgICAgICAg
SGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2Nr
LT5hdG9tcygpW2ldKTsKKyAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25T
dGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwor
ICAgIH0KKyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+CitpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAg
IEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChz
aXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxs
KSB7CisgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENl
bGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7CisgICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9
PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lOworICAgIH0KKyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
K30KKworaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OnJlc2V0VmVyc2lvbigpCit7CisgICAgbV92
ZXJzaW9uID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSW5jcmVt
ZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJT
YW1wbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKQEAgLTE5NSw2ICsxOTYsMTkg
QEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsK
KyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIHByZXZpb3VzID0gbnVsbHB0cjsKKyAgICBmb3JF
YWNoU3Vic3BhY2UoCisgICAgICAgIFsmXSAoU3Vic3BhY2UmIHN1YnNwYWNlLCBBbGxvY2F0b3JB
dHRyaWJ1dGVzKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgZm9yIChNYXJrZWRB
bGxvY2F0b3IqIGFsbG9jYXRvciA6IHN1YnNwYWNlLmJhZ09mQWxsb2NhdG9ycykgeworICAgICAg
ICAgICAgICAgIGFsbG9jYXRvci0+c2V0TmV4dEFsbG9jYXRvcihwcmV2aW91cyk7CisgICAgICAg
ICAgICAgICAgcHJldmlvdXMgPSBhbGxvY2F0b3I7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAg
ICB9KTsKKyAgICBtX2ZpcnN0QWxsb2NhdG9yID0gcHJldmlvdXM7CisgICAgbV9hbGxvY2F0b3JG
b3JFbXB0eUFsbG9jYXRpb24gPSBwcmV2aW91czsKIH0KIAogTWFya2VkU3BhY2U6On5NYXJrZWRT
cGFjZSgpCkBAIC0yMjIsMTUgKzIzNiwyMSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpsYXN0Q2hhbmNl
VG9GaW5hbGl6ZSgpCiAKIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZShTdWJzcGFjZSYgc3Vi
c3BhY2UsIHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0
b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9j
YXRvci0+YWxsb2NhdGUoKTsKKyAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBh
bGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkgeworICAgICAgICB2b2lkKiByZXN1bHQgPSBh
bGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgICAgIC8vZGF0YUxvZygiQWxsb2NhdGVkICIsIFJh
d1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQog
ICAgIHJldHVybiBhbGxvY2F0ZUxhcmdlKHN1YnNwYWNlLCBieXRlcyk7CiB9CiAKIHZvaWQqIE1h
cmtlZFNwYWNlOjp0cnlBbGxvY2F0ZShTdWJzcGFjZSYgc3Vic3BhY2UsIHNpemVfdCBieXRlcykK
IHsKLSAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vi
c3BhY2UsIGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci0+dHJ5QWxsb2NhdGUoKTsK
KyAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3Bh
Y2UsIGJ5dGVzKSkgeworICAgICAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3ItPnRyeUFsbG9j
YXRlKCk7CisgICAgICAgIC8vZGF0YUxvZygiVHJ5LWFsbG9jYXRlZCAiLCBSYXdQb2ludGVyKHJl
c3VsdCksICJcbiIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICByZXR1cm4g
dHJ5QWxsb2NhdGVMYXJnZShzdWJzcGFjZSwgYnl0ZXMpOwogfQogCkBAIC0yNTksOSArMjc5LDEw
IEBAIHZvaWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZUxhcmdlKFN1YnMKIHZvaWQgTWFya2Vk
U3BhY2U6OnN3ZWVwKCkKIHsKICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVw
aW5nKCk7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAgICBmb3JFYWNoQWxs
b2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVy
YXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLnN3ZWVwKCk7CisgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CiB9CiAKQEAg
LTI4NCwyOCArMzA1LDE2IEBAIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwTGFyZ2VBbGxvY2F0aW9u
cygKICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0ID0gbV9sYXJnZUFsbG9jYXRp
b25zLnNpemUoKTsKIH0KIAotdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKLXsKLSAg
ICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0YUxvZygiWm9tYmlmeWluZyBzd2Vl
cC4uLiIpOwotICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAg
ICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sp
IHsKLSAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNTd2VlcGluZygpKQotICAgICAgICAgICAg
ICAgIGJsb2NrLT5zd2VlcCgpOwotICAgICAgICB9KTsKLX0KLQotdm9pZCBNYXJrZWRTcGFjZTo6
cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0aW9u
KCkKIHsKICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRv
ciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAgICAgICAgYWxsb2NhdG9y
LnJlc2V0KCk7CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlcGFyZUZvckFsbG9jYXRpb24oKTsK
ICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9
KTsKIAotICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHMuY2xlYXIoKTsKICAgICBtX2FjdGl2ZVdl
YWtTZXRzLnRha2VGcm9tKG1fbmV3QWN0aXZlV2Vha1NldHMpOworICAgIAogICAgIGlmIChtX2hl
YXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikKICAgICAgICAgbV9s
YXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9sYXJnZUFsbG9jYXRpb25z
TnVyc2VyeU9mZnNldDsKICAgICBlbHNlCkBAIC00MTAsMTEgKzQxOSwxMSBAQCB2b2lkIE1hcmtl
ZFNwYWNlOjpmcmVlT3JTaHJpbmtCbG9jayhNYXJrCiAKIHZvaWQgTWFya2VkU3BhY2U6OnNocmlu
aygpCiB7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBmcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CisgICAg
Zm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
cikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5zaHJpbmsoKTsK
KyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9
KTsKLSAgICAvLyBGb3IgTGFyZ2VBbGxvY2F0aW9ucywgd2UgZG8gdGhlIG1vcmFsIGVxdWl2YWxl
bnQgaW4gc3dlZXBMYXJnZUFsbG9jYXRpb25zKCkuCiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmNs
ZWFyTmV3bHlBbGxvY2F0ZWQoKQpAQCAtNDI5LDU3ICs0MzgsNjEgQEAgdm9pZCBNYXJrZWRTcGFj
ZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sYXJnZUFs
bG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFs
bG9jYXRlZCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGZvckVhY2hCbG9jaygKLSAg
ICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgQVNT
RVJUKCFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBm
b3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKLSAg
ICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwotI2VuZGlmIC8v
ICFBU1NFUlRfRElTQUJMRUQKLX0KLQotI2lmbmRlZiBOREVCVUcgCi1zdHJ1Y3QgVmVyaWZ5TWFy
a2VkIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsgCi0gICAgdm9pZCBvcGVyYXRvcigpKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGJsb2Nr
LT5uZWVkc0ZsaXAoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChibG9j
ay0+bV9zdGF0ZSkgewotICAgICAgICBjYXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsK
KyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykgeworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssICFibG9j
ay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAg
ICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlv
bnMpCisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5p
c05ld2x5QWxsb2NhdGVkKCkpOwogICAgIH0KLX07IAotI2VuZGlmIAorfQogCi12b2lkIE1hcmtl
ZFNwYWNlOjpmbGlwKCkKK3ZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAg
aWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+ZmxpcEZv
ckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSGVhcFZlcnNpb24gbmV4
dFZlcnNpb24gPSBtX3ZlcnNpb24gKyAxOwotICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNp
b24gPT0gaW5pdGlhbFZlcnNpb24pKSB7Ci0gICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3
cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgZmxpcHBpbmcgYWxsIGJsb2Nrcy4gVGhpcyBo
YXBwZW5zCi0gICAgICAgICAgICAvLyBzdXBlciByYXJlbHksIHByb2JhYmx5IG5ldmVyIGZvciBt
b3N0IHVzZXJzLgorICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxs
Q29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZd
IChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAg
ICAgICAgICAgICBhbGxvY2F0b3IuYmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgIG1fdmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fdmVyc2lvbik7Cisg
ICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkobV92ZXJzaW9uID09IGluaXRpYWxWZXJzaW9u
KSkgeworICAgICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRs
ZSB0aGlzIGJ5IHNldHRpbmcgYWxsIGJsb2NrIHZlcnNpb25zIHRvIG51bGwuCiAgICAgICAgICAg
ICBmb3JFYWNoQmxvY2soCiAgICAgICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxl
KiBoYW5kbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5mbGlwSWZOZWNlc3Nhcnko
KTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0VmVyc2lvbigpOwog
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIG1fdmVyc2lvbiA9IG5leHRW
ZXJzaW9uOyAvLyBIZW5jZWZvcnRoLCBmbGlwSWZOZWNlc3NhcnkoKSB3aWxsIHRyaWdnZXIgb24g
YWxsIGJsb2Nrcy4KKyAgICAgICAgCiAgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxv
Y2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+Zmxp
cCgpOwogICAgIH0KIAotI2lmbmRlZiBOREVCVUcKLSAgICBWZXJpZnlNYXJrZWQgdmVyaWZ5RnVu
Y3RvcjsKLSAgICBmb3JFYWNoQmxvY2sodmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBpZiAo
IUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBb
Jl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJs
b2NrLT5uZWVkc0ZsaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgICAgIH0pOwor
ICAgIH0KKyAgICAKKyAgICBtX2lzTWFya2luZyA9IHRydWU7Cit9CisKK3ZvaWQgTWFya2VkU3Bh
Y2U6OmVuZE1hcmtpbmcoKQoreworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAo
TWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAg
ICAgICBhbGxvY2F0b3IuZW5kTWFya2luZygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAgIAorICAgIG1faXNNYXJraW5nID0g
ZmFsc2U7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OndpbGxTdGFydEl0ZXJhdGluZygpCkBAIC01
NDAsMTkgKzU1Myw2NiBAQCB2b2lkIE1hcmtlZFNwYWNlOjphZGRBY3RpdmVXZWFrU2V0KFdlYWtT
CiAKIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKQogeworICAgIC8vIFdBUk5JTkc6IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBi
bG9jayBpcyBmdWxseSBpbml0aWFsaXplZC4gVGhlIGJsb2NrIHdpbGwgbm90IGtub3cKKyAgICAv
LyBpdHMgY2VsbFNpemUoKSBvciBhdHRyaWJ1dGVzKCkuIFRoZSBsYXR0ZXIgaW1wbGllcyB0aGF0
IHlvdSBjYW4ndCBhc2sgdGhpbmdzIGxpa2UKKyAgICAvLyBuZWVkc0Rlc3RydWN0aW9uKCkuCiAg
ICAgbV9jYXBhY2l0eSArPSBNYXJrZWRCbG9jazo6YmxvY2tTaXplOwogICAgIG1fYmxvY2tzLmFk
ZCgmYmxvY2stPmJsb2NrKCkpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUlu
QmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7Ci0gICAgYmxvY2stPmFzc2VydEZs
aXBwZWQoKTsKLSAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLmFwcGVuZChibG9jayk7Ci0gICAg
CiAgICAgaWYgKGJsb2NrLT53ZWFrU2V0KCkuaXNPbkxpc3QoKSkgewogICAgICAgICBibG9jay0+
d2Vha1NldCgpLnJlbW92ZSgpOwogICAgICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmFwcGVuZCgm
YmxvY2stPndlYWtTZXQoKSk7CiAgICAgfQogfQogCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJr
ZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2soKQoreworICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbjsgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRv
ckZvckVtcHR5QWxsb2NhdGlvbi0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGlmIChNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5m
aW5kRW1wdHlCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIGJsb2NrOworICAgIH0KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KCkK
K3sKKyAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rp
b24pIHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAg
ICAgYWxsb2NhdG9yLnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICB9
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAg
WyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAg
ICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24o
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAg
ICAgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBNYXJrZWRTcGFjZTo6YXNzZXJ0Tm9VbnN3
ZXB0KCkKK3sKKyAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgICAgICByZXR1cm47CisgICAg
Zm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
cikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5hc3NlcnROb1Vu
c3dlcHQoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwor
ICAgICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0m
IG91dCkKK3sKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9j
YXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgb3V0LnBy
aW50KCJCaXRzIGZvciAiLCBhbGxvY2F0b3IsICI6XG4iKTsKKyAgICAgICAgICAgIGFsbG9jYXRv
ci5kdW1wQml0cyhvdXQpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsMTYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1T
aXplQ2xhc3NlcyA9IGxhcmdlQ3V0b2ZmIC8gc2l6ZVN0ZXA7CiAgICAgCi0gICAgc3RhdGljIGNv
bnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gNDI7ICAvLyBUaGlzIGNhbiBiZSBhbnkg
dmFsdWUsIGluY2x1ZGluZyByYW5kb20gZ2FyYmFnZSwgc28gbG9uZyBhcyBpdCdzIGNvbnNpc3Rl
bnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJvY2Vzcy4KKyAgICBzdGF0aWMgY29uc3QgSGVh
cFZlcnNpb24gbnVsbFZlcnNpb24gPSAwOyAvLyBUaGUgdmVyc2lvbiBvZiBmcmVzaGx5IGFsbG9j
YXRlZCBibG9ja3MuCisgICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9u
ID0gMTsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUgaGVhcCBzdGFydHMgb3V0IHdpdGguCisgICAg
CisgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNpb24gdmVyc2lvbikKKyAgICB7
CisgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgaWYgKHZlcnNpb24gPT0gbnVsbFZlcnNpb24p
CisgICAgICAgICAgICB2ZXJzaW9uKys7CisgICAgICAgIHJldHVybiB2ZXJzaW9uOworICAgIH0K
ICAgICAKICAgICBzdGF0aWMgc2l6ZV90IHNpemVDbGFzc1RvSW5kZXgoc2l6ZV90IHNpemUpCiAg
ICAgewpAQCAtMTE0LDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBTdWJzcGFjZSYgc3Vic3BhY2VG
b3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBtX25vcm1hbFNwYWNlOyB9CiAg
ICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxpYXJ5RGF0YSgpIHsgcmV0dXJuIG1fYXV4aWxp
YXJ5U3BhY2U7IH0KICAgICAKLSAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQg
cHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIAogICAgIHZvaWQgdmlzaXRXZWFrU2V0cyhIZWFwUm9v
dFZpc2l0b3ImKTsKICAgICB2b2lkIHJlYXBXZWFrU2V0cygpOwpAQCAtMTQ0LDExICsxNTMsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5k
bGUqKTsKICAgICB2b2lkIGRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7
CiAKLSAgICB2b2lkIGZsaXAoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZygpOworICAgIHZvaWQg
ZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNob3RVbnN3ZXB0KCk7CiAgICAgdm9pZCBjbGVh
ck5ld2x5QWxsb2NhdGVkKCk7CiAgICAgdm9pZCBzd2VlcCgpOwogICAgIHZvaWQgc3dlZXBMYXJn
ZUFsbG9jYXRpb25zKCk7Ci0gICAgdm9pZCB6b21iaWZ5U3dlZXAoKTsKKyAgICB2b2lkIGFzc2Vy
dE5vVW5zd2VwdCgpOwogICAgIHNpemVfdCBvYmplY3RDb3VudCgpOwogICAgIHNpemVfdCBzaXpl
KCk7CiAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CkBAIC0xNTcsOCArMTY4LDYgQEAgcHVibGljOgog
ICAgIAogICAgIEhlYXBWZXJzaW9uIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247
IH0KIAotICAgIGNvbnN0IFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIGJsb2Nrc1dpdGhO
ZXdPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsgfQotICAg
IAogICAgIGNvbnN0IFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiYgbGFyZ2VBbGxvY2F0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uczsgfQogICAgIHVuc2lnbmVkIGxhcmdl
QWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRp
b25zTnVyc2VyeU9mZnNldDsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNPZmZzZXRG
b3JUaGlzQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNl
dEZvclRoaXNDb2xsZWN0aW9uOyB9CkBAIC0xNjksMTMgKzE3OCwxNiBAQCBwdWJsaWM6CiAgICAg
TGFyZ2VBbGxvY2F0aW9uKiogbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQ7IH0K
ICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplKCkgY29u
c3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplOyB9CiAg
ICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBmaXJzdEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3RBbGxvY2F0b3I7IH0KKyAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0
aW9uOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5QmxvY2soKTsK
KyAgICAKICAgICAvLyBXaGVuIHRoaXMgaXMgdHJ1ZSBpdCBtZWFucyB0aGF0IHdlIGhhdmUgZmxp
cHBlZCBidXQgdGhlIG1hcmsgYml0cyBoYXZlbid0IGNvbnZlcmdlZCB5ZXQuCiAgICAgYm9vbCBp
c01hcmtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzTWFya2luZzsgfQogICAgIAotICAgIC8vIEZJ
WE1FOiBBZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgx
LCBNYXJrZWRTcGFjZSB3aWxsIGNvbnRyb2wgdGhpcwotICAgIC8vIGZsYWcgZGlyZWN0bHkuCi0g
ICAgdm9pZCBzZXRJc01hcmtpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzTWFya2luZyA9IHZhbHVlOyB9
Ci0KKyAgICB2b2lkIGR1bXBCaXRzKFByaW50U3RyZWFtJiA9IFdURjo6ZGF0YUZpbGUoKSk7Cisg
ICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTE5MCw4ICsyMDIsOCBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZvaWQgaW5pdGlhbGl6ZVN1YnNwYWNlKFN1YnNwYWNlJik7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaFN1YnNwYWNlKGNvbnN0
IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBm
b3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgdm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYpOwogICAg
IAogICAgIHZvaWQgYWRkQWN0aXZlV2Vha1NldChXZWFrU2V0Kik7CiAKQEAgLTIwNSw3ICsyMTcs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0l0ZXJhdGluZzsKICAgICBib29sIG1faXNNYXJr
aW5nIHsgZmFsc2UgfTsKICAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsKLSAgICBWZWN0b3I8
TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tzV2l0aE5ld09iamVjdHM7CiAgICAgVmVjdG9y
PExhcmdlQWxsb2NhdGlvbio+IG1fbGFyZ2VBbGxvY2F0aW9uczsKICAgICB1bnNpZ25lZCBtX2xh
cmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbGFyZ2VB
bGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uIHsgMCB9OwpAQCAtMjE1LDQwICsyMjYs
MTEgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29s
bGVjdGlvblNpemUgeyAwIH07CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2lj
UmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX2FjdGl2ZVdlYWtTZXRzOwogICAgIFNlbnRpbmVs
TGlua2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9uZXdB
Y3RpdmVXZWFrU2V0czsKKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fZmlyc3RBbGxvY2F0
b3IgeyBudWxscHRyIH07CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvckZvckVtcHR5
QWxsb2NhdGlvbiB7IG51bGxwdHIgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNj
b3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBBU1NFUlQoaXNJdGVyYXRpbmco
KSk7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAgICBm
b3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoTGl2ZUNlbGwoZnVu
Y3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0
aW9ucykgewotICAgICAgICBpZiAoYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKLSAgICAgICAgICAg
IGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygp
LmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29w
ZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkp
OwotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7Ci0gICAgZm9y
IChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaERlYWRDZWxsKGZ1bmN0
b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlv
bnMpIHsKLSAgICAgICAgaWYgKCFhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewotICAgICAgICAgICAg
aWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCku
Y2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIGlubGluZSBNYXJrZWRBbGxvY2F0b3IqIE1hcmtl
ZFNwYWNlOjphbGxvY2F0b3JGb3IoU3Vic3BhY2UmIHNwYWNlLCBzaXplX3QgYnl0ZXMpCiB7CiAg
ICAgQVNTRVJUKGJ5dGVzKTsKQEAgLTMwNCwxNSArMjg2LDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgogdm9p
ZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ewotICAgIGZvckVhY2hTdWJzcGFjZSgKLSAgICAgICAgWyZdIChTdWJzcGFjZSYgc3Vic3BhY2Us
IEFsbG9jYXRvckF0dHJpYnV0ZXMpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBm
b3IgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yIDogc3Vic3BhY2UuYmFnT2ZBbGxvY2F0b3Jz
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZ1bmN0b3IoKmFsbG9jYXRvcikgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpEb25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLSAgICAgICAgfSk7CisgICAgZm9yIChNYXJrZWRB
bGxvY2F0b3IqIGFsbG9jYXRvciA9IG1fZmlyc3RBbGxvY2F0b3I7IGFsbG9jYXRvcjsgYWxsb2Nh
dG9yID0gYWxsb2NhdG9yLT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgaWYgKGZ1bmN0b3Io
KmFsbG9jYXRvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNYXJrZWRCbG9j
a0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZv
ckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQoreworICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9
IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxv
Y2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoKCppdCkt
PmhhbmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRv
bmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7CisgICAgICAgIGlmIChhbGxvY2F0
aW9uLT5pc0xpdmUoKSkgeworICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2Vs
bCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1
czo6RG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JF
YWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
K3sKKyAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7CisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBt
X2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nr
cy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5o
YW5kbGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25l
KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiog
YWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgeworICAgICAgICBpZiAoIWFsbG9jYXRp
b24tPmlzTGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxs
KCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVz
OjpEb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Ns
b3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSw4IEBA
IHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWEKICAgICB2YWxpZGF0ZShj
ZWxsKTsKICNlbmRpZgogICAgIAorICAgIC8vZGF0YUxvZygiICAgIE1hcmtpbmcgIiwgUmF3UG9p
bnRlcihjZWxsKSwgIlxuIik7CisgICAgCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9u
KCkpCiAgICAgICAgIHNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKGNlbGwtPmxhcmdlQWxs
b2NhdGlvbigpLCBjZWxsKTsKICAgICBlbHNlCkBAIC0xOTgsNyArMjAwLDcgQEAgdm9pZCBTbG90
VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogdGVtcGxhdGU8dHlwZW5hbWUgQ29udGFp
bmVyVHlwZT4KIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBw
ZW5kVG9NYXJrU3RhY2soQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBKU0NlbGwqIGNlbGwpCiB7
Ci0gICAgY29udGFpbmVyLmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcobV92ZXJzaW9uKTsK
KyAgICBjb250YWluZXIuYWJvdXRUb01hcmsobV92ZXJzaW9uKTsKICAgICAKICAgICBpZiAoY29u
dGFpbmVyLnRlc3RBbmRTZXRNYXJrZWQoY2VsbCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0Niwx
MCArMjQ4LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6bWFya0F1eGlsaWFyeShjb25zdCB2bwogICAg
IAogICAgIEFTU0VSVChjZWxsLT5oZWFwKCkgPT0gaGVhcCgpKTsKICAgICAKLSAgICBpZiAoSGVh
cDo6dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKSB7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwpKTsKKyAgICBpZiAoSGVhcDo6
dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogICAgIAogICAgIG5vdGVMaXZlQXV4aWxpYXJ5Q2VsbChjZWxsKTsKIH0KQEAgLTI5NCw2ICsy
OTQsOCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OnZpc2l0Q2hpCiB7CiAgICAg
QVNTRVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwpKTsKICAgICAKKyAgICAvL2Rh
dGFMb2coIlZpc2l0aW5nICIsIFJhd1BvaW50ZXIoY2VsbCksICJcbiIpOworCiAgICAgU2V0Q3Vy
cmVudENlbGxTY29wZSBjdXJyZW50Q2VsbFNjb3BlKCp0aGlzLCBjZWxsKTsKICAgICAKICAgICBt
X2N1cnJlbnRPYmplY3RDZWxsU3RhdGVCZWZvcmVWaXNpdGluZyA9IGNlbGwtPmNlbGxTdGF0ZSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpbmNsdWRlICJKU0V4cG9ydE1hY3Jv
cy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01MSwzMyArNTMsMzMgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4
dCA9IDApOworICAgIGlubGluZSBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCog
Y29udGV4dCA9IDApOwogCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNo
VGFibGVEZWxldGVkVmFsdWUgfTsKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3Q7Ci0gICAgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOworICAgIGlubGluZSBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CisgICAgaW5saW5lIFdlYWsoSGFz
aFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKIAotICAgIFdlYWsoV2VhayYmKTsKKyAgICBpbmxpbmUg
V2VhayhXZWFrJiYpOwogCiAgICAgfldlYWsoKQogICAgIHsKICAgICAgICAgY2xlYXIoKTsKICAg
ICB9CiAKLSAgICB2b2lkIHN3YXAoV2VhayYpOworICAgIGlubGluZSB2b2lkIHN3YXAoV2VhayYp
OwogCi0gICAgV2VhayYgb3BlcmF0b3I9KFdlYWsmJik7CisgICAgaW5saW5lIFdlYWsmIG9wZXJh
dG9yPShXZWFrJiYpOwogCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLSAgICBUKiBvcGVy
YXRvci0+KCkgY29uc3Q7Ci0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgVCogZ2V0KCkg
Y29uc3Q7CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7CisgICAgaW5saW5lIFQq
IG9wZXJhdG9yLT4oKSBjb25zdDsKKyAgICBpbmxpbmUgVCYgb3BlcmF0b3IqKCkgY29uc3Q7Cisg
ICAgaW5saW5lIFQqIGdldCgpIGNvbnN0OwogCi0gICAgYm9vbCB3YXMoVCopIGNvbnN0OworICAg
IGlubGluZSBib29sIHdhcyhUKikgY29uc3Q7CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3Q7CisgICAgaW5saW5lIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKIAot
ICAgIFdlYWtJbXBsKiBsZWFrSW1wbCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBpbmxpbmUg
V2Vha0ltcGwqIGxlYWtJbXBsKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZvaWQgY2xlYXIo
KQogICAgIHsKICAgICAgICAgaWYgKCFtX2ltcGwpCkBAIC04NiwxMSArODgsMzAgQEAgcHVibGlj
OgogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFdlYWtJbXBsKiBoYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsKKyAgICBzdGF0aWMgaW5saW5lIFdlYWtJbXBsKiBoYXNoVGFibGVEZWxl
dGVkVmFsdWUoKTsKIAogICAgIFdlYWtJbXBsKiBtX2ltcGw7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBW
ZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsKKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNp
bXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IHsKKyAgICB0eXBlZGVmIEpTQzo6V2Vh
azxUPiBTdG9yYWdlVHlwZTsKKworICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1
ZVR5cGU7CisgICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBu
dWxscHRyOyB9CisKKyAgICB0eXBlZGVmIFQqIFBlZWtUeXBlOworICAgIHN0YXRpYyBQZWVrVHlw
ZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0K
KyAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5
cGUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBXZWFrX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAkocmV2aXNpb24gMjA2
MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2Vha0Jsb2NrOjpzcGVjaWFsaXplZFZp
c2l0KENvbnRhaW4KICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGNvbnN0IEpTVmFs
dWUmIGpzVmFsdWUgPSB3ZWFrSW1wbC0+anNWYWx1ZSgpOwotICAgICAgICBpZiAoY29udGFpbmVy
LmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKHZlcnNpb24sIGpzVmFsdWUuYXNDZWxsKCkpKQor
ICAgICAgICBpZiAoY29udGFpbmVyLmlzTWFya2VkQ29uY3VycmVudGx5KHZlcnNpb24sIGpzVmFs
dWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICBp
ZiAoIXdlYWtIYW5kbGVPd25lci0+aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVu
a25vd24+Ojp3cmFwU2xvdCgmY29uc3RfY2FzdDxKU1ZhbHVlJj4oanNWYWx1ZSkpLCB3ZWFrSW1w
bC0+Y29udGV4dCgpLCB2aXNpdG9yKSkKQEAgLTE0NywxNyArMTQ3LDE0IEBAIHZvaWQgV2Vha0Js
b2NrOjpyZWFwKCkKICAgICAvLyBJZiB0aGlzIFdlYWtCbG9jayBkb2Vzbid0IGJlbG9uZyB0byBh
IENlbGxDb250YWluZXIsIHdlIHdvbid0IGV2ZW4gYmUgaGVyZS4KICAgICBBU1NFUlQobV9jb250
YWluZXIpOwogICAgIAotICAgIG1fY29udGFpbmVyLmZsaXBJZk5lY2Vzc2FyeSgpOwotCi0gICAg
Ly8gV2Ugb25seSByZWFwIGFmdGVyIG1hcmtpbmcuCi0gICAgQVNTRVJUKG1fY29udGFpbmVyLmlz
TWFya2VkKCkpOworICAgIEhlYXBWZXJzaW9uIHZlcnNpb24gPSBtX2NvbnRhaW5lci5oZWFwKCkt
Pm9iamVjdFNwYWNlKCkudmVyc2lvbigpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3
ZWFrSW1wbENvdW50KCk7ICsraSkgewogICAgICAgICBXZWFrSW1wbCogd2Vha0ltcGwgPSAmd2Vh
a0ltcGxzKClbaV07CiAgICAgICAgIGlmICh3ZWFrSW1wbC0+c3RhdGUoKSA+IFdlYWtJbXBsOjpE
ZWFkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKG1fY29udGFpbmVyLmlz
TWFya2VkKHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpKSB7CisgICAgICAgIGlmIChtX2Nv
bnRhaW5lci5pc01hcmtlZCh2ZXJzaW9uLCB3ZWFrSW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKSkg
ewogICAgICAgICAgICAgQVNTRVJUKHdlYWtJbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZl
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNs
dWRlICJXZWFrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE0OSwyMyAr
MTQ4LDQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJh
aXRzIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNl
OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFr
PFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IHsKLSAgICB0eXBlZGVm
IEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKLQotICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3Qg
RW1wdHlWYWx1ZVR5cGU7Ci0gICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7
IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICB0eXBlZGVmIFQqIFBlZWtUeXBlOwotICAgIHN0YXRp
YyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUu
Z2V0KCk7IH0KLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1
cm4gUGVla1R5cGUoKTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KICNlbmRpZiAvLyBX
ZWFrSW5saW5lc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJl
dmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgot
I2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSAi
TWFwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNYXBJdGVyYXRvclByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIk1hcFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgog
I2luY2x1ZGUgIk1hdGhPYmplY3QuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKICNpbmNsdWRl
ICJNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVz
Y3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCisjaW5jbHVkZSAiUHJv
dG90eXBlTWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCiAjaW5jbHVkZSAi
UmVqZWN0LmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb3RvdHlwZU1hcElubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4Nyw3IEBAIHR5cGVkZWYgY29uc3Qg
Y2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYodW5zaWduZWQsIGxhcmdlQWxsb2NhdGlvbkN1dG9m
ZiwgMTAwMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGR1bXBTaXplQ2xhc3Nl
cywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlQnVtcEFsbG9jYXRv
ciwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihib29sLCBsb29rRm9yRW1wdHlCbG9j
a3NJbk90aGVyQWxsb2NhdG9ycywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29s
LCBlYWdlcmx5VXBkYXRlVG9wQ2FsbEZyYW1lLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgXAogICAgIHYoYm9vbCwgdXNlT1NSRW50cnlUb0RGRywgdHJ1ZSwgTm9ybWFsLCBudWxscHRy
KSBcCkBAIC0zMDIsNyArMzAzLDYgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7
CiAgICAgdih1bnNpZ25lZCwgbnVtYmVyT2ZHQ01hcmtlcnMsIGNvbXB1dGVOdW1iZXJPZkdDTWFy
a2Vycyg3KSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwgb3BhcXVlUm9vdE1l
cmdlVGhyZXNob2xkLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGRvdWJsZSwgbWlu
SGVhcFV0aWxpemF0aW9uLCAwLjgsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYoZG91YmxlLCBt
aW5Db3BpZWRCbG9ja1V0aWxpemF0aW9uLCAwLjksIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
ZG91YmxlLCBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uLCAwLjksIE5vcm1hbCwgbnVsbHB0cikg
XAogICAgIHYodW5zaWduZWQsIHNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcywgMCwgTm9ybWFsLCAi
Zm9yY2UgYSBHQyBvbiBldmVyeSBOdGggc2xvdyBwYXRoIGFsbG9jLCB3aGVyZSBOIGlzIHNwZWNp
ZmllZCBieSB0aGlzIG9wdGlvbiIpIFwKICAgICB2KGJvb2wsIGRlZmVyR0NTaG91bGRDb2xsZWN0
V2l0aFByb2JhYmlsaXR5LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2UgcGVyZm9ybSBhIGNv
bGxlY3Rpb24gYmFzZWQgb24gZmxpcHBpbmcgYSBjb2luIGFjY29yZGluZyB0aGUgcHJvYmFiaWxp
dHkgaW4gdGhlICdkZWZlckdDUHJvYmFiaWxpdHknIG9wdGlvbiB3aGVuIERlZmVyR0MgaXMgZGVz
dHJ1Y3RlZC4iKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5
cGVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90
b3R5cGVNYXAuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvdG90eXBlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNp
Zm5kZWYgUHJvdG90eXBlTWFwX2gKICNkZWZpbmUgUHJvdG90eXBlTWFwX2gKIAorI2luY2x1ZGUg
IkluZGV4aW5nVHlwZS5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXZWFr
R0NNYXAuaCIKICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtNDgsNyArNTAsNyBAQCBw
dWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBlbXB0eVN0cnVjdHVyZUZv
clByb3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKEpTT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAg
dm9pZCBjbGVhckVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0KiwgdW5z
aWduZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkUHJv
dG90eXBlKEpTT2JqZWN0Kik7Ci0gICAgVHJpU3RhdGUgaXNQcm90b3R5cGUoSlNPYmplY3QqKSBj
b25zdDsgLy8gUmV0dXJucyBhIGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZS4KKyAgICBpbmxpbmUgVHJp
U3RhdGUgaXNQcm90b3R5cGUoSlNPYmplY3QqKSBjb25zdDsgLy8gUmV0dXJucyBhIGNvbnNlcnZh
dGl2ZSBlc3RpbWF0ZS4KIAogcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUVtcHR5U3Ry
dWN0dXJlKEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJ
bmZvKiwgSW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CkBAIC01OCwxOCAr
NjAsNiBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZU1hcCBtX3N0cnVjdHVyZXM7CiB9OwogCi1p
bmxpbmUgVHJpU3RhdGUgUHJvdG90eXBlTWFwOjppc1Byb3RvdHlwZShKU09iamVjdCogb2JqZWN0
KSBjb25zdAotewotICAgIGlmICghbV9wcm90b3R5cGVzLmNvbnRhaW5zKG9iamVjdCkpCi0gICAg
ICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOwotCi0gICAgLy8gV2Uga25vdyB0aGF0ICdvYmplY3Qn
IHdhcyB1c2VkIGFzIGEgcHJvdG90eXBlIGF0IG9uZSB0aW1lLCBzbyBiZQotICAgIC8vIGNvbnNl
cnZhdGl2ZSBhbmQgc2F5IHRoYXQgaXQgbWlnaHQgc3RpbGwgYmUgc28uIChJdCB3b3VsZCBiZSBl
eHBlbnNpdmUKLSAgICAvLyB0byBmaW5kIG91dCBmb3Igc3VyZSwgYW5kIHdlIGRvbid0IGtub3cg
b2YgYW55IGNhc2VzIHdoZXJlIGJlaW5nIHByZWNpc2UKLSAgICAvLyB3b3VsZCBpbXByb3ZlIHBl
cmZvcm1hbmNlLikKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBQcm90b3R5cGVNYXBfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcElubGluZXMuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXBJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb3Rv
dHlwZU1hcC5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSBUcmlTdGF0ZSBQcm90b3R5cGVNYXA6OmlzUHJvdG90eXBlKEpTT2JqZWN0
KiBvYmplY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Byb3RvdHlwZXMuY29udGFpbnMob2JqZWN0
KSkKKyAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisKKyAgICAvLyBXZSBrbm93IHRoYXQg
J29iamVjdCcgd2FzIHVzZWQgYXMgYSBwcm90b3R5cGUgYXQgb25lIHRpbWUsIHNvIGJlCisgICAg
Ly8gY29uc2VydmF0aXZlIGFuZCBzYXkgdGhhdCBpdCBtaWdodCBzdGlsbCBiZSBzby4gKEl0IHdv
dWxkIGJlIGV4cGVuc2l2ZQorICAgIC8vIHRvIGZpbmQgb3V0IGZvciBzdXJlLCBhbmQgd2UgZG9u
J3Qga25vdyBvZiBhbnkgY2FzZXMgd2hlcmUgYmVpbmcgcHJlY2lzZQorICAgIC8vIHdvdWxkIGlt
cHJvdmUgcGVyZm9ybWFuY2UuKQorICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDYWNoZS5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiUmVnRXhwS2V5LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiV2Vh
ay5oIgotI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1
ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQuaCIKKyNpbmNsdWRl
ICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgog
I2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgi
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkocmV2aXNp
b24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWFrR0NN
YXBfaAogCiAjaW5jbHVkZSAiV2Vhay5oIgotI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04MSwxOSArODAsOSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpdGVyYXRvciBm
aW5kKGNvbnN0IEtleVR5cGUmIGtleSkKLSAgICB7Ci0gICAgICAgIGl0ZXJhdG9yIGl0ID0gbV9t
YXAuZmluZChrZXkpOwotICAgICAgICBpdGVyYXRvciBlbmQgPSBtX21hcC5lbmQoKTsKLSAgICAg
ICAgaWYgKGl0ICE9IGVuZCAmJiAhaXQtPnZhbHVlKSAvLyBGb3VuZCBhIHpvbWJpZSB2YWx1ZS4K
LSAgICAgICAgICAgIHJldHVybiBlbmQ7Ci0gICAgICAgIHJldHVybiBpdDsKLSAgICB9CisgICAg
aW5saW5lIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KTsKIAotICAgIGNvbnN0X2l0
ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8V2Vha0dDTWFwKj4odGhpcyktPmZpbmQoa2V5KTsKLSAgICB9CisgICAg
aW5saW5lIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdDsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBmb3JFYWNoKEZ1bmN0b3Ig
ZnVuY3RvcikKQEAgLTEwNCwxMiArOTMsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9tYXAuZW5kKCk7Ci0gICAgfQorICAgIGlubGluZSBi
b29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3Q7CiAKLSAgICB2b2lkIHBydW5l
U3RhbGVFbnRyaWVzKCk7CisgICAgaW5saW5lIHZvaWQgcHJ1bmVTdGFsZUVudHJpZXMoKTsKIAog
cHJpdmF0ZToKICAgICBIYXNoTWFwVHlwZSBtX21hcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXBJbmxpbmVzLmgJKHJldmlzaW9uIDIwNjAzMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIldlYWtHQ01hcC5oIgorI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC00Nyw2ICs0OCwyOCBAQCBpbmxpbmUgV2Vha0dDTWFwPEtleUFyZywgVmFs
dWVBcmcsIEhhc2hBCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFs
dWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KK2lubGluZSB0
eXBlbmFtZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
Pjo6aXRlcmF0b3IgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0
c0FyZz46OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQoreworICAgIGl0ZXJhdG9yIGl0ID0gbV9t
YXAuZmluZChrZXkpOworICAgIGl0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOworICAgIGlmIChp
dCAhPSBlbmQgJiYgIWl0LT52YWx1ZSkgLy8gRm91bmQgYSB6b21iaWUgdmFsdWUuCisgICAgICAg
IHJldHVybiBlbmQ7CisgICAgcmV0dXJuIGl0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlB
cmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFp
dHNBcmc+CitpbmxpbmUgdHlwZW5hbWUgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hB
cmcsIEtleVRyYWl0c0FyZz46OmNvbnN0X2l0ZXJhdG9yIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVl
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29u
c3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxXZWFrR0NNYXAqPih0aGlzKS0+ZmluZChrZXkp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBl
bmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+CitpbmxpbmUgYm9vbCBXZWFrR0NN
YXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6Y29udGFpbnMoY29u
c3QgS2V5VHlwZSYga2V5KSBjb25zdAoreworICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9tYXAu
ZW5kKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFsdWVBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KIE5FVkVSX0lOTElORSB2
b2lkIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+Ojpw
cnVuZVN0YWxlRW50cmllcygpCiB7CiAgICAgbV9tYXAucmVtb3ZlSWYoW10odHlwZW5hbWUgSGFz
aE1hcFR5cGU6OktleVZhbHVlUGFpclR5cGUmIGVudHJ5KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIZWFw
SXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0
YWNrVmlzaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL1N0
cmluZ1ByaW50U3RyZWFtLmg+CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxNi0wOS0xNiAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTWFya2VkQmxv
Y2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9jYXRpb24gYW5kIG1hcmtp
bmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgVGhlIG1haW4gY2hhbmdlIGhlcmUgaXMgdG8gYnJpbmcgYmFjayBGYXN0Qml0VmVj
dG9yLmNwcCwgc28gdGhhdCBJIGNvdWxkIG91dGxpbmUgc29tZQorICAgICAgICBsYXJnZSBzbG93
IHBhdGggZnVuY3Rpb25zLiBUaGlzIGFsc28gYWRkcyBzb21lIHV0aWxpdGllcywgbGlrZSBhdG9t
aWNTZXRBbmRDaGVjaygpIGFuZAorICAgICAgICBpc0VtcHR5KCkuIFRoZSBHQyB1c2VzIHRoZXNl
LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
d3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnNldEVxdWFsc1Nsb3cp
OgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpyZXNpemVTbG93KToKKyAg
ICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9y
V29yZE93bmVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yV29yZE93
bmVyOjpyZXNpemUpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9ySW1wbDo6aXNFbXB0eSk6
CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OmF0b21pY1NldEFuZENoZWNrKToKKyAgICAg
ICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6b3BlcmF0b3JbXSk6IERlbGV0ZWQuCisKIDIwMTYtMDkt
MTYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXgg
aXNWYWxpZEVudW0gdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIEdDQwpJbmRleDogU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDYwMzEpCisr
KyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAJCTBGNDU3MDQzMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0
b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1
NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovOyB9OwogCQkwRjQ1NzA0NTFC
RTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNv
cnQuaCAqLzsgfTsKIAkJMEY3MjVDQUMxQzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcyNUNBQjFDNTA0
NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLzsgfTsKKwkJMEY3QzVGQjYxRDg4NUNGMjAwNDRG
NUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3Iu
Y3BwICovOyB9OwogCQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NDFC
NzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi87IH07CiAJCTBGODI0QTY5MUI3NDQz
QTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5o
ICovOyB9OwogCQkwRjg3MTA1QTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NzEwNTkxNjY0M0Yx
OTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLzsgfTsKQEAgLTM2Niw2ICszNjcsNyBAQAogCQkw
RjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEb21pbmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1YmJsZVNvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmdlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQgLyog
UGFya2luZ0xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJr
aW5nTG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjUxQjc0NDNB
MDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFya2luZ0xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg3MTA1OTE2
NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSYXdQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODAs
NiArODgyLDcgQEAKIAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5oICovLAog
CQkJCTFBRUE4OEUxMUQ2QkJDRjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJQThB
NDcyOUYxNTFBODI1QTAwNDEyM0ZGIC8qIEV4cG9ydE1hY3Jvcy5oICovLAorCQkJCTBGN0M1RkI1
MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLywKIAkJCQkwRkQ4MUFDNDE1
NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovLAogCQkJCUE4QTQ3MkExMTUxQTgy
NUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLywKIAkJCQlBOEE0NzJBMjE1MUE4MjVBMDA0
MTIzRkYgLyogRmFzdE1hbGxvYy5oICovLApAQCAtMTU5NCw2ICsxNTk3LDcgQEAKIAkJCQlDRDU0
OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0VDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0Y0MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVj
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBP
U0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIw
MDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQw
MjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDcgQEAgc2V0KFdURl9T
T1VSQ0VTCiAgICAgRGF0YUxvZy5jcHAKICAgICBEYXRlTWF0aC5jcHAKICAgICBEZWNpbWFsTnVt
YmVyLmNwcAorICAgIEZhc3RCaXRWZWN0b3IuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKICAgICBG
aWxlUHJpbnRTdHJlYW0uY3BwCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVyLmNwcApJbmRleDogU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvRmFzdEJpdFZlY3Rvci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvRmFz
dEJpdFZlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRmFzdEJpdFZlY3Rvci5oIgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBG
YXN0Qml0VmVjdG9yV29yZE93bmVyOjpzZXRFcXVhbHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0b3JX
b3JkT3duZXImIG90aGVyKQoreworICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0
PHVpbnQzMl90Kj4oCisgICAgICAgIGZhc3RDYWxsb2Mob3RoZXIuYXJyYXlMZW5ndGgoKSwgc2l6
ZW9mKHVpbnQzMl90KSkpOworICAgIG1lbWNweShuZXdBcnJheSwgb3RoZXIubV93b3Jkcywgb3Ro
ZXIuYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRzKQor
ICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKKyAgICBtX3dvcmRzID0gbmV3QXJyYXk7CisgICAg
bV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOworfQorCit2b2lkIEZhc3RCaXRWZWN0b3JXb3Jk
T3duZXI6OnJlc2l6ZVNsb3coc2l6ZV90IG51bUJpdHMpCit7CisgICAgc2l6ZV90IG5ld0xlbmd0
aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsKKyAgICAKKyAgICAvLyBVc2Ug
ZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBj
b21tb24KKyAgICAvLyB1c2UgY2FzZSBmb3IgdGhpcyBtZXRob2QgdG8gYmUgaW5pdGlhbGl6aW5n
IHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3IuCisgICAgCisgICAgdWludDMyX3QqIG5ld0FycmF5
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVp
bnQzMl90KSkpOworICAgIG1lbWNweShuZXdBcnJheSwgbV93b3JkcywgYXJyYXlMZW5ndGgoKSAq
IHNpemVvZih1aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRzKQorICAgICAgICBmYXN0RnJlZSht
X3dvcmRzKTsKKyAgICBtX3dvcmRzID0gbmV3QXJyYXk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0F0
b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTkxLDE3ICs5Miwx
MiBAQCBwdWJsaWM6CiAgICAgCiAgICAgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3BlcmF0b3I9
KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKQogICAgIHsKLSAgICAgICAgc2l6
ZV90IGxlbmd0aCA9IG90aGVyLmFycmF5TGVuZ3RoKCk7Ci0gICAgICAgIGlmIChsZW5ndGggPT0g
YXJyYXlMZW5ndGgoKSkgewotICAgICAgICAgICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1fd29y
ZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlz
OworICAgICAgICBpZiAoYXJyYXlMZW5ndGgoKSAhPSBvdGhlci5hcnJheUxlbmd0aCgpKQorICAg
ICAgICAgICAgc2V0RXF1YWxzU2xvdyhvdGhlcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2Yo
dWludDMyX3QpKTsKKyAgICAgICAgICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKICAg
ICAgICAgfQotICAgICAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dCo+KGZhc3RDYWxsb2MobGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7Ci0gICAgICAgIG1lbWNw
eShuZXdBcnJheSwgb3RoZXIubV93b3JkcywgbGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0g
ICAgICAgIGlmIChtX3dvcmRzKQotICAgICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Ci0gICAg
ICAgIG1fd29yZHMgPSBuZXdBcnJheTsKLSAgICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1C
aXRzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIApAQCAtMTQwLDE4ICsxMzYs
OCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXNpemUoc2l6ZV90IG51bUJpdHMpCiAgICAg
ewotICAgICAgICBpZiAobnVtQml0cyA9PSBtX251bUJpdHMpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIAotICAgICAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RSZWFs
bG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KLSAgICAgICAgLy8gdXNlIGNhc2UgZm9y
IHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0aGUgYml0dmVjdG9y
LgotICAgICAgICAKLSAgICAgICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJh
eUxlbmd0aChudW1CaXRzKTsKLSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nh
c3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwot
ICAgICAgICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2Yo
dWludDMyX3QpKTsKLSAgICAgICAgaWYgKG1fd29yZHMpCi0gICAgICAgICAgICBmYXN0RnJlZSht
X3dvcmRzKTsKLSAgICAgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAgICAgICBpZiAoYXJyYXlM
ZW5ndGgoKSAhPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cykpCisgICAgICAgICAg
ICByZXNpemVTbG93KG51bUJpdHMpOwogICAgICAgICBtX251bUJpdHMgPSBudW1CaXRzOwogICAg
IH0KICAgICAKQEAgLTE3MSw2ICsxNTcsOSBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QqIHdvcmRz
KCkgeyByZXR1cm4gbV93b3JkczsgfQogCiBwcml2YXRlOgorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHNldEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2l6ZVNsb3coc2l6ZV90IG51bUJpdHMp
OworICAgIAogICAgIHVpbnQzMl90KiBtX3dvcmRzIHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBt
X251bUJpdHMgeyAwIH07CiB9OwpAQCAtMzIwLDYgKzMwOSwxNSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IGFycmF5TGVuZ3RoKCk7IGluZGV4LS07
KSB7CisgICAgICAgICAgICBpZiAobV93b3Jkcy53b3JkKGluZGV4KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAgRmFzdEJpdFZlY3Rv
ckltcGw8RmFzdEJpdFZlY3RvckFuZFdvcmRzPHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSwgdHlw
ZW5hbWUgT3RoZXJXb3Jkczo6Vmlld1R5cGU+PiBvcGVyYXRvciYoY29uc3QgRmFzdEJpdFZlY3Rv
ckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTM4MCw3ICszNzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIHdyaXR0ZW4gdGhpcyB3YXkgc28gdGhhdCBpdCBwZXJmb3Jt
cyB3ZWxsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB2YWx1ZSBpcyBhIGNvbnN0YW50LgogICAgICAg
ICB1aW50MzJfdCBza2lwVmFsdWUgPSAtKHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkgXiAx
KTsKICAgICAgICAgCi0gICAgICAgIHNpemVfdCBudW1Xb3JkcyA9IG1fd29yZHMuYXJyYXlMZW5n
dGgoKTsKKyAgICAgICAgc2l6ZV90IG51bVdvcmRzID0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3Ro
KG1fd29yZHMubnVtQml0cygpKTsKICAgICAgICAgCiAgICAgICAgIHNpemVfdCB3b3JkSW5kZXgg
PSBzdGFydEluZGV4IC8gMzI7CiAgICAgICAgIHNpemVfdCBzdGFydEluZGV4SW5Xb3JkID0gc3Rh
cnRJbmRleCAtIHdvcmRJbmRleCAqIDMyOwpAQCAtNDcxLDYgKzQ2OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgbV93b3Jkcy5jbGVhckFsbCgpOwogICAgIH0KIAorICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgY29udGVudHMgb2YgdGhpcyBiaXR2ZWN0b3IgY2hhbmdlZC4KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIGJvb2wgc2V0QW5kQ2hlY2soY29uc3QgRmFzdEJpdFZl
Y3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQogICAgIHsKQEAgLTU1MCw2ICs1NDksMjggQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKICAgICB9CisgICAgCisg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBjaGFuZ2VkLgorICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBhdG9taWNTZXRBbmRDaGVjayhzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpCisg
ICAgeworICAgICAgICB1aW50MzJfdCogcG9pbnRlciA9ICZtX3dvcmRzLndvcmQoaW5kZXggPj4g
NSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChpbmRleCAmIDMxKTsKKyAgICAgICAg
Zm9yICg7OykgeworICAgICAgICAgICAgdWludDMyX3Qgb2xkVmFsdWUgPSAqcG9pbnRlcjsKKyAg
ICAgICAgICAgIHVpbnQzMl90IG5ld1ZhbHVlOworICAgICAgICAgICAgaWYgKHZhbHVlKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG9sZFZhbHVlICYgbWFzaykKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUgfCBtYXNr
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIShvbGRWYWx1ZSAm
IG1hc2spKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSAmIH5tYXNrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKHdlYWtDb21wYXJlQW5kU3dhcChwb2ludGVyLCBvbGRWYWx1ZSwgbmV3VmFsdWUpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlv
bi5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNl
cnZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJH
Q09ic2VydmF0aW9uLmgiCiAKICNpbmNsdWRlIDxoZWFwL0hlYXBJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8aGVhcC9XZWFrSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289212</attachid>
            <date>2016-09-18 14:49:25 -0700</date>
            <delta_ts>2016-09-19 08:56:21 -0700</delta_ts>
            <desc>more fixes</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>161484</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2OCBA
QAorMjAxNi0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgTWFya2VkQmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9j
YXRpb24gYW5kIG1hcmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgQ29uY3VycmVudCBHQ3MgbXVzdCBhbGxvdyBmb3IgbXV0
YXRpb24gYW5kIGFsbG9jYXRpb24gZHVyaW5nIGNvbGxlY3Rpb24uIFdlIGFscmVhZHkga25vdwor
ICAgICAgICBob3cgdG8gbXV0YXRlIGR1cmluZyBjb2xsZWN0aW9uLiBXZSBoYXZlIGEgd3JpdGUg
YmFycmllciBmb3IgdGhhdC4gQWxsb2NhdGlvbiBkdXJpbmcKKyAgICAgICAgY29sbGVjdGlvbiBp
cyBtb3JlIGludm9sdmVkOiB0aGUgY29sbGVjdG9yIG1vZGlmaWVzIHRoZSB0aGUgbWFyayBiaXRz
LCBhcyB3ZWxsIGFzIG90aGVyCisgICAgICAgIGtpbmRzIG9mIE1hcmtlZEJsb2NrIHN0YXRlLCBp
bi1wbGFjZSBkdXJpbmcgYSBjb2xsZWN0aW9uLiBUaGUgYWxsb2NhdG9yIHVzZXMgdGhhdCBzYW1l
CisgICAgICAgIE1hcmtlZEJsb2NrIHN0YXRlIHRvIGRlY2lkZSB3aGljaCByZWdpb25zIG9mIG1l
bW9yeSBhcmUgZnJlZS4gVGhpcyB3b3JrcyBpZiB0aGUgYWxsb2NhdG9yCisgICAgICAgIG5ldmVy
IHJ1bnMgd2hpbGUgdGhlIGNvbGxlY3RvciBpcyBydW5uaW5nLCBidXQgaWYgd2Ugd2FudCB0byBh
bGxvdyB0aGVtIHRvIHJ1biBhdCB0aGUgc2FtZQorICAgICAgICB0aW1lLCB0aGVuIHdlIG5lZWQg
dG8gaGF2ZSB0d28gdmVyc2lvbnMgb2YgdGhlIHN0YXRlOiBvbmUgdmVyc2lvbiBidWlsdCB1cCBi
eSB0aGUKKyAgICAgICAgY29sbGVjdG9yIGFuZCBhbm90aGVyIGNvbnN1bWVkIGJ5IHRoZSBhbGxv
Y2F0b3IuIFdlIGNsZWFyIHRoZSBjb2xsZWN0b3Igc3RhdGUgYXQgdGhlCisgICAgICAgIGJlZ2lu
bmluZyBvZiBjb2xsZWN0aW9uLCBhbmQgc3BsYXQgdGhlIGNvbGxlY3RvciBzdGF0ZSBvbnRvIHRo
ZSBhbGxvY2F0b3Igc3RhdGUgYWZ0ZXIKKyAgICAgICAgY29sbGVjdGlvbi4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgY291bGQgYmUgc3VwZXIgZXhwZW5zaXZlLCBidXQgd2UgY2FuIG1ha2UgaXQg
Y2hlYXAgd2l0aCBzb21lIGNsZXZlcm5lc3MuIFRoZSBiaWdnZXN0CisgICAgICAgIG9ic2VydmF0
aW9uIGlzIGp1c3QgdGhhdCBtb3N0IG9mIHRoZSBzdGF0ZSBpcyBhIGhhbmRmdWwgb2YgYml0cyBw
ZXIgYmxvY2s6IGlzIHRoZSBibG9jaworICAgICAgICBmcmVlLWxpc3RlZD8gaXMgaXQgY29tcGxl
dGVseSBmdWxsPyBjb21wbGV0ZWx5IGVtcHR5PyBpbiB0aGUgaW5jcmVtZW50YWwgc3dlZXBlcidz
CisgICAgICAgIHNuYXBzaG90PyBpcyBpdCByZXRpcmVkPyBpcyBpdCBpbiBlZGVuPyBUaGVyZSBp
cyBhbHNvIHN0YXRlIGluc2lkZSBibG9ja3MsIGxpa2UgdGhlIG1hcmsKKyAgICAgICAgYml0cywg
YnV0IEkgaGF2ZSBhIHNvbGlkIHBsYW4gdGhlcmUgYW5kIEknbGwgc2F2ZSBpdCBmb3IgYW5vdGhl
ciBwYXRjaC4gT25jZSB3ZSB2aWV3IHRoZQorICAgICAgICBzdGF0ZSBvZiBibG9ja3MgYXMgYml0
cywgd2UgY2FuIHB1dCB0aGF0IHN0YXRlIGludG8gYml0dmVjdG9ycywgc28gdGhhdCBpZiB0aGUg
Y29sbGVjdG9yCisgICAgICAgIG5lZWRzIHRvIHRyYW5zZm9ybSB0aGUgc3RhdGUgb2Ygc29tZSBi
bG9ja3MsIGl0IGNhbiBkbyBpdCB3aXRoIGEgc2luZ2xlIG9wZXJhdGlvbiBvdmVyCisgICAgICAg
IGJpdHZlY3RvcnMuIEkgbGlrZSB0byB0aGluayBvZiB0aGlzIGFzIDMyLXdheSBwYXJhbGxlbGl6
aW5nIGJsb2NrIG9wZXJhdGlvbnMsIHNpbmNlCisgICAgICAgIGRvaW5nIG9uZSBvcGVyYXRpb24g
b24gYSAzMi1iaXQgd29yZCBpbiBvbmUgb2YgdGhvc2UgYml0dmVjdG9ycyBpbnN0YW50bHkgYWZm
ZWN0cyAzMgorICAgICAgICBibG9ja3MuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBj
b252ZXJ0cyBhbGwgcHJldmlvdXMgY29sbGVjdGlvbnMgb2YgTWFya2VkQmxvY2tzLCBhbG9uZyB3
aXRoIHRoZSBNYXJrZWRCbG9jaworICAgICAgICBzdGF0ZSwgaW50byA4IGJpdHZlY3RvcnMgKGxp
dmUsIGVtcHR5LCBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIGVkZW4sIHVuc3dl
cHQsCisgICAgICAgIG1hcmtpbmdOb3RFbXB0eSwgYW5kIG1hcmtpbmdSZXRpcmVkKS4gVGhlIGJp
dHZlY3RvcnMgc2VwYXJhdGUgYWxsb2NhdG9yIHN0YXRlIChlbXB0eSwKKyAgICAgICAgYWxsb2Nh
dGVkLCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSBmcm9tIG1hcmtpbmcgc3RhdGUgKG1hcmtpbmdO
b3RFbXB0eSwgbWFya2luZ1JldGlyZWQpLgorICAgICAgICAKKyAgICAgICAgQXMgYSBuaWNlIHNp
ZGUtZWZmZWN0IG9mIHN3aXRjaGluZyB0byBiaXR2ZWN0b3JzLCB3ZSBnZXQgc2l6ZSBjbGFzcyBy
ZWJhbGFuY2luZyBmb3IgZnJlZS4KKyAgICAgICAgSXQgdXNlZCB0byBiZSB0aGF0IGlmIGEgTWFy
a2VkQWxsb2NhdG9yIGhhZCBhbiBlbXB0eSBibG9jaywgd2Ugd291bGQgb25seSBhbGxvdyB0aGF0
CisgICAgICAgIG1lbW9yeSB0byBiZSByZXVzZWQgYnkgYSBkaWZmZXJlbnQgTWFya2VkQWxsb2Nh
dG9yIGlmIHdlIGRpZCBhbiBpbmNyZW1lbnRhbCBzd2VlcCBvciBhCisgICAgICAgIGZ1bGwgZWFn
ZXIgc3dlZXAuIE5vdyB3ZSBodW50IGRvd24gYWxsIGRlc3RydWN0b3JsZXNzIGVtcHR5IGJsb2Nr
cyBiZWZvcmUgYWxsb2NhdGluZyBuZXcKKyAgICAgICAgTWFya2VkQmxvY2tzLiBJdCB3b3VsZCBi
ZSByZWxhdGl2ZWx5IGVhc3kgdG8gYWxzbyBodW50IGRvd24gZGVzdHJ1Y3RvciBlbXB0eSBibG9j
a3MsIGJ1dAorICAgICAgICB0aGUgdGhlb3J5IGlzIHRoYXQgdGhvc2UgbWlnaHQgYmUgZXhwZW5z
aXZlIHRvIHN3ZWVwLCBzbyBpdCBtaWdodCBzdGlsbCBiZSBiZXR0ZXIgdG8gbGVhdmUKKyAgICAg
ICAgdGhvc2UgdG8gdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIuCisgICAgICAgIAorICAgICAgICBU
aGlzIGNoYW5nZSBpcyBwZXJmLW5ldXRyYWwgYWxsIGFyb3VuZC4gSSBkaWQgc29tZSB0ZXN0cyB3
aXRoIHR3byBkaWZmZXJlbnQga2luZHMgb2YKKyAgICAgICAgYWxsb2NhdGlvbiBzdHJhdGVnaWVz
IC0gc29tZXRoaW5nIHRoYXQgaXMgc29tZXdoYXQgZWFzaWVyIHRvIGRvIG5vdyB0aGF0IHlvdSBj
YW4gbG9vayBmb3IKKyAgICAgICAgYmxvY2tzIHRoYXQgYXJlIGNhbmRpZGF0ZXMgZm9yIGFsbG9j
YXRpb24gYnkganVzdCBzY2FubmluZyBzb21lIGJpdHZlY3RvcnMuIEkgdHJpZWQgdHdvCisgICAg
ICAgIHZhcmlhbnRzOgorICAgICAgICAKKyAgICAgICAgLSBBbGxvY2F0ZSBvdXQgb2Ygbm9uLWVt
cHR5IGJsb2NrcyBmaXJzdCwgbGVhdmluZyBlbXB0eSBibG9ja3MgZm9yIGxhc3QgaW4gY2FzZSBh
CisgICAgICAgICAgZGlmZmVyZW50IGFsbG9jYXRvciBuZWVkZWQgdGhlbS4gVGhpcyBpcyBzb3J0
IG9mIGEgYmVzdC1maXQgc3RyYXRlZ3kuIEkgdHJpZWQgdGhpcworICAgICAgICAgIGZpcnN0LCBh
bmQgaXQgY2FuIGJlIGV4cHJlc3NlZCBhczoKKyAgICAgICAgICAKKyAgICAgICAgICBtX2FsbG9j
YXRpb25DdXJzb3IgPSBtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkuZmluZEJpdChtX2FsbG9jYXRp
b25DdXJzb3IsIHRydWUpCisgICAgICAgIAorICAgICAgICAtIEFsbG9jYXRlIG91dCBvZiBsb3dl
ci1pbmRleGVkIGJsb2NrcyBmaXJzdCwgdHJlYXRpbmcgZW1wdHkgYW5kIGNhbkFsbG9jYXRlQnV0
Tm90RW1wdHkKKyAgICAgICAgICBibG9ja3MgZXF1YWxseS4gVGhpcyBpcyBzb3J0IG9mIGEgZmly
c3QtZml0IHN0cmF0ZWd5LiBUaGlzIGlzIHdoYXQgSSBlbmRlZCB1cCBzZXR0bGluZworICAgICAg
ICAgIG9uLCBhbmQgaXQgY2FuIGJlIGV4cHJlc3NlZCBhczoKKyAgICAgICAgICAKKyAgICAgICAg
ICBtX2FsbG9jYXRpb25DdXJzb3IgPSAobV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IHwgbV9lbXB0
eSkuZmluZEJpdChtX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpCisgICAgICAgIAorICAgICAgICBU
aGUgYmVzdC1maXQgc3RyYXRlZ3kgbWVhbnQgMSUgcmVncmVzc2lvbnMgaW4gTG9uZ1NwaWRlciBh
bmQgT2N0YW5lIG92ZXJhbGwsIGFuZCBhIDExJQorICAgICAgICByZWdyZXNzaW9uIG9uIE9jdGFu
ZS9lYXJsZXkuIEZpcnN0LWZpdCBtZWFucyBwZXJmLW5ldXRyYWxpdHkuIE1vc3QgZ3JlYXQgYWxs
b2NhdG9ycyBza2V3CisgICAgICAgIHRvd2FyZHMgZmlyc3QtZml0IGJlY2F1c2UgaXQncyBlbXBp
cmljYWxseSBiZXR0ZXIsIHNvIHRoaXMgcmVzdWx0IGlzIG5vdCBzdXJwcmlzaW5nLgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgICogaGVhcC9DZWxsQ29udGFpbmVyLmg6
CisgICAgICAgICogaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpD
ZWxsQ29udGFpbmVyOjp2bSk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmhlYXApOgor
ICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgor
ICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjphYm91dFRvTWFyayk6CisgICAgICAgIChKU0M6
OkNlbGxDb250YWluZXI6OmlzTWFya2VkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2VsbENv
bnRhaW5lcjo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0NvbnNl
cnZhdGl2ZVJvb3RzLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlND
OjpIZWFwOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjplbmRNYXJraW5nKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpjb2xsZWN0SW1wbCk6CisgICAgICAgIChKU0M6OkhlYXA6OnNuYXBzaG90TWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkhlYXA6OnpvbWJpZnlEZWFkT2JqZWN0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrU25hcHNob3RGdW5jdG9yOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yOjpvcGVyYXRvcigpKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6cmVzZXRBbGxvY2F0b3JzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJr
ZWRDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKToK
KyAgICAgICAgKiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXBV
dGlsLmg6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpmaW5kR0NPYmplY3RQb2ludGVyc0Zvck1h
cmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwVXRpbDo6aXNQb2ludGVyR0NPYmplY3RKU0NlbGwp
OgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKiBoZWFwL0luY3Jl
bWVudGFsU3dlZXBlci5jcHA6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5j
cmVtZW50YWxTd2VlcGVyKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3
ZWVwKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jayk6
CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyk6CisgICAg
ICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKToKKyAgICAg
ICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oOgorICAgICAgICAqIGhlYXAvTGFyZ2VBbGxv
Y2F0aW9uLmg6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJrZWQpOgorICAg
ICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2VkQ29uY3VycmVudGx5KToKKyAgICAg
ICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAg
ICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6
TGFyZ2VBbGxvY2F0aW9uOjppc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJr
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjpmaW5kRW1wdHlCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6
dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OmFsbG9jYXRlSW4pOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnRy
eUFsbG9jYXRlSW4pOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xv
d0Nhc2VJbXBsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2Nh
dG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OnJlc3VtZUFsbG9jYXRpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmJlZ2lu
TWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9y
OjplbmRNYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZv
ckVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hv
dEZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmaW5k
QmxvY2tUb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzd2VlcCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQWxsb2NhdG9yOjphc3NlcnRTbmFwc2hvdEVtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpkdW1wKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkdW1wQml0
cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmV0aXJlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmaWx0ZXJOZXh0QmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dlZXApOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxv
Y2F0b3I6OmZvckVhY2hCaXRWZWN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6bmV4dEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4
dEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2Nr
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRl
ZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0
U3dlZXBNb2RlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxw
ZXJTZWxlY3RGbGlwTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnVu
c3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpI
YW5kbGU6OnNldElzRnJlZUxpc3RlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
OjpyZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9N
YXJrU2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjptYXJrQ291bnQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0VtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcik6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlTbG93
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1
cmluZ01hcmtpbmdTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6d2lsbFJlbW92ZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0ZWQpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjppbmRleCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjph
Ym91dFRvTWFyayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc09uQmxvY2tzVG9Td2VlcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNldElzT25CbG9ja3NUb1N3ZWVw
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RhdGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01h
cmtpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlw
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
OjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcEZvckVkZW5Db2xsZWN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFk
Q2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRz
U3dlZXBpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0FsbG9jYXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTWFya2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbCk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpyZXNldFZlcnNpb24pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3Bw
OgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6dHJ5
QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3dlZXApOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNsZWFyTmV3
bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmZpbmRFbXB0eUJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90
KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFzc2VydFNuYXBzaG90RW1wdHkpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZHVtcEJpdHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6em9tYmlmeVN3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OnJlc2V0QWxsb2NhdG9ycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZlcmlmeU1hcmtlZDo6
b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmbGlwKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpuZXh0VmVyc2lvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmaXJz
dEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3JFbXB0
eUFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRv
cik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpibG9ja3NXaXRoTmV3T2JqZWN0cyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzZXRJc01hcmtpbmcpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbCk6IERlbGV0ZWQuCisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6Zm9yRWFjaERlYWRDZWxsKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKToK
KyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6Om1hcmtBdXhpbGlhcnkpOgorICAgICAgICAoSlND
OjpTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogaGVhcC9XZWFrLmg6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+Pjo6ZW1wdHlWYWx1ZSk6CisgICAg
ICAgIChXVEY6Okhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+Pjo6cGVlayk6CisgICAgICAgICogaGVh
cC9XZWFrQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpXZWFrQmxvY2s6OnNwZWNpYWxpemVkVmlz
aXQpOgorICAgICAgICAoSlNDOjpXZWFrQmxvY2s6OnJlYXApOgorICAgICAgICAqIGhlYXAvV2Vh
a0lubGluZXMuaDoKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+OjplbXB0
eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+
OjpwZWVrKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVN
YXAuaDoKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvV2Vha0dDTWFwLmg6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlw
ZS5jcHA6CisKIDIwMTYtMDktMTYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICB0ZXN0MjYyOiBWYXJpb3VzIENvbnN0cnVjdG9ycyBsZW5ndGggcHJvcGVy
dGllcyBzaG91bGQgYmUgY29uZmlndXJhYmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5OCw2
ICs0OTgsOCBAQAogCQkwRjdDMzlGQjFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkEx
QzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLzsgfTsKIAkJMEY3QzM5RkQxQzhG
NjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAv
KiBERkdPcEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLzsgfTsKKwkJMEY3
QzVGQjgxRDg4OEEwQzAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjcxRDg4OEEwMTAwNDRG
NUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovOyB9OworCQkwRjdDNUZCQTFEODg5NTA3MDA0
NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3Bh
Y2VJbmxpbmVzLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbElu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAy
M0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC01NzYsNiArNTc4LDcgQEAKIAkJMEY5RkI0RjQxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNr
TGF5b3V0UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5RkI0RjIxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3Bw
ICovOyB9OwogCQkwRjlGQjRGNTE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkI0
RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCAqLzsgfTsKIAkJMEY5
RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRL
aW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEZBMTMxNzExRDhERDcyQjAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTEzMTcwMUQ4REQ3Mjkw
MEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggKi87IH07CiAJCTBGQTJDMTdCMTdEN0NG
ODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMkMxNzkxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RS
dW5uZXJVdGlscy5jcHAgKi87IH07CiAJCTBGQTJDMTdDMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0
UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQTJDMTdBMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkE1ODFCQTE1MEU5
NTJDMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2Rl
RmxhZ3MuY3BwICovOyB9OwpAQCAtMjczMSw2ICsyNzM0LDggQEAKIAkJMEY3QzM5RkExQzhGNjI5
MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdD
MzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGggPSBk
ZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI3MUQ4
ODhBMDEwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFya2VkQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGN0M1RkI5MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkU3BhY2VJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAv
KiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA4LDYgKzI4MTMs
NyBAQAogCQkwRjlGQjRGMjE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdGFja0xheW91dFBo
YXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkI0RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5
b3V0UGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RhY2tMYXlv
dXRQaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0S2luZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkExMzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBlTWFw
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b3R5cGVNYXBJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTJDMTc5MTdEN0NGODQw
MDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZBMkMxN0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVG
bGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlRmxh
Z3MuY3BwOyBwYXRoID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MzM4LDkgKzUzNDQsMTEgQEAKIAkJCQlDMkI5MTZDMTE0REEwMTRFMDBDQkFD
ODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi8sCiAJCQkJMTQyRDZGMDYxMzUzOUEyODAwQjAyRTg2
IC8qIE1hcmtlZEJsb2NrLmNwcCAqLywKIAkJCQkxNDJENkYwNzEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suaCAqLywKKwkJCQkwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2Vk
QmxvY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQxNDQ4Q0ExM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtl
ZEJsb2NrU2V0LmggKi8sCiAJCQkJMTREMkYzRDgxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNw
YWNlLmNwcCAqLywKIAkJCQkxNEQyRjNEOTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2Uu
aCAqLywKKwkJCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVz
LmggKi8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8s
CiAJCQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAogCQkJCUFE
REIxRjYyMThENzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi8sCkBAIC02MDc2LDYg
KzYwODQsNyBAQAogCQkJCTY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi8s
CiAJCQkJMTREODQ0QTIxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlwZU1hcC5jcHAgKi8sCiAJ
CQkJMTREODQ0QTMxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlwZU1hcC5oICovLAorCQkJCTBG
QTEzMTcwMUQ4REQ3MjkwMEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggKi8sCiAJCQkJ
NzlCMDBDQjgxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuY3BwICovLAogCQkJ
CTc5QjAwQ0I5MUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggKi8sCiAJCQkJ
NzlCMDBDQkExQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5T2JqZWN0LmNwcCAqLywKQEAgLTczOTQs
NiArNzQwMyw3IEBACiAJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5j
eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjE4MTZEMDJFQjIwMDU1QTVEQiAvKiBE
RkdBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTQ2MTUzNENCQUYwMDBGOTQ1
NiAvKiBERkdBcmd1bWVudFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDNUZCODFE
ODg4QTBDMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJERDgxMjFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTQxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0Fy
Z3VtZW50c1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIxODc3NTA1NjAw
ODNCNjg3IC8qIERGR0FyaXRoTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODg3LDYgKzc4OTcs
NyBAQAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMy
QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTEzMTcxMUQ4REQ3MkIwMEVDMTMwQSAvKiBQ
cm90b3R5cGVNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMDE3QjZCNUFC
MDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFG
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIw
MjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtNzkxMSw2ICs3OTIyLDcgQEAKIAkJCQlBNTAzRkEyQTE4OEYxMDU5MDAxMTBGMTQgLyog
SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlB
MjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUxM0U1QzAxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjdDNUZCQTFEODg5NTA3MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyog
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0NDJD
QjI1MUE2Q0RCOEMwMDVEM0Q3QyAvKiBKU0lucHV0cy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19n
ZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJu
YWxzX3dyYXBwZXJfaGVhZGVyLnB5CShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3Jh
cHBlcl9oZWFkZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDggQEAgY2xhc3MgQnVp
bHRpbnNJbnRlcm5hbHNXcmFwcGVySGVhZGVyR2VuZQogCiAgICAgZGVmIGdlbmVyYXRlX3NlY29u
ZGFyeV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CiAgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsK
LSAgICAgICAgICAgIChbIldlYkNvcmUiXSwKLSAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRD
b3JlIiwgInJ1bnRpbWUvVk0uaCIpLAotICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldl
YkNvcmUiXSwgKCJKYXZhU2NyaXB0Q29yZSIsICJoZWFwL1dlYWtJbmxpbmVzLmgiKSksCisgICAg
ICAgICAgICAoWyJXZWJDb3JlIl0sICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIikp
CiAgICAgICAgIF0KICAgICAgICAgZm9yIG9iamVjdCBpbiBzZWxmLmludGVybmFsczoKICAgICAg
ICAgICAgIGhlYWRlcl9pbmNsdWRlcy5hcHBlbmQoKFsiV2ViQ29yZSJdLCAoIldlYkNvcmUiLCBv
YmplY3Qub2JqZWN0X25hbWUgKyAiQnVpbHRpbnMuaCIpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRT
cGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm90ZWN0Lmgi
CiAjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9DZWxsQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ2VsbENvbnRhaW5lci5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsy
OSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBDZWxs
OwogY2xhc3MgTGFyZ2VBbGxvY2F0aW9uOwogY2xhc3MgTWFya2VkQmxvY2s7CiBjbGFzcyBXZWFr
U2V0OworY2xhc3MgVk07CiAKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKQEAgLTU2
LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCisgICAgVk0qIHZtKCkgY29u
c3Q7CisgICAgSGVhcCogaGVhcCgpIGNvbnN0OworICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fZW5jb2RlZFBvaW50ZXI7IH0KICAgICAKICAgICBi
b29sIGlzTWFya2VkQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRQb2ludGVyICYmICEo
bV9lbmNvZGVkUG9pbnRlciAmIGlzTGFyZ2VBbGxvY2F0aW9uQml0KTsgfQpAQCAtNzMsMTMgKzc4
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8TGFyZ2VBbGxvY2F0
aW9uKj4obV9lbmNvZGVkUG9pbnRlciAtIGlzTGFyZ2VBbGxvY2F0aW9uQml0KTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24pOwotICAgIHZvaWQgZmxp
cElmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lvbik7CiAgICAg
Ym9vbCBuZWVkc0ZsaXAoKSBjb25zdDsKICAgICAKLSAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7
CiAgICAgYm9vbCBpc01hcmtlZChIZWFwQ2VsbCopIGNvbnN0OworICAgIGJvb2wgaXNNYXJrZWQo
SGVhcFZlcnNpb24sIEhlYXBDZWxsKikgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlB
bGxvY2F0ZWQoSGVhcENlbGwqKSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSBjb25zdDsKICAgICAKICAgICB2b2lkIG5vdGVN
YXJrZWQoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q2VsbENvbnRhaW5lcklubGluZXMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTQgKzI5LDIwIEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJWTS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoKSBj
b25zdAoraW5saW5lIFZNKiBDZWxsQ29udGFpbmVyOjp2bSgpIGNvbnN0CiB7CiAgICAgaWYgKGlz
TGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtYXJr
ZWRCbG9jaygpLmhhbmRsZSgpLmlzTWFya2VkKCk7CisgICAgICAgIHJldHVybiBsYXJnZUFsbG9j
YXRpb24oKS52bSgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLnZtKCk7Cit9CisKK2lubGlu
ZSBIZWFwKiBDZWxsQ29udGFpbmVyOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJnZtKCkt
PmhlYXA7CiB9CiAKIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXBDZWxs
KiBjZWxsKSBjb25zdApAQCAtNDYsNiArNTIsMTMgQEAgaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5l
cjo6aXNNYXJrZWQoSGVhcAogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkKGNlbGwp
OwogfQogCitpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwVmVyc2lvbiB2
ZXJzaW9uLCBIZWFwQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaXNMYXJnZUFsbG9jYXRp
b24oKSkKKyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CisgICAg
cmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJrZWQodmVyc2lvbiwgY2VsbCk7Cit9CisKIGlubGlu
ZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCog
Y2VsbCkgY29uc3QKIHsKICAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKQEAgLTUzLDYgKzY2
LDEzIEBAIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXcKICAgICByZXR1
cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiB9CiAKK2lu
bGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVy
c2lvbiB2ZXJzaW9uLCBIZWFwQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaXNMYXJnZUFs
bG9jYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZCgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZCh2ZXJzaW9uLCBjZWxsKTsKK30KKwogaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5l
cjo6bm90ZU1hcmtlZCgpCiB7CiAgICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlvbigpKQpAQCAtNzMs
MTYgKzkzLDEwIEBAIGlubGluZSBXZWFrU2V0JiBDZWxsQ29udGFpbmVyOjp3ZWFrU2V0KCkKICAg
ICByZXR1cm4gbWFya2VkQmxvY2soKS53ZWFrU2V0KCk7CiB9CiAKLWlubGluZSB2b2lkIENlbGxD
b250YWluZXI6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAg
ICBpZiAoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIG1hcmtlZEJsb2NrKCkuZmxpcElm
TmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLX0KLQotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6
ZmxpcElmTmVjZXNzYXJ5KCkKK2lubGluZSB2b2lkIENlbGxDb250YWluZXI6OmFib3V0VG9NYXJr
KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24o
KSkKLSAgICAgICAgbWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgbWFy
a2VkQmxvY2soKS5hYm91dFRvTWFyayhoZWFwVmVyc2lvbik7CiB9CiAKIGlubGluZSBib29sIENl
bGxDb250YWluZXI6Om5lZWRzRmxpcCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRC
bG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlIDx3dGYvT1NB
bGxvY2F0b3IuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwu
aCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1By
b2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN1cGVyU2Ft
cGxlci5oIgpAQCAtNTI2LDExICs1MjcsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAg
ICAgfQogICAgIAogICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Nj
b3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1fb2JqZWN0
U3BhY2UuZmxpcCgpOworICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUo
KnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29iamVjdFNw
YWNlLmJlZ2luTWFya2luZygpOwogICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElz
TWFya2luZyh0cnVlKTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNl
dCgpCkBAIC03NzksNyArNzc4LDcgQEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAgICBBU1NF
UlQobV9zaGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXJzLnJlbW92ZUFsbCgpOwogICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5n
KGZhbHNlKTsKKyAgICBtX29iamVjdFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6ZV90IEhl
YXA6Om9iamVjdENvdW50KCkKQEAgLTkzOSw3ICs5MzgsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RB
bGxHYXJiYWdlKCkKICAgICAgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAgICBtX29i
amVjdFNwYWNlLnNocmluaygpOwogICAgIH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBzaG90Lmlz
RW1wdHkoKSk7CisgICAgbV9vYmplY3RTcGFjZS5hc3NlcnROb1Vuc3dlcHQoKTsKIAogICAgIHN3
ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiB9CkBAIC0xMDM5LDcgKzEwMzgsNyBA
QCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAgcmVhcFdlYWtI
YW5kbGVzKCk7CiAgICAgcHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWFwcygpOwogICAgIHN3
ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAgc25hcHNob3RNYXJrZWRTcGFjZSgpOworICAgIHNuYXBz
aG90VW5zd2VwdCgpOwogICAgIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKICAg
ICByZW1vdmVEZWFkQ29tcGlsZXJXb3JrbGlzdEVudHJpZXMoKTsKICAgICBkZWxldGVVbm1hcmtl
ZENvbXBpbGVkQ29kZSgpOwpAQCAtMTA0OCw3ICsxMDQ3LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwog
ICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKIAotICAgIHJl
c2V0QWxsb2NhdG9ycygpOworICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdXBkYXRl
QWxsb2NhdGlvbkxpbWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUp
OwogICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFkcygpOwpAQCAtMTA2Myw2ICsxMDYyLDExIEBAIE5F
VkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXAKICAgICAgICAgZG91YmxlIGFm
dGVyID0gY3VycmVudFRpbWVNUygpOwogICAgICAgICBkYXRhTG9nKGFmdGVyIC0gYmVmb3JlLCAi
IG1zXVxuIik7CiAgICAgfQorICAgIAorICAgIGlmIChmYWxzZSkgeworICAgICAgICBkYXRhTG9n
KCJIZWFwIHN0YXRlIGFmdGVyIEdDOlxuIik7CisgICAgICAgIG1fb2JqZWN0U3BhY2UuZHVtcEJp
dHMoKTsKKyAgICB9CiB9CiAKIHZvaWQgSGVhcDo6c3dlZXBMYXJnZUFsbG9jYXRpb25zKCkKQEAg
LTExNjIsNDQgKzExNjYsMTAgQEAgdm9pZCBIZWFwOjpzd2VlcEFycmF5QnVmZmVycygpCiAgICAg
bV9hcnJheUJ1ZmZlcnMuc3dlZXAoKTsKIH0KIAotc3RydWN0IE1hcmtlZEJsb2NrU25hcHNob3RG
dW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgTWFya2VkQmxv
Y2tTbmFwc2hvdEZ1bmN0b3IoVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tzKSAK
LSAgICAgICAgOiBtX2luZGV4KDApIAotICAgICAgICAsIG1fYmxvY2tzKGJsb2NrcykKLSAgICB7
Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KSBjb25zdAotICAgIHsKLSAgICAgICAgYmxvY2stPnNldElzT25CbG9ja3NUb1N3ZWVwKHRydWUp
OwotICAgICAgICBtX2Jsb2Nrc1ttX2luZGV4KytdID0gYmxvY2s7Ci0gICAgfQotCi0gICAgLy8g
RklYTUU6IFRoaXMgaXMgYSBtdXRhYmxlIGZpZWxkIGJlY2F1ZSB0aGlzIGlzbid0IGEgQysrIGxh
bWJkYS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5
NjQ0Ci0gICAgbXV0YWJsZSBzaXplX3QgbV9pbmRleDsKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6
OkhhbmRsZSo+JiBtX2Jsb2NrczsKLX07Ci0KLXZvaWQgSGVhcDo6c25hcHNob3RNYXJrZWRTcGFj
ZSgpCit2b2lkIEhlYXA6OnNuYXBzaG90VW5zd2VwdCgpCiB7Ci0gICAgVGltaW5nU2NvcGUgdGlt
aW5nU2NvcGUoKnRoaXMsICJIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlIik7Ci0gICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHJlbmFtZWQuIEl0J3Mgbm90IGFjdHVhbGx5IHNu
YXBzaG90dGluZyBhbGwgb2YgTWFya2VkU3BhY2UuCi0gICAgLy8gVGhpcyBpcyB1c2VkIGJ5IElu
Y3JlbWVudGFsU3dlZXBlciwgc28gaXQgb25seSBuZWVkcyB0byBzbmFwc2hvdCBibG9ja3MuIEhv
d2V2ZXIsIGlmIHdlIGV2ZXIKLSAgICAvLyB3YW50ZWQgdG8gYWRkIG90aGVyIHNuYXBzaG90dGlu
ZyBsb2dpbiwgd2UnZCBwcm9iYWJseSBwdXQgaXQgaGVyZS4KLSAgICAKLSAgICBpZiAobV9vcGVy
YXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIGZvciAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogaGFuZGxlIDogbV9vYmplY3RTcGFjZS5ibG9ja3NXaXRoTmV3T2JqZWN0
cygpKSB7Ci0gICAgICAgICAgICBpZiAoaGFuZGxlLT5pc09uQmxvY2tzVG9Td2VlcCgpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbV9ibG9ja1NuYXBzaG90LmFwcGVu
ZChoYW5kbGUpOwotICAgICAgICAgICAgaGFuZGxlLT5zZXRJc09uQmxvY2tzVG9Td2VlcCh0cnVl
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fYmxvY2tTbmFwc2hvdC5yZXNp
emVUb0ZpdChtX29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgpLnNpemUoKSk7Ci0gICAgICAgIE1h
cmtlZEJsb2NrU25hcHNob3RGdW5jdG9yIGZ1bmN0b3IobV9ibG9ja1NuYXBzaG90KTsKLSAgICAg
ICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgfQorICAgIFRpbWlu
Z1Njb3BlIHRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6c25hcHNob3RVbnN3ZXB0Iik7CisgICAg
bV9vYmplY3RTcGFjZS5zbmFwc2hvdFVuc3dlcHQoKTsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVT
b3VyY2VQcm92aWRlckNhY2hlcygpCkBAIC0xMjIyLDkgKzExOTIsOSBAQCB2b2lkIEhlYXA6Ondy
aXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluCiAgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJp
ZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKHRoaXMpOwogfQogCi12b2lkIEhlYXA6OnJl
c2V0QWxsb2NhdG9ycygpCit2b2lkIEhlYXA6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKLSAg
ICBtX29iamVjdFNwYWNlLnJlc2V0QWxsb2NhdG9ycygpOworICAgIG1fb2JqZWN0U3BhY2UucHJl
cGFyZUZvckFsbG9jYXRpb24oKTsKIH0KIAogdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGlt
aXRzKCkKQEAgLTE0NzMsNyArMTQ0Myw3IEBAIHB1YmxpYzoKIHZvaWQgSGVhcDo6em9tYmlmeURl
YWRPYmplY3RzKCkKIHsKICAgICAvLyBTd2VlcCBub3cgYmVjYXVzZSBkZXN0cnVjdG9ycyB3aWxs
IGNyYXNoIG9uY2Ugd2UncmUgem9tYmlmaWVkLgotICAgIG1fb2JqZWN0U3BhY2Uuem9tYmlmeVN3
ZWVwKCk7CisgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgIEhlYXBJdGVyYXRpb25TY29w
ZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENl
bGwoaXRlcmF0aW9uU2NvcGUsIFpvbWJpZnkoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNywxMSArMzI3LDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZWFwV2Vha0hhbmRsZXMoKTsKICAgICB2b2lkIHBydW5lU3RhbGVFbnRyaWVzRnJv
bVdlYWtHQ01hcHMoKTsKICAgICB2b2lkIHN3ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAgdm9pZCBz
bmFwc2hvdE1hcmtlZFNwYWNlKCk7CisgICAgdm9pZCBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICB2
b2lkIGRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1l
bnRhbFN3ZWVwZXIoKTsKICAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0Nv
ZGVCbG9ja3MoKTsKLSAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFy
ZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAg
IHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwogICAgIHZvaWQgY2xlYXJV
bm1hcmtlZEV4ZWN1dGFibGVzKCk7CkBAIC00MjIsNyArNDIyLDYgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsKICAg
ICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICBWZWN0
b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tTbmFwc2hvdDsKIAogICAgIFZlY3RvcjxI
ZWFwT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw5ICs4MSw4IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZChjb25zdCAKICAgICBpZiAoY2VsbC0+
aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlv
bigpLmlzTWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxv
Y2soKTsKLSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3Bh
Y2UoKS52ZXJzaW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGJsb2Nr
LmlzTWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5pc01hcmtlZCgKKyAgICAgICAgYmxv
Y2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseShjb25zdCB2b2lkKiByYXdD
ZWxsKQpAQCAtOTIsMTAgKzkxLDggQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2Vk
Q29uY3VycgogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1
cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYg
YmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGlmIChibG9jay5uZWVkc0ZsaXAoYmxv
Y2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICByZXR1cm4gYmxvY2suaXNNYXJr
ZWQoY2VsbCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkQ29uY3VycmVudGx5KAorICAgICAg
ICBibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKIH0KIAog
QUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQoSGVhcFZlcnNpb24gdmVy
c2lvbiwgY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTEwNCw3ICsxMDEsNyBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgSGVhcDo6dGVzdEFuZFNldE1hcmtlCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxv
Y2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS50ZXN0QW5k
U2V0TWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2so
KTsKLSAgICBibG9jay5mbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKHZlcnNpb24pOworICAg
IGJsb2NrLmFib3V0VG9NYXJrKHZlcnNpb24pOwogICAgIHJldHVybiBibG9jay50ZXN0QW5kU2V0
TWFya2VkKGNlbGwpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwVXRpbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBV
dGlsLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBVdGlsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDggQEAgcHVibGljOgogICAgICAg
ICAgICAgaWYgKCFmaWx0ZXIucnVsZU91dChiaXR3aXNlX2Nhc3Q8Qml0cz4ocHJldmlvdXNDYW5k
aWRhdGUpKQogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0NhbmRpZGF0
ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtp
bmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXND
YW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7CiAgICAgICAgICAgICAgICAg
cHJldmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5o
YW5kbGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYg
KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHByZXZpb3VzUG9pbnRlcikp
CisgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVD
ZWxsKGhlYXBWZXJzaW9uLCBwcmV2aW91c1BvaW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBm
dW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDEw
ICs5OCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFzZXQuY29udGFpbnMoY2FuZGlkYXRlKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElm
TmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLQogICAgICAgICBhdXRvIHRyeVBvaW50ZXIgPSBbJl0g
KHZvaWQqIHBvaW50ZXIpIHsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlz
TGl2ZUNlbGwocG9pbnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5p
c0xpdmVDZWxsKGhlYXBWZXJzaW9uLCBwb2ludGVyKSkKICAgICAgICAgICAgICAgICBmdW5jKHBv
aW50ZXIpOwogICAgICAgICB9OwogICAgIApAQCAtMTcwLDcgKzE2Nyw2IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtpbmQoKSAhPSBIZWFwQ2VsbDo6SlND
ZWxsKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgY2FuZGlk
YXRlLT5mbGlwSWZOZWNlc3NhcnkoKTsKICAgICAgICAgaWYgKCFjYW5kaWRhdGUtPmhhbmRsZSgp
LmlzTGl2ZUNlbGwocG9pbnRlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCShy
ZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZp
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJh
dGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAg
c3RhdGljIGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVNdWx0aXBsaWVyIAogI2lmIFVTRShDRikKIElu
Y3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXAsIENGUnVuTG9v
cFJlZiBydW5Mb29wKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCksIHJ1bkxvb3ApCi0gICAg
LCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQorICAgICwgbV9jdXJyZW50
QWxsb2NhdG9yKG51bGxwdHIpCiB7CiB9CiAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBJbmNyZW1l
bnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICNlbGlmIFBMQVRGT1JNKEVGTCkKIEluY3JlbWVu
dGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXApCiAgICAgOiBIZWFwVGlt
ZXIoaGVhcC0+dm0oKSkKLSAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25hcHNo
b3QpCisgICAgLCBtX2N1cnJlbnRBbGxvY2F0b3IobnVsbHB0cikKIHsKIH0KIApAQCAtODYsNyAr
ODYsNyBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogI2VsaWYgVVNF
KEdMSUIpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFw
KQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVh
cC0+bV9ibG9ja1NuYXBzaG90KQorICAgICwgbV9jdXJyZW50QWxsb2NhdG9yKG51bGxwdHIpCiB7
CiB9CiAKQEAgLTEyMSwxOSArMTIxLDIwIEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3
ZWVwKGRvdWJsZSAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmxvY2tzVG9Td2Vl
cC5jbGVhcigpOwogICAgIGNhbmNlbFRpbWVyKCk7CiB9CiAKIGJvb2wgSW5jcmVtZW50YWxTd2Vl
cGVyOjpzd2VlcE5leHRCbG9jaygpCiB7Ci0gICAgd2hpbGUgKCFtX2Jsb2Nrc1RvU3dlZXAuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3NU
b1N3ZWVwLnRha2VMYXN0KCk7Ci0gICAgICAgIGJsb2NrLT5zZXRJc09uQmxvY2tzVG9Td2VlcChm
YWxzZSk7Ci0KLSAgICAgICAgaWYgKCFibG9jay0+bmVlZHNTd2VlcGluZygpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG51bGxwdHI7
CisgICAgCisgICAgZm9yICg7IG1fY3VycmVudEFsbG9jYXRvcjsgbV9jdXJyZW50QWxsb2NhdG9y
ID0gbV9jdXJyZW50QWxsb2NhdG9yLT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgYmxvY2sg
PSBtX2N1cnJlbnRBbGxvY2F0b3ItPmZpbmRCbG9ja1RvU3dlZXAoKTsKKyAgICAgICAgaWYgKGJs
b2NrKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChibG9jaykgewog
ICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MobV92bS0+aGVhcCk7CiAgICAgICAgIGJs
b2NrLT5zd2VlcCgpOwogICAgICAgICBtX3ZtLT5oZWFwLm9iamVjdFNwYWNlKCkuZnJlZU9yU2hy
aW5rQmxvY2soYmxvY2spOwpAQCAtMTQ2LDExICsxNDcsMTIgQEAgYm9vbCBJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dl
ZXBpbmcoKQogewogICAgIHNjaGVkdWxlVGltZXIoKTsKKyAgICBtX2N1cnJlbnRBbGxvY2F0b3Ig
PSBtX3ZtLT5oZWFwLm9iamVjdFNwYWNlKCkuZmlyc3RBbGxvY2F0b3IoKTsKIH0KIAogdm9pZCBJ
bmNyZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2VlcGluZygpCiB7Ci0gICAgbV9ibG9ja3NU
b1N3ZWVwLmNsZWFyKCk7CisgICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbnVsbHB0cjsKICAgICBp
ZiAobV92bSkKICAgICAgICAgY2FuY2VsVGltZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZpc2lvbiAyMDYwMzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDEyIEBACiAjZGVmaW5lIEluY3JlbWVudGFsU3dlZXBl
cl9oCiAKICNpbmNsdWRlICJIZWFwVGltZXIuaCIKLSNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7
Ci1jbGFzcyBNYXJrZWRCbG9jazsKK2NsYXNzIE1hcmtlZEFsbG9jYXRvcjsKIAogY2xhc3MgSW5j
cmVtZW50YWxTd2VlcGVyIDogcHVibGljIEhlYXBUaW1lciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC01Niw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRp
bWVyKCk7CiAgICAgdm9pZCBjYW5jZWxUaW1lcigpOwogICAgIAotICAgIFZlY3RvcjxNYXJrZWRC
bG9jazo6SGFuZGxlKj4mIG1fYmxvY2tzVG9Td2VlcDsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1f
Y3VycmVudEFsbG9jYXRvcjsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw5ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc05ld2x5QWxsb2NhdGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc05ld2x5QWxsb2NhdGVkOyB9CiAgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzTWFya2VkKCkgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29y
ZGVyX3JlbGF4ZWQpOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2VkKEhlYXBDZWxs
KikgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9
CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9u
LCBIZWFwQ2VsbCopIHsgcmV0dXJuIG1faXNNYXJrZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsgfQogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCkgeyByZXR1cm4g
aXNNYXJrZWQoKSB8fCBpc05ld2x5QWxsb2NhdGVkKCk7IH0KICAgICBib29sIGlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChIZWFwQ2VsbCopIHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRl
ZCgpOyB9Ci0gICAgYm9vbCBpc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiwg
SGVhcENlbGwqKSB7IHJldHVybiBpc01hcmtlZCgpOyB9CiAgICAgYm9vbCBpc0xpdmUoKSB7IHJl
dHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsgfQogICAgIAogICAgIGJvb2wgaGFzVmFs
aWRDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWYWxpZENlbGw7IH0KQEAgLTEwNiw4ICsxMDcs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmli
dXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgIAotICAgIHZvaWQgZmxp
cElmTmVjZXNzYXJ5KHVpbnQ2NF90KSB7IH0KLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmlu
Z01hcmtpbmcodWludDY0X3QpIHsgfQorICAgIHZvaWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24p
IHsgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKCkKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUg
IlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogTWFya2VkQWxsb2NhdG9y
OjpNYXJrZWRBbGxvY2F0b3IoSGVhcCogaGVhcCwgTWFya2VkU3BhY2UqIG1hcmtlZFNwYWNlLCBz
aXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiAg
ICAgOiBtX2N1cnJlbnRCbG9jaygwKQogICAgICwgbV9sYXN0QWN0aXZlQmxvY2soMCkKLSAgICAs
IG1fbmV4dEJsb2NrVG9Td2VlcChudWxscHRyKQogICAgICwgbV9jZWxsU2l6ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY2VsbFNpemUpKQogICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCiAg
ICAgLCBtX2hlYXAoaGVhcCkKQEAgLTUwLDExICs1MCwxMyBAQCBNYXJrZWRBbGxvY2F0b3I6Ok1h
cmtlZEFsbG9jYXRvcihIZWFwKiBoCiBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChk
b3VibGUgZGVhZGxpbmUpCiB7CiAgICAgdW5zaWduZWQgaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sg
PSAwOwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja0xpc3QuYmVnaW4o
KTsKLSAgICB3aGlsZSAoYmxvY2spIHsKLSAgICAgICAgYmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2so
YmxvY2stPm5leHQoKSk7Ci0gICAgICAgIGlmIChibG9jaykKLSAgICAgICAgICAgIGJsb2NrLT5m
bGlwSWZOZWNlc3NhcnkoKTsgLy8gRm9yY2VzIHVzIHRvIHRvdWNoIHRoZSBtZW1vcnkgb2YgdGhl
IGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVjdC4KKyAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgbV9ibG9ja3Muc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3NbaW5kZXhdOworICAgICAgICBpZiAoYmxv
Y2spIHsKKyAgICAgICAgICAgIC8vIEZvcmNlcyB1cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRo
ZSBibG9jaywgYnV0IGhhcyBubyBzZW1hbnRpYyBlZmZlY3QuCisgICAgICAgICAgICBpZiAoYmxv
Y2stPm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAgIGJsb2NrLT5ibG9jaygpLnJlc2V0VmVy
c2lvbigpOworICAgICAgICB9CiAgICAgICAgICsraXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2s7CiAg
ICAgICAgIGlmIChpdGVyc1NpbmNlTGFzdFRpbWVDaGVjayA+PSBIZWFwOjpzX3RpbWVDaGVja1Jl
c29sdXRpb24pIHsKICAgICAgICAgICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCk7CkBAIC02Niw4NCArNjgsODAgQEAgYm9vbCBNYXJrZWRB
bGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBNYXJrZWRBbGxvY2F0b3I6OnJldGlyZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKLXsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOyAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIGlu
IHBhcmFsbGVsIGR1cmluZyBHQy4KLSAgICBpZiAoYmxvY2sgPT0gbV9jdXJyZW50QmxvY2spIHsK
LSAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gdGhlIG11dGF0b3IgaXMgcnVubmluZy4gV2Ug
ZmluaXNoZWQgYSBmdWxsIEdDIGFuZCBtYXJrZWQgdG9vIGZldyB0aGluZ3MKLSAgICAgICAgLy8g
dG8gcmV0aXJlLiBUaGVuIHdlIHN0YXJ0ZWQgYWxsb2NhdGluZyBpbiB0aGlzIGJsb2NrLiBUaGVu
IGEgYmFycmllciByYW4sIHdoaWNoIG1hcmtlZCBhbgotICAgICAgICAvLyBvYmplY3QgaW4gdGhp
cyBibG9jaywgd2hpY2ggcHV0IGl0IG92ZXIgdGhlIHJldGlyZW1lbnQgdGhyZXNob2xkLiBJdCdz
IE9LIHRvIHNpbXBseSBkbwotICAgICAgICAvLyBub3RoaW5nIGluIHRoYXQgY2FzZS4KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoYmxvY2sgPT0gbV9sYXN0QWN0aXZlQmxvY2spIHsK
LSAgICAgICAgLy8gVGhpcyBjYW4gZWFzaWx5IGhhcHBlbiBkdXJpbmcgbWFya2luZy4gSXQgd291
bGQgYmUgZWFzeSB0byBoYW5kbGUgdGhpcyBjYXNlLCBidXQgaXQncwotICAgICAgICAvLyBqdXN0
IGFzIGVhc3kgdG8gaWdub3JlIGl0LgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJFTEVB
U0VfQVNTRVJUKGJsb2NrLT5pc09uTGlzdCgpKTsKLSAgICBpZiAoYmxvY2sgPT0gbV9uZXh0Qmxv
Y2tUb1N3ZWVwKQotICAgICAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBmaWx0ZXJOZXh0QmxvY2so
YmxvY2stPm5leHQoKSk7Ci0gICAgYmxvY2stPnJlbW92ZSgpOwotICAgIG1fcmV0aXJlZEJsb2Nr
cy5wdXNoKGJsb2NrKTsKLX0KLQotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9y
OjpmaWx0ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCitNYXJrZWRCbG9j
azo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJsb2NrKCkKIHsKLSAgICBpZiAo
YmxvY2sgPT0gbV9ibG9ja0xpc3QuZW5kKCkpCisgICAgbV9lbXB0eUN1cnNvciA9IG1fZW1wdHku
ZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKKyAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBt
X2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBibG9j
azsKLX0KLQotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dlZXAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spCi17Ci0gICAgbV9uZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVy
TmV4dEJsb2NrKGJsb2NrKTsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV9lbXB0eUN1cnNvcl07CiB9
CiAKIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0lt
cGwoKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsK
ICAgICAKLSAgICBpZiAobV9jdXJyZW50QmxvY2spIHsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVu
dEJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCk7CisgICAgaWYgKG1fY3VycmVudEJsb2NrKQog
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7Ci0gICAgICAgIHNl
dE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAgfQogICAgIAog
ICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQobV9uZXh0
QmxvY2tUb1N3ZWVwICE9IG1fYmxvY2tMaXN0LmVuZCgpKTsKLQotICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiYgYmxvY2sgPSBtX25l
eHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgbmV4dCA9IGZp
bHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAgICAvLyBJdCB3b3VsZCBiZSBz
dXBlciB3ZWlyZCBpZiB0aGUgYmxvY2tzIHdlIGFyZSBzd2VlcGluZyBoYXZlIGFueXRoaW5nIGFs
bG9jYXRlZCBkdXJpbmcgdGhpcwotICAgICAgICAvLyBjeWNsZS4KLSAgICAgICAgQVNTRVJUKCFi
bG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAgIAotICAgICAgICBGcmVlTGlz
dCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJl
ZUxpc3QpOworICAgIG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsKKyAgICAKKyAgICBmb3IgKDs7
KSB7CisgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9jYXRlQnV0Tm90RW1w
dHkgfCBtX2VtcHR5KS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAg
IGlmIChtX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24g
YSBjb21wbGV0ZS1mdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0
Ci0gICAgICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8g
aXQgc29tZXRpbWVzLgotICAgICAgICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOwotICAgICAgICAg
ICAgYmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLT5pc01hcmtlZCgpKTsKLSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBzZXRJc0NhbkFsbG9jYXRlQnV0
Tm90RW1wdHkobV9hbGxvY2F0aW9uQ3Vyc29yLCBmYWxzZSk7CiAKLSAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBibG9jazsKLSAgICAgICAgc2V0RnJlZUxpc3QoZnJlZUxpc3QpOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4obV9ibG9ja3Nb
bV9hbGxvY2F0aW9uQ3Vyc29yXSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
ICAgICAKLSAgICBpZiAoIW1fZnJlZUxpc3QpIHsKLSAgICAgICAgbV9jdXJyZW50QmxvY2sgPSAw
OwotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoT3B0aW9uczo6bG9va0ZvckVtcHR5QmxvY2tz
SW5PdGhlckFsbG9jYXRvcnMoKSkgeworICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2sgPSBtX21hcmtlZFNwYWNlLT5maW5kRW1wdHlCbG9jaygpKSB7CisgICAgICAgICAgICBi
bG9jay0+c3dlZXAoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSXQncyBnb29kIHRo
YXQgdGhpcyBjbGVhcnMgY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBhcyB3ZWxsIGFzIGFsbCBvdGhl
ciBiaXRzLAorICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBhIHJlbW90ZSBjaGFuY2Ug
dGhhdCBhIGJsb2NrIG1heSBoYXZlIGJvdGggY2FuQWxsb2NhdGVCdXROb3RFbXB0eQorICAgICAg
ICAgICAgLy8gYW5kIGVtcHR5IHNldCBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICAgICAgYmxv
Y2stPnJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgICAgIGFkZEJsb2NrKGJsb2NrKTsK
KyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZUluKGJsb2NrKTsKKyAgICAgICAgfQogICAgIH0K
KyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAordm9pZCogTWFya2VkQWxsb2NhdG9yOjph
bGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIHZvaWQqIHJlc3Vs
dCA9IHRyeUFsbG9jYXRlSW4oYmxvY2spOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0
ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIEFTU0VSVChibG9jayk7Cisg
ICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgQVNTRVJUKCFi
bG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxv
Y2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgCisg
ICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGVseSBmdWxsIGJsb2Nr
LiBNYXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0CisgICAgLy8gdGhhdCBhbGdvcml0
aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCisgICAgaWYgKGZy
ZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7CisgICAgICAgIEFTU0VSVChibG9jay0+aXNG
cmVlTGlzdGVkKCkpOworICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVk
KCk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgQVNT
RVJUKCFpc0VtcHR5KGJsb2NrKSk7CisgICAgICAgIEFTU0VSVCghaXNDYW5BbGxvY2F0ZUJ1dE5v
dEVtcHR5KGJsb2NrKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKKyAg
ICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOworICAgIHNldEZyZWVMaXN0KGZyZWVMaXN0KTsKKyAg
ICAKICAgICB2b2lkKiByZXN1bHQ7CiAgICAgaWYgKG1fZnJlZUxpc3QucmVtYWluaW5nKSB7CiAg
ICAgICAgIHVuc2lnbmVkIGNlbGxTaXplID0gbV9jZWxsU2l6ZTsKQEAgLTE1NSw2ICsxNTMsNyBA
QCB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91CiAgICAgICAgIHJlc3Vs
dCA9IGhlYWQ7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgc2V0SXNF
ZGVuKG1fY3VycmVudEJsb2NrLCB0cnVlKTsKICAgICBtX21hcmtlZFNwYWNlLT5kaWRBbGxvY2F0
ZUluQmxvY2sobV9jdXJyZW50QmxvY2spOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMjcs
OCArMjI2LDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlSQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIGFkZEJsb2NrKGJsb2NrKTsKLSAg
ICAgICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOworICAg
IHJlc3VsdCA9IGFsbG9jYXRlSW4oYmxvY2spOwogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CkBAIC0yNDksMzcgKzI0Nyw3NSBAQCBzaXplX3QgTWFya2VkQWxsb2Nh
dG9yOjpibG9ja1NpemVGb3JCeXRlCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0
b3I6OnRyeUFsbG9jYXRlQmxvY2soKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9o
ZWFwLCB0aGlzLCBtX2NlbGxTaXplLCBtX2F0dHJpYnV0ZXMpOworICAgIAorICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCk7Cisg
ICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fbWFy
a2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsK
IH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9m
cmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMu
aXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAg
IHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxv
Y2tzLmFwcGVuZChibG9jayk7CisgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9s
ZENhcGFjaXR5KSB7CisgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAg
ICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYmxv
Y2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2
ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBh
Y2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7CisgICAgICAgIEFT
U0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgbV9ibG9ja3NbaW5kZXhdID0gYmxvY2s7
CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJp
dFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvciwgIXZl
Y3RvcltpbmRleF0pOworICAgICAgICB9KTsKKworICAgIC8vIFRoaXMgaXMgdGhlIHBvaW50IGF0
IHdoaWNoIHRoZSBibG9jayBsZWFybnMgb2YgaXRzIGNlbGxTaXplKCkgYW5kIGF0dHJpYnV0ZXMo
KS4KKyAgICBibG9jay0+ZGlkQWRkVG9BbGxvY2F0b3IodGhpcywgaW5kZXgpOwogICAgIAotICAg
IG1fYmxvY2tMaXN0LmFwcGVuZChibG9jayk7Ci0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChibG9j
ayk7Ci0gICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soYmxvY2spOworICAgIHNldElzTGl2
ZShpbmRleCwgdHJ1ZSk7CisgICAgc2V0SXNFbXB0eShpbmRleCwgdHJ1ZSk7CiB9CiAKIHZvaWQg
TWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykK
IHsKLSAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gYmxvY2spIHsKLSAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2sobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAgICAg
IHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotICAgIH0KLSAgICBpZiAobV9uZXh0QmxvY2tUb1N3
ZWVwID09IGJsb2NrKQotICAgICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fbmV4dEJsb2NrVG9T
d2VlcC0+bmV4dCgpKTsKKyAgICBBU1NFUlQoYmxvY2stPmFsbG9jYXRvcigpID09IHRoaXMpOwor
ICAgIEFTU0VSVChtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPT0gYmxvY2spOwogCi0gICAgYmxv
Y2stPndpbGxSZW1vdmVCbG9jaygpOwotICAgIG1fYmxvY2tMaXN0LnJlbW92ZShibG9jayk7Cisg
ICAgbV9ibG9ja3NbYmxvY2stPmluZGV4KCldID0gbnVsbHB0cjsKKyAgICBtX2ZyZWVCbG9ja0lu
ZGljZXMuYXBwZW5kKGJsb2NrLT5pbmRleCgpKTsKKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9y
KAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgdmVj
dG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOworICAgICAgICB9KTsKKyAgICAKKyAgICBibG9j
ay0+ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
c3RvcEFsbG9jYXRpbmcoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3Mo
KSA9PSBGdWxsQ29sbGVjdGlvbikKLSAgICAgICAgbV9ibG9ja0xpc3QudGFrZUZyb20obV9yZXRp
cmVkQmxvY2tzKTsKLQorICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVy
KHRoaXMpLCAiOiBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nIVxuIik7CiAgICAgQVNT
RVJUKCFtX2xhc3RBY3RpdmVCbG9jayk7CiAgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykgewogICAg
ICAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOwpAQCAtMjkyLDI5ICszMjgsMjUgQEAgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKICAgICBtX2ZyZWVMaXN0ID0gRnJlZUxpc3Qo
KTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAw
OwotICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxw
dHI7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogICAgIHNldEZyZWVMaXN0KEZyZWVM
aXN0KCkpOwogCi0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2Jsb2NrTGlzdC5iZWdpbigpKTsK
KyAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSAwOworICAgIG1fZW1wdHlDdXJzb3IgPSAwOworICAg
IG1fdW5zd2VwdEN1cnNvciA9IDA7CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxsKCk7CiAKICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7Ci0gICAgICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6Okhh
bmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7
Ci0gICAgICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0g
ICAgICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6
SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAgICAgYmxvY2stPnphcChmcmVlTGlz
dCk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICB9CisgICAgICAgIC8vIEZJ
WE1FOiBUaGluZ3M/CiAgICAgfQogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5j
ZVRvRmluYWxpemUoKQogewotICAgIG1fYmxvY2tMaXN0LnRha2VGcm9tKG1fcmV0aXJlZEJsb2Nr
cyk7CiAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKSB7CiAgICAgICAgICAgICBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAg
LTMyNiw0ICszNTgsMTIxIEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzZXRGcmVlTGlzdChjb25z
dCAKICAgICBtX2ZyZWVMaXN0ID0gZnJlZUxpc3Q7CiB9CiAKK3ZvaWQgTWFya2VkQWxsb2NhdG9y
OjpyZXN1bWVBbGxvY2F0aW5nKCkKK3sKKyAgICBpZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3Vt
ZUFsbG9jYXRpbmcoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOwor
ICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0
b3I6OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICAvLyBNYXJrIGJpdHMg
YXJlIHN0aWNreSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNs
ZWFyIHRoZXNlIGR1cmluZyBmdWxsCisgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2
aXZlZCB0aGUgbGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNv
IGxvbmcKKyAgICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRlbi4KKyAgICBtX21hcmtpbmdOb3RF
bXB0eS5jbGVhckFsbCgpOworICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKK30KKwor
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcoKQoreworICAgIG1fYWxsb2NhdGVkLmNs
ZWFyQWxsKCk7CisgICAgCisgICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0
byBjb21wcmVoZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0
bworICAgIC8vIGtub3cgd2hhdCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xl
ZGdlIGlzIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCisgICAgLy8gdmVjdG9y
cy4KKyAgICAKKyAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CisgICAgICAgIC8vIElmIGJs
b2NrcyBuZWVkIGRlc3RydWN0aW9uIHRoZW4gbm90aGluZyBpcyBlbXB0eSEgVGhpcyBpcyBhIGNv
cnJlY3QgYXNzZXJ0aW9uIGJ1dCBtYXkKKyAgICAgICAgLy8gYmVjb21lIHdyb25nIG9uY2Ugd2Ug
Z28gZnVsbCBjb25jdXJyZW50OiB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBibG9jaywgaXQgd2lsbCBm
bGlja2VyCisgICAgICAgIC8vIGludG8gdGhlIGVtcHR5IHNldCBmb3IgYSB0aW55IG1vbWVudC4g
T24gdGhlIG90aGVyIGhhbmQsIHRoaXMgY29kZSBpcyBsaWtlbHkgdG8gYmUgcnVuCisgICAgICAg
IC8vIGluIHN0b3BUaGVXb3JsZC4KKyAgICAgICAgQVNTRVJUKG1fZW1wdHkuaXNFbXB0eSgpKTsK
KyAgICAgICAgbV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ID0gbV9saXZlICYgfm1fbWFya2luZ1Jl
dGlyZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9lbXB0eSA9IG1fbGl2
ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKKyAgICBtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgPSBt
X2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgIAorICAg
IGlmIChmYWxzZSkgeworICAgICAgICBkYXRhTG9nKCJCaXRzIGZvciAiLCBtX2NlbGxTaXplLCAi
LCAiLCBtX2F0dHJpYnV0ZXMsICIgYWZ0ZXIgZW5kTWFya2luZzpcbiIpOworICAgICAgICBkdW1w
Qml0cyhXVEY6OmRhdGFGaWxlKCkpOworICAgIH0KK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6
OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3Vuc3dlcHQgfD0g
bV9lZGVuOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RVbnN3ZXB0Rm9yRnVs
bENvbGxlY3Rpb24oKQoreworICAgIG1fdW5zd2VwdCA9IG1fbGl2ZTsKK30KKworTWFya2VkQmxv
Y2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaW5kQmxvY2tUb1N3ZWVwKCkKK3sKKyAgICBt
X3Vuc3dlcHRDdXJzb3IgPSBtX3Vuc3dlcHQuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUp
OworICAgIGlmIChtX3Vuc3dlcHRDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV91bnN3ZXB0Q3Vyc29yXTsKK30K
Kwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN3ZWVwKCkKK3sKKyAgICBtX3Vuc3dlcHQuZm9yRWFj
aFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1fYmxv
Y2tzW2luZGV4XS0+c3dlZXAoKTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpzaHJpbmsoKQoreworICAgIG1fZW1wdHkuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZd
IChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1fbWFya2VkU3BhY2UtPmZyZWVCbG9jayht
X2Jsb2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6
OmFzc2VydE5vVW5zd2VwdCgpCit7CisgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIGlmIChtX3Vuc3dlcHQuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgZGF0YUxvZygiQXNzZXJ0aW9uIGZhaWxlZDogdW5zd2VwdCBub3QgZW1w
dHkgaW4gIiwgKnRoaXMsICIuXG4iKTsKKyAgICBkdW1wQml0cygpOworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAoreworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOiIsIG1fY2Vs
bFNpemUsICIvIiwgbV9hdHRyaWJ1dGVzKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmR1
bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgdW5zaWduZWQgbWF4TmFtZUxlbmd0aCA9
IDA7CisgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBbJl0gKEZhc3RCaXRW
ZWN0b3ImLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBzdHJsZW4obmFtZSk7CisgICAgICAgICAgICBtYXhOYW1lTGVuZ3RoID0gc3RkOjptYXgobWF4
TmFtZUxlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgZm9yRWFjaEJpdFZl
Y3RvcldpdGhOYW1lKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvciwgY29uc3Qg
Y2hhciogbmFtZSkgeworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgIiwgbmFtZSwgIjogIik7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXhOYW1lTGVuZ3RoIC0gc3RybGVuKG5h
bWUpOyBpLS07KQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIpOworICAgICAgICAgICAg
b3V0LnByaW50KHZlY3RvciwgIlxuIik7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2Nh
dG9yLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVk
ZSAiQWxsb2NhdG9yQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5jbHVk
ZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNyw2ICszOSwxNDkgQEAgY2xhc3MgSGVhcDsKIGNsYXNz
IE1hcmtlZFNwYWNlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisjZGVmaW5lIEZP
Ul9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2
ZSkgLyogVGhlIHNldCBvZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAq
L1wKKyAgICBtYWNybyhlbXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0
IGhhdmUgbm8gbGl2ZSBvYmplY3RzIGFuZCBub3RoaW5nIHRvIGRlc3Ryb3kuICovIFwKKyAgICBt
YWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGxibG9ja3MgdGhhdCBh
cmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90
RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBh
cmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtl
ZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0
IEdDLiAqL1wKKyAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9c
CisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCisg
ICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyhtYXJraW5nUmV0
aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBy
ZXRpcmVkLiAqLworCisvLyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5
IGFuZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6CisvLworLy8gICAgIGNhbkFsbG9jYXRlQnV0Tm90
RW1wdHkgJiBlbXB0eSA9PSAwCisvLworLy8gSW5zdGVhZCBvZiBjYWxsaW5nIGl0IGNhbkFsbG9j
YXRlIGFuZCBtYWtpbmcgaXQgaW5jbHVzaXZlOgorLy8KKy8vICAgICBjYW5BbGxvY2F0ZSAmIGVt
cHR5ID09IGVtcHR5CisvLworLy8gVGhlIGxhdHRlciBpcyBwcm9iYWJseSBiZXR0ZXIuIEknbGwg
bGVhdmUgaXQgdG8gYSBmdXR1cmUgYnVnIHRvIGZpeCB0aGF0LCBzaW5jZSBicmVhdGhpbmcgb24K
Ky8vIHRoaXMgY29kZSBsZWFkcyB0byByZWdyZXNzaW9ucyBmb3IgZGF5cywgYW5kIGl0J3Mgbm90
IGNsZWFyIHRoYXQgbWFraW5nIHRoaXMgY2hhbmdlIHdvdWxkCisvLyBpbXByb3ZlIHBlcmYgc2lu
Y2UgaXQgd291bGQgbm90IGNoYW5nZSB0aGUgY29sbGVjdG9yJ3MgYmVoYXZpb3IsIGFuZCBlaXRo
ZXIgd2F5IHRoZSBhbGxvY2F0b3IKKy8vIGhhcyB0byBsb29rIGF0IGJvdGggYml0dmVjdG9ycy4K
Ky8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMjEKKworLy8g
Tm90ZSB0aGF0IHRoaXMgY29sbGVjdG9yIHN1cHBvcnRzIG92ZXJsYXBwaW5nIGFsbG9jYXRvciBz
dGF0ZSB3aXRoIG1hcmtpbmcgc3RhdGUsIHNpbmNlIGluIGEKKy8vIGNvbmN1cnJlbnQgY29sbGVj
dG9yIHlvdSBhbGxvdyBhbGxvY2F0aW9uIHdoaWxlIG1hcmtpbmcgaXMgcnVubmluZy4gU28gaXQn
cyBiZXN0IHRvIHZpc3VhbGl6ZSBhCisvLyBmdWxsIG11dGFibGUtPmVkZW4gY29sbGVjdC0+bXV0
YXRlLT5mdWxsIGNvbGxlY3QgY3ljbGUgYW5kIHNlZSBob3cgdGhlIGJpdHMgYWJvdmUgZ2V0IGFm
ZmVjdGVkLgorLy8gVGhlIGV4YW1wbGUgYmVsb3cgdHJpZXMgdG8gYmUgZXhoYXVzdGl2ZSBhYm91
dCB3aGF0IGhhcHBlbnMgdG8gdGhlIGJpdHMsIGJ1dCBvbWl0cyBhIGxvdCBvZgorLy8gdGhpbmdz
IHRoYXQgaGFwcGVuIHRvIG90aGVyIHN0YXRlLgorLy8KKy8vIENyZWF0ZSBhbGxvY2F0b3IKKy8v
IC0gYWxsIGJpdHMgYXJlIGVtcHR5CisvLyBTdGFydCBhbGxvY2F0aW5nIGluIHNvbWUgYmxvY2sK
Ky8vIC0gYWxsb2NhdGUgdGhlIGJsb2NrIGFuZCBzZXQgdGhlIGxpdmUgYml0LgorLy8gLSB0aGUg
ZW1wdHkgYml0IGZvciB0aGUgYmxvY2sgZmxpY2tlcnMgb24gYW5kIHRoZW4gZ2V0cyBpbW1lZGlh
dGVseSBjbGVhcmVkIGJ5IHN3ZWVwaW5nLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmlu
aXNoIGFsbG9jYXRpbmcgaW4gdGhhdCBibG9jaworLy8gLSBzZXQgdGhlIGFsbG9jYXRlZCBiaXQu
CisvLyBEbyB0aGF0IHRvIGEgbG90IG9mIGJsb2NrcyBhbmQgdGhlbiBzdGFydCBhbiBlZGVuIGNv
bGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygpIGhhcyBub3RoaW5nIHRvIGRvLgorLy8gLSBi
eSBkZWZhdWx0IHdlIGhhdmUgY2xlYXIgbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIGJp
dHMuCisvLyAtIG1hcmtpbmcgYnVpbGRzIHVwIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJl
ZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQg
Yml0cy4KKy8vIC0gZm9yIGRlc3RydWN0b3IgYmxvY2tzOiBmcmFnbWVudGVkID0gbGl2ZSAmIH5t
YXJraW5nUmV0aXJlZAorLy8gLSBmb3Igbm9uLWRlc3RydWN0b3IgYmxvY2tzOgorLy8gICAgICAg
ZW1wdHkgPSBsaXZlICYgfm1hcmtpbmdOb3RFbXB0eQorLy8gICAgICAgZnJhZ21lbnRlZCA9IGxp
dmUgJiBtYXJraW5nTm90RW1wdHkgJiB+bWFya2luZ1JldGlyZWQKKy8vIFNuYXBzaG90dGluZy4K
Ky8vIC0gdW5zd2VwdCB8PSBlZGVuCisvLyBQcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBj
bGVhciBlZGVuCisvLyBGaW5pc2ggY29sbGVjdGlvbi4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxv
Y2sgdGhhdCBoYWQgc29tZSBmcmVlIGFuZCBzb21lIGxpdmUgb2JqZWN0cy4KKy8vIC0gY2xlYXIg
dGhlIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgYml0CisvLyAtIGNsZWFyIHRoZSB1bnN3ZXB0IGJp
dAorLy8gLSBzZXQgdGhlIGVkZW4gYml0CisvLyBGaW5pc2ggYWxsb2NhdGluZyAoc2V0IHRoZSBh
bGxvY2F0ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3YXMgY29tcGxl
dGVseSBlbXB0eS4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8gLSBjbGVhciB0aGUgdW5z
d2VwdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChz
ZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9jayB0aGF0IHdh
cyBjb21wbGV0ZWx5IGVtcHR5IGluIGFub3RoZXIgYWxsb2NhdG9yLgorLy8gLSBjbGVhciB0aGUg
ZW1wdHkgYml0CisvLyAtIGNsZWFyIGFsbCBiaXRzIGluIHRoYXQgYWxsb2NhdG9yCisvLyAtIHNl
dCB0aGUgbGl2ZSBiaXQgaW4gYW5vdGhlciBhbGxvY2F0b3IgYW5kIHRoZSBlbXB0eSBiaXQuCisv
LyAtIGNsZWFyIHRoZSBlbXB0eSwgdW5zd2VwdCBiaXRzLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0
LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBTdGFy
dCBhIGZ1bGwgY29sbGVjdGlvbi4KKy8vIC0gYmVnaW5NYXJraW5nKCkgY2xlYXJzIG1hcmtpbmdO
b3RFbXB0eSwgbWFya2luZ1JldGlyZWQKKy8vIC0gdGhlIGhlYXAgdmVyc2lvbiBpcyBpbmNyZW1l
bnRlZAorLy8gLSBtYXJraW5nIHJlYnVpbGRzIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5ncmV0aXJl
ZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQg
Yml0cy4KKy8vIC0gc2V0IGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkvZW1wdHkgdGhlIHNhbWUgd2F5
IGFzIGluIGVkZW4gY29sbGVjdGlvbi4KKy8vIFNuYXBzaG90dGluZy4KKy8vIC0gdW5zd2VwdCA9
IGxpdmUKKy8vIHByZXBhcmUgZm9yIGFsbG9jYXRpb24uCisvLyAtIGNsZWFyIGVkZW4uCisvLyBG
aW5pc2ggY29sbGVjdGlvbi4KKy8vCisvLyBOb3RpY2UgaG93IGluIHRoaXMgc2NoZW1lLCB0aGUg
ZW1wdHkvY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBzdGF0ZSBzdGF5cyBzZXBhcmF0ZSBmcm9tIHRo
ZQorLy8gbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIHN0YXRlLiBUaGlzIGlzIG9uZSBz
dGVwIHRvd2FyZHMgaGF2aW5nIHNlcGFyYXRlZCBhbGxvY2F0aW9uIGFuZAorLy8gbWFya2luZyBz
dGF0ZS4KKy8vCisvLyBBZnRlciB0aGlzLCB3ZSBqdXN0IG5lZWQgdG8gYW5zd2VyIHRoZSBxdWVz
dGlvbjogd2hhdCBkb2VzIGFuIG9iamVjdCBhbGxvY2F0ZWQgZHVyaW5nIGVkZW4gR0MKKy8vIGxv
b2sgbGlrZSB0byB0aGUgR0M/CisvLworLy8gSSd2ZSBjb21lIHVwIHdpdGggdHdvIGNvbXBlbGxp
bmcgYW5zd2Vycy4KKy8vCisvLyAxLiBBTExPQ0FURSBCTEFDSworLy8KKy8vIEkgdGhpbmsgdGhh
dCB0aGUgZWFzaWVzdCBhbnN3ZXIgaXMgdG8gYWxsb2NhdGUgdGhlIG9iamVjdCB3aGl0ZSBhbmQg
dGhlbgorLy8gaW1tZWRpYXRlbHkgbWFyayBpdC4gVGhpcyBtYWtlcyB0aGUgb2JqZWN0IGJlaGF2
ZSBhcyBpZiBpdCB3YXMgYWxsb2NhdGVkIGp1c3QgYmVmb3JlIHRoZSBzdGFydAorLy8gb2YgR0Mg
YW5kIGl0IHdhcyBvbiB0aGUgc3RhY2sgYXQgdGhlIGJlZ2lubmluZyBvZiBHQy4gV2Ugd291bGRu
J3QgaGF2ZSB0byBkbyBhbnl0aGluZyBkaWZmZXJlbnQKKy8vIHdpdGggdGhlIHZhcmlvdXMgYmxv
Y2sgYml0cyB3aGVuIGFsbG9jYXRpbmcgZHVyaW5nIEdDOiB3ZSBjb3VsZCBzdGlsbCBzZXQgZWRl
biBhbmQgYWxsb2NhdGVkCisvLyBzaW5jZSB0aGV5IHdpbGwgYmUgY2xlYXJlZCBhbnl3YXkuCisv
LworLy8gQnV0IHRoaXMgbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdvbid0IGJlIGVsaWdpYmxlIGZv
ciBmcmVlaW5nIHVudGlsIHRoZSBuZXh0IGZ1bGwgR0MuIElkZWFsbHkKKy8vIHdlJ2QgbWFrZSB0
aGUgb2JqZWN0IGlzIGVsaWdpYmxlIGZvciBmcmVlaW5nIGF0IHRoZSBuZXh0IGVkZW4gR0MuIFRo
ZXJlJ3MgYSBidW5jaCBvZiB0aGluZ3Mgd2UKKy8vIGNvdWxkIGRvIHRvIG1ha2UgdGhpcyBoYXBw
ZW4uIEhlcmUgYXJlIHNvbWUgaWRlYXM6CisvLworLy8gLSBJbnRyb2R1Y2UgYSBuZXcgQ2VsbFN0
YXRlLCBjYWxsZWQgRmxvYXQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG9iamVjdCB3YXMgYWxsb2Nh
dGVkIGR1cmluZyB0aGUKKy8vICAgR0MuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IG1hcmtpbmcg
ZG9lcyBub3RoaW5nIGZvciBGbG9hdHMuIFRoaXMgd291bGQgbWFrZSBtYXJraW5nIGEgdGlueQor
Ly8gICBiaXQgbW9yZSBleHBlbnNpdmUuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBiYXJy
aWVyIHJlY29nbml6ZXMgc3RvcmVzIHRvIGEgRmxvYXQgdGhlIHNhbWUKKy8vICAgd2F5IHRoYXQg
aXQgc2VlcyBhIHN0b3JlIHRvIE9sZEJsYWNrOiBpdCBwdXRzIHRoZSBvYmplY3Qgb24gdGhlIG1h
cmsgc3RhY2suIEZsb2F0cyB3b3VsZCBiZQorLy8gICBwdXQgb24gdGhlIG1hcmsgc3RhY2sgYXMg
RmxvYXRHcmV5IHRvIGluZGljYXRlIHRoYXQgdGhleSB3aWxsIGJlIHNjYW5uZWQgYnkgdGhlIEdD
IGJ1dCB0aGF0CisvLyAgIHRoZXkgYXJlbid0IGFjdHVhbGx5IG1hcmtlZC4KKy8vCisvLyAgIE5v
dGUgdGhhdCB0aGlzIGltcGxpZXMgaGF2aW5nIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhvc2Ug
Y2VsbHMgZnJvbSBGbG9hdCB0byBzb21ldGhpbmcgZWxzZQorLy8gICBhdCB0aGUgZW5kIG9mIEdD
LiAgSSdtIG5vdCBzdXJlIHRoYXQgdGhpcyBpcyBzbyBncmVhdC4KKy8vCisvLyAtIE1hcmsgdGhl
IG9iamVjdHMgYWZ0ZXIgYWxsb2NhdGlvbiwgYnV0IGFsc28gc2V0IHNvbWUgb3RoZXIgYml0cyB0
byBpbmRpY2F0ZSB0aGF0IHRoZSB0aG9zZQorLy8gICBvYmplY3RzIHNob3VsZCBiZSB1bm1hcmtl
ZCBhdCB0aGUgZW5kIG9mIHRoZSBHQy4KKy8vCisvLyBFaXRoZXIgb2YgdGhlc2UgYXBwcm9hY2hl
cyB3b3VsZCBtYWtlIGNvbGxlY3Rpb25zIG1vcmUgZXhwZW5zaXZlLCBidXQgaXQgZmVlbHMgbGlr
ZSB0aGUgbGF0dGVyCisvLyBhcHByb2FjaCB3b3VsZCBiZSBhIHByb2ZpdGFibGUgb3B0aW1pemF0
aW9uLiBJJ20gYWxzbyByZWFsbHkgZ2V0dGluZyB3b3JyaWVkIGFib3V0IGhvdyB0aGlzIEdDCisv
LyBleHBlcmllbmNlcyBiYWNrd2FyZHMgdGltZSB0cmF2ZWwsIHdpdGggYWxsIHRoZSByZW1hcmtp
bmcgb2YgdGhpbmdzIGxpa2UgbmV3IG9iamVjdHMgYW5kCisvLyB3aGF0bm90LgorLy8KKy8vIDIu
IEFMTE9DQVRFIFdISVRFCisvLworLy8gSSBkb24ndCBrbm93IGlmIHRoaXMgaXMgc291bmQsIGJ1
dCBpZiBpdCB3YXMgdGhlbiBpdCB3b3VsZCBiZSB0aGUgb3B0aW1hbCBzb2x1dGlvbi4gQWxsb2Nh
dGlvbgorLy8gd291bGQgd29yayBhcyBub3cgYW5kIGNvbnNlcXVlbnRseSwgZXZlcnl0aGluZyB3
ZSBrbm93IGFib3V0IHdoYXQgd2FzIGFsbG9jYXRlZCBkdXJpbmcgYSBHQyBpcworLy8gZm9yZ290
dGVuIGF0IHRoZSBlbmQgb2YgR0MuIEJ1dCB0aGF0J3MgZmluZS4gRW5kIG9mIEdDIG11c3QgcmVz
Y2FuIGFueSBoZWFwIGxvY2F0aW9ucyB0aGF0IGdvdAorLy8gc3RvcmVkIGludG8gYW5kIGl0IG11
c3QgcmVzY2FuIHRoZSBzdGFjay4gU28sIHdoaXRlIG9iamVjdHMgYWxsb2NhdGVkIGR1cmluZyBH
QyB3b3VsZCBnZXQKKy8vIG1hcmtlZCBpZiB0aGV5IHNvbWVob3cgc3Vydml2ZWQuCisvLworLy8g
VGhpcyBtZWFucyB0aGF0IGZvciBleGFtcGxlIGlmIHRoZXJlIGlzIGEgZmllbGQgdGhhdCBvZnRl
biBnZXRzIHN0b3JlZCB0byB3aXRoIG5ldyBvYmplY3RzLCB0aGUKKy8vIEdDIHdpbGwgbm90IHNl
ZSBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGF0IGZpZWxkIGJ1dCBpbnN0ZWFkIGl0IHdvdWxkIHBv
bGwgdGhhdCBmaWVsZCwgaG9wZWZ1bGx5CisvLyBzb21ld2hhdCByYXJlbHkuIFdlIGNhbiBtYWtl
IGl0IHZlcnkgcmFyZSBieSBvbmx5IGluZnJlcXVlbnRseSBkb25hdGluZyBmcm9tIHRoZSBtYWlu
IHRocmVhZCdzCisvLyBzbG90IHZpc2l0b3IgdG8gYW55IG9mIHRoZSBvdGhlcnMuIFNvLCB3ZSB3
b3VsZCBvbmx5IG1hcmsgc29tZSBvZiB0aGUgbmV3IG9iamVjdHMgdGhhdCBnb3QKKy8vIHN0b3Jl
ZCBpbnRvIHRoYXQgZmllbGQuIEl0IGFsc28gbWVhbnMgdGhhdCBhbnkgb2JqZWN0IGFsbG9jYXRl
ZCBkdXJpbmcgdGhlIEdDIHRoYXQgZGlkbid0IGdldAorLy8gc3RvcmVkIGludG8gYW55IG9iamVj
dCB0aGF0IHdhcyBsaXZlIHNpbmNlIGJlZm9yZSB0aGUgc3RhcnQgb2YgR0Mgd291bGQgc2ltcGx5
IGRpc2FwcGVhci4gVGhpcworLy8gbWVhbnMgbXVjaCBsZXNzIHJlc2Nhbm5pbmcgdGhhbiBhbnkg
b2YgdGhlIG90aGVyIHByb3Bvc2Fscy4KKy8vCisvLyBJIHJlYWxseSB3YW50IHRvIGdvIHdpdGgg
dGhlIGFsbG9jYXRlLXdoaXRlIGFwcHJvYWNoLCBidXQgSSBuZWVkIHRvIHRoaW5rIG1vcmUgZGVl
cGx5IGFib3V0IGl0CisvLyBiZWZvcmUgSSBjb21taXQgdG8gaXQuCisKIGNsYXNzIE1hcmtlZEFs
bG9jYXRvciB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApAQCAt
NDYsOSArMTkxLDE2IEBAIHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvcihIZWFwKiwgTWFy
a2VkU3BhY2UqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsK
ICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7Ci0gICAgdm9pZCByZXNldCgpOworICAg
IHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKCk7
CiAgICAgdm9pZCByZXN1bWVBbGxvY2F0aW5nKCk7CisgICAgdm9pZCBiZWdpbk1hcmtpbmdGb3JG
dWxsQ29sbGVjdGlvbigpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNo
b3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICB2b2lkIHNuYXBzaG90VW5zd2VwdEZv
ckZ1bGxDb2xsZWN0aW9uKCk7CisgICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc2hyaW5rKCk7
CisgICAgdm9pZCBhc3NlcnROb1Vuc3dlcHQoKTsKICAgICBzaXplX3QgY2VsbFNpemUoKSBjb25z
dCB7IHJldHVybiBtX2NlbGxTaXplOyB9CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYg
YXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgIGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9
PSBOZWVkc0Rlc3RydWN0aW9uOyB9CkBAIC03Miw2ICsyMjQsNDYgQEAgcHVibGljOgogICAgIGJv
b2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgIAogICAgIHN0YXRpYyBzaXplX3Qg
YmxvY2tTaXplRm9yQnl0ZXMoc2l6ZV90KTsKKyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRP
Ul9CSVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAgICBcCisgICAg
Ym9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1f
ICMjIGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5h
bWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0
YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpKTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFs
Qml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV8gIyMgbG93ZXJCaXROYW1lW2lu
ZGV4XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzICMjIGNhcGl0YWxCaXRO
YW1lKGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hl
Y2tJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgcmV0dXJu
IG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhpbmRleCwgdmFsdWUpOyB9IFwK
KyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFt
ZS5hdG9taWNTZXRBbmRDaGVjayhibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgRk9SX0VB
Q0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKQor
I3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykK
KyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFt
ZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOwor
ICAgICAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJ
VF9DQUxMQkFDSyk7CisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRW
ZWN0b3JXaXRoTmFtZShjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNkZWZpbmUgTUFSS0VEX0FM
TE9DQVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAg
ICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSwgI2NhcGl0YWxCaXROYW1lKTsKKyAgICAgICAg
Rk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJB
Q0spOworI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAor
ICAgIE1hcmtlZEFsbG9jYXRvciogbmV4dEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4
dEFsbG9jYXRvcjsgfQorICAgIAorICAgIC8vIE1hcmtlZFNwYWNlIGNhbGxzIHRoaXMgZHVyaW5n
IGluaXQuCisgICAgdm9pZCBzZXROZXh0QWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2Nh
dG9yKSB7IG1fbmV4dEFsbG9jYXRvciA9IGFsbG9jYXRvcjsgfQorICAgIAorICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGZpbmRFbXB0eUJsb2NrKCk7CisgICAgCisgICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogZmluZEJsb2NrVG9Td2VlcCgpOworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OworICAgIHZvaWQgZHVtcEJpdHMoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmls
ZSgpKTsKICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CkBAIC04
MiwyNSArMjc0LDM3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29s
bGVjdGluZygpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCk7
CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5QWxsb2NhdGVCbG9jaygpOworICAgIHZvaWQq
IHRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSopOworICAgIHZvaWQqIGFsbG9jYXRl
SW4oTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkb1Rlc3RD
b2xsZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgdm9pZCByZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRs
ZSopOwogICAgIAogICAgIHZvaWQgc2V0RnJlZUxpc3QoY29uc3QgRnJlZUxpc3QmKTsKICAgICAK
LSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaWx0ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6Okhh
bmRsZSopOwotICAgIHZvaWQgc2V0TmV4dEJsb2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxl
Kik7Ci0gICAgCiAgICAgRnJlZUxpc3QgbV9mcmVlTGlzdDsKKyAgICAKKyAgICBWZWN0b3I8TWFy
a2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tzOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mcmVl
QmxvY2tJbmRpY2VzOworICAgIAorI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJB
VElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCisgICAgRmFzdEJpdFZlY3RvciBt
XyAjIyBsb3dlckJpdE5hbWU7CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFS
S0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04pCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9C
SVRfREVDTEFSQVRJT04KKyAgICAKKyAgICAvLyBBZnRlciB5b3UgZG8gc29tZXRoaW5nIHRvIGEg
YmxvY2sgYmFzZWQgb24gb25lIG9mIHRoZXNlIGN1cnNvcnMsIHlvdSBjbGVhciB0aGUgYml0IGlu
IHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0dmVjdG9yIGFuZCBsZWF2ZSB0aGUgY3Vyc29y
IHdoZXJlIGl0IHdhcy4KKyAgICBzaXplX3QgbV9hbGxvY2F0aW9uQ3Vyc29yIHsgMCB9OyAvLyBQ
b2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgYWxsb2NhdGlv
bi4KKyAgICBzaXplX3QgbV9lbXB0eUN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0
IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGVtcHR5IGFsbG9jYXRpb24gKGFsbG9jYXRp
bmcgaW4gZW1wdHkgYmxvY2tzKS4KKyAgICBzaXplX3QgbV91bnN3ZXB0Q3Vyc29yIHsgMCB9OyAv
LyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgaW5jcmVt
ZW50YWwgc3dlZXBpbmcuCisgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9jdXJyZW50
QmxvY2s7CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0QmxvY2tUb1N3ZWVwOwotICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRC
bG9jazo6SGFuZGxlPj4gbV9ibG9ja0xpc3Q7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtl
ZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+
PiBtX3JldGlyZWRCbG9ja3M7CisKICAgICBMb2NrIG1fbG9jazsKICAgICB1bnNpZ25lZCBtX2Nl
bGxTaXplOwogICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIEhlYXAq
IG1faGVhcDsKICAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAgICBNYXJrZWRBbGxv
Y2F0b3IqIG1fbmV4dEFsbG9jYXRvcjsKIH07CiAKIGlubGluZSBwdHJkaWZmX3QgTWFya2VkQWxs
b2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0KCkKQEAgLTE0OSwyMCArMzUzLDEyIEBAIEFMV0FZU19J
TkxJTkUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGwKICAgICByZXR1cm4gaGVhZDsKIH0KIAot
aW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKLXsKLSAgICBp
ZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ZyZWVMaXN0
ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKLSAgICBtX2N1cnJlbnRC
bG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOwotICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKLX0K
LQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRv
cjo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9ibG9ja0xp
c3QuZm9yRWFjaChmdW5jdG9yKTsKLSAgICBtX3JldGlyZWRCbG9ja3MuZm9yRWFjaChmdW5jdG9y
KTsKKyAgICBtX2xpdmUuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgp
IHsKKyAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzYsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBib29sIGNvbXB1dGVCYWxhbmNl
ID0gZmFsc2U7CiBzdGF0aWMgc2l6ZV90IGJhbGFuY2U7CiAKLU1hcmtlZEJsb2NrOjpIYW5kbGUq
IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmli
dXRlcykKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoSGVhcCYg
aGVhcCkKIHsKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFsYW5jZSsrOwpA
QCAtNDgsMjYgKzQ5LDE3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlD
cmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkp
CiAgICAgICAgIHNjcmliYmxlKGJsb2NrU3BhY2UsIGJsb2NrU2l6ZSk7Ci0gICAgcmV0dXJuIG5l
dyBIYW5kbGUoaGVhcCwgYWxsb2NhdG9yLCBjZWxsU2l6ZSwgYXR0cmlidXRlcywgYmxvY2tTcGFj
ZSk7CisgICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYmxvY2tTcGFjZSk7CiB9CiAKLU1hcmtl
ZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9j
YXRvciwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzLCB2b2lkKiBibG9ja1NwYWNlKQotICAgIDogbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsg
YXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQotICAgICwgbV9lbmRBdG9tKGF0b21zUGVyQmxvY2sg
LSBtX2F0b21zUGVyQ2VsbCArIDEpCi0gICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKLSAg
ICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgotICAgICwg
bV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+aGVhcCgp
LT52bSgpLCBDZWxsQ29udGFpbmVyKCkpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVh
cCYgaGVhcCwgdm9pZCogYmxvY2tTcGFjZSkKKyAgICA6IG1fd2Vha1NldChoZWFwLnZtKCksIENl
bGxDb250YWluZXIoKSkKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1NwYWNl
KSBNYXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCiAgICAgbV93ZWFrU2V0LnNl
dENvbnRhaW5lcigqbV9ibG9jayk7CiAgICAgCiAgICAgaGVhcC5kaWRBbGxvY2F0ZUJsb2NrKGJs
b2NrU2l6ZSk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAg
ICBBU1NFUlQoYWxsb2NhdG9yKTsKLSAgICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxLaW5kICE9IEhl
YXBDZWxsOjpKU0NlbGwpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0cmlidXRlcy5kZXN0
cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKIH0KIAogTWFya2VkQmxvY2s6Okhh
bmRsZTo6fkhhbmRsZSgpCkBAIC03OCw0NSArNzAsMzUgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6
fkhhbmRsZSgpCiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRh
TG9nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9CisgICAg
cmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgIG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwogICAg
IGZhc3RBbGlnbmVkRnJlZShtX2Jsb2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1Np
emUpOwogfQogCiBNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmIGhhbmRs
ZSkKLSAgICA6IG1fbmVlZHNEZXN0cnVjdGlvbihoYW5kbGUubmVlZHNEZXN0cnVjdGlvbigpKQot
ICAgICwgbV92ZXJzaW9uKHZtLmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpCisgICAgOiBt
X3ZlcnNpb24oTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uKQogICAgICwgbV9oYW5kbGUoaGFuZGxl
KQogICAgICwgbV92bSgmdm0pCiB7Ci0gICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtl
ZFNwYWNlOjpibG9ja1BheWxvYWQgLyBoYW5kbGUuY2VsbFNpemUoKTsKLSAgICBkb3VibGUgbWFy
a0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2Vs
bHNQZXJCbG9jayk7Ci0gICAgCi0gICAgLy8gVGhlIG1hcmsgY291bnQgYmlhcyBzaG91bGQgYmUg
Y29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2UuCi0gICAgUkVMRUFTRV9BU1NFUlQobWFya0Nv
dW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90
Pjo6bWluKCkpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzIDwgMCk7Ci0gICAg
Ci0gICAgbV9tYXJrQ291bnRCaWFzID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFya0NvdW50Qmlh
cyk7Ci0gICAgCi0gICAgbV9iaWFzZWRNYXJrQ291bnQgPSBtX21hcmtDb3VudEJpYXM7IC8vIFRo
aXMgbWVhbnMgd2UgaGF2ZW4ndCBtYXJrZWQgYW55dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0ZTxN
YXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpT
d2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxhdGU8
TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9k
ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSwgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6RmxpcE1vZGUgZmxpcE1vZGU+CiBGcmVlTGlzdCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwKCkKIHsKLSAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgQVNTRVJUKGJsb2NrU3RhdGUgPT0gTmV3IHx8
IGJsb2NrU3RhdGUgPT0gTWFya2VkKTsKLSAgICBBU1NFUlQoIShkZXN0cnVjdGlvbk1vZGUgPT0g
RG9lc05vdE5lZWREZXN0cnVjdGlvbiAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoIShkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlv
biAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CiAgICAgCi0gICAgYXNzZXJ0RmxpcHBlZCgp
OworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKwogICAg
IE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7CiAgICAgCi0gICAgYm9vbCBpc05l
d0Jsb2NrID0gYmxvY2tTdGF0ZSA9PSBOZXc7Ci0gICAgYm9vbCBpc0VtcHR5QmxvY2sgPSAhYmxv
Y2suaGFzQW55TWFya2VkKCkKLSAgICAgICAgJiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNO
b3RIYXZlTmV3bHlBbGxvY2F0ZWQKLSAgICAgICAgJiYgZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb247Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKSAm
JiAoaXNOZXdCbG9jayB8fCBpc0VtcHR5QmxvY2spKSB7Ci0gICAgICAgIEFTU0VSVChibG9jay5t
X21hcmtzLmlzRW1wdHkoKSk7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1Bv
aW50ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAhXG4i
KTsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6dXNlQnVtcEFsbG9jYXRvcigpCisgICAgICAgICYm
IGVtcHR5TW9kZSA9PSBJc0VtcHR5CisgICAgICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBE
b2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkKSB7CisgICAgICAgIEFTU0VSVChmbGlwTW9kZSA9PSBO
ZWVkc0ZsaXApOwogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRPZkxhc3RDZWxsID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsgbV9lbmRBdG9tIC0gMSkp
OwogICAgICAgICBjaGFyKiBwYXlsb2FkRW5kID0gc3RhcnRPZkxhc3RDZWxsICsgY2VsbFNpemUo
KTsKQEAgLTEyNCw3ICsxMDYsMTAgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Bl
Y2lhbGl6ZQogICAgICAgICBjaGFyKiBwYXlsb2FkQmVnaW4gPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+
KGJsb2NrLmF0b21zKCkgKyBmaXJzdEF0b20oKSk7CiAgICAgICAgIGlmIChzY3JpYmJsZU1vZGUg
PT0gU2NyaWJibGUpCiAgICAgICAgICAgICBzY3JpYmJsZShwYXlsb2FkQmVnaW4sIHBheWxvYWRF
bmQgLSBwYXlsb2FkQmVnaW4pOwotICAgICAgICBtX3N0YXRlID0gKChzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0KSA/IEZyZWVMaXN0ZWQgOiBNYXJrZWQpOworICAgICAgICBpZiAoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgICAgIHNldElzRnJlZUxpc3RlZCgpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0
cnVlKTsKICAgICAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6OmJ1bXAocGF5bG9hZEVu
ZCwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7CiAgICAgICAgIGlmIChmYWxzZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIlF1aWNrbHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcih0aGlzKSwg
IiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSgpLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0
cmlidXRlcywgIjogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTEzNywxNCArMTIyLDE0IEBAIEZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICBGcmVlQ2VsbCogaGVhZCA9
IDA7CiAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9t
KCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgaWYgKGJs
b2NrU3RhdGUgPT0gTWFya2VkCi0gICAgICAgICAgICAmJiAoYmxvY2subV9tYXJrcy5nZXQoaSkK
KyAgICAgICAgaWYgKGVtcHR5TW9kZSA9PSBOb3RFbXB0eQorICAgICAgICAgICAgJiYgKChmbGlw
TW9kZSA9PSBEb2VzTm90TmVlZEZsaXAgJiYgYmxvY2subV9tYXJrcy5nZXQoaSkpCiAgICAgICAg
ICAgICAgICAgfHwgKG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBt
X25ld2x5QWxsb2NhdGVkLT5nZXQoaSkpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAg
ICAgIAogICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBD
ZWxsKj4oJmJsb2NrLmF0b21zKClbaV0pOwogCi0gICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUg
PT0gTmVlZHNEZXN0cnVjdGlvbiAmJiBibG9ja1N0YXRlICE9IE5ldykKKyAgICAgICAgaWYgKGRl
c3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGVtcHR5TW9kZSA9PSBOb3RFbXB0
eSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpLT5jYWxsRGVzdHJ1Y3Rv
cigqdm0oKSk7CiAKICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsK
QEAgLTE2Myw3ICsxNDgsMTkgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lh
bGl6ZQogICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKIAogICAgIEZyZWVMaXN0
IHJlc3VsdCA9IEZyZWVMaXN0OjpsaXN0KGhlYWQsIGNvdW50ICogY2VsbFNpemUoKSk7Ci0gICAg
bV9zdGF0ZSA9IChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0ID8gRnJlZUxpc3RlZCA6IE1h
cmtlZCk7CisgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHNl
dElzRnJlZUxpc3RlZCgpOworICAgIGVsc2UgeworICAgICAgICB1bnNpZ25lZCBjZWxsc1BlckJs
b2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7CisgICAgICAgIGlm
IChjb3VudCA9PSBjZWxsc1BlckJsb2NrKSB7CisgICAgICAgICAgICAvLyBPZGRseSwgdGhpcyBt
YXkgc2V0IGVtcHR5IG9uIGEgYmxvY2sgdGhhdCBhbHNvIGhhcyBtX2NhbkFsbG9jYXRlQnV0Tm90
RW1wdHkgc2V0LgorICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25lIGNvcm5lciBjYXNlIHdo
ZXJlIGJvdGggYml0cyBtYXkgYmUgc2V0IGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMgbWFrZXMKKyAg
ICAgICAgICAgIC8vIHRoZSBibG9jayBlbGlnaWJsZSBmb3IgdXNlIGJ5IHNvbWUgb3RoZXIgYWxs
b2NhdG9yLgorICAgICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBhbHNvIHJlc2V0
IHRoZSBlbXB0eSBjdXJzb3Igd2hlbiB0aGlzIGhhcHBlbnMuCisgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIyCisgICAgICAgICAgICBt
X2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KICAg
ICBpZiAoZmFsc2UpCiAgICAgICAgIGRhdGFMb2coIlNsb3dseSBzd2VwdCBibG9jayAiLCBSYXdQ
b2ludGVyKCZibG9jayksICIgd2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0
cmlidXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIik7CiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTE3MSwxNSArMTY4LDIwIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnNwZWNpYWxpemUKIAogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXAoU3dl
ZXBNb2RlIHN3ZWVwTW9kZSkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKKyAgICBtX2FsbG9j
YXRvci0+c2V0SXNVbnN3ZXB0KHRoaXMsIGZhbHNlKTsKICAgICAKLSAgICBIRUFQX0xPR19CTE9D
S19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotCiAgICAgbV93ZWFrU2V0LnN3ZWVwKCk7CiAKICAg
ICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwT25seSAmJiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24g
PT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAK
KyAgICBpZiAoVU5MSUtFTFkobV9pc0ZyZWVMaXN0ZWQpKSB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOworICAgICAgICByZXR1cm4gRnJlZUxp
c3QoKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKCFtX2FsbG9jYXRvci0+aXNBbGxvY2F0ZWQo
dGhpcykpOworICAgIAogICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNE
ZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2Rl
PE5lZWRzRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2Vs
ZWN0U2NyaWJibGVNb2RlPERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CkBAIC0x
ODksNDcgKzE5MSw1OSBAQCB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2Rl
CiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxl
TW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygp
KQotICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZTxkZXN0
cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOwotICAgIHJldHVybiBzd2VlcEhlbHBl
clNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgRG9udFNjcmliYmxlPihz
d2VlcE1vZGUpOworICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVz
dHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxw
ZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9k
ZSk7CiB9CiAKIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+Ci1GcmVlTGlzdCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVw
TW9kZSBzd2VlcE1vZGUpCitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBl
clNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIHN3aXRjaCAobV9z
dGF0ZSkgewotICAgIGNhc2UgTmV3OgotICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVw
VG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPE5ldywgU3dlZXBU
b0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZD4oKTsKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAgIC8vIEhhcHBlbnMg
d2hlbiBhIGJsb2NrIHRyYW5zaXRpb25zIHRvIGZ1bGx5IGFsbG9jYXRlZC4KLSAgICAgICAgQVNT
RVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICByZXR1cm4gRnJlZUxp
c3QoKTsKLSAgICBjYXNlIEFsbG9jYXRlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7Ci0gICAgY2FzZSBNYXJrZWQ6Ci0g
ICAgICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2Vl
cDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUs
IEhhc05ld2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVw
PE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3
bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gc3dl
ZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRT
d2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1v
ZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAgICAgICA6IHNwZWNp
YWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVN
b2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgICAgICB9Ci0gICAgfQotICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZyZWVMaXN0KCk7Cisg
ICAgLy8gSXQncyBub3Qgb2J2aW91cywgYnV0IHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGtub3cg
aWYgdGhlIGJsb2NrIGlzIGVtcHR5LiBJdCdzIHRoZSBvbmx5CisgICAgLy8gYml0IHRoYXQgY2Fw
dHVyZXMgdGhlc2UgY2F2ZWF0czoKKyAgICAvLyAtIEl0J3MgdHJ1ZSB3aGVuIHRoZSBibG9jayBp
cyBmcmVzaGx5IGFsbG9jYXRlZC4KKyAgICAvLyAtIEl0J3MgdHJ1ZSBpZiB0aGUgYmxvY2sgaGFk
IGJlZW4gc3dlcHQgaW4gdGhlIHBhc3QsIGFsbCBkZXN0cnVjdG9ycyB3ZXJlIGNhbGxlZCwgYW5k
IHRoYXQKKyAgICAvLyAgIHN3ZWVwIHByb3ZlZCB0aGF0IHRoZSBibG9jayBpcyBlbXB0eS4KKyAg
ICAvLyAtIEl0J3MgZmFsc2UgaWYgdGhlcmUgYXJlIGFueSBkZXN0cnVjdG9ycyB0aGF0IG5lZWQg
dG8gYmUgY2FsbGVkLCBldmVuIGlmIHRoZSBibG9jayBoYXMgbm8KKyAgICAvLyAgIGxpdmUgb2Jq
ZWN0cy4KKyAgICBpZiAobV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcykpCisgICAgICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPElzRW1wdHksIGRlc3RydWN0aW9u
TW9kZSwgc2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNl
bGVjdEhhc05ld2x5QWxsb2NhdGVkPE5vdEVtcHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxl
TW9kZT4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1w
dHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KK0ZyZWVMaXN0IE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dlZXBN
b2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAgcmV0
dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2Rl
LCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwg
c2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworfQor
Cit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0
cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJs
ZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1v
ZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAo
c3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVy
U2VsZWN0RmxpcE1vZGU8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHN3ZWVw
SGVscGVyU2VsZWN0RmxpcE1vZGU8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7Cit9CisKK3RlbXBsYXRlPE1h
cmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUs
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVl
TGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCkKK3sK
KyAgICBpZiAobmVlZHNGbGlwKCkpCisgICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPGVt
cHR5TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlB
bGxvY2F0ZWRNb2RlLCBOZWVkc0ZsaXA+KCk7CisgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8
ZW1wdHlNb2RlLCBzd2VlcE1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXds
eUFsbG9jYXRlZE1vZGUsIERvZXNOb3ROZWVkRmxpcD4oKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9j
azo6SGFuZGxlOjp1bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKQogewotICAgIGZsaXBJZk5l
Y2Vzc2FyeSgpOwotICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhp
cyk7Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAg
ICBtX3N0YXRlID0gTWFya2VkOworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNGcmVlTGlzdGVkKTsK
KyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnNldElzRnJlZUxpc3RlZCgpCit7CisgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhp
cywgZmFsc2UpOworICAgIG1faXNGcmVlTGlzdGVkID0gdHJ1ZTsKIH0KIAogY2xhc3MgU2V0TmV3
bHlBbGxvY2F0ZWRGdW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7CkBA
IC0yNTIsMjYgKzI2NiwxNyBAQCBwcml2YXRlOgogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN0b3BBbGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKIHsKLSAgICBmbGlwSWZO
ZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwor
ICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZyFcbiIpOworICAgIEFTU0VSVCghYWxsb2Nh
dG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAgIGlmIChtX3N0YXRlID09IE1hcmtlZCkg
ewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4gdGhlIE1hcmtlZCBzdGF0ZSB0aGVuIHdl
IGtub3cgdGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAgLy8gY29uZGl0aW9ucyBob2xkczoKLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90IHVzZWQgZm9yIGFsbG9jYXRpb24gZHVy
aW5nIHRoZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xlLgotICAgICAgICAvLyAgIEl0IG1heSBo
YXZlIGRlYWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25vdyB0aGVtIHRvIGJlIGRlYWQgYnkgdGhl
Ci0gICAgICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1hcmsgYml0cyBhcmUgdW5zZXQuCi0gICAg
ICAgIC8vCi0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0
aW5nKCksIGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAgICAgICAgLy8gICBoZWFwIGl0ZXJhdGlv
biwgYW5kIHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAgIC8vIEhlbmNlIGlmIHRoZSBibG9jayBp
cyBNYXJrZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJrZWQuCisgICAgaWYgKCFpc0ZyZWVMaXN0
ZWQoKSkgeworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgZWl0aGVyIGRpZG4ndCB1c2Ug
dGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24gc2luY2UgbGFzdCBHQywKKyAgICAgICAg
Ly8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCkgYmVmb3JlLgog
ICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOwot
ICAgIAogICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVyZW50IHN0YXRlIGZvciBIZWFwIGludHJv
c3BlY3Rpb24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxsb2NhdGVkIGZyb20gb3VyIGZyZWUgbGlz
dCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQgYW5vdGhlcgogICAgIC8vIHdh
eSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApAQCAtMjkwLDExICsyOTUsMTIgQEAgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgICAgICAgICAgY2xlYXJO
ZXdseUFsbG9jYXRlZChjZWxsKTsKICAgICAgICAgfSk7CiAgICAgCi0gICAgbV9zdGF0ZSA9IE1h
cmtlZDsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOwogfQogCiB2b2lkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKKyAgICBhbGxvY2F0b3IoKS0+c2V0
SXNBbGxvY2F0ZWQodGhpcywgZmFsc2UpOwogICAgIG1fYmxvY2stPmNsZWFyTWFya3MoKTsKICAg
ICBtX3dlYWtTZXQubGFzdENoYW5jZVRvRmluYWxpemUoKTsKIApAQCAtMzA0LDE0ICszMTAsMTEg
QEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaQogCiBGcmVlTGlzdCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKLSAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotCi0g
ICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKKyAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5p
c0FsbG9jYXRlZCh0aGlzKSk7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAKICAgICBp
ZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgLy8gV2UgZGlkbid0IGhhdmUgdG8gY3Jl
YXRlIGEgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwLiBUaGF0IG1lYW5zIHdlIHdlcmUgYWxyZWFk
eSBNYXJrZWQKLSAgICAgICAgLy8gd2hlbiB3ZSBsYXN0IHN0b3BwZWQgYWxsb2NhdGlvbiwgc28g
cmV0dXJuIGFuIGVtcHR5IGZyZWUgbGlzdCBhbmQgc3RheSBpbiB0aGUgTWFya2VkIHN0YXRlLgor
ICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgYmxvY2sg
d2hlbiB3ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwog
ICAgIH0KIApAQCAtMzQ1LDQwICszNDgsMjggQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpm
b3JFYWNoRnJlZUNlbAogICAgIH0KIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNz
YXJ5KCkKLXsKLSAgICBmbGlwSWZOZWNlc3Nhcnkodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKSk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5
KCkKLXsKLSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeSgpOwotfQotCi12b2lkIE1hcmtlZEJs
b2NrOjpmbGlwSWZOZWNlc3NhcnlTbG93KCkKLXsKLSAgICBBU1NFUlQobmVlZHNGbGlwKCkpOwot
ICAgIEFTU0VSVCghdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsKLSAgICBj
bGVhck1hcmtzKCk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmlu
Z01hcmtpbmdTbG93KCkKK3ZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyhIZWFwVmVy
c2lvbiBoZWFwVmVyc2lvbikKIHsKICAgICBBU1NFUlQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgp
LmlzTWFya2luZygpKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChu
ZWVkc0ZsaXAoKSkKLSAgICAgICAgY2xlYXJNYXJrcygpOworICAgIGlmIChuZWVkc0ZsaXAoaGVh
cFZlcnNpb24pKSB7CisgICAgICAgIGNsZWFyTWFya3MoaGVhcFZlcnNpb24pOworICAgICAgICAv
LyBUaGlzIG1lYW5zIHdlJ3JlIHRoZSBmaXJzdCBvbmVzIHRvIG1hcmsgYW55IG9iamVjdCBpbiB0
aGlzIGJsb2NrLgorICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hl
Y2tJc01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOworICAgIH0KIH0KIAogdm9pZCBN
YXJrZWRCbG9jazo6Y2xlYXJNYXJrcygpCiB7CisgICAgY2xlYXJNYXJrcyh2bSgpLT5oZWFwLm9i
amVjdFNwYWNlKCkudmVyc2lvbigpKTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJr
cyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKK3sKICAgICBtX21hcmtzLmNsZWFyQWxsKCk7CiAg
ICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICAvLyBUaGlzIHdpbGwgYmVjb21lIHRydWUgYXQg
dGhlIGVuZCBvZiB0aGUgbWFyayBwaGFzZS4gV2Ugc2V0IGl0IG5vdyB0bwotICAgIC8vIGF2b2lk
IGFuIGV4dHJhIHBhc3MgdG8gZG8gc28gbGF0ZXIuCi0gICAgaGFuZGxlKCkubV9zdGF0ZSA9IE1h
cmtlZDsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotICAgIG1fdmVyc2lvbiA9IHZtKCkt
PmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CisgICAgbV92ZXJzaW9uID0gaGVhcFZlcnNp
b247CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0zOTgsMzEgKzM4OSwzOCBAQCBib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRzRmxpcCgpCiAgICAgcmV0dXJuIG1fYmxvY2stPm5l
ZWRzRmxpcCgpOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OndpbGxSZW1vdmVCbG9j
aygpCitib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25zdCB2b2lkKiBwKQogewotICAgIGZs
aXBJZk5lY2Vzc2FyeSgpOworICAgIHJldHVybiBpc01hcmtlZCh2bSgpLT5oZWFwLm9iamVjdFNw
YWNlKCkudmVyc2lvbigpLCBwKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRD
b25zdW1lRnJlZUxpc3QoKQorYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5
KCk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICAKLSAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKKyAgICByZXR1cm4gaXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwor
fQorCitib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVh
cENlbGwqIGNlbGwpCit7CisgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh2bSgp
LT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKK30KIAotICAgIG1fc3RhdGUg
PSBBbGxvY2F0ZWQ7Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlz
dCgpCit7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyks
ICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCFcbiIpOworICAgIEFT
U0VSVChpc0ZyZWVMaXN0ZWQoKSk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKKyAgICBh
bGxvY2F0b3IoKS0+c2V0SXNBbGxvY2F0ZWQodGhpcywgdHJ1ZSk7CiB9CiAKIHNpemVfdCBNYXJr
ZWRCbG9jazo6bWFya0NvdW50KCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1
cm4gbV9tYXJrcy5jb3VudCgpOworICAgIHJldHVybiBuZWVkc0ZsaXAoKSA/IDAgOiBtX21hcmtz
LmNvdW50KCk7CiB9CiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNFbXB0eSgpCiB7Ci0g
ICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkICYmICFi
bG9jaygpLmhhc0FueU1hcmtlZCgpICYmIG1fd2Vha1NldC5pc0VtcHR5KCkgJiYgKCFtX25ld2x5
QWxsb2NhdGVkIHx8IG1fbmV3bHlBbGxvY2F0ZWQtPmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIG1f
YWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMpOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhckhh
c0FueU1hcmtlZCgpCkBAIC00MzIsMjkgKzQzMCw3OCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpjbGVh
ckhhc0FueU1hcmtlZCgpCiAKIHZvaWQgTWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KCkKIHsK
LSAgICBoYW5kbGUoKS5tX2FsbG9jYXRvci0+cmV0aXJlKCZoYW5kbGUoKSk7CisgICAgaGFuZGxl
KCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nUmV0aXJlZCgmaGFuZGxl
KCksIHRydWUpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21BbGxv
Y2F0b3IoKQoreworICAgIGlmICghbV9hbGxvY2F0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBtX2FsbG9jYXRvci0+cmVtb3ZlQmxvY2sodGhpcyk7Cit9CisKK3ZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKKyAgICAKKyAg
ICBtX2luZGV4ID0gaW5kZXg7CisgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7CisgICAgCisg
ICAgc2l6ZV90IGNlbGxTaXplID0gYWxsb2NhdG9yLT5jZWxsU2l6ZSgpOworICAgIG1fYXRvbXNQ
ZXJDZWxsID0gKGNlbGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplOworICAgIG1fZW5k
QXRvbSA9IGF0b21zUGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDE7CisgICAgCisgICAgbV9h
dHRyaWJ1dGVzID0gYWxsb2NhdG9yLT5hdHRyaWJ1dGVzKCk7CisKKyAgICBpZiAobV9hdHRyaWJ1
dGVzLmNlbGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKKyAg
ICAKKyAgICBibG9jaygpLm1fbmVlZHNEZXN0cnVjdGlvbiA9IG5lZWRzRGVzdHJ1Y3Rpb24oKTsK
KyAgICAKKyAgICB1bnNpZ25lZCBjZWxsc1BlckJsb2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5
bG9hZCAvIGNlbGxTaXplOworICAgIGRvdWJsZSBtYXJrQ291bnRCaWFzID0gLShPcHRpb25zOjpt
aW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uKCkgKiBjZWxsc1BlckJsb2NrKTsKKyAgICAKKyAgICAv
LyBUaGUgbWFyayBjb3VudCBiaWFzIHNob3VsZCBiZSBjb21mb3J0YWJseSB3aXRoaW4gdGhpcyBy
YW5nZS4KKyAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzID4gc3RhdGljX2Nhc3Q8ZG91
YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptaW4oKSkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKG1hcmtDb3VudEJpYXMgPCAwKTsKKyAgICAKKyAgICAvLyBUaGlzIG1lYW5zIHdlIGhh
dmVuJ3QgbWFya2VkIGFueXRoaW5nIHlldC4KKyAgICBibG9jaygpLm1fYmlhc2VkTWFya0NvdW50
ID0gYmxvY2soKS5tX21hcmtDb3VudEJpYXMgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihtYXJrQ291
bnRCaWFzKTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVGcm9tQWxs
b2NhdG9yKCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworICAgIAorICAgIG1faW5k
ZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworICAgIG1fYWxsb2NhdG9y
ID0gbnVsbHB0cjsKK30KKworYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3Qg
SGVhcENlbGwqIGNlbGwpCit7CisgICAgcmV0dXJuIGlzTGl2ZSh2bSgpLT5oZWFwLm9iamVjdFNw
YWNlKCkudmVyc2lvbigpLCBjZWxsKTsKK30KKworYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCit7CisgICAgcmV0dXJuIGlzTGl2ZUNlbGwodm0oKS0+
aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiBuYW1lc3BhY2UgV1RGIHsKIAotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2Nr
U3RhdGUpCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgbW9kZSkKIHsKLSAgICBzd2l0Y2ggKGJsb2NrU3RhdGUp
IHsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpOZXc6Ci0gICAgICAgIG91dC5wcmludCgiTmV3Iik7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpGcmVlTGlzdGVkOgotICAg
ICAgICBvdXQucHJpbnQoIkZyZWVMaXN0ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
TWFya2VkQmxvY2s6OkFsbG9jYXRlZDoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvY2F0ZWQiKTsK
KyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
U3dlZXBUb0ZyZWVMaXN0OgorICAgICAgICBvdXQucHJpbnQoIlN3ZWVwVG9GcmVlTGlzdCIpOwog
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TWFya2VkOgotICAgICAgICBv
dXQucHJpbnQoIk1hcmtlZCIpOworICAgIGNhc2UgSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpT
d2VlcE9ubHk6CisgICAgICAgIG91dC5wcmludCgiU3dlZXBPbmx5Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMjAgKzQ0LDYgQEAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogdHlwZWRlZiB1aW50cHRy
X3QgQml0czsKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKLS8vIFNldCB0byBsb2cg
c3RhdGUgdHJhbnNpdGlvbnMgb2YgYmxvY2tzLgotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFU
RV9UUkFOU0lUSU9OUyAwCi0KLSNpZiBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwot
I2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgZG8geyAgICAg
ICAgICAgIFwKLSAgICAgICAgZGF0YUxvZ0YoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAiJXM6JWQgJXM6IGJsb2NrICVzID0gJXAs
ICVkXG4iLCAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgX19GSUxFX18sIF9fTElO
RV9fLCBfX0ZVTkNUSU9OX18sICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICNoYW5k
bGUsICYoaGFuZGxlKS0+YmxvY2soKSwgKGhhbmRsZSktPm1fc3RhdGUpOyAgICBcCi0gICAgfSB3
aGlsZSAoZmFsc2UpCi0jZWxzZQotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lU
SU9OKGhhbmRsZSkgKCh2b2lkKTApCi0jZW5kaWYKLQogLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBw
YWdlLWFsaWduZWQgY29udGFpbmVyIGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgogLy8gT2Jq
ZWN0cyBhcmUgYWxsb2NhdGVkIHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3Ig
YSBnaXZlbgogLy8gbWFya2VkIGJsb2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXplLiBP
YmplY3RzIHNtYWxsZXIgdGhhbiB0aGUKQEAgLTc2LDggKzYyLDYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgSGFuZGxlOwogcHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0
ZSA6IHVpbnQ4X3QgeyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAg
ICAgIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBibG9ja01hc2sgPSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVz
dCBiZSBhIHBvd2VyIG9mIHR3by4KQEAgLTg2LDEyICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWNfYXNzZXJ0KCEoTWFya2VkQmxvY2s6OmF0b21TaXplICYgKE1hcmtlZEJsb2NrOjphdG9t
U2l6ZSAtIDEpKSwgIk1hcmtlZEJsb2NrOjphdG9tU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdv
LiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShNYXJrZWRCbG9jazo6YmxvY2tTaXplICYgKE1hcmtl
ZEJsb2NrOjpibG9ja1NpemUgLSAxKSksICJNYXJrZWRCbG9jazo6YmxvY2tTaXplIG11c3QgYmUg
YSBwb3dlciBvZiB0d28uIik7Ci0KKyAgICAKICAgICBzdHJ1Y3QgVm9pZEZ1bmN0b3IgewogICAg
ICAgICB0eXBlZGVmIHZvaWQgUmV0dXJuVHlwZTsKICAgICAgICAgdm9pZCByZXR1cm5WYWx1ZSgp
IHsgfQogICAgIH07Ci0KKyAgICAKICAgICBjbGFzcyBDb3VudEZ1bmN0b3IgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBzaXplX3QgUmV0dXJuVHlwZTsKQEAgLTEwNiwxMCArOTAsOSBA
QCBwdWJsaWM6CiAgICAgICAgIG11dGFibGUgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgIH07CiAg
ICAgICAgIAotICAgIGNsYXNzIEhhbmRsZSA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxI
YW5kbGU+IHsKKyAgICBjbGFzcyBIYW5kbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShIYW5kbGUpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIERvdWJseUxpbmtlZExpc3ROb2RlPEhhbmRsZT47CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRC
bG9jazsKICAgICAgICAgZnJpZW5kIHN0cnVjdCBWZXJpZnlNYXJrZWQ7CkBAIC0xMzAsNiArMTEz
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgVk0qIHZtKCkgY29uc3Q7CiAgICAgICAgIFdlYWtTZXQm
IHdlYWtTZXQoKTsKICAgICAgICAgICAgIAorICAgICAgICAvLyBTd2VlcGluZyBlbnN1cmVzIHRo
YXQgZGVzdHJ1Y3RvcnMgZ2V0IGNhbGxlZCBhbmQgcmVtb3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUg
dW5zd2VwdAorICAgICAgICAvLyBzZXQuIFN3ZWVwaW5nIHRvIGZyZWUgbGlzdCBhbHNvIHJlbW92
ZXMgdGhlIGJsb2NrIGZyb20gdGhlIGVtcHR5IHNldCwgaWYgaXQgd2FzIGluIHRoYXQKKyAgICAg
ICAgLy8gc2V0LiBTd2VlcGluZyB3aXRoIFN3ZWVwT25seSBtYXkgYWRkIHRoaXMgYmxvY2sgdG8g
dGhlIGVtcHR5IHNldCwgaWYgdGhlIGJsb2NrIGlzIGZvdW5kCisgICAgICAgIC8vIHRvIGJlIGVt
cHR5LgorICAgICAgICAvLworICAgICAgICAvLyBOb3RlIHRoYXQgeW91IG5lZWQgdG8gbWFrZSBz
dXJlIHRoYXQgdGhlIGVtcHR5IGJpdCByZWZsZWN0cyByZWFsaXR5LiBJZiBpdCdzIG5vdCBzZXQK
KyAgICAgICAgLy8gYW5kIHRoZSBibG9jayBpcyBmcmVzaGx5IGNyZWF0ZWQsIHRoZW4gd2UnbGwg
bWFrZSB0aGUgbWlzdGFrZSBvZiBydW5uaW5nIGRlc3RydWN0b3JzIGluCisgICAgICAgIC8vIHRo
ZSBibG9jay4gSWYgaXQncyBub3Qgc2V0IGFuZCB0aGUgYmxvY2sgaGFzIG5vdGhpbmcgbWFya2Vk
LCB0aGVuIHdlJ2xsIG1ha2UgdGhlCisgICAgICAgIC8vIG1pc3Rha2Ugb2YgbWFraW5nIGEgcG9w
IGZyZWVsaXN0IHJhdGhlciB0aGFuIGEgYnVtcCBmcmVlbGlzdC4KICAgICAgICAgZW51bSBTd2Vl
cE1vZGUgeyBTd2VlcE9ubHksIFN3ZWVwVG9GcmVlTGlzdCB9OwogICAgICAgICBGcmVlTGlzdCBz
d2VlcChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAKQEAgLTE1Myw4ICsxNDUsNiBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIGFuZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZh
bHNlIG90aGVyd2lzZS4KICAgICAgICAgYm9vbCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgdm9pZCBmbGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsKLSAgICAgICAg
ICAgIAogICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAgICAgICAgY29uc3QgQWxsb2NhdG9y
QXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OwogICAgICAgICBEZXN0cnVjdGlvbk1vZGUg
ZGVzdHJ1Y3Rpb24oKSBjb25zdDsKQEAgLTE2NCw5ICsxNTQsMTQgQEAgcHVibGljOgogICAgICAg
ICBzaXplX3QgbWFya0NvdW50KCk7CiAgICAgICAgIHNpemVfdCBzaXplKCk7CiAgICAgICAgICAg
ICAKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2Vs
bCopOworICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhlYXBWZXJzaW9uLCBjb25zdCB2
b2lkKik7CisKICAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSGVhcENlbGwqKTsKICAgICAgICAg
Ym9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKKwogICAgICAgICBib29sIGlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOworICAgICAgICBib29sIGlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKICAgICAgICAgICAg
IAogICAgICAgICBib29sIGlzTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2
b2lkIHNldE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKQEAgLTE3NCwzMSArMTY5LDI1IEBA
IHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSBj
b25zdCB7IHJldHVybiAhIW1fbmV3bHlBbGxvY2F0ZWQ7IH0KICAgICAgICAgICAgIAotICAgICAg
ICBib29sIGlzQWxsb2NhdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNNYXJrZWQoKSBjb25z
dDsKLSAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdDsKLSAgICAgICAgYm9vbCBuZWVk
c1N3ZWVwaW5nKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgd2lsbFJlbW92ZUJsb2NrKCk7Ci0KICAg
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNo
Q2VsbChjb25zdCBGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVh
ZENlbGwoY29uc3QgRnVuY3RvciYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rv
cj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYp
OworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0
YXR1cyBmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICAgICAgCiAgICAg
ICAgIGJvb2wgbmVlZHNGbGlwKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgdm9pZCBmbGlwSWZO
ZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uKTsKLSAgICAgICAgdm9pZCBmbGlwSWZO
ZWNlc3NhcnkoSGVhcFZlcnNpb24pOwotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICAgICAgCisgICAgICAgIAogICAgICAgICB2b2lkIGFzc2VydEZsaXBwZWQoKTsKICAg
ICAgICAgICAgIAotICAgICAgICBib29sIGlzT25CbG9ja3NUb1N3ZWVwKCkgY29uc3QgeyByZXR1
cm4gbV9pc09uQmxvY2tzVG9Td2VlcDsgfQotICAgICAgICB2b2lkIHNldElzT25CbG9ja3NUb1N3
ZWVwKGJvb2wgdmFsdWUpIHsgbV9pc09uQmxvY2tzVG9Td2VlcCA9IHZhbHVlOyB9CisgICAgICAg
IGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyZWVMaXN0ZWQ7IH0KKyAg
ICAgICAgCisgICAgICAgIHNpemVfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0K
KyAgICAgICAgCisgICAgICAgIHZvaWQgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAgICAK
KyAgICAgICAgdm9pZCBkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3Qg
aW5kZXgpOworICAgICAgICB2b2lkIGRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKICAgICAgICAg
Ci0gICAgICAgIEJsb2NrU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0g
ICAgICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBIYW5kbGUoSGVhcCYsIE1hcmtlZEFs
bG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYsIHZv
aWQqKTsKKyAgICAgICAgSGFuZGxlKEhlYXAmLCB2b2lkKik7CiAgICAgICAgICAgICAKICAgICAg
ICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlPgogICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBl
clNlbGVjdFNjcmliYmxlTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwpAQCAtMjA2LDM1ICsx
OTUsNTAgQEAgcHVibGljOgogICAgICAgICBlbnVtIFNjcmliYmxlTW9kZSB7IERvbnRTY3JpYmJs
ZSwgU2NyaWJibGUgfTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlv
bk1vZGUsIFNjcmliYmxlTW9kZT4KLSAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RT
dGF0ZUFuZFN3ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICBGcmVlTGlz
dCBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAg
ICAgICAgICAgCisgICAgICAgIGVudW0gRW1wdHlNb2RlIHsgSXNFbXB0eSwgTm90RW1wdHkgfTsK
KyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBT
Y3JpYmJsZU1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlB
bGxvY2F0ZWQoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCiAgICAgICAgIGVudW0g
TmV3bHlBbGxvY2F0ZWRNb2RlIHsgSGFzTmV3bHlBbGxvY2F0ZWQsIERvZXNOb3RIYXZlTmV3bHlB
bGxvY2F0ZWQgfTsKLSAgICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRlLCBT
d2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1v
ZGU+CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9k
ZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3
ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAg
IAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2Rl
LCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dl
ZXBIZWxwZXJTZWxlY3RGbGlwTW9kZSgpOworICAgICAgICAKKyAgICAgICAgZW51bSBGbGlwTW9k
ZSB7IE5lZWRzRmxpcCwgRG9lc05vdE5lZWRGbGlwIH07CisgICAgICAgIAorICAgICAgICB0ZW1w
bGF0ZTxFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUs
IE5ld2x5QWxsb2NhdGVkTW9kZSwgRmxpcE1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHNwZWNpYWxp
emVkU3dlZXAoKTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgogICAgICAgICB2b2lkIGZvckVhY2hGcmVlQ2VsbChjb25zdCBGcmVlTGlzdCYsIGNvbnN0IEZ1
bmMmKTsKLSAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0ZyZWVMaXN0
ZWQoKTsKKyAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fcHJldjsKICAg
ICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0OwogICAgICAgICAgICAgCi0gICAgICAg
IHNpemVfdCBtX2F0b21zUGVyQ2VsbDsKLSAgICAgICAgc2l6ZV90IG1fZW5kQXRvbTsgLy8gVGhp
cyBpcyBhIGZ1enp5IGVuZC4gQWx3YXlzIHRlc3QgZm9yIDwgbV9lbmRBdG9tLgorICAgICAgICBz
aXplX3QgbV9hdG9tc1BlckNlbGwgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
IH07CisgICAgICAgIHNpemVfdCBtX2VuZEF0b20geyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpIH07IC8vIFRoaXMgaXMgYSBmdXp6eSBlbmQuIEFsd2F5cyB0ZXN0IGZvciA8IG1f
ZW5kQXRvbS4KICAgICAgICAgICAgIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpCaXRt
YXA8YXRvbXNQZXJCbG9jaz4+IG1fbmV3bHlBbGxvY2F0ZWQ7CiAgICAgICAgICAgICAKICAgICAg
ICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7Ci0gICAgICAgIEJsb2NrU3RhdGUg
bV9zdGF0ZTsKLSAgICAgICAgYm9vbCBtX2lzT25CbG9ja3NUb1N3ZWVwIHsgZmFsc2UgfTsKKyAg
ICAgICAgYm9vbCBtX2lzRnJlZUxpc3RlZCB7IGZhbHNlIH07CiAgICAgICAgICAgICAKLSAgICAg
ICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9y
KiBtX2FsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFr
U2V0OwogICAgICAgICAgICAgCi0gICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrOworICAgICAg
ICBNYXJrZWRCbG9jayogbV9ibG9jayB7IG51bGxwdHIgfTsKICAgICB9OwogICAgICAgICAKLSAg
ICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBNYXJrZWRBbGxv
Y2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKKyAg
ICBzdGF0aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmKTsKICAgICAgICAg
CiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBAIC0yNDgsMzQgKzI1MiwzNSBAQCBw
dWJsaWM6CiAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogCiAgICAgYm9vbCBpc01hcmtlZChjb25z
dCB2b2lkKik7CisgICAgYm9vbCBpc01hcmtlZChIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOwor
ICAgIGJvb2wgaXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsK
ICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICAKICAgICBi
b29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOworICAgIGJvb2wg
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwog
ICAgIAotICAgIGJvb2wgaXNNYXJrZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24sIGNv
bnN0IEhlYXBDZWxsKik7Ci0KICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAgdm9p
ZCBjbGVhck1hcmtlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIAorICAgIAogICAgIHNpemVfdCBj
ZWxsU2l6ZSgpOwogICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBj
b25zdDsKLQorICAgIAogICAgIGJvb2wgaGFzQW55TWFya2VkKCkgY29uc3Q7CiAgICAgdm9pZCBu
b3RlTWFya2VkKCk7CiAgICAgICAgIAogICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKLQorICAgIAog
ICAgIGJvb2wgbmVlZHNGbGlwKEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxpcCgpOwot
ICAgICAgICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNp
b24pOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZs
aXBJZk5lY2Vzc2FyeSgpOworICAgIAorICAgIHZvaWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24p
OwogICAgICAgICAKICAgICB2b2lkIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAgCiAgICAgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9
Ci0gICAgICAgIAorICAgIAorICAgIGlubGluZSB2b2lkIHJlc2V0VmVyc2lvbigpOworICAgIAog
cHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRv
bVNpemUgLSAxOwogCkBAIC0yODQsOSArMjg5LDkgQEAgcHJpdmF0ZToKICAgICBNYXJrZWRCbG9j
ayhWTSYsIEhhbmRsZSYpOwogICAgIEF0b20qIGF0b21zKCk7CiAgICAgICAgIAotICAgIHZvaWQg
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3coKTsKLSAgICB2b2lkIGZsaXBJZk5lY2Vz
c2FyeVNsb3coKTsKKyAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbik7CiAgICAg
dm9pZCBjbGVhck1hcmtzKCk7CisgICAgdm9pZCBjbGVhck1hcmtzKEhlYXBWZXJzaW9uKTsKICAg
ICB2b2lkIGNsZWFySGFzQW55TWFya2VkKCk7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xv
dygpOwpAQCAtNDY5LDQwICs0NzQsMTMgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Om5lZWRz
RmxpcChIZWFwVgogICAgIHJldHVybiBoZWFwVmVyc2lvbiAhPSBtX3ZlcnNpb247CiB9CiAKLWlu
bGluZSB2b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24gaGVhcFZl
cnNpb24pCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24g
aGVhcFZlcnNpb24pCiB7CiAgICAgaWYgKFVOTElLRUxZKG5lZWRzRmxpcChoZWFwVmVyc2lvbikp
KQotICAgICAgICBmbGlwSWZOZWNlc3NhcnlTbG93KCk7Ci19Ci0KLWlubGluZSB2b2lkIE1hcmtl
ZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJz
aW9uKQotewotICAgIGlmIChVTkxJS0VMWShuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKSkKLSAgICAg
ICAgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3coKTsKKyAgICAgICAgYWJvdXRUb01h
cmtTbG93KGhlYXBWZXJzaW9uKTsKICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKIH0KIAotaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9u
IGhlYXBWZXJzaW9uKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJzaW9u
KTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5
RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBibG9jaygpLmZs
aXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwRm9yRWRlbkNvbGxlY3Rpb24oKQotewotICAgIGFz
c2VydEZsaXBwZWQoKTsKLSAgICAgICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJ
VElPTih0aGlzKTsKLSAgICAKLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBOZXcgJiYgbV9zdGF0ZSAh
PSBGcmVlTGlzdGVkKTsKLSAgICAKLSAgICBtX3N0YXRlID0gTWFya2VkOwotfQotCiAjaWYgQVNT
RVJUX0RJU0FCTEVECiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YXNzZXJ0RmxpcHBlZCgpCiB7
CkBAIC01MTQsOSArNDkyLDE2IEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFz
c2VydEYKICAgICBibG9jaygpLmFzc2VydEZsaXBwZWQoKTsKIH0KIAotaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHApCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6aXNNYXJrZWQoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqIHApCiB7Ci0g
ICAgYXNzZXJ0RmxpcHBlZCgpOworICAgIHJldHVybiBuZWVkc0ZsaXAoaGVhcFZlcnNpb24pID8g
ZmFsc2UgOiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKK30KKworaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OmlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBj
b25zdCB2b2lkKiBwKQoreworICAgIGlmIChuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgcmV0dXJuIG1f
bWFya3MuZ2V0KGF0b21OdW1iZXIocCkpOwogfQogCkBAIC01NTAsNDMgKzUzNSwxNCBAQCBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5lCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxv
Y2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qg
SGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKLSAgICBy
ZXR1cm4gbV9ibG9jay0+aXNNYXJrZWQoY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNO
ZXdseUFsbG9jYXRlZChjZWxsKSk7CisgICAgcmV0dXJuIG1fYmxvY2stPmlzTWFya2VkKHZlcnNp
b24sIGNlbGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkp
OwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVk
KGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2Vs
bCkKIHsKLSAgICBBU1NFUlQobV9oYW5kbGUubV9zdGF0ZSA9PSBNYXJrZWQpOwotICAgIHJldHVy
biBpc01hcmtlZChjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBtX2hhbmRs
ZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25z
dCBIZWFwQ2VsbCogY2VsbCkKLXsKLSAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc01hcmtlZChjZWxsKTsKLX0KLQotaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxs
KQotewotICAgIGFzc2VydEZsaXBwZWQoKTsKLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBj
YXNlIEFsbG9jYXRlZDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIE1hcmtlZDoK
LSAgICAgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKLQotICAgIGNh
c2UgTmV3OgotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc01h
cmtlZCh2ZXJzaW9uLCBjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBtX2hh
bmRsZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAogaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQpAQCAtNjAzLDEzICs1NTksNiBAQCBpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkK
LXsKLSAgICBpZiAoIW1fYmxvY2stPmlzQXRvbShwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7Ci19Ci0K
IHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewpA
QCAtNjIyLDYyICs1NzEsNiBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpI
YW5kCiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPgotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6
SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBm
bGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVz
LmNlbGxLaW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRv
bTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOwotICAgICAg
ICBpZiAoIWlzTGl2ZShjZWxsKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlm
IChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4K
LWlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRD
ZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0g
ICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNl
bGwpIHsKLSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFw
Q2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKGlzTGl2ZShjZWxsKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQp
ID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc1N3ZWVwaW5nKCkg
Y29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+Zmxp
cElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwotfQotCi1pbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0FsbG9jYXRlZCgpIGNvbnN0Ci17Ci0gICAg
Y29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgp
OwotICAgIHJldHVybiBtX3N0YXRlID09IEFsbG9jYXRlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFy
a2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4g
bV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzRnJlZUxpc3RlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFu
ZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IEZy
ZWVMaXN0ZWQ7Ci19Ci0KIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpoYXNBbnlNYXJrZWQoKSBj
b25zdAogewogICAgIHJldHVybiBtX2JpYXNlZE1hcmtDb3VudCAhPSBtX21hcmtDb3VudEJpYXM7
CkBAIC03MTEsNyArNjA0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpN
YXJrZQogICAgIHR5cGVkZWYgTWFya2VkQmxvY2tIYXNoIEhhc2g7CiB9OwogCi12b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSk7
Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjpTd2VlcE1vZGUpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtlZEFs
bG9jYXRvci5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNpb24gdmVy
c2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCit7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQo
KSk7CisgICAgCisgICAgaWYgKFVOTElLRUxZKGhhc0FueU5ld2x5QWxsb2NhdGVkKCkpKSB7Cisg
ICAgICAgIGlmIChpc05ld2x5QWxsb2NhdGVkKGNlbGwpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIAorICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7
CisgICAgCisgICAgaWYgKGFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCisgICAgaWYgKGJsb2NrLm5lZWRzRmxpcCh2ZXJzaW9uKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOwor
fQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKEhlYXBWZXJz
aW9uIHZlcnNpb24sIGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20o
cCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNMaXZlKHZlcnNpb24sIHN0
YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4KK2lubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9y
RWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSGVhcENlbGw6Oktp
bmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAgICBmb3IgKHNpemVfdCBpID0gZmly
c3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKKyAgICAgICAg
SGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2Nr
LT5hdG9tcygpW2ldKTsKKyAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25T
dGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwor
ICAgIH0KKyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+CitpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAg
IEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChz
aXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxs
KSB7CisgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENl
bGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7CisgICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9
PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lOworICAgIH0KKyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
K30KKworaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OnJlc2V0VmVyc2lvbigpCit7CisgICAgbV92
ZXJzaW9uID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSW5jcmVt
ZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJT
YW1wbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKQEAgLTE5NSw2ICsxOTYsMTkg
QEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsK
KyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIHByZXZpb3VzID0gbnVsbHB0cjsKKyAgICBmb3JF
YWNoU3Vic3BhY2UoCisgICAgICAgIFsmXSAoU3Vic3BhY2UmIHN1YnNwYWNlLCBBbGxvY2F0b3JB
dHRyaWJ1dGVzKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgZm9yIChNYXJrZWRB
bGxvY2F0b3IqIGFsbG9jYXRvciA6IHN1YnNwYWNlLmJhZ09mQWxsb2NhdG9ycykgeworICAgICAg
ICAgICAgICAgIGFsbG9jYXRvci0+c2V0TmV4dEFsbG9jYXRvcihwcmV2aW91cyk7CisgICAgICAg
ICAgICAgICAgcHJldmlvdXMgPSBhbGxvY2F0b3I7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAg
ICB9KTsKKyAgICBtX2ZpcnN0QWxsb2NhdG9yID0gcHJldmlvdXM7CisgICAgbV9hbGxvY2F0b3JG
b3JFbXB0eUFsbG9jYXRpb24gPSBwcmV2aW91czsKIH0KIAogTWFya2VkU3BhY2U6On5NYXJrZWRT
cGFjZSgpCkBAIC0yMjIsMTUgKzIzNiwyMSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpsYXN0Q2hhbmNl
VG9GaW5hbGl6ZSgpCiAKIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZShTdWJzcGFjZSYgc3Vi
c3BhY2UsIHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0
b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9j
YXRvci0+YWxsb2NhdGUoKTsKKyAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBh
bGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkgeworICAgICAgICB2b2lkKiByZXN1bHQgPSBh
bGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgICAgIC8vZGF0YUxvZygiQWxsb2NhdGVkICIsIFJh
d1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQog
ICAgIHJldHVybiBhbGxvY2F0ZUxhcmdlKHN1YnNwYWNlLCBieXRlcyk7CiB9CiAKIHZvaWQqIE1h
cmtlZFNwYWNlOjp0cnlBbGxvY2F0ZShTdWJzcGFjZSYgc3Vic3BhY2UsIHNpemVfdCBieXRlcykK
IHsKLSAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vi
c3BhY2UsIGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci0+dHJ5QWxsb2NhdGUoKTsK
KyAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3Bh
Y2UsIGJ5dGVzKSkgeworICAgICAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3ItPnRyeUFsbG9j
YXRlKCk7CisgICAgICAgIC8vZGF0YUxvZygiVHJ5LWFsbG9jYXRlZCAiLCBSYXdQb2ludGVyKHJl
c3VsdCksICJcbiIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICByZXR1cm4g
dHJ5QWxsb2NhdGVMYXJnZShzdWJzcGFjZSwgYnl0ZXMpOwogfQogCkBAIC0yNTksOSArMjc5LDEw
IEBAIHZvaWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZUxhcmdlKFN1YnMKIHZvaWQgTWFya2Vk
U3BhY2U6OnN3ZWVwKCkKIHsKICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVw
aW5nKCk7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAgICBmb3JFYWNoQWxs
b2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVy
YXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLnN3ZWVwKCk7CisgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CiB9CiAKQEAg
LTI4NCwyOCArMzA1LDE2IEBAIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwTGFyZ2VBbGxvY2F0aW9u
cygKICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0ID0gbV9sYXJnZUFsbG9jYXRp
b25zLnNpemUoKTsKIH0KIAotdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKLXsKLSAg
ICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0YUxvZygiWm9tYmlmeWluZyBzd2Vl
cC4uLiIpOwotICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAg
ICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sp
IHsKLSAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNTd2VlcGluZygpKQotICAgICAgICAgICAg
ICAgIGJsb2NrLT5zd2VlcCgpOwotICAgICAgICB9KTsKLX0KLQotdm9pZCBNYXJrZWRTcGFjZTo6
cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0aW9u
KCkKIHsKICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRv
ciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAgICAgICAgYWxsb2NhdG9y
LnJlc2V0KCk7CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlcGFyZUZvckFsbG9jYXRpb24oKTsK
ICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9
KTsKIAotICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHMuY2xlYXIoKTsKICAgICBtX2FjdGl2ZVdl
YWtTZXRzLnRha2VGcm9tKG1fbmV3QWN0aXZlV2Vha1NldHMpOworICAgIAogICAgIGlmIChtX2hl
YXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikKICAgICAgICAgbV9s
YXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9sYXJnZUFsbG9jYXRpb25z
TnVyc2VyeU9mZnNldDsKICAgICBlbHNlCkBAIC00MTAsMTEgKzQxOSwxMSBAQCB2b2lkIE1hcmtl
ZFNwYWNlOjpmcmVlT3JTaHJpbmtCbG9jayhNYXJrCiAKIHZvaWQgTWFya2VkU3BhY2U6OnNocmlu
aygpCiB7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBmcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CisgICAg
Zm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
cikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5zaHJpbmsoKTsK
KyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9
KTsKLSAgICAvLyBGb3IgTGFyZ2VBbGxvY2F0aW9ucywgd2UgZG8gdGhlIG1vcmFsIGVxdWl2YWxl
bnQgaW4gc3dlZXBMYXJnZUFsbG9jYXRpb25zKCkuCiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmNs
ZWFyTmV3bHlBbGxvY2F0ZWQoKQpAQCAtNDI5LDU3ICs0MzgsNjEgQEAgdm9pZCBNYXJrZWRTcGFj
ZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sYXJnZUFs
bG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFs
bG9jYXRlZCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGZvckVhY2hCbG9jaygKLSAg
ICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgQVNT
RVJUKCFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBm
b3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKLSAg
ICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwotI2VuZGlmIC8v
ICFBU1NFUlRfRElTQUJMRUQKLX0KLQotI2lmbmRlZiBOREVCVUcgCi1zdHJ1Y3QgVmVyaWZ5TWFy
a2VkIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsgCi0gICAgdm9pZCBvcGVyYXRvcigpKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGJsb2Nr
LT5uZWVkc0ZsaXAoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChibG9j
ay0+bV9zdGF0ZSkgewotICAgICAgICBjYXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsK
KyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykgeworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssICFibG9j
ay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAg
ICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlv
bnMpCisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5p
c05ld2x5QWxsb2NhdGVkKCkpOwogICAgIH0KLX07IAotI2VuZGlmIAorfQogCi12b2lkIE1hcmtl
ZFNwYWNlOjpmbGlwKCkKK3ZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAg
aWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+ZmxpcEZv
ckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSGVhcFZlcnNpb24gbmV4
dFZlcnNpb24gPSBtX3ZlcnNpb24gKyAxOwotICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNp
b24gPT0gaW5pdGlhbFZlcnNpb24pKSB7Ci0gICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3
cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgZmxpcHBpbmcgYWxsIGJsb2Nrcy4gVGhpcyBo
YXBwZW5zCi0gICAgICAgICAgICAvLyBzdXBlciByYXJlbHksIHByb2JhYmx5IG5ldmVyIGZvciBt
b3N0IHVzZXJzLgorICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxs
Q29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZd
IChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAg
ICAgICAgICAgICBhbGxvY2F0b3IuYmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgIG1fdmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fdmVyc2lvbik7Cisg
ICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkobV92ZXJzaW9uID09IGluaXRpYWxWZXJzaW9u
KSkgeworICAgICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRs
ZSB0aGlzIGJ5IHNldHRpbmcgYWxsIGJsb2NrIHZlcnNpb25zIHRvIG51bGwuCiAgICAgICAgICAg
ICBmb3JFYWNoQmxvY2soCiAgICAgICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxl
KiBoYW5kbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5mbGlwSWZOZWNlc3Nhcnko
KTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0VmVyc2lvbigpOwog
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIG1fdmVyc2lvbiA9IG5leHRW
ZXJzaW9uOyAvLyBIZW5jZWZvcnRoLCBmbGlwSWZOZWNlc3NhcnkoKSB3aWxsIHRyaWdnZXIgb24g
YWxsIGJsb2Nrcy4KKyAgICAgICAgCiAgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxv
Y2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+Zmxp
cCgpOwogICAgIH0KIAotI2lmbmRlZiBOREVCVUcKLSAgICBWZXJpZnlNYXJrZWQgdmVyaWZ5RnVu
Y3RvcjsKLSAgICBmb3JFYWNoQmxvY2sodmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBpZiAo
IUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBb
Jl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJs
b2NrLT5uZWVkc0ZsaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgICAgIH0pOwor
ICAgIH0KKyAgICAKKyAgICBtX2lzTWFya2luZyA9IHRydWU7Cit9CisKK3ZvaWQgTWFya2VkU3Bh
Y2U6OmVuZE1hcmtpbmcoKQoreworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAo
TWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAg
ICAgICBhbGxvY2F0b3IuZW5kTWFya2luZygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAgIAorICAgIG1faXNNYXJraW5nID0g
ZmFsc2U7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OndpbGxTdGFydEl0ZXJhdGluZygpCkBAIC01
NDAsMTkgKzU1Myw2NiBAQCB2b2lkIE1hcmtlZFNwYWNlOjphZGRBY3RpdmVXZWFrU2V0KFdlYWtT
CiAKIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKQogeworICAgIC8vIFdBUk5JTkc6IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBi
bG9jayBpcyBmdWxseSBpbml0aWFsaXplZC4gVGhlIGJsb2NrIHdpbGwgbm90IGtub3cKKyAgICAv
LyBpdHMgY2VsbFNpemUoKSBvciBhdHRyaWJ1dGVzKCkuIFRoZSBsYXR0ZXIgaW1wbGllcyB0aGF0
IHlvdSBjYW4ndCBhc2sgdGhpbmdzIGxpa2UKKyAgICAvLyBuZWVkc0Rlc3RydWN0aW9uKCkuCiAg
ICAgbV9jYXBhY2l0eSArPSBNYXJrZWRCbG9jazo6YmxvY2tTaXplOwogICAgIG1fYmxvY2tzLmFk
ZCgmYmxvY2stPmJsb2NrKCkpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUlu
QmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7Ci0gICAgYmxvY2stPmFzc2VydEZs
aXBwZWQoKTsKLSAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLmFwcGVuZChibG9jayk7Ci0gICAg
CiAgICAgaWYgKGJsb2NrLT53ZWFrU2V0KCkuaXNPbkxpc3QoKSkgewogICAgICAgICBibG9jay0+
d2Vha1NldCgpLnJlbW92ZSgpOwogICAgICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmFwcGVuZCgm
YmxvY2stPndlYWtTZXQoKSk7CiAgICAgfQogfQogCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJr
ZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2soKQoreworICAgIGZvciAoOyBtX2FsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbjsgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRv
ckZvckVtcHR5QWxsb2NhdGlvbi0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGlmIChNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5m
aW5kRW1wdHlCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIGJsb2NrOworICAgIH0KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KCkK
K3sKKyAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rp
b24pIHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAg
ICAgYWxsb2NhdG9yLnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICB9
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAg
WyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAg
ICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24o
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAg
ICAgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBNYXJrZWRTcGFjZTo6YXNzZXJ0Tm9VbnN3
ZXB0KCkKK3sKKyAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgICAgICByZXR1cm47CisgICAg
Zm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
cikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5hc3NlcnROb1Vu
c3dlcHQoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwor
ICAgICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0m
IG91dCkKK3sKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9j
YXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgb3V0LnBy
aW50KCJCaXRzIGZvciAiLCBhbGxvY2F0b3IsICI6XG4iKTsKKyAgICAgICAgICAgIGFsbG9jYXRv
ci5kdW1wQml0cyhvdXQpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsMTYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1T
aXplQ2xhc3NlcyA9IGxhcmdlQ3V0b2ZmIC8gc2l6ZVN0ZXA7CiAgICAgCi0gICAgc3RhdGljIGNv
bnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gNDI7ICAvLyBUaGlzIGNhbiBiZSBhbnkg
dmFsdWUsIGluY2x1ZGluZyByYW5kb20gZ2FyYmFnZSwgc28gbG9uZyBhcyBpdCdzIGNvbnNpc3Rl
bnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJvY2Vzcy4KKyAgICBzdGF0aWMgY29uc3QgSGVh
cFZlcnNpb24gbnVsbFZlcnNpb24gPSAwOyAvLyBUaGUgdmVyc2lvbiBvZiBmcmVzaGx5IGFsbG9j
YXRlZCBibG9ja3MuCisgICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9u
ID0gMTsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUgaGVhcCBzdGFydHMgb3V0IHdpdGguCisgICAg
CisgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNpb24gdmVyc2lvbikKKyAgICB7
CisgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgaWYgKHZlcnNpb24gPT0gbnVsbFZlcnNpb24p
CisgICAgICAgICAgICB2ZXJzaW9uKys7CisgICAgICAgIHJldHVybiB2ZXJzaW9uOworICAgIH0K
ICAgICAKICAgICBzdGF0aWMgc2l6ZV90IHNpemVDbGFzc1RvSW5kZXgoc2l6ZV90IHNpemUpCiAg
ICAgewpAQCAtMTE0LDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBTdWJzcGFjZSYgc3Vic3BhY2VG
b3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBtX25vcm1hbFNwYWNlOyB9CiAg
ICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxpYXJ5RGF0YSgpIHsgcmV0dXJuIG1fYXV4aWxp
YXJ5U3BhY2U7IH0KICAgICAKLSAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQg
cHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIAogICAgIHZvaWQgdmlzaXRXZWFrU2V0cyhIZWFwUm9v
dFZpc2l0b3ImKTsKICAgICB2b2lkIHJlYXBXZWFrU2V0cygpOwpAQCAtMTQ0LDExICsxNTMsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5k
bGUqKTsKICAgICB2b2lkIGRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7
CiAKLSAgICB2b2lkIGZsaXAoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZygpOworICAgIHZvaWQg
ZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNob3RVbnN3ZXB0KCk7CiAgICAgdm9pZCBjbGVh
ck5ld2x5QWxsb2NhdGVkKCk7CiAgICAgdm9pZCBzd2VlcCgpOwogICAgIHZvaWQgc3dlZXBMYXJn
ZUFsbG9jYXRpb25zKCk7Ci0gICAgdm9pZCB6b21iaWZ5U3dlZXAoKTsKKyAgICB2b2lkIGFzc2Vy
dE5vVW5zd2VwdCgpOwogICAgIHNpemVfdCBvYmplY3RDb3VudCgpOwogICAgIHNpemVfdCBzaXpl
KCk7CiAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CkBAIC0xNTcsOCArMTY4LDYgQEAgcHVibGljOgog
ICAgIAogICAgIEhlYXBWZXJzaW9uIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247
IH0KIAotICAgIGNvbnN0IFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIGJsb2Nrc1dpdGhO
ZXdPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsgfQotICAg
IAogICAgIGNvbnN0IFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiYgbGFyZ2VBbGxvY2F0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uczsgfQogICAgIHVuc2lnbmVkIGxhcmdl
QWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRp
b25zTnVyc2VyeU9mZnNldDsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNPZmZzZXRG
b3JUaGlzQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNl
dEZvclRoaXNDb2xsZWN0aW9uOyB9CkBAIC0xNjksMTMgKzE3OCwxNiBAQCBwdWJsaWM6CiAgICAg
TGFyZ2VBbGxvY2F0aW9uKiogbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQ7IH0K
ICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplKCkgY29u
c3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplOyB9CiAg
ICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBmaXJzdEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3RBbGxvY2F0b3I7IH0KKyAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0
aW9uOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5QmxvY2soKTsK
KyAgICAKICAgICAvLyBXaGVuIHRoaXMgaXMgdHJ1ZSBpdCBtZWFucyB0aGF0IHdlIGhhdmUgZmxp
cHBlZCBidXQgdGhlIG1hcmsgYml0cyBoYXZlbid0IGNvbnZlcmdlZCB5ZXQuCiAgICAgYm9vbCBp
c01hcmtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzTWFya2luZzsgfQogICAgIAotICAgIC8vIEZJ
WE1FOiBBZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgx
LCBNYXJrZWRTcGFjZSB3aWxsIGNvbnRyb2wgdGhpcwotICAgIC8vIGZsYWcgZGlyZWN0bHkuCi0g
ICAgdm9pZCBzZXRJc01hcmtpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzTWFya2luZyA9IHZhbHVlOyB9
Ci0KKyAgICB2b2lkIGR1bXBCaXRzKFByaW50U3RyZWFtJiA9IFdURjo6ZGF0YUZpbGUoKSk7Cisg
ICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTE5MCw4ICsyMDIsOCBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZvaWQgaW5pdGlhbGl6ZVN1YnNwYWNlKFN1YnNwYWNlJik7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaFN1YnNwYWNlKGNvbnN0
IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBm
b3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgdm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYpOwogICAg
IAogICAgIHZvaWQgYWRkQWN0aXZlV2Vha1NldChXZWFrU2V0Kik7CiAKQEAgLTIwNSw3ICsyMTcs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0l0ZXJhdGluZzsKICAgICBib29sIG1faXNNYXJr
aW5nIHsgZmFsc2UgfTsKICAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsKLSAgICBWZWN0b3I8
TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tzV2l0aE5ld09iamVjdHM7CiAgICAgVmVjdG9y
PExhcmdlQWxsb2NhdGlvbio+IG1fbGFyZ2VBbGxvY2F0aW9uczsKICAgICB1bnNpZ25lZCBtX2xh
cmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbGFyZ2VB
bGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uIHsgMCB9OwpAQCAtMjE1LDQwICsyMjYs
MTEgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29s
bGVjdGlvblNpemUgeyAwIH07CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2lj
UmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX2FjdGl2ZVdlYWtTZXRzOwogICAgIFNlbnRpbmVs
TGlua2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9uZXdB
Y3RpdmVXZWFrU2V0czsKKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fZmlyc3RBbGxvY2F0
b3IgeyBudWxscHRyIH07CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvckZvckVtcHR5
QWxsb2NhdGlvbiB7IG51bGxwdHIgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNj
b3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBBU1NFUlQoaXNJdGVyYXRpbmco
KSk7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAgICBm
b3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoTGl2ZUNlbGwoZnVu
Y3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0
aW9ucykgewotICAgICAgICBpZiAoYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKLSAgICAgICAgICAg
IGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygp
LmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29w
ZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkp
OwotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7Ci0gICAgZm9y
IChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaERlYWRDZWxsKGZ1bmN0
b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlv
bnMpIHsKLSAgICAgICAgaWYgKCFhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewotICAgICAgICAgICAg
aWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCku
Y2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIGlubGluZSBNYXJrZWRBbGxvY2F0b3IqIE1hcmtl
ZFNwYWNlOjphbGxvY2F0b3JGb3IoU3Vic3BhY2UmIHNwYWNlLCBzaXplX3QgYnl0ZXMpCiB7CiAg
ICAgQVNTRVJUKGJ5dGVzKTsKQEAgLTMwNCwxNSArMjg2LDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgogdm9p
ZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ewotICAgIGZvckVhY2hTdWJzcGFjZSgKLSAgICAgICAgWyZdIChTdWJzcGFjZSYgc3Vic3BhY2Us
IEFsbG9jYXRvckF0dHJpYnV0ZXMpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBm
b3IgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yIDogc3Vic3BhY2UuYmFnT2ZBbGxvY2F0b3Jz
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZ1bmN0b3IoKmFsbG9jYXRvcikgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpEb25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLSAgICAgICAgfSk7CisgICAgZm9yIChNYXJrZWRB
bGxvY2F0b3IqIGFsbG9jYXRvciA9IG1fZmlyc3RBbGxvY2F0b3I7IGFsbG9jYXRvcjsgYWxsb2Nh
dG9yID0gYWxsb2NhdG9yLT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgaWYgKGZ1bmN0b3Io
KmFsbG9jYXRvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNYXJrZWRCbG9j
a0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZv
ckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQoreworICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9
IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxv
Y2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoKCppdCkt
PmhhbmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRv
bmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7CisgICAgICAgIGlmIChhbGxvY2F0
aW9uLT5pc0xpdmUoKSkgeworICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2Vs
bCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1
czo6RG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JF
YWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
K3sKKyAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7CisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBt
X2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nr
cy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5o
YW5kbGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25l
KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiog
YWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgeworICAgICAgICBpZiAoIWFsbG9jYXRp
b24tPmlzTGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxs
KCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVz
OjpEb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Ns
b3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSw4IEBA
IHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWEKICAgICB2YWxpZGF0ZShj
ZWxsKTsKICNlbmRpZgogICAgIAorICAgIC8vZGF0YUxvZygiICAgIE1hcmtpbmcgIiwgUmF3UG9p
bnRlcihjZWxsKSwgIlxuIik7CisgICAgCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9u
KCkpCiAgICAgICAgIHNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKGNlbGwtPmxhcmdlQWxs
b2NhdGlvbigpLCBjZWxsKTsKICAgICBlbHNlCkBAIC0xOTgsNyArMjAwLDcgQEAgdm9pZCBTbG90
VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogdGVtcGxhdGU8dHlwZW5hbWUgQ29udGFp
bmVyVHlwZT4KIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBw
ZW5kVG9NYXJrU3RhY2soQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBKU0NlbGwqIGNlbGwpCiB7
Ci0gICAgY29udGFpbmVyLmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcobV92ZXJzaW9uKTsK
KyAgICBjb250YWluZXIuYWJvdXRUb01hcmsobV92ZXJzaW9uKTsKICAgICAKICAgICBpZiAoY29u
dGFpbmVyLnRlc3RBbmRTZXRNYXJrZWQoY2VsbCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0Niwx
MCArMjQ4LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6bWFya0F1eGlsaWFyeShjb25zdCB2bwogICAg
IAogICAgIEFTU0VSVChjZWxsLT5oZWFwKCkgPT0gaGVhcCgpKTsKICAgICAKLSAgICBpZiAoSGVh
cDo6dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKSB7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwpKTsKKyAgICBpZiAoSGVhcDo6
dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogICAgIAogICAgIG5vdGVMaXZlQXV4aWxpYXJ5Q2VsbChjZWxsKTsKIH0KQEAgLTI5NCw2ICsy
OTQsOCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OnZpc2l0Q2hpCiB7CiAgICAg
QVNTRVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwpKTsKICAgICAKKyAgICAvL2Rh
dGFMb2coIlZpc2l0aW5nICIsIFJhd1BvaW50ZXIoY2VsbCksICJcbiIpOworCiAgICAgU2V0Q3Vy
cmVudENlbGxTY29wZSBjdXJyZW50Q2VsbFNjb3BlKCp0aGlzLCBjZWxsKTsKICAgICAKICAgICBt
X2N1cnJlbnRPYmplY3RDZWxsU3RhdGVCZWZvcmVWaXNpdGluZyA9IGNlbGwtPmNlbGxTdGF0ZSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpbmNsdWRlICJKU0V4cG9ydE1hY3Jv
cy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01MSwzMyArNTMsMzMgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4
dCA9IDApOworICAgIGlubGluZSBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCog
Y29udGV4dCA9IDApOwogCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNo
VGFibGVEZWxldGVkVmFsdWUgfTsKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3Q7Ci0gICAgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOworICAgIGlubGluZSBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CisgICAgaW5saW5lIFdlYWsoSGFz
aFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKIAotICAgIFdlYWsoV2VhayYmKTsKKyAgICBpbmxpbmUg
V2VhayhXZWFrJiYpOwogCiAgICAgfldlYWsoKQogICAgIHsKICAgICAgICAgY2xlYXIoKTsKICAg
ICB9CiAKLSAgICB2b2lkIHN3YXAoV2VhayYpOworICAgIGlubGluZSB2b2lkIHN3YXAoV2VhayYp
OwogCi0gICAgV2VhayYgb3BlcmF0b3I9KFdlYWsmJik7CisgICAgaW5saW5lIFdlYWsmIG9wZXJh
dG9yPShXZWFrJiYpOwogCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLSAgICBUKiBvcGVy
YXRvci0+KCkgY29uc3Q7Ci0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgVCogZ2V0KCkg
Y29uc3Q7CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7CisgICAgaW5saW5lIFQq
IG9wZXJhdG9yLT4oKSBjb25zdDsKKyAgICBpbmxpbmUgVCYgb3BlcmF0b3IqKCkgY29uc3Q7Cisg
ICAgaW5saW5lIFQqIGdldCgpIGNvbnN0OwogCi0gICAgYm9vbCB3YXMoVCopIGNvbnN0OworICAg
IGlubGluZSBib29sIHdhcyhUKikgY29uc3Q7CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3Q7CisgICAgaW5saW5lIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKIAot
ICAgIFdlYWtJbXBsKiBsZWFrSW1wbCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBpbmxpbmUg
V2Vha0ltcGwqIGxlYWtJbXBsKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZvaWQgY2xlYXIo
KQogICAgIHsKICAgICAgICAgaWYgKCFtX2ltcGwpCkBAIC04NiwxMSArODgsMzAgQEAgcHVibGlj
OgogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFdlYWtJbXBsKiBoYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsKKyAgICBzdGF0aWMgaW5saW5lIFdlYWtJbXBsKiBoYXNoVGFibGVEZWxl
dGVkVmFsdWUoKTsKIAogICAgIFdlYWtJbXBsKiBtX2ltcGw7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBW
ZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsKKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNp
bXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IHsKKyAgICB0eXBlZGVmIEpTQzo6V2Vh
azxUPiBTdG9yYWdlVHlwZTsKKworICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1
ZVR5cGU7CisgICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBu
dWxscHRyOyB9CisKKyAgICB0eXBlZGVmIFQqIFBlZWtUeXBlOworICAgIHN0YXRpYyBQZWVrVHlw
ZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0K
KyAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5
cGUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBXZWFrX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAkocmV2aXNpb24gMjA2
MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2Vha0Jsb2NrOjpzcGVjaWFsaXplZFZp
c2l0KENvbnRhaW4KICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGNvbnN0IEpTVmFs
dWUmIGpzVmFsdWUgPSB3ZWFrSW1wbC0+anNWYWx1ZSgpOwotICAgICAgICBpZiAoY29udGFpbmVy
LmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKHZlcnNpb24sIGpzVmFsdWUuYXNDZWxsKCkpKQor
ICAgICAgICBpZiAoY29udGFpbmVyLmlzTWFya2VkQ29uY3VycmVudGx5KHZlcnNpb24sIGpzVmFs
dWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICBp
ZiAoIXdlYWtIYW5kbGVPd25lci0+aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVu
a25vd24+Ojp3cmFwU2xvdCgmY29uc3RfY2FzdDxKU1ZhbHVlJj4oanNWYWx1ZSkpLCB3ZWFrSW1w
bC0+Y29udGV4dCgpLCB2aXNpdG9yKSkKQEAgLTE0NywxNyArMTQ3LDE0IEBAIHZvaWQgV2Vha0Js
b2NrOjpyZWFwKCkKICAgICAvLyBJZiB0aGlzIFdlYWtCbG9jayBkb2Vzbid0IGJlbG9uZyB0byBh
IENlbGxDb250YWluZXIsIHdlIHdvbid0IGV2ZW4gYmUgaGVyZS4KICAgICBBU1NFUlQobV9jb250
YWluZXIpOwogICAgIAotICAgIG1fY29udGFpbmVyLmZsaXBJZk5lY2Vzc2FyeSgpOwotCi0gICAg
Ly8gV2Ugb25seSByZWFwIGFmdGVyIG1hcmtpbmcuCi0gICAgQVNTRVJUKG1fY29udGFpbmVyLmlz
TWFya2VkKCkpOworICAgIEhlYXBWZXJzaW9uIHZlcnNpb24gPSBtX2NvbnRhaW5lci5oZWFwKCkt
Pm9iamVjdFNwYWNlKCkudmVyc2lvbigpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3
ZWFrSW1wbENvdW50KCk7ICsraSkgewogICAgICAgICBXZWFrSW1wbCogd2Vha0ltcGwgPSAmd2Vh
a0ltcGxzKClbaV07CiAgICAgICAgIGlmICh3ZWFrSW1wbC0+c3RhdGUoKSA+IFdlYWtJbXBsOjpE
ZWFkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKG1fY29udGFpbmVyLmlz
TWFya2VkKHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpKSB7CisgICAgICAgIGlmIChtX2Nv
bnRhaW5lci5pc01hcmtlZCh2ZXJzaW9uLCB3ZWFrSW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKSkg
ewogICAgICAgICAgICAgQVNTRVJUKHdlYWtJbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZl
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNs
dWRlICJXZWFrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE0OSwyMyAr
MTQ4LDQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJh
aXRzIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNl
OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFr
PFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IHsKLSAgICB0eXBlZGVm
IEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKLQotICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3Qg
RW1wdHlWYWx1ZVR5cGU7Ci0gICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7
IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICB0eXBlZGVmIFQqIFBlZWtUeXBlOwotICAgIHN0YXRp
YyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUu
Z2V0KCk7IH0KLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1
cm4gUGVla1R5cGUoKTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KICNlbmRpZiAvLyBX
ZWFrSW5saW5lc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJl
dmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgot
I2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSAi
TWFwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNYXBJdGVyYXRvclByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIk1hcFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgog
I2luY2x1ZGUgIk1hdGhPYmplY3QuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKICNpbmNsdWRl
ICJNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVz
Y3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCisjaW5jbHVkZSAiUHJv
dG90eXBlTWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCiAjaW5jbHVkZSAi
UmVqZWN0LmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb3RvdHlwZU1hcElubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4Nyw3IEBAIHR5cGVkZWYgY29uc3Qg
Y2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYodW5zaWduZWQsIGxhcmdlQWxsb2NhdGlvbkN1dG9m
ZiwgMTAwMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGR1bXBTaXplQ2xhc3Nl
cywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlQnVtcEFsbG9jYXRv
ciwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihib29sLCBsb29rRm9yRW1wdHlCbG9j
a3NJbk90aGVyQWxsb2NhdG9ycywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29s
LCBlYWdlcmx5VXBkYXRlVG9wQ2FsbEZyYW1lLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgXAogICAgIHYoYm9vbCwgdXNlT1NSRW50cnlUb0RGRywgdHJ1ZSwgTm9ybWFsLCBudWxscHRy
KSBcCkBAIC0zMDIsNyArMzAzLDYgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7
CiAgICAgdih1bnNpZ25lZCwgbnVtYmVyT2ZHQ01hcmtlcnMsIGNvbXB1dGVOdW1iZXJPZkdDTWFy
a2Vycyg3KSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwgb3BhcXVlUm9vdE1l
cmdlVGhyZXNob2xkLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGRvdWJsZSwgbWlu
SGVhcFV0aWxpemF0aW9uLCAwLjgsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYoZG91YmxlLCBt
aW5Db3BpZWRCbG9ja1V0aWxpemF0aW9uLCAwLjksIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
ZG91YmxlLCBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uLCAwLjksIE5vcm1hbCwgbnVsbHB0cikg
XAogICAgIHYodW5zaWduZWQsIHNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcywgMCwgTm9ybWFsLCAi
Zm9yY2UgYSBHQyBvbiBldmVyeSBOdGggc2xvdyBwYXRoIGFsbG9jLCB3aGVyZSBOIGlzIHNwZWNp
ZmllZCBieSB0aGlzIG9wdGlvbiIpIFwKICAgICB2KGJvb2wsIGRlZmVyR0NTaG91bGRDb2xsZWN0
V2l0aFByb2JhYmlsaXR5LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2UgcGVyZm9ybSBhIGNv
bGxlY3Rpb24gYmFzZWQgb24gZmxpcHBpbmcgYSBjb2luIGFjY29yZGluZyB0aGUgcHJvYmFiaWxp
dHkgaW4gdGhlICdkZWZlckdDUHJvYmFiaWxpdHknIG9wdGlvbiB3aGVuIERlZmVyR0MgaXMgZGVz
dHJ1Y3RlZC4iKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5
cGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3RvdHlwZU1hcC5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJQcm90b3R5cGVNYXBJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm90b3R5cGVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm90b3R5cGVNYXAuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDggQEAKICNpZm5kZWYgUHJvdG90eXBlTWFwX2gKICNkZWZpbmUgUHJvdG90eXBlTWFwX2gK
IAorI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNp
bmNsdWRlICJXZWFrR0NNYXAuaCIKICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtNDgs
NyArNTAsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBlbXB0
eVN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKEpTT2JqZWN0KiwgU3RydWN0
dXJlKik7CiAgICAgdm9pZCBjbGVhckVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpT
T2JqZWN0KiwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgYWRkUHJvdG90eXBlKEpTT2JqZWN0Kik7Ci0gICAgVHJpU3RhdGUgaXNQcm90b3R5cGUo
SlNPYmplY3QqKSBjb25zdDsgLy8gUmV0dXJucyBhIGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZS4KKyAg
ICBpbmxpbmUgVHJpU3RhdGUgaXNQcm90b3R5cGUoSlNPYmplY3QqKSBjb25zdDsgLy8gUmV0dXJu
cyBhIGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZS4KIAogcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIGNy
ZWF0ZUVtcHR5U3RydWN0dXJlKEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwg
Y29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7
CkBAIC01OCwxOCArNjAsNiBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZU1hcCBtX3N0cnVjdHVy
ZXM7CiB9OwogCi1pbmxpbmUgVHJpU3RhdGUgUHJvdG90eXBlTWFwOjppc1Byb3RvdHlwZShKU09i
amVjdCogb2JqZWN0KSBjb25zdAotewotICAgIGlmICghbV9wcm90b3R5cGVzLmNvbnRhaW5zKG9i
amVjdCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOwotCi0gICAgLy8gV2Uga25vdyB0
aGF0ICdvYmplY3QnIHdhcyB1c2VkIGFzIGEgcHJvdG90eXBlIGF0IG9uZSB0aW1lLCBzbyBiZQot
ICAgIC8vIGNvbnNlcnZhdGl2ZSBhbmQgc2F5IHRoYXQgaXQgbWlnaHQgc3RpbGwgYmUgc28uIChJ
dCB3b3VsZCBiZSBleHBlbnNpdmUKLSAgICAvLyB0byBmaW5kIG91dCBmb3Igc3VyZSwgYW5kIHdl
IGRvbid0IGtub3cgb2YgYW55IGNhc2VzIHdoZXJlIGJlaW5nIHByZWNpc2UKLSAgICAvLyB3b3Vs
ZCBpbXByb3ZlIHBlcmZvcm1hbmNlLikKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBQcm90b3R5cGVNYXBfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcElubGluZXMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5
cGVNYXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlByb3RvdHlwZU1hcC5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBUcmlTdGF0ZSBQcm90b3R5cGVNYXA6OmlzUHJvdG90
eXBlKEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Byb3RvdHlwZXMuY29u
dGFpbnMob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisKKyAgICAvLyBX
ZSBrbm93IHRoYXQgJ29iamVjdCcgd2FzIHVzZWQgYXMgYSBwcm90b3R5cGUgYXQgb25lIHRpbWUs
IHNvIGJlCisgICAgLy8gY29uc2VydmF0aXZlIGFuZCBzYXkgdGhhdCBpdCBtaWdodCBzdGlsbCBi
ZSBzby4gKEl0IHdvdWxkIGJlIGV4cGVuc2l2ZQorICAgIC8vIHRvIGZpbmQgb3V0IGZvciBzdXJl
LCBhbmQgd2UgZG9uJ3Qga25vdyBvZiBhbnkgY2FzZXMgd2hlcmUgYmVpbmcgcHJlY2lzZQorICAg
IC8vIHdvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UuKQorICAgIHJldHVybiBNaXhlZFRyaVN0YXRl
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiUmVnRXhwS2V5LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAj
aW5jbHVkZSAiV2Vhay5oIgotI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSA8YXJy
YXk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIwNjAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdl
cy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQu
aCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9y
aWdpbk1hcC5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0
b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NN
YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NN
YXAuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha0dDTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNyArMjcsNiBAQAogI2Rl
ZmluZSBXZWFrR0NNYXBfaAogCiAjaW5jbHVkZSAiV2Vhay5oIgotI2luY2x1ZGUgIldlYWtJbmxp
bmVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04
MSwxOSArODAsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkKLSAgICB7Ci0gICAgICAgIGl0ZXJh
dG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOwotICAgICAgICBpdGVyYXRvciBlbmQgPSBtX21hcC5l
bmQoKTsKLSAgICAgICAgaWYgKGl0ICE9IGVuZCAmJiAhaXQtPnZhbHVlKSAvLyBGb3VuZCBhIHpv
bWJpZSB2YWx1ZS4KLSAgICAgICAgICAgIHJldHVybiBlbmQ7Ci0gICAgICAgIHJldHVybiBpdDsK
LSAgICB9CisgICAgaW5saW5lIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KTsKIAot
ICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2Vha0dDTWFwKj4odGhpcyktPmZpbmQoa2V5KTsK
LSAgICB9CisgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5
KSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBmb3JF
YWNoKEZ1bmN0b3IgZnVuY3RvcikKQEAgLTEwNCwxMiArOTMsOSBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9tYXAuZW5kKCk7Ci0gICAgfQor
ICAgIGlubGluZSBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3Q7CiAKLSAg
ICB2b2lkIHBydW5lU3RhbGVFbnRyaWVzKCk7CisgICAgaW5saW5lIHZvaWQgcHJ1bmVTdGFsZUVu
dHJpZXMoKTsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwVHlwZSBtX21hcDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXBJbmxpbmVzLmgJKHJldmlz
aW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJIZWFwSW5s
aW5lcy5oIgogI2luY2x1ZGUgIldlYWtHQ01hcC5oIgorI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Nyw2ICs0OCwyOCBAQCBpbmxpbmUgV2Vha0dDTWFw
PEtleUFyZywgVmFsdWVBcmcsIEhhc2hBCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywg
dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0Fy
Zz4KK2lubGluZSB0eXBlbmFtZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywg
S2V5VHJhaXRzQXJnPjo6aXRlcmF0b3IgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hB
cmcsIEtleVRyYWl0c0FyZz46OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQoreworICAgIGl0ZXJh
dG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOworICAgIGl0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgp
OworICAgIGlmIChpdCAhPSBlbmQgJiYgIWl0LT52YWx1ZSkgLy8gRm91bmQgYSB6b21iaWUgdmFs
dWUuCisgICAgICAgIHJldHVybiBlbmQ7CisgICAgcmV0dXJuIGl0OworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBl
bmFtZSBLZXlUcmFpdHNBcmc+CitpbmxpbmUgdHlwZW5hbWUgV2Vha0dDTWFwPEtleUFyZywgVmFs
dWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46OmNvbnN0X2l0ZXJhdG9yIFdlYWtHQ01hcDxL
ZXlBcmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjpmaW5kKGNvbnN0IEtleVR5
cGUmIGtleSkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxXZWFrR0NNYXAqPih0aGlz
KS0+ZmluZChrZXkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZh
bHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+CitpbmxpbmUg
Ym9vbCBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6
Y29udGFpbnMoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAoreworICAgIHJldHVybiBmaW5kKGtl
eSkgIT0gbV9tYXAuZW5kKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5h
bWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KIE5F
VkVSX0lOTElORSB2b2lkIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlU
cmFpdHNBcmc+OjpwcnVuZVN0YWxlRW50cmllcygpCiB7CiAgICAgbV9tYXAucmVtb3ZlSWYoW10o
dHlwZW5hbWUgSGFzaE1hcFR5cGU6OktleVZhbHVlUGFpclR5cGUmIGVudHJ5KSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5j
bHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MDMxKQor
KysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAor
MjAxNi0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIE1h
a2UgTWFya2VkQmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9jYXRp
b24gYW5kIG1hcmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gY2hhbmdlIGhlcmUgaXMgdG8gYnJpbmcgYmFj
ayBGYXN0Qml0VmVjdG9yLmNwcCwgc28gdGhhdCBJIGNvdWxkIG91dGxpbmUgc29tZQorICAgICAg
ICBsYXJnZSBzbG93IHBhdGggZnVuY3Rpb25zLiBUaGlzIGFsc28gYWRkcyBzb21lIHV0aWxpdGll
cywgbGlrZSBhdG9taWNTZXRBbmRDaGVjaygpIGFuZAorICAgICAgICBpc0VtcHR5KCkuIFRoZSBH
QyB1c2VzIHRoZXNlLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9GYXN0Qml0VmVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnNl
dEVxdWFsc1Nsb3cpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpyZXNp
emVTbG93KToKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpG
YXN0Qml0VmVjdG9yV29yZE93bmVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpGYXN0Qml0
VmVjdG9yV29yZE93bmVyOjpyZXNpemUpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9ySW1w
bDo6aXNFbXB0eSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OmF0b21pY1NldEFuZENo
ZWNrKToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6b3BlcmF0b3JbXSk6IERlbGV0ZWQu
CisKIDIwMTYtMDktMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggaXNWYWxpZEVudW0gdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIEdD
QwpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyMDYwMzEpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAJCTBGNDU3MDQzMUJFNUI1OEYwMDYyQTYy
OSAvKiBEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovOyB9Owog
CQkwRjQ1NzA0NTFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5
IC8qIEJ1YmJsZVNvcnQuaCAqLzsgfTsKIAkJMEY3MjVDQUMxQzUwNDYxNjAwQUQ5NDNBIC8qIFJh
bmdlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLzsgfTsKKwkJMEY3QzVGQjYx
RDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZh
c3RCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFy
a2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi87IH07CiAJCTBG
ODI0QTY5MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyog
UGFya2luZ0xvdC5oICovOyB9OwogCQkwRjg3MTA1QTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9p
bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4
NzEwNTkxNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLzsgfTsKQEAgLTM2Niw2ICsz
NjcsNyBAQAogCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb21pbmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1YmJsZVNvcnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmdlU2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0
VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RCaXRW
ZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2NDFCNzQ0M0Ew
MDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQYXJraW5nTG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4
MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGFya2luZ0xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSYXdQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04ODAsNiArODgyLDcgQEAKIAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYgLyog
ZHRvYS5oICovLAogCQkJCTFBRUE4OEUxMUQ2QkJDRjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmgg
Ki8sCiAJCQkJQThBNDcyOUYxNTFBODI1QTAwNDEyM0ZGIC8qIEV4cG9ydE1hY3Jvcy5oICovLAor
CQkJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLywKIAkJ
CQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovLAogCQkJCUE4
QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLywKIAkJCQlBOEE0NzJB
MjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovLApAQCAtMTU5NCw2ICsxNTk3LDcg
QEAKIAkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QTQ3M0VDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y0MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1iZXJP
ZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAv
KiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y3MTUxQTgyNUIw
MDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDcg
QEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgRGF0YUxvZy5jcHAKICAgICBEYXRlTWF0aC5jcHAKICAg
ICBEZWNpbWFsTnVtYmVyLmNwcAorICAgIEZhc3RCaXRWZWN0b3IuY3BwCiAgICAgRmFzdE1hbGxv
Yy5jcHAKICAgICBGaWxlUHJpbnRTdHJlYW0uY3BwCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVyLmNw
cApJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmFzdEJpdFZlY3Rvci5oIgorCituYW1lc3BhY2UgV1RG
IHsKKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpzZXRFcXVhbHNTbG93KGNvbnN0IEZh
c3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKQoreworICAgIHVpbnQzMl90KiBuZXdBcnJheSA9
IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oCisgICAgICAgIGZhc3RDYWxsb2Mob3RoZXIuYXJyYXlM
ZW5ndGgoKSwgc2l6ZW9mKHVpbnQzMl90KSkpOworICAgIG1lbWNweShuZXdBcnJheSwgb3RoZXIu
bV93b3Jkcywgb3RoZXIuYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAgIGlm
IChtX3dvcmRzKQorICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKKyAgICBtX3dvcmRzID0gbmV3
QXJyYXk7CisgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOworfQorCit2b2lkIEZhc3RC
aXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZVNsb3coc2l6ZV90IG51bUJpdHMpCit7CisgICAgc2l6
ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsKKyAgICAK
KyAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2Ug
ZXhwZWN0IHRoZSBjb21tb24KKyAgICAvLyB1c2UgY2FzZSBmb3IgdGhpcyBtZXRob2QgdG8gYmUg
aW5pdGlhbGl6aW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3IuCisgICAgCisgICAgdWludDMy
X3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKG5ld0xlbmd0
aCwgc2l6ZW9mKHVpbnQzMl90KSkpOworICAgIG1lbWNweShuZXdBcnJheSwgbV93b3JkcywgYXJy
YXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRzKQorICAgICAg
ICBmYXN0RnJlZShtX3dvcmRzKTsKKyAgICBtX3dvcmRzID0gbmV3QXJyYXk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAg
LTkxLDE3ICs5MiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgRmFzdEJpdFZlY3RvcldvcmRPd25l
ciYgb3BlcmF0b3I9KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKQogICAgIHsK
LSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IG90aGVyLmFycmF5TGVuZ3RoKCk7Ci0gICAgICAgIGlm
IChsZW5ndGggPT0gYXJyYXlMZW5ndGgoKSkgewotICAgICAgICAgICAgbWVtY3B5KG1fd29yZHMs
IG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICBpZiAoYXJyYXlMZW5ndGgoKSAhPSBvdGhlci5hcnJheUxl
bmd0aCgpKQorICAgICAgICAgICAgc2V0RXF1YWxzU2xvdyhvdGhlcik7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1fd29yZHMsIGFycmF5TGVuZ3Ro
KCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICAgICAgICAgIG1fbnVtQml0cyA9IG90aGVyLm1f
bnVtQml0czsKICAgICAgICAgfQotICAgICAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNf
Y2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7Ci0g
ICAgICAgIG1lbWNweShuZXdBcnJheSwgb3RoZXIubV93b3JkcywgbGVuZ3RoICogc2l6ZW9mKHVp
bnQzMl90KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAgICAgICAgICAgZmFzdEZyZWUobV93
b3Jkcyk7Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsKLSAgICAgICAgbV9udW1CaXRzID0g
b3RoZXIubV9udW1CaXRzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIApAQCAt
MTQwLDE4ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXNpemUoc2l6ZV90IG51
bUJpdHMpCiAgICAgewotICAgICAgICBpZiAobnVtQml0cyA9PSBtX251bUJpdHMpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFk
IG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KLSAgICAgICAgLy8g
dXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0
aGUgYml0dmVjdG9yLgotICAgICAgICAKLSAgICAgICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RC
aXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsKLSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVp
bnQzMl90KSkpOwotICAgICAgICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3Ro
KCkgKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgaWYgKG1fd29yZHMpCi0gICAgICAgICAg
ICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAgICAg
ICBpZiAoYXJyYXlMZW5ndGgoKSAhPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cykp
CisgICAgICAgICAgICByZXNpemVTbG93KG51bUJpdHMpOwogICAgICAgICBtX251bUJpdHMgPSBu
dW1CaXRzOwogICAgIH0KICAgICAKQEAgLTE3MSw2ICsxNTcsOSBAQCBwdWJsaWM6CiAgICAgdWlu
dDMyX3QqIHdvcmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQogCiBwcml2YXRlOgorICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHNldEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRP
d25lciYgb3RoZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2l6ZVNsb3coc2l6
ZV90IG51bUJpdHMpOworICAgIAogICAgIHVpbnQzMl90KiBtX3dvcmRzIHsgbnVsbHB0ciB9Owog
ICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9OwpAQCAtMzIwLDYgKzMwOSwxNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IGFycmF5TGVuZ3Ro
KCk7IGluZGV4LS07KSB7CisgICAgICAgICAgICBpZiAobV93b3Jkcy53b3JkKGluZGV4KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAg
RmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3RvckFuZFdvcmRzPHR5cGVuYW1lIFdvcmRzOjpW
aWV3VHlwZSwgdHlwZW5hbWUgT3RoZXJXb3Jkczo6Vmlld1R5cGU+PiBvcGVyYXRvciYoY29uc3Qg
RmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTM4
MCw3ICszNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHdyaXR0ZW4gdGhpcyB3YXkgc28gdGhh
dCBpdCBwZXJmb3JtcyB3ZWxsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB2YWx1ZSBpcyBhIGNvbnN0
YW50LgogICAgICAgICB1aW50MzJfdCBza2lwVmFsdWUgPSAtKHN0YXRpY19jYXN0PHVpbnQzMl90
Pih2YWx1ZSkgXiAxKTsKICAgICAgICAgCi0gICAgICAgIHNpemVfdCBudW1Xb3JkcyA9IG1fd29y
ZHMuYXJyYXlMZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90IG51bVdvcmRzID0gZmFzdEJpdFZlY3Rv
ckFycmF5TGVuZ3RoKG1fd29yZHMubnVtQml0cygpKTsKICAgICAgICAgCiAgICAgICAgIHNpemVf
dCB3b3JkSW5kZXggPSBzdGFydEluZGV4IC8gMzI7CiAgICAgICAgIHNpemVfdCBzdGFydEluZGV4
SW5Xb3JkID0gc3RhcnRJbmRleCAtIHdvcmRJbmRleCAqIDMyOwpAQCAtNDcxLDYgKzQ2OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV93b3Jkcy5jbGVhckFsbCgpOwogICAgIH0KIAorICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgY29udGVudHMgb2YgdGhpcyBiaXR2ZWN0b3IgY2hhbmdlZC4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIGJvb2wgc2V0QW5kQ2hlY2soY29u
c3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQogICAgIHsKQEAgLTU1MCw2
ICs1NDksMjggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKICAg
ICB9CisgICAgCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBjaGFuZ2VkLgor
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdG9taWNTZXRBbmRDaGVjayhzaXplX3QgaW5kZXgsIGJv
b2wgdmFsdWUpCisgICAgeworICAgICAgICB1aW50MzJfdCogcG9pbnRlciA9ICZtX3dvcmRzLndv
cmQoaW5kZXggPj4gNSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChpbmRleCAmIDMx
KTsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgdWludDMyX3Qgb2xkVmFsdWUgPSAq
cG9pbnRlcjsKKyAgICAgICAgICAgIHVpbnQzMl90IG5ld1ZhbHVlOworICAgICAgICAgICAgaWYg
KHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKG9sZFZhbHVlICYgbWFzaykKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gb2xk
VmFsdWUgfCBtYXNrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAo
IShvbGRWYWx1ZSAmIG1hc2spKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSAmIH5tYXNrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHdlYWtDb21wYXJlQW5kU3dhcChwb2ludGVyLCBvbGRWYWx1ZSwg
bmV3VmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0dDT2JzZXJ2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
R0NPYnNlcnZhdGlvbi5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvR0NPYnNlcnZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJHQ09ic2VydmF0aW9uLmgiCiAKICNpbmNsdWRlIDxoZWFwL0hlYXBJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289232</attachid>
            <date>2016-09-19 08:56:21 -0700</date>
            <delta_ts>2016-09-19 10:48:28 -0700</delta_ts>
            <desc>fixed looking for empty blocks</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>163142</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNzZXMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3dpdGNoaW5nLXNpemUtY2xh
c3Nlcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9zd2l0Y2hp
bmctc2l6ZS1jbGFzc2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgZm9yICh2YXIgaiA9IDA7IGogPCAxMDAwMDA7
ICsraikKKyAgICAgICAgbmV3IEFycmF5KDEwICogaSk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNjggQEAKKzIwMTYtMDktMTYgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE1hcmtlZEJsb2NrIHN0
YXRlIHRyYWNraW5nIHN1cHBvcnQgb3ZlcmxhcHBlZCBhbGxvY2F0aW9uIGFuZCBtYXJraW5nIHN0
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1
ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIENvbmN1cnJlbnQgR0NzIG11c3QgYWxsb3cgZm9yIG11dGF0aW9uIGFuZCBhbGxvY2F0aW9u
IGR1cmluZyBjb2xsZWN0aW9uLiBXZSBhbHJlYWR5IGtub3cKKyAgICAgICAgaG93IHRvIG11dGF0
ZSBkdXJpbmcgY29sbGVjdGlvbi4gV2UgaGF2ZSBhIHdyaXRlIGJhcnJpZXIgZm9yIHRoYXQuIEFs
bG9jYXRpb24gZHVyaW5nCisgICAgICAgIGNvbGxlY3Rpb24gaXMgbW9yZSBpbnZvbHZlZDogdGhl
IGNvbGxlY3RvciBtb2RpZmllcyB0aGUgdGhlIG1hcmsgYml0cywgYXMgd2VsbCBhcyBvdGhlcgor
ICAgICAgICBraW5kcyBvZiBNYXJrZWRCbG9jayBzdGF0ZSwgaW4tcGxhY2UgZHVyaW5nIGEgY29s
bGVjdGlvbi4gVGhlIGFsbG9jYXRvciB1c2VzIHRoYXQgc2FtZQorICAgICAgICBNYXJrZWRCbG9j
ayBzdGF0ZSB0byBkZWNpZGUgd2hpY2ggcmVnaW9ucyBvZiBtZW1vcnkgYXJlIGZyZWUuIFRoaXMg
d29ya3MgaWYgdGhlIGFsbG9jYXRvcgorICAgICAgICBuZXZlciBydW5zIHdoaWxlIHRoZSBjb2xs
ZWN0b3IgaXMgcnVubmluZywgYnV0IGlmIHdlIHdhbnQgdG8gYWxsb3cgdGhlbSB0byBydW4gYXQg
dGhlIHNhbWUKKyAgICAgICAgdGltZSwgdGhlbiB3ZSBuZWVkIHRvIGhhdmUgdHdvIHZlcnNpb25z
IG9mIHRoZSBzdGF0ZTogb25lIHZlcnNpb24gYnVpbHQgdXAgYnkgdGhlCisgICAgICAgIGNvbGxl
Y3RvciBhbmQgYW5vdGhlciBjb25zdW1lZCBieSB0aGUgYWxsb2NhdG9yLiBXZSBjbGVhciB0aGUg
Y29sbGVjdG9yIHN0YXRlIGF0IHRoZQorICAgICAgICBiZWdpbm5pbmcgb2YgY29sbGVjdGlvbiwg
YW5kIHNwbGF0IHRoZSBjb2xsZWN0b3Igc3RhdGUgb250byB0aGUgYWxsb2NhdG9yIHN0YXRlIGFm
dGVyCisgICAgICAgIGNvbGxlY3Rpb24uCisgICAgICAgIAorICAgICAgICBUaGlzIGNvdWxkIGJl
IHN1cGVyIGV4cGVuc2l2ZSwgYnV0IHdlIGNhbiBtYWtlIGl0IGNoZWFwIHdpdGggc29tZSBjbGV2
ZXJuZXNzLiBUaGUgYmlnZ2VzdAorICAgICAgICBvYnNlcnZhdGlvbiBpcyBqdXN0IHRoYXQgbW9z
dCBvZiB0aGUgc3RhdGUgaXMgYSBoYW5kZnVsIG9mIGJpdHMgcGVyIGJsb2NrOiBpcyB0aGUgYmxv
Y2sKKyAgICAgICAgZnJlZS1saXN0ZWQ/IGlzIGl0IGNvbXBsZXRlbHkgZnVsbD8gY29tcGxldGVs
eSBlbXB0eT8gaW4gdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIncworICAgICAgICBzbmFwc2hvdD8g
aXMgaXQgcmV0aXJlZD8gaXMgaXQgaW4gZWRlbj8gVGhlcmUgaXMgYWxzbyBzdGF0ZSBpbnNpZGUg
YmxvY2tzLCBsaWtlIHRoZSBtYXJrCisgICAgICAgIGJpdHMsIGJ1dCBJIGhhdmUgYSBzb2xpZCBw
bGFuIHRoZXJlIGFuZCBJJ2xsIHNhdmUgaXQgZm9yIGFub3RoZXIgcGF0Y2guIE9uY2Ugd2Ugdmll
dyB0aGUKKyAgICAgICAgc3RhdGUgb2YgYmxvY2tzIGFzIGJpdHMsIHdlIGNhbiBwdXQgdGhhdCBz
dGF0ZSBpbnRvIGJpdHZlY3RvcnMsIHNvIHRoYXQgaWYgdGhlIGNvbGxlY3RvcgorICAgICAgICBu
ZWVkcyB0byB0cmFuc2Zvcm0gdGhlIHN0YXRlIG9mIHNvbWUgYmxvY2tzLCBpdCBjYW4gZG8gaXQg
d2l0aCBhIHNpbmdsZSBvcGVyYXRpb24gb3ZlcgorICAgICAgICBiaXR2ZWN0b3JzLiBJIGxpa2Ug
dG8gdGhpbmsgb2YgdGhpcyBhcyAzMi13YXkgcGFyYWxsZWxpemluZyBibG9jayBvcGVyYXRpb25z
LCBzaW5jZQorICAgICAgICBkb2luZyBvbmUgb3BlcmF0aW9uIG9uIGEgMzItYml0IHdvcmQgaW4g
b25lIG9mIHRob3NlIGJpdHZlY3RvcnMgaW5zdGFudGx5IGFmZmVjdHMgMzIKKyAgICAgICAgYmxv
Y2tzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29udmVydHMgYWxsIHByZXZpb3Vz
IGNvbGxlY3Rpb25zIG9mIE1hcmtlZEJsb2NrcywgYWxvbmcgd2l0aCB0aGUgTWFya2VkQmxvY2sK
KyAgICAgICAgc3RhdGUsIGludG8gOCBiaXR2ZWN0b3JzIChsaXZlLCBlbXB0eSwgYWxsb2NhdGVk
LCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBlZGVuLCB1bnN3ZXB0LAorICAgICAgICBtYXJraW5n
Tm90RW1wdHksIGFuZCBtYXJraW5nUmV0aXJlZCkuIFRoZSBiaXR2ZWN0b3JzIHNlcGFyYXRlIGFs
bG9jYXRvciBzdGF0ZSAoZW1wdHksCisgICAgICAgIGFsbG9jYXRlZCwgY2FuQWxsb2NhdGVCdXRO
b3RFbXB0eSkgZnJvbSBtYXJraW5nIHN0YXRlIChtYXJraW5nTm90RW1wdHksIG1hcmtpbmdSZXRp
cmVkKS4KKyAgICAgICAgCisgICAgICAgIEFzIGEgbmljZSBzaWRlLWVmZmVjdCBvZiBzd2l0Y2hp
bmcgdG8gYml0dmVjdG9ycywgd2UgZ2V0IHNpemUgY2xhc3MgcmViYWxhbmNpbmcgZm9yIGZyZWUu
CisgICAgICAgIEl0IHVzZWQgdG8gYmUgdGhhdCBpZiBhIE1hcmtlZEFsbG9jYXRvciBoYWQgYW4g
ZW1wdHkgYmxvY2ssIHdlIHdvdWxkIG9ubHkgYWxsb3cgdGhhdAorICAgICAgICBtZW1vcnkgdG8g
YmUgcmV1c2VkIGJ5IGEgZGlmZmVyZW50IE1hcmtlZEFsbG9jYXRvciBpZiB3ZSBkaWQgYW4gaW5j
cmVtZW50YWwgc3dlZXAgb3IgYQorICAgICAgICBmdWxsIGVhZ2VyIHN3ZWVwLiBOb3cgd2UgaHVu
dCBkb3duIGFsbCBkZXN0cnVjdG9ybGVzcyBlbXB0eSBibG9ja3MgYmVmb3JlIGFsbG9jYXRpbmcg
bmV3CisgICAgICAgIE1hcmtlZEJsb2Nrcy4gSXQgd291bGQgYmUgcmVsYXRpdmVseSBlYXN5IHRv
IGFsc28gaHVudCBkb3duIGRlc3RydWN0b3IgZW1wdHkgYmxvY2tzLCBidXQKKyAgICAgICAgdGhl
IHRoZW9yeSBpcyB0aGF0IHRob3NlIG1pZ2h0IGJlIGV4cGVuc2l2ZSB0byBzd2VlcCwgc28gaXQg
bWlnaHQgc3RpbGwgYmUgYmV0dGVyIHRvIGxlYXZlCisgICAgICAgIHRob3NlIHRvIHRoZSBpbmNy
ZW1lbnRhbCBzd2VlcGVyLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcGVyZi1u
ZXV0cmFsIGFsbCBhcm91bmQuIEkgZGlkIHNvbWUgdGVzdHMgd2l0aCB0d28gZGlmZmVyZW50IGtp
bmRzIG9mCisgICAgICAgIGFsbG9jYXRpb24gc3RyYXRlZ2llcyAtIHNvbWV0aGluZyB0aGF0IGlz
IHNvbWV3aGF0IGVhc2llciB0byBkbyBub3cgdGhhdCB5b3UgY2FuIGxvb2sgZm9yCisgICAgICAg
IGJsb2NrcyB0aGF0IGFyZSBjYW5kaWRhdGVzIGZvciBhbGxvY2F0aW9uIGJ5IGp1c3Qgc2Nhbm5p
bmcgc29tZSBiaXR2ZWN0b3JzLiBJIHRyaWVkIHR3bworICAgICAgICB2YXJpYW50czoKKyAgICAg
ICAgCisgICAgICAgIC0gQWxsb2NhdGUgb3V0IG9mIG5vbi1lbXB0eSBibG9ja3MgZmlyc3QsIGxl
YXZpbmcgZW1wdHkgYmxvY2tzIGZvciBsYXN0IGluIGNhc2UgYQorICAgICAgICAgIGRpZmZlcmVu
dCBhbGxvY2F0b3IgbmVlZGVkIHRoZW0uIFRoaXMgaXMgc29ydCBvZiBhIGJlc3QtZml0IHN0cmF0
ZWd5LiBJIHRyaWVkIHRoaXMKKyAgICAgICAgICBmaXJzdCwgYW5kIGl0IGNhbiBiZSBleHByZXNz
ZWQgYXM6CisgICAgICAgICAgCisgICAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0gbV9jYW5B
bGxvY2F0ZUJ1dE5vdEVtcHR5LmZpbmRCaXQobV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKQorICAg
ICAgICAKKyAgICAgICAgLSBBbGxvY2F0ZSBvdXQgb2YgbG93ZXItaW5kZXhlZCBibG9ja3MgZmly
c3QsIHRyZWF0aW5nIGVtcHR5IGFuZCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5CisgICAgICAgICAg
YmxvY2tzIGVxdWFsbHkuIFRoaXMgaXMgc29ydCBvZiBhIGZpcnN0LWZpdCBzdHJhdGVneS4gVGhp
cyBpcyB3aGF0IEkgZW5kZWQgdXAgc2V0dGxpbmcKKyAgICAgICAgICBvbiwgYW5kIGl0IGNhbiBi
ZSBleHByZXNzZWQgYXM6CisgICAgICAgICAgCisgICAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29y
ID0gKG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSB8IG1fZW1wdHkpLmZpbmRCaXQobV9hbGxvY2F0
aW9uQ3Vyc29yLCB0cnVlKQorICAgICAgICAKKyAgICAgICAgVGhlIGJlc3QtZml0IHN0cmF0ZWd5
IG1lYW50IDElIHJlZ3Jlc3Npb25zIGluIExvbmdTcGlkZXIgYW5kIE9jdGFuZSBvdmVyYWxsLCBh
bmQgYSAxMSUKKyAgICAgICAgcmVncmVzc2lvbiBvbiBPY3RhbmUvZWFybGV5LiBGaXJzdC1maXQg
bWVhbnMgcGVyZi1uZXV0cmFsaXR5LiBNb3N0IGdyZWF0IGFsbG9jYXRvcnMgc2tldworICAgICAg
ICB0b3dhcmRzIGZpcnN0LWZpdCBiZWNhdXNlIGl0J3MgZW1waXJpY2FsbHkgYmV0dGVyLCBzbyB0
aGlzIHJlc3VsdCBpcyBub3Qgc3VycHJpc2luZy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIu
Y3BwOgorICAgICAgICAqIGhlYXAvQ2VsbENvbnRhaW5lci5oOgorICAgICAgICAqIGhlYXAvQ2Vs
bENvbnRhaW5lcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6dm0pOgor
ICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjpoZWFwKToKKyAgICAgICAgKEpTQzo6Q2VsbENv
bnRhaW5lcjo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6Q2VsbENv
bnRhaW5lcjo6YWJvdXRUb01hcmspOgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjppc01h
cmtlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmZsaXBJZk5lY2Vz
c2FyeSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHA6Cisg
ICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6YmVnaW5NYXJraW5n
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3RBbGxHYXJiYWdlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEltcGwpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpIZWFwOjp6b21iaWZ5
RGVhZE9iamVjdHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcjo6
TWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9ja1NuYXBzaG90RnVuY3Rvcjo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkhlYXA6OnJlc2V0QWxsb2NhdG9ycyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFw
Lmg6CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjpp
c01hcmtlZCk6CisgICAgICAgIChKU0M6OkhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6dGVzdEFuZFNldE1hcmtlZCk6CisgICAgICAgICogaGVhcC9IZWFw
U3RhdGlzdGljcy5jcHA6CisgICAgICAgICogaGVhcC9IZWFwVXRpbC5oOgorICAgICAgICAoSlND
OjpIZWFwVXRpbDo6ZmluZEdDT2JqZWN0UG9pbnRlcnNGb3JNYXJraW5nKToKKyAgICAgICAgKEpT
Qzo6SGVhcFV0aWw6OmlzUG9pbnRlckdDT2JqZWN0SlNDZWxsKToKKyAgICAgICAgKiBoZWFwL0hl
YXBWZXJpZmllci5jcHA6CisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOgor
ICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcik6Cisg
ICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6ZG9Td2VlcCk6CisgICAgICAgIChKU0M6
OkluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2spOgorICAgICAgICAoSlNDOjpJbmNy
ZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRh
bFN3ZWVwZXI6OndpbGxGaW5pc2hTd2VlcGluZyk6CisgICAgICAgICogaGVhcC9JbmNyZW1lbnRh
bFN3ZWVwZXIuaDoKKyAgICAgICAgKiBoZWFwL0xhcmdlQWxsb2NhdGlvbi5oOgorICAgICAgICAo
SlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxv
Y2F0aW9uOjppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2Nh
dGlvbjo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxv
Y2F0aW9uOjphYm91dFRvTWFyayk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNN
YXJrZWREdXJpbmdXZWFrVmlzaXRpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMYXJnZUFs
bG9jYXRpb246OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Okxhcmdl
QWxsb2NhdGlvbjo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyk6IERlbGV0ZWQuCisgICAg
ICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxv
Y2F0b3I6Ok1hcmtlZEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6
aXNQYWdlZE91dCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6ZmluZEVtcHR5Qmxv
Y2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91dENv
bGxlY3RpbmdJbXBsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUlu
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlSW1wbCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVCbG9jayk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0
b3I6OnJlbW92ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzdG9wQWxs
b2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cHJlcGFyZUZvckFsbG9j
YXRpb24pOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6Omxhc3RDaGFuY2VUb0ZpbmFs
aXplKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpiZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVj
dGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6ZW5kTWFya2luZyk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RGb3JFZGVuQ29sbGVjdGlvbik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RGb3JGdWxsQ29sbGVjdGlvbik6
CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6ZmluZEJsb2NrVG9Td2VlcCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OnNocmluayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YXNzZXJ0
U25hcHNob3RFbXB0eSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6ZHVtcCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6ZHVtcEJpdHMpOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OnJldGlyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFs
bG9jYXRvcjo6ZmlsdGVyTmV4dEJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpzZXROZXh0QmxvY2tUb1N3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQWxsb2NhdG9yOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRB
bGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQml0VmVj
dG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQml0VmVjdG9yV2l0
aE5hbWUpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6Om5leHRBbGxvY2F0b3IpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnNldE5leHRBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCbG9jayk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZyk6IERlbGV0ZWQuCisgICAgICAgICogaGVh
cC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjp0cnlDcmVhdGUp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUpOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjp+SGFuZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6Ok1hcmtlZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3
ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxl
Y3RTY3JpYmJsZU1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2Vl
cEhlbHBlclNlbGVjdEVtcHR5TW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RmxpcE1vZGUpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjp1bnN3ZWVwV2l0aE5vTmV3bHlBbGxv
Y2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzZXRJc0ZyZWVMaXN0
ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZyk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXpl
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxsb2NhdGluZyk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3cpOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
Ojppc01hcmtlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRD
b25zdW1lRnJlZUxpc3QpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6bWFya0NvdW50KToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNFbXB0eSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpub3RlTWFya2VkU2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6OnJlbW92ZUZyb21BbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZyb21BbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc0xpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5U2xvdyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OndpbGxSZW1vdmVCbG9j
ayk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOiBEZWxldGVkLgorICAg
ICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6aXNGcmVlTGlzdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
aW5kZXgpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6YWJvdXRUb01hcmspOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6aXNNYXJrZWRDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OkhhbmRsZTo6aXNPbkJsb2Nrc1RvU3dlZXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzZXRJc09uQmxvY2tzVG9Td2VlcCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5RHVy
aW5nTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OmZsaXBGb3JFZGVuQ29sbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjppc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoRGVhZENlbGwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc1N3ZWVwaW5nKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNBbGxvY2F0ZWQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZCk6IERlbGV0ZWQu
CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaDogQWRkZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjpmb3JFYWNoTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
Ojpmb3JFYWNoRGVhZENlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6cmVzZXRWZXJz
aW9uKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFy
a2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9j
YXRlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnRyeUFsbG9jYXRlKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnBy
ZXBhcmVGb3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNocmluayk6
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkU3BhY2U6OmJlZ2luTWFya2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjplbmRNYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmRpZEFsbG9j
YXRlSW5CbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmaW5kRW1wdHlCbG9jayk6
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzbmFwc2hvdCk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjphc3NlcnRTbmFwc2hvdEVtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmR1bXBCaXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpWZXJpZnlNYXJrZWQ6Om9wZXJhdG9yKCkpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZmxpcCk6IERlbGV0ZWQuCisgICAgICAgICog
aGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6bmV4dFZlcnNp
b24pOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zmlyc3RBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6YmxvY2tzV2l0aE5ld09iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6c2V0SXNNYXJraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFy
a2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2Vk
U3BhY2VJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFj
aExpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbCk6
CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNp
dG9yOjpzZXRNYXJrZWRBbmRBcHBlbmRUb01hcmtTdGFjayk6CisgICAgICAgIChKU0M6OlNsb3RW
aXNpdG9yOjptYXJrQXV4aWxpYXJ5KToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIGhlYXAvV2Vhay5oOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPEpTQzo6V2VhazxUPj46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRz
PEpTQzo6V2VhazxUPj46OnBlZWspOgorICAgICAgICAqIGhlYXAvV2Vha0Jsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Vha0Jsb2NrOjpzcGVjaWFsaXplZFZpc2l0KToKKyAgICAgICAgKEpTQzo6
V2Vha0Jsb2NrOjpyZWFwKToKKyAgICAgICAgKiBoZWFwL1dlYWtJbmxpbmVzLmg6CisgICAgICAg
IChXVEY6Okhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+Pjo6ZW1wdHlWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+Pjo6cGVlayk6IERlbGV0ZWQuCisg
ICAgICAgICogaml0L0pJVFRodW5rcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlTWFwLmg6CisgICAgICAgICogcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtHQ01hcC5o
OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwOgorCiAyMDE2LTA5LTE2
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgdGVzdDI2
MjogVmFyaW91cyBDb25zdHJ1Y3RvcnMgbGVuZ3RoIHByb3BlcnRpZXMgc2hvdWxkIGJlIGNvbmZp
Z3VyYWJsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNjAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OTgsNiArNDk4LDggQEAKIAkJMEY3QzM5
RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBS
ZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdF
eHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5o
ICovOyB9OwogCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBDNTVC
MDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07CisJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVF
MiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI3MUQ4ODhBMDEwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lu
bGluZXMuaCAqLzsgfTsKKwkJMEY3QzVGQkExRDg4OTUwNzAwNDRGNUUyIC8qIE1hcmtlZFNwYWNl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovOyB9Owog
CQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUg
LyogQnlWYWxJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4
MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9
OwogCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUx
NjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTc2LDYgKzU3OCw3IEBACiAJ
CTBGOUZCNEY0MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZCNEYyMTdGQ0I5
MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCAqLzsgfTsKIAkJMEY5RkI0RjUx
N0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAv
KiBERkdTdGFja0xheW91dFBoYXNlLmggKi87IH07CiAJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFF
MCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQTEzMTcxMUQ4REQ3MkIwMEVD
MTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkExMzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBl
TWFwSW5saW5lcy5oICovOyB9OwogCQkwRkEyQzE3QjE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1
bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQTJDMTc5MTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwICovOyB9
OwogCQkwRkEyQzE3QzE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEyQzE3QTE3RDdDRjg0
MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZBNTgxQkExNTBFOTUyQzAwQjlBMkQ5IC8qIERGR05v
ZGVGbGFncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLzsgfTsKQEAg
LTI3MzEsNiArMjczNCw4IEBACiAJCTBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUx
IC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5oOyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFy
a2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtl
ZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCOTFE
ODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1
QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgwOCw2ICsyODEzLDcgQEAKIAkJMEY5RkI0RjIxN0ZD
QjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHBhdGggPSBkZmcv
REZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0YWNrTGF5b3V0UGhhc2UuaDsgcGF0aCA9IGRm
Zy9ERkdTdGFja0xheW91dFBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFB1dEtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZB
MTMxNzAxRDhERDcyOTAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdG90eXBlTWFwSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkEyQzE3OTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5l
clV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RSdW5u
ZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTJDMTdBMTdEN0NG
ODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZUZsYWdzLmNwcDsgcGF0aCA9IGRmZy9E
RkdOb2RlRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMzOCw5ICs1
MzQ0LDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRv
ci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAg
Ki8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggKi8sCisJ
CQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovLAog
CQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICovLAogCQkJ
CTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJCQkJMTRE
MkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMEY3QzVGQjkx
RDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0MkQ2RjBF
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBGMTM1MzlB
NDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlBRERCMUY2MjE4RDc3REI3MDA5QjU4
QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNjA3Niw2ICs2MDg0LDcgQEAKIAkJCQk2NUMw
MkZCQjA2Mzc0NjJBMDAzRTdFRTYgLyogUHJvdGVjdC5oICovLAogCQkJCTE0RDg0NEEyMTZBQTJD
NzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuY3BwICovLAogCQkJCTE0RDg0NEEzMTZBQTJDNzAw
MEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuaCAqLywKKwkJCQkwRkExMzE3MDFEOERENzI5MDBFQzEz
MEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5oICovLAogCQkJCTc5QjAwQ0I4MUM2QUIwN0UwMDg4
QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQk3OUIwMENCOTFDNkFCMDdFMDA4
OEM2NUQgLyogUHJveHlDb25zdHJ1Y3Rvci5oICovLAogCQkJCTc5QjAwQ0JBMUM2QUIwN0UwMDg4
QzY1RCAvKiBQcm94eU9iamVjdC5jcHAgKi8sCkBAIC03Mzk0LDYgKzc0MDMsNyBAQAogCQkJCTBG
NjZFMTZCMTRERjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZCOTIxODE2RDAyRUIyMDA1NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3Np
dGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQjgxRDg4OEEwQzAwNDRGNUUyIC8qIE1h
cmtlZEJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTIxQUIzRDhCRTAw
QkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkREODE0MUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNDg1MzIyMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0aE1v
ZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzg4Nyw2ICs3ODk3LDcgQEAKIAkJCQk4NkUzQzYxNDE2
N0JBQkQ3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjRBQ0FG
MTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkExMzE3MTFEOERENzJCMDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2
NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyog
SlNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhD
IC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkyMiw3
IEBACiAJCQkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0
RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2
NyAvKiBBcml0aFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0Mw
MDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3
QzVGQkExRDg4OTUwNzAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0Mg
LyogSlNJbnB1dHMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0ludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dy
YXBwZXJfaGVhZGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5w
eQkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVp
bHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw5ICs2MSw4IEBAIGNsYXNzIEJ1aWx0aW5zSW50ZXJuYWxzV3JhcHBl
ckhlYWRlckdlbmUKIAogICAgIGRlZiBnZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVz
KHNlbGYpOgogICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCi0gICAgICAgICAgICAoWyJXZWJD
b3JlIl0sCi0gICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1ZNLmgi
KSwKLSAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sICgiSmF2YVNjcmlw
dENvcmUiLCAiaGVhcC9XZWFrSW5saW5lcy5oIikpLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJd
LCAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvVk0uaCIpKQogICAgICAgICBdCiAgICAgICAg
IGZvciBvYmplY3QgaW4gc2VsZi5pbnRlcm5hbHM6CiAgICAgICAgICAgICBoZWFkZXJfaW5jbHVk
ZXMuYXBwZW5kKChbIldlYkNvcmUiXSwgKCJXZWJDb3JlIiwgb2JqZWN0Lm9iamVjdF9uYW1lICsg
IkJ1aWx0aW5zLmgiKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgogI2luY2x1ZGUgIlZNRW50cnlT
Y29wZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIu
aAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENv
bnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTIgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK2NsYXNzIEhlYXA7CiBjbGFzcyBIZWFwQ2VsbDsKIGNsYXNzIExhcmdlQWxsb2Nh
dGlvbjsKIGNsYXNzIE1hcmtlZEJsb2NrOwogY2xhc3MgV2Vha1NldDsKK2NsYXNzIFZNOwogCiB0
eXBlZGVmIHVpbnQzMl90IEhlYXBWZXJzaW9uOwogCkBAIC01Niw2ICs1OCw5IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogICAgIAorICAgIFZNKiB2bSgpIGNvbnN0OworICAgIEhlYXAqIGhlYXAo
KSBjb25zdDsKKyAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gISFtX2VuY29kZWRQb2ludGVyOyB9CiAgICAgCiAgICAgYm9vbCBpc01hcmtlZEJsb2NrKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmNvZGVkUG9pbnRlciAmJiAhKG1fZW5jb2RlZFBvaW50ZXIgJiBp
c0xhcmdlQWxsb2NhdGlvbkJpdCk7IH0KQEAgLTczLDEzICs3OCwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAqYml0d2lzZV9jYXN0PExhcmdlQWxsb2NhdGlvbio+KG1fZW5jb2RlZFBvaW50
ZXIgLSBpc0xhcmdlQWxsb2NhdGlvbkJpdCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZmxpcElm
TmVjZXNzYXJ5KEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSgpOworICAg
IHZvaWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24pOwogICAgIGJvb2wgbmVlZHNGbGlwKCkgY29u
c3Q7CiAgICAgCi0gICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwogICAgIGJvb2wgaXNNYXJrZWQo
SGVhcENlbGwqKSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkKEhlYXBWZXJzaW9uLCBIZWFwQ2Vs
bCopIGNvbnN0OwogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKikg
Y29uc3Q7CisgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIEhl
YXBDZWxsKikgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkKCk7CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXJJbmxpbmVz
LmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxD
b250YWluZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE0ICsyOSwyMCBAQAogI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkxhcmdlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUg
Ik1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSAiVk0uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlu
bGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKCkgY29uc3QKK2lubGluZSBWTSogQ2Vs
bENvbnRhaW5lcjo6dm0oKSBjb25zdAogewogICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbWFya2VkQmxvY2soKS5oYW5kbGUoKS5p
c01hcmtlZCgpOworICAgICAgICByZXR1cm4gbGFyZ2VBbGxvY2F0aW9uKCkudm0oKTsKKyAgICBy
ZXR1cm4gbWFya2VkQmxvY2soKS52bSgpOworfQorCitpbmxpbmUgSGVhcCogQ2VsbENvbnRhaW5l
cjo6aGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICZ2bSgpLT5oZWFwOwogfQogCiBpbmxpbmUg
Ym9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwQ2VsbCogY2VsbCkgY29uc3QKQEAgLTQ2
LDYgKzUyLDEzIEBAIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXAKICAg
ICByZXR1cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZChjZWxsKTsKIH0KIAoraW5saW5lIGJvb2wg
Q2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgSGVhcENlbGwqIGNl
bGwpIGNvbnN0Cit7CisgICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCisgICAgICAgIHJldHVy
biBsYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygp
LmlzTWFya2VkKHZlcnNpb24sIGNlbGwpOworfQorCiBpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVy
Ojppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAg
aWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCkBAIC01Myw2ICs2NiwxMyBAQCBpbmxpbmUgYm9vbCBD
ZWxsQ29udGFpbmVyOjppc01hcmtlZE9yTmV3CiAgICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNN
YXJrZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOwogfQogCitpbmxpbmUgYm9vbCBDZWxsQ29udGFp
bmVyOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgSGVhcENl
bGwqIGNlbGwpIGNvbnN0Cit7CisgICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCisgICAgICAg
IHJldHVybiBsYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsKKyAg
ICByZXR1cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQodmVyc2lvbiwg
Y2VsbCk7Cit9CisKIGlubGluZSB2b2lkIENlbGxDb250YWluZXI6Om5vdGVNYXJrZWQoKQogewog
ICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24oKSkKQEAgLTczLDE2ICs5MywxMCBAQCBpbmxpbmUg
V2Vha1NldCYgQ2VsbENvbnRhaW5lcjo6d2Vha1NldCgpCiAgICAgcmV0dXJuIG1hcmtlZEJsb2Nr
KCkud2Vha1NldCgpOwogfQogCi1pbmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNl
c3NhcnkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgaWYgKCFpc0xhcmdlQWxsb2Nh
dGlvbigpKQotICAgICAgICBtYXJrZWRCbG9jaygpLmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lv
bik7Ci19Ci0KLWlubGluZSB2b2lkIENlbGxDb250YWluZXI6OmZsaXBJZk5lY2Vzc2FyeSgpCitp
bmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjphYm91dFRvTWFyayhIZWFwVmVyc2lvbiBoZWFwVmVy
c2lvbikKIHsKICAgICBpZiAoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIG1hcmtlZEJs
b2NrKCkuZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgICAgIG1hcmtlZEJsb2NrKCkuYWJvdXRUb01h
cmsoaGVhcFZlcnNpb24pOwogfQogCiBpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjpuZWVkc0Zs
aXAoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZl
Um9vdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNl
cnZhdGl2ZVJvb3RzLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL09TQWxsb2NhdG9yLmg+CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgi
CiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCisjaW5jbHVkZSAiTWFya2Vk
U3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUg
IlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKQEAgLTUyNiwxMSAr
NTI3LDkgQEAgdm9pZCBIZWFwOjpiZWdpbk1hcmtpbmcoKQogICAgIH0KICAgICAKICAgICB7Ci0g
ICAgICAgIFRpbWluZ1Njb3BlIGNsZWFyTWFya3NUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0
U3BhY2UuY2xlYXJNYXJrcyIpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZsaXAoKTsKKyAgICAg
ICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFj
ZS5iZWdpbk1hcmtpbmciKTsKKyAgICAgICAgbV9vYmplY3RTcGFjZS5iZWdpbk1hcmtpbmcoKTsK
ICAgICB9Ci0gICAgCi0gICAgbV9vYmplY3RTcGFjZS5zZXRJc01hcmtpbmcodHJ1ZSk7CiB9CiAK
IHZvaWQgSGVhcDo6dmlzaXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQoKQpAQCAtNzc5LDcgKzc3OCw3
IEBAIHZvaWQgSGVhcDo6ZW5kTWFya2luZygpCiAgICAgQVNTRVJUKG1fc2hhcmVkTWFya1N0YWNr
LmlzRW1wdHkoKSk7CiAgICAgbV93ZWFrUmVmZXJlbmNlSGFydmVzdGVycy5yZW1vdmVBbGwoKTsK
ICAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyhmYWxzZSk7CisgICAgbV9vYmpl
Y3RTcGFjZS5lbmRNYXJraW5nKCk7CiB9CiAKIHNpemVfdCBIZWFwOjpvYmplY3RDb3VudCgpCkBA
IC05MzksNyArOTM4LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgpCiAgICAgICAg
IG1fb2JqZWN0U3BhY2Uuc3dlZXAoKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5zaHJpbmsoKTsK
ICAgICB9Ci0gICAgQVNTRVJUKG1fYmxvY2tTbmFwc2hvdC5pc0VtcHR5KCkpOworICAgIG1fb2Jq
ZWN0U3BhY2UuYXNzZXJ0Tm9VbnN3ZXB0KCk7CiAKICAgICBzd2VlcEFsbExvZ2ljYWxseUVtcHR5
V2Vha0Jsb2NrcygpOwogfQpAQCAtMTAzOSw3ICsxMDM4LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIHJlYXBXZWFrSGFuZGxlcygpOwogICAgIHBydW5l
U3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICBzd2VlcEFycmF5QnVmZmVycygpOwot
ICAgIHNuYXBzaG90TWFya2VkU3BhY2UoKTsKKyAgICBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICBm
aW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCk7CiAgICAgcmVtb3ZlRGVhZENvbXBpbGVy
V29ya2xpc3RFbnRyaWVzKCk7CiAgICAgZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKTsKQEAg
LTEwNDgsNyArMTA0Nyw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhl
YXAKICAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB3cml0ZUJhcnJpZXJDdXJy
ZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CiAKLSAgICByZXNldEFsbG9jYXRvcnMoKTsKKyAg
ICBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsK
ICAgICBkaWRGaW5pc2hDb2xsZWN0aW9uKGdjU3RhcnRUaW1lKTsKICAgICByZXN1bWVDb21waWxl
clRocmVhZHMoKTsKQEAgLTEwNjMsNiArMTA2MiwxMSBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFw
Ojpjb2xsZWN0SW1wbChIZWFwCiAgICAgICAgIGRvdWJsZSBhZnRlciA9IGN1cnJlbnRUaW1lTVMo
KTsKICAgICAgICAgZGF0YUxvZyhhZnRlciAtIGJlZm9yZSwgIiBtc11cbiIpOwogICAgIH0KKyAg
ICAKKyAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgZGF0YUxvZygiSGVhcCBzdGF0ZSBhZnRlciBH
QzpcbiIpOworICAgICAgICBtX29iamVjdFNwYWNlLmR1bXBCaXRzKCk7CisgICAgfQogfQogCiB2
b2lkIEhlYXA6OnN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygpCkBAIC0xMTYyLDQ0ICsxMTY2LDEwIEBA
IHZvaWQgSGVhcDo6c3dlZXBBcnJheUJ1ZmZlcnMoKQogICAgIG1fYXJyYXlCdWZmZXJzLnN3ZWVw
KCk7CiB9CiAKLXN0cnVjdCBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvciA6IHB1YmxpYyBNYXJr
ZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yKFZl
Y3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIGJsb2NrcykgCi0gICAgICAgIDogbV9pbmRleCgw
KSAKLSAgICAgICAgLCBtX2Jsb2NrcyhibG9ja3MpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQg
b3BlcmF0b3IoKShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGJsb2NrLT5zZXRJc09uQmxvY2tzVG9Td2VlcCh0cnVlKTsKLSAgICAgICAgbV9ibG9ja3Nb
bV9pbmRleCsrXSA9IGJsb2NrOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbXV0
YWJsZSBmaWVsZCBiZWNhdWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAotICAgIG11dGFibGUgc2l6
ZV90IG1faW5kZXg7Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgbV9ibG9ja3M7
Ci19OwotCi12b2lkIEhlYXA6OnNuYXBzaG90TWFya2VkU3BhY2UoKQordm9pZCBIZWFwOjpzbmFw
c2hvdFVuc3dlcHQoKQogewotICAgIFRpbWluZ1Njb3BlIHRpbWluZ1Njb3BlKCp0aGlzLCAiSGVh
cDo6c25hcHNob3RNYXJrZWRTcGFjZSIpOwotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9i
YWJseSBiZSByZW5hbWVkLiBJdCdzIG5vdCBhY3R1YWxseSBzbmFwc2hvdHRpbmcgYWxsIG9mIE1h
cmtlZFNwYWNlLgotICAgIC8vIFRoaXMgaXMgdXNlZCBieSBJbmNyZW1lbnRhbFN3ZWVwZXIsIHNv
IGl0IG9ubHkgbmVlZHMgdG8gc25hcHNob3QgYmxvY2tzLiBIb3dldmVyLCBpZiB3ZSBldmVyCi0g
ICAgLy8gd2FudGVkIHRvIGFkZCBvdGhlciBzbmFwc2hvdHRpbmcgbG9naW4sIHdlJ2QgcHJvYmFi
bHkgcHV0IGl0IGhlcmUuCi0gICAgCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBF
ZGVuQ29sbGVjdGlvbikgewotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRs
ZSA6IG1fb2JqZWN0U3BhY2UuYmxvY2tzV2l0aE5ld09iamVjdHMoKSkgewotICAgICAgICAgICAg
aWYgKGhhbmRsZS0+aXNPbkJsb2Nrc1RvU3dlZXAoKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIG1fYmxvY2tTbmFwc2hvdC5hcHBlbmQoaGFuZGxlKTsKLSAgICAgICAg
ICAgIGhhbmRsZS0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UgewotICAgICAgICBtX2Jsb2NrU25hcHNob3QucmVzaXplVG9GaXQobV9vYmplY3RTcGFj
ZS5ibG9ja3MoKS5zZXQoKS5zaXplKCkpOwotICAgICAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVu
Y3RvciBmdW5jdG9yKG1fYmxvY2tTbmFwc2hvdCk7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZm9y
RWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KKyAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgq
dGhpcywgIkhlYXA6OnNuYXBzaG90VW5zd2VwdCIpOworICAgIG1fb2JqZWN0U3BhY2Uuc25hcHNo
b3RVbnN3ZXB0KCk7CiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMo
KQpAQCAtMTIyMiw5ICsxMTkyLDkgQEAgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXJDdXJyZW50bHlF
eGVjdXRpbgogICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5n
Q29kZUJsb2Nrcyh0aGlzKTsKIH0KIAotdm9pZCBIZWFwOjpyZXNldEFsbG9jYXRvcnMoKQordm9p
ZCBIZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9vYmplY3RTcGFjZS5yZXNl
dEFsbG9jYXRvcnMoKTsKKyAgICBtX29iamVjdFNwYWNlLnByZXBhcmVGb3JBbGxvY2F0aW9uKCk7
CiB9CiAKIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCkBAIC0xNDczLDcgKzE0
NDMsNyBAQCBwdWJsaWM6CiB2b2lkIEhlYXA6OnpvbWJpZnlEZWFkT2JqZWN0cygpCiB7CiAgICAg
Ly8gU3dlZXAgbm93IGJlY2F1c2UgZGVzdHJ1Y3RvcnMgd2lsbCBjcmFzaCBvbmNlIHdlJ3JlIHpv
bWJpZmllZC4KLSAgICBtX29iamVjdFNwYWNlLnpvbWJpZnlTd2VlcCgpOworICAgIG1fb2JqZWN0
U3BhY2Uuc3dlZXAoKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRo
aXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsKGl0ZXJhdGlvblNjb3BlLCBa
b21iaWZ5KCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24g
MjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjcsMTEgKzMyNywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhcFdlYWtIYW5k
bGVzKCk7CiAgICAgdm9pZCBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCk7CiAgICAg
dm9pZCBzd2VlcEFycmF5QnVmZmVycygpOwotICAgIHZvaWQgc25hcHNob3RNYXJrZWRTcGFjZSgp
OworICAgIHZvaWQgc25hcHNob3RVbnN3ZXB0KCk7CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92
aWRlckNhY2hlcygpOwogICAgIHZvaWQgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAg
dm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7Ci0gICAgdm9p
ZCByZXNldEFsbG9jYXRvcnMoKTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAg
ICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25k
aXRpb25hbEZpbmFsaXplcnMoKTsKICAgICB2b2lkIGNsZWFyVW5tYXJrZWRFeGVjdXRhYmxlcygp
OwpAQCAtNDIyLDcgKzQyMiw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5j
cmVtZW50YWxTd2VlcGVyPiBtX3N3ZWVwZXI7Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5k
bGUqPiBtX2Jsb2NrU25hcHNob3Q7CiAKICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNl
cnZlcnM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOSArODEsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SGVhcDo6aXNNYXJrZWQoY29uc3QgCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkp
CiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwogICAg
IE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgaWYgKGJsb2Nr
Lm5lZWRzRmxpcChibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKKyAg
ICByZXR1cm4gYmxvY2suaXNNYXJrZWQoCisgICAgICAgIGJsb2NrLnZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6
aXNNYXJrZWRDb25jdXJyZW50bHkoY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTkyLDEwICs5MSw4
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZENvbmN1cnIKICAgICBpZiAoY2Vs
bC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2Nh
dGlvbigpLmlzTWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2Vk
QmxvY2soKTsKLSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJsb2NrLnZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV1RGOjpsb2Fk
TG9hZEZlbmNlKCk7Ci0gICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJldHVy
biBibG9jay5pc01hcmtlZENvbmN1cnJlbnRseSgKKyAgICAgICAgYmxvY2sudm0oKS0+aGVhcC5v
YmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBI
ZWFwOjp0ZXN0QW5kU2V0TWFya2VkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IHZvaWQqIHJh
d0NlbGwpCkBAIC0xMDQsNyArMTAxLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RB
bmRTZXRNYXJrZQogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICBy
ZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkudGVzdEFuZFNldE1hcmtlZCgpOwogICAgIE1h
cmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgYmxvY2suZmxpcElm
TmVjZXNzYXJ5RHVyaW5nTWFya2luZyh2ZXJzaW9uKTsKKyAgICBibG9jay5hYm91dFRvTWFyayh2
ZXJzaW9uKTsKICAgICByZXR1cm4gYmxvY2sudGVzdEFuZFNldE1hcmtlZChjZWxsKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRp
c3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVh
cEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0
aW9ucy5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw5ICs4NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghZmlsdGVyLnJ1
bGVPdXQoYml0d2lzZV9jYXN0PEJpdHM+KHByZXZpb3VzQ2FuZGlkYXRlKSkKICAgICAgICAgICAg
ICAgICAmJiBzZXQuY29udGFpbnMocHJldmlvdXNDYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAg
JiYgcHJldmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgPT0gSGVhcENlbGw6OkF1
eGlsaWFyeSkgewotICAgICAgICAgICAgICAgIHByZXZpb3VzQ2FuZGlkYXRlLT5mbGlwSWZOZWNl
c3NhcnkoaGVhcFZlcnNpb24pOwogICAgICAgICAgICAgICAgIHByZXZpb3VzUG9pbnRlciA9IHN0
YXRpY19jYXN0PGNoYXIqPihwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEFsaWduKHBy
ZXZpb3VzUG9pbnRlcikpOwotICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+
aGFuZGxlKCkuaXNMaXZlQ2VsbChwcmV2aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlm
IChwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcHJl
dmlvdXNQb2ludGVyKSkKICAgICAgICAgICAgICAgICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05OSwxMCArOTgsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghc2V0LmNvbnRhaW5zKGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIAotICAgICAgICBjYW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lv
bik7Ci0KICAgICAgICAgYXV0byB0cnlQb2ludGVyID0gWyZdICh2b2lkKiBwb2ludGVyKSB7Ci0g
ICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQor
ICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lv
biwgcG9pbnRlcikpCiAgICAgICAgICAgICAgICAgZnVuYyhwb2ludGVyKTsKICAgICAgICAgfTsK
ICAgICAKQEAgLTE3MCw3ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChjYW5kaWRhdGUt
PmhhbmRsZSgpLmNlbGxLaW5kKCkgIT0gSGVhcENlbGw6OkpTQ2VsbCkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5
KCk7CiAgICAgICAgIGlmICghY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAy
MDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBjb25zdCBkb3VibGUg
c3dlZXBUaW1lTXVsdGlwbGllciAKICNpZiBVU0UoQ0YpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6Oklu
Y3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICA6
IEhlYXBUaW1lcihoZWFwLT52bSgpLCBydW5Mb29wKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhl
YXAtPm1fYmxvY2tTbmFwc2hvdCkKKyAgICAsIG1fY3VycmVudEFsbG9jYXRvcihudWxscHRyKQog
ewogfQogCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxU
aW1lcigpCiAjZWxpZiBQTEFURk9STShFRkwpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVu
dGFsU3dlZXBlcihIZWFwKiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAg
LCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQorICAgICwgbV9jdXJyZW50
QWxsb2NhdG9yKG51bGxwdHIpCiB7CiB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBJbmNyZW1l
bnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICNlbGlmIFVTRShHTElCKQogSW5jcmVtZW50YWxT
d2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCkKICAgICA6IEhlYXBUaW1lciho
ZWFwLT52bSgpKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkK
KyAgICAsIG1fY3VycmVudEFsbG9jYXRvcihudWxscHRyKQogewogfQogCkBAIC0xMjEsMTkgKzEy
MSwyMCBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZG9Td2VlcChkb3VibGUgCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsKICAgICBjYW5j
ZWxUaW1lcigpOwogfQogCiBib29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2so
KQogewotICAgIHdoaWxlICghbV9ibG9ja3NUb1N3ZWVwLmlzRW1wdHkoKSkgewotICAgICAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcC50YWtlTGFzdCgpOwot
ICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAoZmFsc2UpOwotCi0gICAgICAgIGlm
ICghYmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAoOyBt
X2N1cnJlbnRBbGxvY2F0b3I7IG1fY3VycmVudEFsbG9jYXRvciA9IG1fY3VycmVudEFsbG9jYXRv
ci0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGJsb2NrID0gbV9jdXJyZW50QWxsb2NhdG9y
LT5maW5kQmxvY2tUb1N3ZWVwKCk7CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoYmxvY2spIHsKICAgICAgICAgRGVmZXJHQ0ZvckFX
aGlsZSBkZWZlckdDKG1fdm0tPmhlYXApOwogICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgICAg
ICAgbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKQEAg
LTE0NiwxMSArMTQ3LDEyIEBAIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9j
aygKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKCkKIHsKICAgICBzY2hl
ZHVsZVRpbWVyKCk7CisgICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbV92bS0+aGVhcC5vYmplY3RT
cGFjZSgpLmZpcnN0QWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3
aWxsRmluaXNoU3dlZXBpbmcoKQogewotICAgIG1fYmxvY2tzVG9Td2VlcC5jbGVhcigpOworICAg
IG1fY3VycmVudEFsbG9jYXRvciA9IG51bGxwdHI7CiAgICAgaWYgKG1fdm0pCiAgICAgICAgIGNh
bmNlbFRpbWVyKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1l
bnRhbFN3ZWVwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEz
ICsyNywxMiBAQAogI2RlZmluZSBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogCiAjaW5jbHVkZSAiSGVh
cFRpbWVyLmgiCi0jaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwotY2xhc3MgTWFya2VkQmxvY2s7
CitjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAKIGNsYXNzIEluY3JlbWVudGFsU3dlZXBlciA6IHB1
YmxpYyBIZWFwVGltZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyAr
NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVUaW1lcigpOwogICAgIHZvaWQgY2Fu
Y2VsVGltZXIoKTsKICAgICAKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBtX2Js
b2Nrc1RvU3dlZXA7CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2N1cnJlbnRBbGxvY2F0b3I7CiAj
ZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2Nh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxs
b2NhdGlvbi5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9MYXJnZUFsbG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsOSArNzAsMTAgQEAgcHVi
bGljOgogICAgIAogICAgIGJvb2wgaXNOZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNOZXdseUFsbG9jYXRlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc01hcmtlZCgpIHsg
cmV0dXJuIG1faXNNYXJrZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc01hcmtlZChIZWFwQ2VsbCopIHsgcmV0dXJuIG1faXNNYXJr
ZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVy
biBtX2lzTWFya2VkLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7IH0KICAgICBib29s
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpIHsgcmV0dXJuIGlzTWFya2VkKCkgfHwgaXNOZXds
eUFsbG9jYXRlZCgpOyB9CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENl
bGwqKSB7IHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsgfQotICAgIGJvb2wgaXNN
YXJrZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24sIEhlYXBDZWxsKikgeyByZXR1cm4g
aXNNYXJrZWQoKTsgfQogICAgIGJvb2wgaXNMaXZlKCkgeyByZXR1cm4gaXNNYXJrZWRPck5ld2x5
QWxsb2NhdGVkKCk7IH0KICAgICAKICAgICBib29sIGhhc1ZhbGlkQ2VsbCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzVmFsaWRDZWxsOyB9CkBAIC0xMDYsOCArMTA3LDcgQEAgcHVibGljOgogICAgIAog
ICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZXM7IH0KICAgICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSh1aW50NjRf
dCkgeyB9Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKHVpbnQ2NF90KSB7
IH0KKyAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKSB7IH0KICAgICAKICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgdGVzdEFuZFNldE1hcmtlZCgpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1
ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNp
bmNsdWRlICJWTS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMzksNyArNDAs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKEhl
YXAqIGhlYXAsIE1hcmtlZFNwYWNlKiBtYXJrZWRTcGFjZSwgc2l6ZV90IGNlbGxTaXplLCBjb25z
dCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogICAgIDogbV9jdXJyZW50QmxvY2so
MCkKICAgICAsIG1fbGFzdEFjdGl2ZUJsb2NrKDApCi0gICAgLCBtX25leHRCbG9ja1RvU3dlZXAo
bnVsbHB0cikKICAgICAsIG1fY2VsbFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNlbGxTaXpl
KSkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQogICAgICwgbV9oZWFwKGhlYXApCkBA
IC01MCwxMSArNTAsMTMgQEAgTWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoSGVhcCog
aAogYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQogewog
ICAgIHVuc2lnbmVkIGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID0gMDsKLSAgICBNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jayA9IG1fYmxvY2tMaXN0LmJlZ2luKCk7Ci0gICAgd2hpbGUgKGJsb2Nr
KSB7Ci0gICAgICAgIGJsb2NrID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotICAg
ICAgICBpZiAoYmxvY2spCi0gICAgICAgICAgICBibG9jay0+ZmxpcElmTmVjZXNzYXJ5KCk7IC8v
IEZvcmNlcyB1cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRoZSBibG9jaywgYnV0IGhhcyBubyBz
ZW1hbnRpYyBlZmZlY3QuCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxv
Y2tzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
ayA9IG1fYmxvY2tzW2luZGV4XTsKKyAgICAgICAgaWYgKGJsb2NrKSB7CisgICAgICAgICAgICAv
LyBGb3JjZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8g
c2VtYW50aWMgZWZmZWN0LgorICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKKyAg
ICAgICAgICAgICAgICBibG9jay0+YmxvY2soKS5yZXNldFZlcnNpb24oKTsKKyAgICAgICAgfQog
ICAgICAgICArK2l0ZXJzU2luY2VMYXN0VGltZUNoZWNrOwogICAgICAgICBpZiAoaXRlcnNTaW5j
ZUxhc3RUaW1lQ2hlY2sgPj0gSGVhcDo6c190aW1lQ2hlY2tSZXNvbHV0aW9uKSB7CiAgICAgICAg
ICAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpOwpAQCAtNjYsODQgKzY4LDg2IEBAIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0
KGRvdWJsZSAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTWFya2VkQWxsb2NhdG9yOjpy
ZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCi17Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsgLy8gVGhpcyB3aWxsIGJlIGNhbGxlZCBpbiBwYXJhbGxlbCBkdXJpbmcgR0Mu
Ci0gICAgaWYgKGJsb2NrID09IG1fY3VycmVudEJsb2NrKSB7Ci0gICAgICAgIC8vIFRoaXMgaGFw
cGVucyB3aGVuIHRoZSBtdXRhdG9yIGlzIHJ1bm5pbmcuIFdlIGZpbmlzaGVkIGEgZnVsbCBHQyBh
bmQgbWFya2VkIHRvbyBmZXcgdGhpbmdzCi0gICAgICAgIC8vIHRvIHJldGlyZS4gVGhlbiB3ZSBz
dGFydGVkIGFsbG9jYXRpbmcgaW4gdGhpcyBibG9jay4gVGhlbiBhIGJhcnJpZXIgcmFuLCB3aGlj
aCBtYXJrZWQgYW4KLSAgICAgICAgLy8gb2JqZWN0IGluIHRoaXMgYmxvY2ssIHdoaWNoIHB1dCBp
dCBvdmVyIHRoZSByZXRpcmVtZW50IHRocmVzaG9sZC4gSXQncyBPSyB0byBzaW1wbHkgZG8KLSAg
ICAgICAgLy8gbm90aGluZyBpbiB0aGF0IGNhc2UuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGJsb2NrID09IG1fbGFzdEFjdGl2ZUJsb2NrKSB7Ci0gICAgICAgIC8vIFRoaXMgY2Fu
IGVhc2lseSBoYXBwZW4gZHVyaW5nIG1hcmtpbmcuIEl0IHdvdWxkIGJlIGVhc3kgdG8gaGFuZGxl
IHRoaXMgY2FzZSwgYnV0IGl0J3MKLSAgICAgICAgLy8ganVzdCBhcyBlYXN5IHRvIGlnbm9yZSBp
dC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+aXNP
bkxpc3QoKSk7Ci0gICAgaWYgKGJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCkKLSAgICAgICAg
bV9uZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotICAg
IGJsb2NrLT5yZW1vdmUoKTsKLSAgICBtX3JldGlyZWRCbG9ja3MucHVzaChibG9jayk7Ci19Ci0K
LU1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmlsdGVyTmV4dEJsb2NrKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxs
b2NhdG9yOjpmaW5kRW1wdHlCbG9jaygpCiB7Ci0gICAgaWYgKGJsb2NrID09IG1fYmxvY2tMaXN0
LmVuZCgpKQorICAgIG1fZW1wdHlDdXJzb3IgPSBtX2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1cnNv
ciwgdHJ1ZSk7CisgICAgaWYgKG1fZW1wdHlDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYmxvY2s7CisgICAgcmV0dXJuIG1fYmxv
Y2tzW21fZW1wdHlDdXJzb3JdOwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEJs
b2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpkaWRDb25zdW1lRnJlZUxpc3QoKQogewotICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IGZp
bHRlck5leHRCbG9jayhibG9jayk7CisgICAgaWYgKG1fY3VycmVudEJsb2NrKQorICAgICAgICBt
X2N1cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7CisgICAgCisgICAgc2V0RnJlZUxp
c3QoRnJlZUxpc3QoKSk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogfQogCiB2b2lk
KiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCkKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0g
ICAgaWYgKG1fY3VycmVudEJsb2NrKSB7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9
PSBtX25leHRCbG9ja1RvU3dlZXApOwotICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkQ29uc3Vt
ZUZyZWVMaXN0KCk7Ci0gICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50QmxvY2st
Pm5leHQoKSk7Ci0gICAgfQorICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOworICAgIEFTU0VS
VCghbV9mcmVlTGlzdCk7CiAgICAgCi0gICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0KLSAg
ICBSRUxFQVNFX0FTU0VSVChtX25leHRCbG9ja1RvU3dlZXAgIT0gbV9ibG9ja0xpc3QuZW5kKCkp
OwotCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqJiBibG9jayA9IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4
dCkgewotICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0g
ICAgICAgIC8vIEl0IHdvdWxkIGJlIHN1cGVyIHdlaXJkIGlmIHRoZSBibG9ja3Mgd2UgYXJlIHN3
ZWVwaW5nIGhhdmUgYW55dGhpbmcgYWxsb2NhdGVkIGR1cmluZyB0aGlzCi0gICAgICAgIC8vIGN5
Y2xlLgotICAgICAgICBBU1NFUlQoIWJsb2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKLSAg
ICAgICAgCi0gICAgICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJs
b2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgZm9yICg7OykgeworICAgICAgICBt
X2FsbG9jYXRpb25DdXJzb3IgPSAobV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IHwgbV9lbXB0eSku
ZmluZEJpdChtX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOworICAgICAgICBpZiAobV9hbGxvY2F0
aW9uQ3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAKLSAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGUtZnVs
bCBibG9jay4gTWFya2luZyB0cmllcyB0byByZXRpcmUgdGhlc2UsIGJ1dAotICAgICAgICAvLyB0
aGF0IGFsZ29yaXRobSBpcyByYWN5IGFuZCBtYXkgZm9yZ2V0IHRvIGRvIGl0IHNvbWV0aW1lcy4K
LSAgICAgICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKLSAgICAgICAgICAgIGJsb2NrLT51bnN3
ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNN
YXJrZWQoKSk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIH0KKyAgICAgICAgc2V0SXNDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KG1fYWxs
b2NhdGlvbkN1cnNvciwgZmFsc2UpOwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7
Ci0gICAgICAgIHNldEZyZWVMaXN0KGZyZWVMaXN0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAg
IGlmICh2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZUluKG1fYmxvY2tzW21fYWxsb2NhdGlvbkN1
cnNvcl0pKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgaWYg
KCFtX2ZyZWVMaXN0KSB7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgaWYgKE9wdGlvbnM6Omxvb2tGb3JFbXB0eUJsb2Nrc0luT3RoZXJBbGxvY2F0
b3JzKCkpIHsKKyAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9tYXJr
ZWRTcGFjZS0+ZmluZEVtcHR5QmxvY2soKSkgeworICAgICAgICAgICAgYmxvY2stPnN3ZWVwKCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEl0J3MgZ29vZCB0aGF0IHRoaXMgY2xlYXJz
IGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgYXMgd2VsbCBhcyBhbGwgb3RoZXIgYml0cywKKyAgICAg
ICAgICAgIC8vIGJlY2F1c2UgdGhlcmUgaXMgYSByZW1vdGUgY2hhbmNlIHRoYXQgYSBibG9jayBt
YXkgaGF2ZSBib3RoIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkKKyAgICAgICAgICAgIC8vIGFuZCBl
bXB0eSBzZXQgYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgICAgIGJsb2NrLT5yZW1vdmVGcm9t
QWxsb2NhdG9yKCk7CisgICAgICAgICAgICBhZGRCbG9jayhibG9jayk7CisgICAgICAgICAgICBy
ZXR1cm4gYWxsb2NhdGVJbihibG9jayk7CisgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbihNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK3sKKyAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0
ZUluKGJsb2NrKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CiAKK3ZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jaykKK3sKKyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxv
Y2stPmhhc0FueU5ld2x5QWxsb2NhdGVkKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxp
c3RlZCgpKTsKKyAgICAKKyAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOworICAgIAorICAgIC8vIEl0J3MgcG9z
c2libGUgdG8gc3R1bWJsZSBvbiBhIGNvbXBsZXRlbHkgZnVsbCBibG9jay4gTWFya2luZyB0cmll
cyB0byByZXRpcmUgdGhlc2UsIGJ1dAorICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5k
IG1heSBmb3JnZXQgdG8gZG8gaXQgc29tZXRpbWVzLgorICAgIGlmIChmcmVlTGlzdC5hbGxvY2F0
aW9uV2lsbEZhaWwoKSkgeworICAgICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsK
KyAgICAgICAgYmxvY2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOworICAgICAgICBB
U1NFUlQoIWJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgICAgIEFTU0VSVCghaXNFbXB0eShi
bG9jaykpOworICAgICAgICBBU1NFUlQoIWlzQ2FuQWxsb2NhdGVCdXROb3RFbXB0eShibG9jaykp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCisgICAgbV9jdXJyZW50Qmxv
Y2sgPSBibG9jazsKKyAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7CisgICAgCiAgICAgdm9pZCog
cmVzdWx0OwogICAgIGlmIChtX2ZyZWVMaXN0LnJlbWFpbmluZykgewogICAgICAgICB1bnNpZ25l
ZCBjZWxsU2l6ZSA9IG1fY2VsbFNpemU7CkBAIC0xNTUsNiArMTU5LDcgQEAgdm9pZCogTWFya2Vk
QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQogICAgICAgICByZXN1bHQgPSBoZWFkOwogICAg
IH0KICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHNldElzRWRlbihtX2N1cnJlbnRC
bG9jaywgdHJ1ZSk7CiAgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWxsb2NhdGVJbkJsb2NrKG1fY3Vy
cmVudEJsb2NrKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjA2LDE5ICsyMTEsMTUgQEAg
dm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlSQogICAgIEFTU0VSVCghbV9t
YXJrZWRTcGFjZS0+aXNJdGVyYXRpbmcoKSk7CiAgICAgbV9oZWFwLT5kaWRBbGxvY2F0ZShtX2Zy
ZWVMaXN0Lm9yaWdpbmFsU2l6ZSk7CiAgICAgCisgICAgZGlkQ29uc3VtZUZyZWVMaXN0KCk7Cisg
ICAgCisgICAgbV9oZWFwLT5jb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKCk7CisKICAgICB2b2lk
KiByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgCiAgICAgaWYg
KExJS0VMWShyZXN1bHQgIT0gMCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCi0gICAg
aWYgKG1faGVhcC0+Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpKSB7Ci0gICAgICAgIHJlc3Vs
dCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKLSAgICAgICAgaWYgKHJlc3VsdCkK
LSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX2hlYXAt
PnNob3VsZENvbGxlY3QoKSk7Ci0gICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sg
PSB0cnlBbGxvY2F0ZUJsb2NrKCk7CiAgICAgaWYgKCFibG9jaykgewogICAgICAgICBpZiAoY3Jh
c2hPbkZhaWx1cmUpCkBAIC0yMjcsOCArMjI4LDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjph
bGxvY2F0ZVNsb3dDYXNlSQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IGFkZEJsb2NrKGJsb2NrKTsKLSAgICAgICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRo
b3V0Q29sbGVjdGluZygpOworICAgIHJlc3VsdCA9IGFsbG9jYXRlSW4oYmxvY2spOwogICAgIEFT
U0VSVChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yNDksMzcgKzI0OSw3NSBA
QCBzaXplX3QgTWFya2VkQWxsb2NhdG9yOjpibG9ja1NpemVGb3JCeXRlCiBNYXJrZWRCbG9jazo6
SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlQmxvY2soKQogewogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICByZXR1cm4gTWFya2Vk
QmxvY2s6OnRyeUNyZWF0ZSgqbV9oZWFwLCB0aGlzLCBtX2NlbGxTaXplLCBtX2F0dHJpYnV0ZXMp
OworICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0
cnlDcmVhdGUoKm1faGVhcCk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7CisgICAg
CisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2Nr
KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50Qmxv
Y2spOwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAgIGlm
IChtX2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9ibG9j
a3Muc2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFj
aXR5KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChibG9jayk7CisgICAgICAgIGlmIChtX2Js
b2Nrcy5jYXBhY2l0eSgpICE9IG9sZENhcGFjaXR5KSB7CisgICAgICAgICAgICBmb3JFYWNoQml0
VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygp
ID09IG9sZENhcGFjaXR5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAg
WyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9y
LnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRh
a2VMYXN0KCk7CisgICAgICAgIEFTU0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgbV9i
bG9ja3NbaW5kZXhdID0gYmxvY2s7CisgICAgfQorICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3Io
CisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKHZlY3RvciwgIXZlY3RvcltpbmRleF0pOworICAgICAgICB9KTsKKworICAgIC8v
IFRoaXMgaXMgdGhlIHBvaW50IGF0IHdoaWNoIHRoZSBibG9jayBsZWFybnMgb2YgaXRzIGNlbGxT
aXplKCkgYW5kIGF0dHJpYnV0ZXMoKS4KKyAgICBibG9jay0+ZGlkQWRkVG9BbGxvY2F0b3IodGhp
cywgaW5kZXgpOwogICAgIAotICAgIG1fYmxvY2tMaXN0LmFwcGVuZChibG9jayk7Ci0gICAgc2V0
TmV4dEJsb2NrVG9Td2VlcChibG9jayk7Ci0gICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2so
YmxvY2spOworICAgIHNldElzTGl2ZShpbmRleCwgdHJ1ZSk7CisgICAgc2V0SXNFbXB0eShpbmRl
eCwgdHJ1ZSk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9jayhNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jaykKIHsKLSAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gYmxvY2sp
IHsKLSAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2sobV9jdXJyZW50Qmxv
Y2stPm5leHQoKSk7Ci0gICAgICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotICAgIH0KLSAg
ICBpZiAobV9uZXh0QmxvY2tUb1N3ZWVwID09IGJsb2NrKQotICAgICAgICBzZXROZXh0QmxvY2tU
b1N3ZWVwKG1fbmV4dEJsb2NrVG9Td2VlcC0+bmV4dCgpKTsKKyAgICBBU1NFUlQoYmxvY2stPmFs
bG9jYXRvcigpID09IHRoaXMpOworICAgIEFTU0VSVChtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0g
PT0gYmxvY2spOwogCi0gICAgYmxvY2stPndpbGxSZW1vdmVCbG9jaygpOwotICAgIG1fYmxvY2tM
aXN0LnJlbW92ZShibG9jayk7CisgICAgbV9ibG9ja3NbYmxvY2stPmluZGV4KCldID0gbnVsbHB0
cjsKKyAgICBtX2ZyZWVCbG9ja0luZGljZXMuYXBwZW5kKGJsb2NrLT5pbmRleCgpKTsKKyAgICAK
KyAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
cikgeworICAgICAgICAgICAgdmVjdG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOworICAgICAg
ICB9KTsKKyAgICAKKyAgICBibG9jay0+ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogfQogCiB2
b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcoKQogewotICAgIGlmIChtX2hlYXAt
Pm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikKLSAgICAgICAgbV9ibG9j
a0xpc3QudGFrZUZyb20obV9yZXRpcmVkQmxvY2tzKTsKLQorICAgIGlmIChmYWxzZSkKKyAgICAg
ICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxv
Y2F0aW5nIVxuIik7CiAgICAgQVNTRVJUKCFtX2xhc3RBY3RpdmVCbG9jayk7CiAgICAgaWYgKCFt
X2N1cnJlbnRCbG9jaykgewogICAgICAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOwpAQCAtMjkyLDI5
ICszMzAsMjUgQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKICAgICBt
X2ZyZWVMaXN0ID0gRnJlZUxpc3QoKTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0
KCkKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAg
bV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICBtX2xh
c3RBY3RpdmVCbG9jayA9IG51bGxwdHI7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwog
ICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwogCi0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcCht
X2Jsb2NrTGlzdC5iZWdpbigpKTsKKyAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSAwOworICAgIG1f
ZW1wdHlDdXJzb3IgPSAwOworICAgIG1fdW5zd2VwdEN1cnNvciA9IDA7CisgICAgCisgICAgbV9l
ZGVuLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxP
YmplY3RzKCkpKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgICAg
IGZvciAoTWFya2VkQmxvY2s6OkhhbmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBi
bG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2Nr
KGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2Nr
LT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAg
ICAgYmxvY2stPnphcChmcmVlTGlzdCk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAg
ICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBUaGluZ3M/CiAgICAgfQogfQogCiB2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewotICAgIG1fYmxvY2tMaXN0LnRh
a2VGcm9tKG1fcmV0aXJlZEJsb2Nrcyk7CiAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICBbJl0g
KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CiAgICAgICAgICAgICBibG9jay0+bGFzdENo
YW5jZVRvRmluYWxpemUoKTsKQEAgLTMyNiw0ICszNjAsMTIxIEBAIHZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpzZXRGcmVlTGlzdChjb25zdCAKICAgICBtX2ZyZWVMaXN0ID0gZnJlZUxpc3Q7CiB9CiAK
K3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKK3sKKyAgICBpZiAoIW1f
bGFzdEFjdGl2ZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZyZWVMaXN0ID0gbV9s
YXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9
IG1fbGFzdEFjdGl2ZUJsb2NrOworICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKK30K
Kwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCkK
K3sKKyAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2Yg
bWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBmdWxsCisgICAgLy8gY29sbGVj
dGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1
cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKKyAgICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRl
bi4KKyAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVhckFsbCgpOworICAgIG1fbWFya2luZ1JldGly
ZWQuY2xlYXJBbGwoKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcoKQor
eworICAgIG1fYWxsb2NhdGVkLmNsZWFyQWxsKCk7CisgICAgCisgICAgLy8gSXQncyBzdXJwcmlz
aW5nIGFuZCBmcnVzdHJhdGluZyB0byBjb21wcmVoZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJraW5n
IGZsaXAgZG9lcyBub3QgbmVlZCB0bworICAgIC8vIGtub3cgd2hhdCBraW5kIG9mIGNvbGxlY3Rp
b24gaXQgaXMuIFRoYXQga25vd2xlZGdlIGlzIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9tYXJr
aW5nWFlaCisgICAgLy8gdmVjdG9ycy4KKyAgICAKKyAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigp
KSB7CisgICAgICAgIC8vIElmIGJsb2NrcyBuZWVkIGRlc3RydWN0aW9uIHRoZW4gbm90aGluZyBp
cyBlbXB0eSEgVGhpcyBpcyBhIGNvcnJlY3QgYXNzZXJ0aW9uIGJ1dCBtYXkKKyAgICAgICAgLy8g
YmVjb21lIHdyb25nIG9uY2Ugd2UgZ28gZnVsbCBjb25jdXJyZW50OiB3aGVuIHdlIGNyZWF0ZSBh
IG5ldyBibG9jaywgaXQgd2lsbCBmbGlja2VyCisgICAgICAgIC8vIGludG8gdGhlIGVtcHR5IHNl
dCBmb3IgYSB0aW55IG1vbWVudC4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgY29kZSBpcyBsaWtl
bHkgdG8gYmUgcnVuCisgICAgICAgIC8vIGluIHN0b3BUaGVXb3JsZC4KKyAgICAgICAgQVNTRVJU
KG1fZW1wdHkuaXNFbXB0eSgpKTsKKyAgICAgICAgbV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ID0g
bV9saXZlICYgfm1fbWFya2luZ1JldGlyZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgbV9lbXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKKyAgICBtX2NhbkFs
bG9jYXRlQnV0Tm90RW1wdHkgPSBtX2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtp
bmdSZXRpcmVkOworICAgIAorICAgIGlmIChmYWxzZSkgeworICAgICAgICBkYXRhTG9nKCJCaXRz
IGZvciAiLCBtX2NlbGxTaXplLCAiLCAiLCBtX2F0dHJpYnV0ZXMsICIgYWZ0ZXIgZW5kTWFya2lu
ZzpcbiIpOworICAgICAgICBkdW1wQml0cyhXVEY6OmRhdGFGaWxlKCkpOworICAgIH0KK30KKwor
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCkK
K3sKKyAgICBtX3Vuc3dlcHQgfD0gbV9lZGVuOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24oKQoreworICAgIG1fdW5zd2VwdCA9IG1f
bGl2ZTsKK30KKworTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaW5kQmxv
Y2tUb1N3ZWVwKCkKK3sKKyAgICBtX3Vuc3dlcHRDdXJzb3IgPSBtX3Vuc3dlcHQuZmluZEJpdCht
X3Vuc3dlcHRDdXJzb3IsIHRydWUpOworICAgIGlmIChtX3Vuc3dlcHRDdXJzb3IgPj0gbV9ibG9j
a3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3Nb
bV91bnN3ZXB0Q3Vyc29yXTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN3ZWVwKCkKK3sK
KyAgICBtX3Vuc3dlcHQuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgp
IHsKKyAgICAgICAgICAgIG1fYmxvY2tzW2luZGV4XS0+c3dlZXAoKTsKKyAgICAgICAgfSk7Cit9
CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzaHJpbmsoKQoreworICAgIG1fZW1wdHkuZm9yRWFj
aFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1fbWFy
a2VkU3BhY2UtPmZyZWVCbG9jayhtX2Jsb2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKK30KKwor
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFzc2VydE5vVW5zd2VwdCgpCit7CisgICAgaWYgKEFTU0VS
VF9ESVNBQkxFRCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChtX3Vuc3dlcHQuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZGF0YUxvZygiQXNzZXJ0aW9uIGZh
aWxlZDogdW5zd2VwdCBub3QgZW1wdHkgaW4gIiwgKnRoaXMsICIuXG4iKTsKKyAgICBkdW1wQml0
cygpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRv
cjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChSYXdQb2lu
dGVyKHRoaXMpLCAiOiIsIG1fY2VsbFNpemUsICIvIiwgbV9hdHRyaWJ1dGVzKTsKK30KKwordm9p
ZCBNYXJrZWRBbGxvY2F0b3I6OmR1bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgdW5z
aWduZWQgbWF4TmFtZUxlbmd0aCA9IDA7CisgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAor
ICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4obmFtZSk7CisgICAgICAgICAgICBtYXhOYW1l
TGVuZ3RoID0gc3RkOjptYXgobWF4TmFtZUxlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgfSk7Cisg
ICAgCisgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBbJl0gKEZhc3RCaXRW
ZWN0b3ImIHZlY3RvciwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICAgICAgb3V0LnByaW50
KCIgICAgIiwgbmFtZSwgIjogIik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXhO
YW1lTGVuZ3RoIC0gc3RybGVuKG5hbWUpOyBpLS07KQorICAgICAgICAgICAgICAgIG91dC5wcmlu
dCgiICIpOworICAgICAgICAgICAgb3V0LnByaW50KHZlY3RvciwgIlxuIik7CisgICAgICAgIH0p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiQWxsb2NhdG9yQXR0cmlidXRlcy5oIgogI2luY2x1ZGUg
IkZyZWVMaXN0LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvRmFz
dEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNyw2ICszOSwxNDkg
QEAgY2xhc3MgSGVhcDsKIGNsYXNzIE1hcmtlZFNwYWNlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCisjZGVmaW5lIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKG1hY3JvKSBc
CisgICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBvZiBibG9jayBpbmRpY2VzIHRoYXQg
aGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKKyAgICBtYWNybyhlbXB0eSwgRW1wdHkpIC8qIFRoZSBz
ZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBvYmplY3RzIGFuZCBub3RoaW5nIHRv
IGRlc3Ryb3kuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNl
dCBvZiBhbGxibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1h
Y3JvKGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRo
ZSBzZXQgb2YgYWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBh
cmUgbW9yZSB0aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKKyAgICBt
YWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBv
YmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKKyAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0
KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5j
cmVtZW50YWwgc3dlZXBlci4gKi9cCisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBk
dXJpbmcgbWFya2luZy4gKi9cCisgICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90
RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwK
KyAgICBtYWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLworCisvLyBGSVhNRTogV2UgZGVmaW5lZCBj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGFuZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6CisvLworLy8g
ICAgIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgJiBlbXB0eSA9PSAwCisvLworLy8gSW5zdGVhZCBv
ZiBjYWxsaW5nIGl0IGNhbkFsbG9jYXRlIGFuZCBtYWtpbmcgaXQgaW5jbHVzaXZlOgorLy8KKy8v
ICAgICBjYW5BbGxvY2F0ZSAmIGVtcHR5ID09IGVtcHR5CisvLworLy8gVGhlIGxhdHRlciBpcyBw
cm9iYWJseSBiZXR0ZXIuIEknbGwgbGVhdmUgaXQgdG8gYSBmdXR1cmUgYnVnIHRvIGZpeCB0aGF0
LCBzaW5jZSBicmVhdGhpbmcgb24KKy8vIHRoaXMgY29kZSBsZWFkcyB0byByZWdyZXNzaW9ucyBm
b3IgZGF5cywgYW5kIGl0J3Mgbm90IGNsZWFyIHRoYXQgbWFraW5nIHRoaXMgY2hhbmdlIHdvdWxk
CisvLyBpbXByb3ZlIHBlcmYgc2luY2UgaXQgd291bGQgbm90IGNoYW5nZSB0aGUgY29sbGVjdG9y
J3MgYmVoYXZpb3IsIGFuZCBlaXRoZXIgd2F5IHRoZSBhbGxvY2F0b3IKKy8vIGhhcyB0byBsb29r
IGF0IGJvdGggYml0dmVjdG9ycy4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjIxMjEKKworLy8gTm90ZSB0aGF0IHRoaXMgY29sbGVjdG9yIHN1cHBvcnRzIG92
ZXJsYXBwaW5nIGFsbG9jYXRvciBzdGF0ZSB3aXRoIG1hcmtpbmcgc3RhdGUsIHNpbmNlIGluIGEK
Ky8vIGNvbmN1cnJlbnQgY29sbGVjdG9yIHlvdSBhbGxvdyBhbGxvY2F0aW9uIHdoaWxlIG1hcmtp
bmcgaXMgcnVubmluZy4gU28gaXQncyBiZXN0IHRvIHZpc3VhbGl6ZSBhCisvLyBmdWxsIG11dGFi
bGUtPmVkZW4gY29sbGVjdC0+bXV0YXRlLT5mdWxsIGNvbGxlY3QgY3ljbGUgYW5kIHNlZSBob3cg
dGhlIGJpdHMgYWJvdmUgZ2V0IGFmZmVjdGVkLgorLy8gVGhlIGV4YW1wbGUgYmVsb3cgdHJpZXMg
dG8gYmUgZXhoYXVzdGl2ZSBhYm91dCB3aGF0IGhhcHBlbnMgdG8gdGhlIGJpdHMsIGJ1dCBvbWl0
cyBhIGxvdCBvZgorLy8gdGhpbmdzIHRoYXQgaGFwcGVuIHRvIG90aGVyIHN0YXRlLgorLy8KKy8v
IENyZWF0ZSBhbGxvY2F0b3IKKy8vIC0gYWxsIGJpdHMgYXJlIGVtcHR5CisvLyBTdGFydCBhbGxv
Y2F0aW5nIGluIHNvbWUgYmxvY2sKKy8vIC0gYWxsb2NhdGUgdGhlIGJsb2NrIGFuZCBzZXQgdGhl
IGxpdmUgYml0LgorLy8gLSB0aGUgZW1wdHkgYml0IGZvciB0aGUgYmxvY2sgZmxpY2tlcnMgb24g
YW5kIHRoZW4gZ2V0cyBpbW1lZGlhdGVseSBjbGVhcmVkIGJ5IHN3ZWVwaW5nLgorLy8gLSBzZXQg
dGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgaW4gdGhhdCBibG9jaworLy8gLSBz
ZXQgdGhlIGFsbG9jYXRlZCBiaXQuCisvLyBEbyB0aGF0IHRvIGEgbG90IG9mIGJsb2NrcyBhbmQg
dGhlbiBzdGFydCBhbiBlZGVuIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygpIGhhcyBu
b3RoaW5nIHRvIGRvLgorLy8gLSBieSBkZWZhdWx0IHdlIGhhdmUgY2xlYXIgbWFya2luZ05vdEVt
cHR5L21hcmtpbmdSZXRpcmVkIGJpdHMuCisvLyAtIG1hcmtpbmcgYnVpbGRzIHVwIG1hcmtpbmdO
b3RFbXB0eS9tYXJraW5nUmV0aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAt
IGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gZm9yIGRlc3RydWN0b3IgYmxvY2tzOiBm
cmFnbWVudGVkID0gbGl2ZSAmIH5tYXJraW5nUmV0aXJlZAorLy8gLSBmb3Igbm9uLWRlc3RydWN0
b3IgYmxvY2tzOgorLy8gICAgICAgZW1wdHkgPSBsaXZlICYgfm1hcmtpbmdOb3RFbXB0eQorLy8g
ICAgICAgZnJhZ21lbnRlZCA9IGxpdmUgJiBtYXJraW5nTm90RW1wdHkgJiB+bWFya2luZ1JldGly
ZWQKKy8vIFNuYXBzaG90dGluZy4KKy8vIC0gdW5zd2VwdCB8PSBlZGVuCisvLyBQcmVwYXJlIGZv
ciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBlZGVuCisvLyBGaW5pc2ggY29sbGVjdGlvbi4KKy8v
IEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCBoYWQgc29tZSBmcmVlIGFuZCBzb21lIGxpdmUg
b2JqZWN0cy4KKy8vIC0gY2xlYXIgdGhlIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgYml0CisvLyAt
IGNsZWFyIHRoZSB1bnN3ZXB0IGJpdAorLy8gLSBzZXQgdGhlIGVkZW4gYml0CisvLyBGaW5pc2gg
YWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNvbWUg
YmxvY2sgdGhhdCB3YXMgY29tcGxldGVseSBlbXB0eS4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5IGJp
dAorLy8gLSBjbGVhciB0aGUgdW5zd2VwdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8v
IEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUg
aW4gc29tZSBibG9jayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5IGluIGFub3RoZXIgYWxsb2Nh
dG9yLgorLy8gLSBjbGVhciB0aGUgZW1wdHkgYml0CisvLyAtIGNsZWFyIGFsbCBiaXRzIGluIHRo
YXQgYWxsb2NhdG9yCisvLyAtIHNldCB0aGUgbGl2ZSBiaXQgaW4gYW5vdGhlciBhbGxvY2F0b3Ig
YW5kIHRoZSBlbXB0eSBiaXQuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSwgdW5zd2VwdCBiaXRzLgor
Ly8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxs
b2NhdGVkIGJpdCkuCisvLyBTdGFydCBhIGZ1bGwgY29sbGVjdGlvbi4KKy8vIC0gYmVnaW5NYXJr
aW5nKCkgY2xlYXJzIG1hcmtpbmdOb3RFbXB0eSwgbWFya2luZ1JldGlyZWQKKy8vIC0gdGhlIGhl
YXAgdmVyc2lvbiBpcyBpbmNyZW1lbnRlZAorLy8gLSBtYXJraW5nIHJlYnVpbGRzIG1hcmtpbmdO
b3RFbXB0eS9tYXJraW5ncmV0aXJlZCBiaXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAt
IGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gc2V0IGNhbkFsbG9jYXRlQnV0Tm90RW1w
dHkvZW1wdHkgdGhlIHNhbWUgd2F5IGFzIGluIGVkZW4gY29sbGVjdGlvbi4KKy8vIFNuYXBzaG90
dGluZy4KKy8vIC0gdW5zd2VwdCA9IGxpdmUKKy8vIHByZXBhcmUgZm9yIGFsbG9jYXRpb24uCisv
LyAtIGNsZWFyIGVkZW4uCisvLyBGaW5pc2ggY29sbGVjdGlvbi4KKy8vCisvLyBOb3RpY2UgaG93
IGluIHRoaXMgc2NoZW1lLCB0aGUgZW1wdHkvY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBzdGF0ZSBz
dGF5cyBzZXBhcmF0ZSBmcm9tIHRoZQorLy8gbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVk
IHN0YXRlLiBUaGlzIGlzIG9uZSBzdGVwIHRvd2FyZHMgaGF2aW5nIHNlcGFyYXRlZCBhbGxvY2F0
aW9uIGFuZAorLy8gbWFya2luZyBzdGF0ZS4KKy8vCisvLyBBZnRlciB0aGlzLCB3ZSBqdXN0IG5l
ZWQgdG8gYW5zd2VyIHRoZSBxdWVzdGlvbjogd2hhdCBkb2VzIGFuIG9iamVjdCBhbGxvY2F0ZWQg
ZHVyaW5nIGVkZW4gR0MKKy8vIGxvb2sgbGlrZSB0byB0aGUgR0M/CisvLworLy8gSSd2ZSBjb21l
IHVwIHdpdGggdHdvIGNvbXBlbGxpbmcgYW5zd2Vycy4KKy8vCisvLyAxLiBBTExPQ0FURSBCTEFD
SworLy8KKy8vIEkgdGhpbmsgdGhhdCB0aGUgZWFzaWVzdCBhbnN3ZXIgaXMgdG8gYWxsb2NhdGUg
dGhlIG9iamVjdCB3aGl0ZSBhbmQgdGhlbgorLy8gaW1tZWRpYXRlbHkgbWFyayBpdC4gVGhpcyBt
YWtlcyB0aGUgb2JqZWN0IGJlaGF2ZSBhcyBpZiBpdCB3YXMgYWxsb2NhdGVkIGp1c3QgYmVmb3Jl
IHRoZSBzdGFydAorLy8gb2YgR0MgYW5kIGl0IHdhcyBvbiB0aGUgc3RhY2sgYXQgdGhlIGJlZ2lu
bmluZyBvZiBHQy4gV2Ugd291bGRuJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyBkaWZmZXJlbnQKKy8v
IHdpdGggdGhlIHZhcmlvdXMgYmxvY2sgYml0cyB3aGVuIGFsbG9jYXRpbmcgZHVyaW5nIEdDOiB3
ZSBjb3VsZCBzdGlsbCBzZXQgZWRlbiBhbmQgYWxsb2NhdGVkCisvLyBzaW5jZSB0aGV5IHdpbGwg
YmUgY2xlYXJlZCBhbnl3YXkuCisvLworLy8gQnV0IHRoaXMgbWVhbnMgdGhhdCB0aGUgb2JqZWN0
IHdvbid0IGJlIGVsaWdpYmxlIGZvciBmcmVlaW5nIHVudGlsIHRoZSBuZXh0IGZ1bGwgR0MuIElk
ZWFsbHkKKy8vIHdlJ2QgbWFrZSB0aGUgb2JqZWN0IGlzIGVsaWdpYmxlIGZvciBmcmVlaW5nIGF0
IHRoZSBuZXh0IGVkZW4gR0MuIFRoZXJlJ3MgYSBidW5jaCBvZiB0aGluZ3Mgd2UKKy8vIGNvdWxk
IGRvIHRvIG1ha2UgdGhpcyBoYXBwZW4uIEhlcmUgYXJlIHNvbWUgaWRlYXM6CisvLworLy8gLSBJ
bnRyb2R1Y2UgYSBuZXcgQ2VsbFN0YXRlLCBjYWxsZWQgRmxvYXQsIHdoaWNoIG1lYW5zIHRoYXQg
dGhlIG9iamVjdCB3YXMgYWxsb2NhdGVkIGR1cmluZyB0aGUKKy8vICAgR0MuIFdlIHdvdWxkIG1h
a2Ugc3VyZSB0aGF0IG1hcmtpbmcgZG9lcyBub3RoaW5nIGZvciBGbG9hdHMuIFRoaXMgd291bGQg
bWFrZSBtYXJraW5nIGEgdGlueQorLy8gICBiaXQgbW9yZSBleHBlbnNpdmUuIFdlIHdvdWxkIG1h
a2Ugc3VyZSB0aGF0IHRoZSBiYXJyaWVyIHJlY29nbml6ZXMgc3RvcmVzIHRvIGEgRmxvYXQgdGhl
IHNhbWUKKy8vICAgd2F5IHRoYXQgaXQgc2VlcyBhIHN0b3JlIHRvIE9sZEJsYWNrOiBpdCBwdXRz
IHRoZSBvYmplY3Qgb24gdGhlIG1hcmsgc3RhY2suIEZsb2F0cyB3b3VsZCBiZQorLy8gICBwdXQg
b24gdGhlIG1hcmsgc3RhY2sgYXMgRmxvYXRHcmV5IHRvIGluZGljYXRlIHRoYXQgdGhleSB3aWxs
IGJlIHNjYW5uZWQgYnkgdGhlIEdDIGJ1dCB0aGF0CisvLyAgIHRoZXkgYXJlbid0IGFjdHVhbGx5
IG1hcmtlZC4KKy8vCisvLyAgIE5vdGUgdGhhdCB0aGlzIGltcGxpZXMgaGF2aW5nIHRvIGNoYW5n
ZSB0aGUgc3RhdGUgb2YgdGhvc2UgY2VsbHMgZnJvbSBGbG9hdCB0byBzb21ldGhpbmcgZWxzZQor
Ly8gICBhdCB0aGUgZW5kIG9mIEdDLiAgSSdtIG5vdCBzdXJlIHRoYXQgdGhpcyBpcyBzbyBncmVh
dC4KKy8vCisvLyAtIE1hcmsgdGhlIG9iamVjdHMgYWZ0ZXIgYWxsb2NhdGlvbiwgYnV0IGFsc28g
c2V0IHNvbWUgb3RoZXIgYml0cyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB0aG9zZQorLy8gICBvYmpl
Y3RzIHNob3VsZCBiZSB1bm1hcmtlZCBhdCB0aGUgZW5kIG9mIHRoZSBHQy4KKy8vCisvLyBFaXRo
ZXIgb2YgdGhlc2UgYXBwcm9hY2hlcyB3b3VsZCBtYWtlIGNvbGxlY3Rpb25zIG1vcmUgZXhwZW5z
aXZlLCBidXQgaXQgZmVlbHMgbGlrZSB0aGUgbGF0dGVyCisvLyBhcHByb2FjaCB3b3VsZCBiZSBh
IHByb2ZpdGFibGUgb3B0aW1pemF0aW9uLiBJJ20gYWxzbyByZWFsbHkgZ2V0dGluZyB3b3JyaWVk
IGFib3V0IGhvdyB0aGlzIEdDCisvLyBleHBlcmllbmNlcyBiYWNrd2FyZHMgdGltZSB0cmF2ZWws
IHdpdGggYWxsIHRoZSByZW1hcmtpbmcgb2YgdGhpbmdzIGxpa2UgbmV3IG9iamVjdHMgYW5kCisv
LyB3aGF0bm90LgorLy8KKy8vIDIuIEFMTE9DQVRFIFdISVRFCisvLworLy8gSSBkb24ndCBrbm93
IGlmIHRoaXMgaXMgc291bmQsIGJ1dCBpZiBpdCB3YXMgdGhlbiBpdCB3b3VsZCBiZSB0aGUgb3B0
aW1hbCBzb2x1dGlvbi4gQWxsb2NhdGlvbgorLy8gd291bGQgd29yayBhcyBub3cgYW5kIGNvbnNl
cXVlbnRseSwgZXZlcnl0aGluZyB3ZSBrbm93IGFib3V0IHdoYXQgd2FzIGFsbG9jYXRlZCBkdXJp
bmcgYSBHQyBpcworLy8gZm9yZ290dGVuIGF0IHRoZSBlbmQgb2YgR0MuIEJ1dCB0aGF0J3MgZmlu
ZS4gRW5kIG9mIEdDIG11c3QgcmVzY2FuIGFueSBoZWFwIGxvY2F0aW9ucyB0aGF0IGdvdAorLy8g
c3RvcmVkIGludG8gYW5kIGl0IG11c3QgcmVzY2FuIHRoZSBzdGFjay4gU28sIHdoaXRlIG9iamVj
dHMgYWxsb2NhdGVkIGR1cmluZyBHQyB3b3VsZCBnZXQKKy8vIG1hcmtlZCBpZiB0aGV5IHNvbWVo
b3cgc3Vydml2ZWQuCisvLworLy8gVGhpcyBtZWFucyB0aGF0IGZvciBleGFtcGxlIGlmIHRoZXJl
IGlzIGEgZmllbGQgdGhhdCBvZnRlbiBnZXRzIHN0b3JlZCB0byB3aXRoIG5ldyBvYmplY3RzLCB0
aGUKKy8vIEdDIHdpbGwgbm90IHNlZSBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGF0IGZpZWxkIGJ1
dCBpbnN0ZWFkIGl0IHdvdWxkIHBvbGwgdGhhdCBmaWVsZCwgaG9wZWZ1bGx5CisvLyBzb21ld2hh
dCByYXJlbHkuIFdlIGNhbiBtYWtlIGl0IHZlcnkgcmFyZSBieSBvbmx5IGluZnJlcXVlbnRseSBk
b25hdGluZyBmcm9tIHRoZSBtYWluIHRocmVhZCdzCisvLyBzbG90IHZpc2l0b3IgdG8gYW55IG9m
IHRoZSBvdGhlcnMuIFNvLCB3ZSB3b3VsZCBvbmx5IG1hcmsgc29tZSBvZiB0aGUgbmV3IG9iamVj
dHMgdGhhdCBnb3QKKy8vIHN0b3JlZCBpbnRvIHRoYXQgZmllbGQuIEl0IGFsc28gbWVhbnMgdGhh
dCBhbnkgb2JqZWN0IGFsbG9jYXRlZCBkdXJpbmcgdGhlIEdDIHRoYXQgZGlkbid0IGdldAorLy8g
c3RvcmVkIGludG8gYW55IG9iamVjdCB0aGF0IHdhcyBsaXZlIHNpbmNlIGJlZm9yZSB0aGUgc3Rh
cnQgb2YgR0Mgd291bGQgc2ltcGx5IGRpc2FwcGVhci4gVGhpcworLy8gbWVhbnMgbXVjaCBsZXNz
IHJlc2Nhbm5pbmcgdGhhbiBhbnkgb2YgdGhlIG90aGVyIHByb3Bvc2Fscy4KKy8vCisvLyBJIHJl
YWxseSB3YW50IHRvIGdvIHdpdGggdGhlIGFsbG9jYXRlLXdoaXRlIGFwcHJvYWNoLCBidXQgSSBu
ZWVkIHRvIHRoaW5rIG1vcmUgZGVlcGx5IGFib3V0IGl0CisvLyBiZWZvcmUgSSBjb21taXQgdG8g
aXQuCisKIGNsYXNzIE1hcmtlZEFsbG9jYXRvciB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIApAQCAtNDYsOSArMTkxLDE2IEBAIHB1YmxpYzoKIAogICAgIE1hcmtl
ZEFsbG9jYXRvcihIZWFwKiwgTWFya2VkU3BhY2UqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFs
bG9jYXRvckF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7Ci0g
ICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB2
b2lkIHN0b3BBbGxvY2F0aW5nKCk7CiAgICAgdm9pZCByZXN1bWVBbGxvY2F0aW5nKCk7CisgICAg
dm9pZCBiZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpOworICAgIHZvaWQgZW5kTWFya2lu
ZygpOworICAgIHZvaWQgc25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICB2
b2lkIHNuYXBzaG90VW5zd2VwdEZvckZ1bGxDb2xsZWN0aW9uKCk7CisgICAgdm9pZCBzd2VlcCgp
OworICAgIHZvaWQgc2hyaW5rKCk7CisgICAgdm9pZCBhc3NlcnROb1Vuc3dlcHQoKTsKICAgICBz
aXplX3QgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NlbGxTaXplOyB9CiAgICAgY29uc3Qg
QWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmli
dXRlczsgfQogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0
cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uOyB9CkBAIC03Miw2ICsyMjQs
NDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAg
IAogICAgIHN0YXRpYyBzaXplX3QgYmxvY2tTaXplRm9yQnl0ZXMoc2l6ZV90KTsKKyAgICAKKyNk
ZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwgY2FwaXRh
bEJpdE5hbWUpICAgICBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAorICAgIGJv
b2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0
IHsgcmV0dXJuIGlzICMjIGNhcGl0YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpKTsgfSBcCisgICAg
dm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsg
bV8gIyMgbG93ZXJCaXROYW1lW2luZGV4XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNldElzICMj
IGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7
IHNldElzICMjIGNhcGl0YWxCaXROYW1lKGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0gXAorICAg
IGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgs
IGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVj
ayhpbmRleCwgdmFsdWUpOyB9IFwKKyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMgIyMgY2Fw
aXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgcmV0
dXJuIG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhibG9jay0+aW5kZXgoKSwg
dmFsdWUpOyB9CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9D
QVRPUl9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09S
UworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0
b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklU
X0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgZnVuYyht
XyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJ
VChNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyk7CisjdW5kZWYgTUFSS0VEX0FMTE9DQVRP
Ul9CSVRfQ0FMTEJBQ0sKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
KyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZShjb25zdCBGdW5jJiBmdW5jKQorICAg
IHsKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBj
YXBpdGFsQml0TmFtZSkgXAorICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSwgI2NhcGl0
YWxCaXROYW1lKTsKKyAgICAgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VE
X0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0spOworI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NB
TExCQUNLCisgICAgfQorICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogbmV4dEFsbG9jYXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fbmV4dEFsbG9jYXRvcjsgfQorICAgIAorICAgIC8vIE1hcmtlZFNw
YWNlIGNhbGxzIHRoaXMgZHVyaW5nIGluaXQuCisgICAgdm9pZCBzZXROZXh0QWxsb2NhdG9yKE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKSB7IG1fbmV4dEFsbG9jYXRvciA9IGFsbG9jYXRvcjsg
fQorICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRFbXB0eUJsb2NrKCk7CisgICAg
CisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEJsb2NrVG9Td2VlcCgpOworICAgIAorICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZHVtcEJpdHMoUHJpbnRT
dHJlYW0mID0gV1RGOjpkYXRhRmlsZSgpKTsKICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgTWFya2VkQmxvY2s7CkBAIC03OSwyOCArMjcxLDQxIEBAIHByaXZhdGU6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2FzZSgpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQqIHRyeUFsbG9jYXRlU2xvd0Nhc2UoKTsKICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dD
YXNlSW1wbChib29sIGNyYXNoT25GYWlsdXJlKTsKKyAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlz
dCgpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAgICB2b2lk
KiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpOwogICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIHRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUluKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkKiBhbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5k
bGUqKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZCgp
OwotICAgIHZvaWQgcmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKICAgICB2b2lk
IHNldEZyZWVMaXN0KGNvbnN0IEZyZWVMaXN0Jik7CiAgICAgCi0gICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogZmlsdGVyTmV4dEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKLSAgICB2b2lkIHNl
dE5leHRCbG9ja1RvU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSopOwotICAgIAogICAgIEZyZWVM
aXN0IG1fZnJlZUxpc3Q7CisgICAgCisgICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBt
X2Jsb2NrczsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsKKyAgICAK
KyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBj
YXBpdGFsQml0TmFtZSkgXAorICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1lOwor
ICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0RF
Q0xBUkFUSU9OKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OCisgICAg
CisgICAgLy8gQWZ0ZXIgeW91IGRvIHNvbWV0aGluZyB0byBhIGJsb2NrIGJhc2VkIG9uIG9uZSBv
ZiB0aGVzZSBjdXJzb3JzLCB5b3UgY2xlYXIgdGhlIGJpdCBpbiB0aGUKKyAgICAvLyBjb3JyZXNw
b25kaW5nIGJpdHZlY3RvciBhbmQgbGVhdmUgdGhlIGN1cnNvciB3aGVyZSBpdCB3YXMuCisgICAg
c2l6ZV90IG1fYWxsb2NhdGlvbkN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJs
b2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGFsbG9jYXRpb24uCisgICAgc2l6ZV90IG1fZW1w
dHlDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2Fu
ZGlkYXRlIGZvciBlbXB0eSBhbGxvY2F0aW9uIChhbGxvY2F0aW5nIGluIGVtcHR5IGJsb2Nrcyku
CisgICAgc2l6ZV90IG1fdW5zd2VwdEN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0
IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGluY3JlbWVudGFsIHN3ZWVwaW5nLgorICAg
IAogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fY3VycmVudEJsb2NrOwogICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIG1fbGFzdEFjdGl2ZUJsb2NrOwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IG1fbmV4dEJsb2NrVG9Td2VlcDsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6
OkhhbmRsZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fYmxv
Y2tMaXN0OwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNp
Y1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4gbV9yZXRpcmVkQmxvY2tzOwor
CiAgICAgTG9jayBtX2xvY2s7CiAgICAgdW5zaWduZWQgbV9jZWxsU2l6ZTsKICAgICBBbGxvY2F0
b3JBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKICAgICBIZWFwKiBtX2hlYXA7CiAgICAgTWFya2Vk
U3BhY2UqIG1fbWFya2VkU3BhY2U7CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX25leHRBbGxvY2F0
b3I7CiB9OwogCiBpbmxpbmUgcHRyZGlmZl90IE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVl
TGlzdCgpCkBAIC0xNDksMjAgKzM1NCwxMiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIE1hcmtlZEFs
bG9jYXRvcjo6YWxsCiAgICAgcmV0dXJuIGhlYWQ7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEFs
bG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZygpCi17Ci0gICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9j
aykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2Nr
LT5yZXN1bWVBbGxvY2F0aW5nKCk7Ci0gICAgbV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVC
bG9jazsKLSAgICBtX2xhc3RBY3RpdmVCbG9jayA9IDA7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCbG9jayhjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIG1fYmxvY2tMaXN0LmZvckVhY2goZnVuY3Rvcik7
Ci0gICAgbV9yZXRpcmVkQmxvY2tzLmZvckVhY2goZnVuY3Rvcik7CisgICAgbV9saXZlLmZvckVh
Y2hTZXRCaXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBmdW5j
dG9yKG1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJl
dmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5o
IgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2Ft
cGxlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBzdGF0aWMgY29uc3QgYm9vbCBjb21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGljIHNp
emVfdCBiYWxhbmNlOwogCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3Jl
YXRlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNp
emUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCitNYXJrZWRCbG9jazo6
SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXApCiB7CiAgICAgaWYgKGNv
bXB1dGVCYWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4LDI2ICs0OSwxNyBAQCBN
YXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQogICAgICAgICBzY3JpYmJsZShi
bG9ja1NwYWNlLCBibG9ja1NpemUpOwotICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGFsbG9j
YXRvciwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOworICAgIHJldHVybiBuZXcg
SGFuZGxlKGhlYXAsIGJsb2NrU3BhY2UpOwogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5k
bGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6
ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcywgdm9pZCogYmxvY2tTcGFj
ZSkKLSAgICA6IG1fYXRvbXNQZXJDZWxsKChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9t
U2l6ZSkKLSAgICAsIG1fZW5kQXRvbShhdG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgKyAx
KQotICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgLCBtX3N0YXRlKE5ldykgLy8g
QWxsIGNlbGxzIHN0YXJ0IG91dCB1bm1hcmtlZC4KLSAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRv
cikKLSAgICAsIG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+dm0oKSwgQ2VsbENvbnRhaW5l
cigpKQorTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIHZvaWQqIGJsb2Nr
U3BhY2UpCisgICAgOiBtX3dlYWtTZXQoaGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkpCiB7CiAg
ICAgbV9ibG9jayA9IG5ldyAoTm90TnVsbCwgYmxvY2tTcGFjZSkgTWFya2VkQmxvY2soKmhlYXAu
dm0oKSwgKnRoaXMpOwogICAgIAogICAgIG1fd2Vha1NldC5zZXRDb250YWluZXIoKm1fYmxvY2sp
OwogICAgIAogICAgIGhlYXAuZGlkQWxsb2NhdGVCbG9jayhibG9ja1NpemUpOwotICAgIEhFQVBf
TE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgQVNTRVJUKGFsbG9jYXRvcik7
Ci0gICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5l
ZWREZXN0cnVjdGlvbik7CiB9CiAKIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQpAQCAt
NzgsNDUgKzcwLDM1IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQogICAgICAgICBp
ZiAoIShiYWxhbmNlICUgMTApKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFs
YW5jZTogIiwgYmFsYW5jZSwgIlxuIik7CiAgICAgfQorICAgIHJlbW92ZUZyb21BbGxvY2F0b3Io
KTsKICAgICBtX2Jsb2NrLT5+TWFya2VkQmxvY2soKTsKICAgICBmYXN0QWxpZ25lZEZyZWUobV9i
bG9jayk7CiAgICAgaGVhcC5kaWRGcmVlQmxvY2soYmxvY2tTaXplKTsKIH0KIAogTWFya2VkQmxv
Y2s6Ok1hcmtlZEJsb2NrKFZNJiB2bSwgSGFuZGxlJiBoYW5kbGUpCi0gICAgOiBtX25lZWRzRGVz
dHJ1Y3Rpb24oaGFuZGxlLm5lZWRzRGVzdHJ1Y3Rpb24oKSkKLSAgICAsIG1fdmVyc2lvbih2bS5o
ZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKQorICAgIDogbV92ZXJzaW9uKE1hcmtlZFNwYWNl
OjpudWxsVmVyc2lvbikKICAgICAsIG1faGFuZGxlKGhhbmRsZSkKICAgICAsIG1fdm0oJnZtKQog
ewotICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2Fk
IC8gaGFuZGxlLmNlbGxTaXplKCk7Ci0gICAgZG91YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlv
bnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxzUGVyQmxvY2spOwotICAgIAot
ICAgIC8vIFRoZSBtYXJrIGNvdW50IGJpYXMgc2hvdWxkIGJlIGNvbWZvcnRhYmx5IHdpdGhpbiB0
aGlzIHJhbmdlLgotICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtDb3VudEJpYXMgPiBzdGF0aWNfY2Fz
dDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MTZfdD46Om1pbigpKSk7Ci0gICAgUkVM
RUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA8IDApOwotICAgIAotICAgIG1fbWFya0NvdW50Qmlh
cyA9IHN0YXRpY19jYXN0PGludDE2X3Q+KG1hcmtDb3VudEJpYXMpOwotICAgIAotICAgIG1fYmlh
c2VkTWFya0NvdW50ID0gbV9tYXJrQ291bnRCaWFzOyAvLyBUaGlzIG1lYW5zIHdlIGhhdmVuJ3Qg
bWFya2VkIGFueXRoaW5nIHlldC4KIH0KIAotdGVtcGxhdGU8TWFya2VkQmxvY2s6OkJsb2NrU3Rh
dGUgYmxvY2tTdGF0ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwg
RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2Ny
aWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0
ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6
OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2Vl
cE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5
QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkZs
aXBNb2RlIGZsaXBNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6
ZWRTd2VlcCgpCiB7Ci0gICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOwotICAgIEFTU0VSVChibG9ja1N0YXRlID09IE5ldyB8fCBibG9ja1N0YXRlID09IE1hcmtl
ZCk7Ci0gICAgQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rp
b24gJiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSkpOworICAgIFJFTEVBU0VfQVNTRVJUKCEoZGVz
dHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2RlID09IFN3
ZWVwT25seSkpOwogICAgIAotICAgIGFzc2VydEZsaXBwZWQoKTsKKyAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKICAgICBNYXJrZWRCbG9jayYgYmxvY2sg
PSB0aGlzLT5ibG9jaygpOwogICAgIAotICAgIGJvb2wgaXNOZXdCbG9jayA9IGJsb2NrU3RhdGUg
PT0gTmV3OwotICAgIGJvb2wgaXNFbXB0eUJsb2NrID0gIWJsb2NrLmhhc0FueU1hcmtlZCgpCi0g
ICAgICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
Ci0gICAgICAgICYmIGRlc3RydWN0aW9uTW9kZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uOwot
ICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2NhdG9yKCkgJiYgKGlzTmV3QmxvY2sgfHwgaXNF
bXB0eUJsb2NrKSkgewotICAgICAgICBBU1NFUlQoYmxvY2subV9tYXJrcy5pc0VtcHR5KCkpOwor
ICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVxuIik7CisgICAgCisgICAgaWYgKE9w
dGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQorICAgICAgICAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0
eQorICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9j
YXRlZCkgeworICAgICAgICBBU1NFUlQoZmxpcE1vZGUgPT0gTmVlZHNGbGlwKTsKICAgICAgICAg
CiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZMYXN0Q2VsbCA9IHN0YXRpY19jYXN0PGNoYXIqPihjZWxs
QWxpZ24oYmxvY2suYXRvbXMoKSArIG1fZW5kQXRvbSAtIDEpKTsKICAgICAgICAgY2hhciogcGF5
bG9hZEVuZCA9IHN0YXJ0T2ZMYXN0Q2VsbCArIGNlbGxTaXplKCk7CkBAIC0xMjQsNyArMTA2LDEw
IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgY2hh
ciogcGF5bG9hZEJlZ2luID0gYml0d2lzZV9jYXN0PGNoYXIqPihibG9jay5hdG9tcygpICsgZmly
c3RBdG9tKCkpOwogICAgICAgICBpZiAoc2NyaWJibGVNb2RlID09IFNjcmliYmxlKQogICAgICAg
ICAgICAgc2NyaWJibGUocGF5bG9hZEJlZ2luLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsK
LSAgICAgICAgbV9zdGF0ZSA9ICgoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkgPyBGcmVl
TGlzdGVkIDogTWFya2VkKTsKKyAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxp
c3QpCisgICAgICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgdHJ1ZSk7CiAgICAgICAgIEZyZWVM
aXN0IHJlc3VsdCA9IEZyZWVMaXN0OjpidW1wKHBheWxvYWRFbmQsIHBheWxvYWRFbmQgLSBwYXls
b2FkQmVnaW4pOwogICAgICAgICBpZiAoZmFsc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJRdWlj
a2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIodGhpcyksICIgd2l0aCBjZWxsIHNpemUgIiwg
Y2VsbFNpemUoKSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHJlc3Vs
dCwgIlxuIik7CkBAIC0xMzcsMTQgKzEyMiwxNCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzcGVjaWFsaXplCiAgICAgRnJlZUNlbGwqIGhlYWQgPSAwOwogICAgIHNpemVfdCBjb3Vu
dCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBp
ICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIGlmIChibG9ja1N0YXRlID09IE1hcmtlZAot
ICAgICAgICAgICAgJiYgKGJsb2NrLm1fbWFya3MuZ2V0KGkpCisgICAgICAgIGlmIChlbXB0eU1v
ZGUgPT0gTm90RW1wdHkKKyAgICAgICAgICAgICYmICgoZmxpcE1vZGUgPT0gRG9lc05vdE5lZWRG
bGlwICYmIGJsb2NrLm1fbWFya3MuZ2V0KGkpKQogICAgICAgICAgICAgICAgIHx8IChuZXdseUFs
bG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYgbV9uZXdseUFsbG9jYXRlZC0+Z2V0
KGkpKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAKICAgICAgICAgSGVhcENl
bGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZibG9jay5hdG9tcygp
W2ldKTsKIAotICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVzdHJ1Y3Rpb24g
JiYgYmxvY2tTdGF0ZSAhPSBOZXcpCisgICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVl
ZHNEZXN0cnVjdGlvbiAmJiBlbXB0eU1vZGUgPT0gTm90RW1wdHkpCiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxKU0NlbGwqPihjZWxsKS0+Y2FsbERlc3RydWN0b3IoKnZtKCkpOwogCiAgICAgICAg
IGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CkBAIC0xNjMsNyArMTQ4LDE5IEBA
IEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgbV9uZXds
eUFsbG9jYXRlZCA9IG51bGxwdHI7CiAKICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6
bGlzdChoZWFkLCBjb3VudCAqIGNlbGxTaXplKCkpOwotICAgIG1fc3RhdGUgPSAoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCA/IEZyZWVMaXN0ZWQgOiBNYXJrZWQpOworICAgIGlmIChzd2Vl
cE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNwYWNlOjpi
bG9ja1BheWxvYWQgLyBjZWxsU2l6ZSgpOworICAgICAgICBpZiAoY291bnQgPT0gY2VsbHNQZXJC
bG9jaykgeworICAgICAgICAgICAgLy8gT2RkbHksIHRoaXMgbWF5IHNldCBlbXB0eSBvbiBhIGJs
b2NrIHRoYXQgYWxzbyBoYXMgbV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IHNldC4KKyAgICAgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIG9uZSBjb3JuZXIgY2FzZSB3aGVyZSBib3RoIGJpdHMgbWF5IGJl
IHNldCBhdCB0aGUgc2FtZSB0aW1lLiBUaGlzIG1ha2VzCisgICAgICAgICAgICAvLyB0aGUgYmxv
Y2sgZWxpZ2libGUgZm9yIHVzZSBieSBzb21lIG90aGVyIGFsbG9jYXRvci4KKyAgICAgICAgICAg
IC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgYWxzbyByZXNldCB0aGUgZW1wdHkgY3Vyc29yIHdo
ZW4gdGhpcyBoYXBwZW5zLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MjEyMgorICAgICAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1w
dHkodGhpcywgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKGZhbHNlKQogICAgICAg
ICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdp
dGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1
dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzEsMTUg
KzE2OCwyMCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAKIEZy
ZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7
Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgbV9hbGxvY2F0b3ItPnNldElzVW5zd2VwdCh0
aGlzLCBmYWxzZSk7CiAgICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0
aGlzKTsKLQogICAgIG1fd2Vha1NldC5zd2VlcCgpOwogCiAgICAgaWYgKHN3ZWVwTW9kZSA9PSBT
d2VlcE9ubHkgJiYgbV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1
Y3Rpb24pCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogCisgICAgaWYgKFVOTElLRUxZKG1f
aXNGcmVlTGlzdGVkKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0KTsKKyAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CisgICAgfQorICAgIAor
ICAgIEFTU0VSVCghbV9hbGxvY2F0b3ItPmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICAKICAgICBp
ZiAobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb24pCiAgICAgICAg
IHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZTxOZWVkc0Rlc3RydWN0aW9uPihz
d2VlcE1vZGUpOwogICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZTxEb2Vz
Tm90TmVlZERlc3RydWN0aW9uPihzd2VlcE1vZGUpOwpAQCAtMTg5LDQ3ICsxOTEsNTkgQEAgdGVt
cGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZQogRnJlZUxpc3QgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGUoU3dlZXBNb2RlIHN3ZWVw
TW9kZSkKIHsKICAgICBpZiAoc2NyaWJibGVGcmVlQ2VsbHMoKSkKLSAgICAgICAgcmV0dXJuIHN3
ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJs
ZT4oc3dlZXBNb2RlKTsKLSAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVw
TW9kZTxkZXN0cnVjdGlvbk1vZGUsIERvbnRTY3JpYmJsZT4oc3dlZXBNb2RlKTsKKyAgICAgICAg
cmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlPGRlc3RydWN0aW9uTW9kZSwgU2NyaWJi
bGU+KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlPGRl
c3RydWN0aW9uTW9kZSwgRG9udFNjcmliYmxlPihzd2VlcE1vZGUpOwogfQogCiB0ZW1wbGF0ZTxE
ZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3Jp
YmJsZU1vZGUgc2NyaWJibGVNb2RlPgotRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQorRnJl
ZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGUoU3dl
ZXBNb2RlIHN3ZWVwTW9kZSkKIHsKLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBjYXNlIE5l
dzoKLSAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwotICAgICAg
ICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxOZXcsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rp
b25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAg
Y2FzZSBGcmVlTGlzdGVkOgotICAgICAgICAvLyBIYXBwZW5zIHdoZW4gYSBibG9jayB0cmFuc2l0
aW9ucyB0byBmdWxseSBhbGxvY2F0ZWQuCi0gICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7Ci0gICAgY2FzZSBBbGxv
Y2F0ZWQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBGcmVlTGlzdCgpOwotICAgIGNhc2UgTWFya2VkOgotICAgICAgICBpZiAobV9uZXdseUFs
bG9jYXRlZCkgewotICAgICAgICAgICAgcmV0dXJuIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxp
c3QKLSAgICAgICAgICAgICAgICA/IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcFRvRnJl
ZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4o
KQotICAgICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwg
ZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPigpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJl
ZUxpc3QKLSAgICAgICAgICAgICAgICA/IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcFRv
RnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5
QWxsb2NhdGVkPigpCi0gICAgICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwg
U3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZD4oKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBGcmVlTGlzdCgpOworICAgIC8vIEl0J3Mgbm90IG9idmlv
dXMsIGJ1dCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBrbm93IGlmIHRoZSBibG9jayBpcyBlbXB0
eS4gSXQncyB0aGUgb25seQorICAgIC8vIGJpdCB0aGF0IGNhcHR1cmVzIHRoZXNlIGNhdmVhdHM6
CisgICAgLy8gLSBJdCdzIHRydWUgd2hlbiB0aGUgYmxvY2sgaXMgZnJlc2hseSBhbGxvY2F0ZWQu
CisgICAgLy8gLSBJdCdzIHRydWUgaWYgdGhlIGJsb2NrIGhhZCBiZWVuIHN3ZXB0IGluIHRoZSBw
YXN0LCBhbGwgZGVzdHJ1Y3RvcnMgd2VyZSBjYWxsZWQsIGFuZCB0aGF0CisgICAgLy8gICBzd2Vl
cCBwcm92ZWQgdGhhdCB0aGUgYmxvY2sgaXMgZW1wdHkuCisgICAgLy8gLSBJdCdzIGZhbHNlIGlm
IHRoZXJlIGFyZSBhbnkgZGVzdHJ1Y3RvcnMgdGhhdCBuZWVkIHRvIGJlIGNhbGxlZCwgZXZlbiBp
ZiB0aGUgYmxvY2sgaGFzIG5vCisgICAgLy8gICBsaXZlIG9iamVjdHMuCisgICAgaWYgKG1fYWxs
b2NhdG9yLT5pc0VtcHR5KHRoaXMpKQorICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RI
YXNOZXdseUFsbG9jYXRlZDxJc0VtcHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZT4o
c3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRl
ZDxOb3RFbXB0eSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGU+KHN3ZWVwTW9kZSk7Cit9
CisKK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIERl
c3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmli
YmxlTW9kZSBzY3JpYmJsZU1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2Vl
cEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCit7Cisg
ICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQpCisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVj
dFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNO
ZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RT
d2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05v
dEhhdmVOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8TWFya2VkQmxv
Y2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0
aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwg
TWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9k
ZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3dlZXBN
b2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCit7CisgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRv
RnJlZUxpc3QpCisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlPGVtcHR5
TW9kZSwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3
bHlBbGxvY2F0ZWRNb2RlPigpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2Rl
PGVtcHR5TW9kZSwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3
bHlBbGxvY2F0ZWRNb2RlPigpOworfQorCit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpF
bXB0eU1vZGUgZW1wdHlNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBN
b2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFs
bG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZSgpCit7CisgICAgaWYgKG5lZWRzRmxpcCgp
KQorICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxlbXB0eU1vZGUsIHN3ZWVwTW9kZSwg
ZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZSwgTmVlZHNG
bGlwPigpOworICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPGVtcHR5TW9kZSwgc3dlZXBNb2Rl
LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlLCBEb2Vz
Tm90TmVlZEZsaXA+KCk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6dW5zd2VlcFdp
dGhOb05ld2x5QWxsb2NhdGVkKCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICAKLSAg
ICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAotICAgIFJFTEVB
U0VfQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0gICAgbV9zdGF0ZSA9IE1hcmtlZDsK
KyAgICBSRUxFQVNFX0FTU0VSVChtX2lzRnJlZUxpc3RlZCk7CisgICAgbV9pc0ZyZWVMaXN0ZWQg
PSBmYWxzZTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzZXRJc0ZyZWVMaXN0ZWQo
KQoreworICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIGZhbHNlKTsKKyAgICBtX2lz
RnJlZUxpc3RlZCA9IHRydWU7CiB9CiAKIGNsYXNzIFNldE5ld2x5QWxsb2NhdGVkRnVuY3RvciA6
IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewpAQCAtMjUyLDI2ICsyNjYsMTcgQEAg
cHJpdmF0ZToKIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZyhjb25z
dCBGcmVlTGlzdCYgZnJlZUxpc3QpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgSEVB
UF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKKyAgICBpZiAoZmFsc2UpCisgICAg
ICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Rv
cEFsbG9jYXRpbmchXG4iKTsKKyAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0
aGlzKSk7CiAKLSAgICBpZiAobV9zdGF0ZSA9PSBNYXJrZWQpIHsKLSAgICAgICAgLy8gSWYgdGhl
IGJsb2NrIGlzIGluIHRoZSBNYXJrZWQgc3RhdGUgdGhlbiB3ZSBrbm93IHRoYXQgb25lIG9mIHRo
ZXNlCi0gICAgICAgIC8vIGNvbmRpdGlvbnMgaG9sZHM6Ci0gICAgICAgIC8vCi0gICAgICAgIC8v
IC0gSXQgd2FzIG5vdCB1c2VkIGZvciBhbGxvY2F0aW9uIGR1cmluZyB0aGUgcHJldmlvdXMgYWxs
b2NhdGlvbiBjeWNsZS4KLSAgICAgICAgLy8gICBJdCBtYXkgaGF2ZSBkZWFkIG9iamVjdHMsIGFu
ZCB3ZSBvbmx5IGtub3cgdGhlbSB0byBiZSBkZWFkIGJ5IHRoZQotICAgICAgICAvLyAgIGZhY3Qg
dGhhdCB0aGVpciBtYXJrIGJpdHMgYXJlIHVuc2V0LgotICAgICAgICAvLwotICAgICAgICAvLyAt
IFNvbWVvbmUgaGFkIGFscmVhZHkgZG9uZSBzdG9wQWxsb2NhdGluZygpLCBmb3IgZXhhbXBsZSBi
ZWNhdXNlIG9mCi0gICAgICAgIC8vICAgaGVhcCBpdGVyYXRpb24sIGFuZCB0aGV5IGhhZCBhbHJl
YWR5IAotICAgICAgICAvLyBIZW5jZSBpZiB0aGUgYmxvY2sgaXMgTWFya2VkIHdlIG5lZWQgdG8g
bGVhdmUgaXQgTWFya2VkLgorICAgIGlmICghaXNGcmVlTGlzdGVkKCkpIHsKKyAgICAgICAgLy8g
VGhpcyBtZWFucyB0aGF0IHdlIGVpdGhlciBkaWRuJ3QgdXNlIHRoaXMgYmxvY2sgYXQgYWxsIGZv
ciBhbGxvY2F0aW9uIHNpbmNlIGxhc3QgR0MsCisgICAgICAgIC8vIG9yIHNvbWVvbmUgaGFkIGFs
cmVhZHkgZG9uZSBzdG9wQWxsb2NhdGluZygpIGJlZm9yZS4KICAgICAgICAgQVNTRVJUKGZyZWVM
aXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAgICAKICAgICAvLyBSb2xsIGJh
Y2sgdG8gYSBjb2hlcmVudCBzdGF0ZSBmb3IgSGVhcCBpbnRyb3NwZWN0aW9uLiBDZWxscyBuZXds
eQogICAgIC8vIGFsbG9jYXRlZCBmcm9tIG91ciBmcmVlIGxpc3QgYXJlIG5vdCBjdXJyZW50bHkg
bWFya2VkLCBzbyB3ZSBuZWVkIGFub3RoZXIKICAgICAvLyB3YXkgdG8gdGVsbCB3aGF0J3MgbGl2
ZSB2cyBkZWFkLiAKQEAgLTI5MCwxMSArMjk1LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3RvcEFsbG9jYXRpbmcKICAgICAgICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7
CiAgICAgICAgIH0pOwogICAgIAotICAgIG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgbV9pc0ZyZWVM
aXN0ZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNl
VG9GaW5hbGl6ZSgpCiB7CisgICAgYWxsb2NhdG9yKCktPnNldElzQWxsb2NhdGVkKHRoaXMsIGZh
bHNlKTsKICAgICBtX2Jsb2NrLT5jbGVhck1hcmtzKCk7CiAgICAgbV93ZWFrU2V0Lmxhc3RDaGFu
Y2VUb0ZpbmFsaXplKCk7CiAKQEAgLTMwNCwxNCArMzEwLDExIEBAIHZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6bGFzdENoYW5jZVRvRmkKIAogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6
cmVzdW1lQWxsb2NhdGluZygpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgSEVBUF9M
T0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLQotICAgIEFTU0VSVChtX3N0YXRlID09
IE1hcmtlZCk7CisgICAgQVNTRVJUKCFhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOwor
ICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwogCiAgICAgaWYgKCFtX25ld2x5QWxsb2NhdGVk
KSB7Ci0gICAgICAgIC8vIFdlIGRpZG4ndCBoYXZlIHRvIGNyZWF0ZSBhICJuZXdseSBhbGxvY2F0
ZWQiIGJpdG1hcC4gVGhhdCBtZWFucyB3ZSB3ZXJlIGFscmVhZHkgTWFya2VkCi0gICAgICAgIC8v
IHdoZW4gd2UgbGFzdCBzdG9wcGVkIGFsbG9jYXRpb24sIHNvIHJldHVybiBhbiBlbXB0eSBmcmVl
IGxpc3QgYW5kIHN0YXkgaW4gdGhlIE1hcmtlZCBzdGF0ZS4KKyAgICAgICAgLy8gVGhpcyBtZWFu
cyB3ZSBoYWQgYWxyZWFkeSBleGhhdXN0ZWQgdGhlIGJsb2NrIHdoZW4gd2Ugc3RvcHBlZCBhbGxv
Y2F0aW9uLgogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKICAgICB9CiAKQEAgLTM0NSw0MCAr
MzQ4LDI4IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaEZyZWVDZWwKICAgICB9
CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeSgpCi17Ci0gICAgZmxpcElm
TmVjZXNzYXJ5KHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpOwotfQotCi12b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSgpCi17Ci0gICAgYmxvY2soKS5m
bGlwSWZOZWNlc3NhcnkoKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5
U2xvdygpCi17Ci0gICAgQVNTRVJUKG5lZWRzRmxpcCgpKTsKLSAgICBBU1NFUlQoIXZtKCktPmhl
YXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7Ci0gICAgY2xlYXJNYXJrcygpOwotfQotCi12
b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdygpCit2b2lk
IE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiB7
CiAgICAgQVNTRVJUKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7CiAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKLSAgICBpZiAobmVlZHNGbGlwKCkpCi0gICAgICAg
IGNsZWFyTWFya3MoKTsKKyAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkgeworICAgICAg
ICBjbGVhck1hcmtzKGhlYXBWZXJzaW9uKTsKKyAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSdyZSB0
aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3QgaW4gdGhpcyBibG9jay4KKyAgICAgICAg
aGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nTm90RW1wdHko
JmhhbmRsZSgpLCB0cnVlKTsKKyAgICB9CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFy
a3MoKQogeworICAgIGNsZWFyTWFya3Modm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24o
KSk7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoSGVhcFZlcnNpb24gaGVhcFZl
cnNpb24pCit7CiAgICAgbV9tYXJrcy5jbGVhckFsbCgpOwogICAgIGNsZWFySGFzQW55TWFya2Vk
KCk7Ci0gICAgLy8gVGhpcyB3aWxsIGJlY29tZSB0cnVlIGF0IHRoZSBlbmQgb2YgdGhlIG1hcmsg
cGhhc2UuIFdlIHNldCBpdCBub3cgdG8KLSAgICAvLyBhdm9pZCBhbiBleHRyYSBwYXNzIHRvIGRv
IHNvIGxhdGVyLgotICAgIGhhbmRsZSgpLm1fc3RhdGUgPSBNYXJrZWQ7CiAgICAgV1RGOjpzdG9y
ZVN0b3JlRmVuY2UoKTsKLSAgICBtX3ZlcnNpb24gPSB2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCku
dmVyc2lvbigpOworICAgIG1fdmVyc2lvbiA9IGhlYXBWZXJzaW9uOwogfQogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRApAQCAtMzk4LDMxICszODksMzggQEAgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpuZWVkc0ZsaXAoKQogICAgIHJldHVybiBtX2Jsb2NrLT5uZWVkc0ZsaXAoKTsKIH0KIAotdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxsUmVtb3ZlQmxvY2soKQorYm9vbCBNYXJrZWRCbG9j
azo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKKyAg
ICByZXR1cm4gaXNNYXJrZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgcCk7
CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0KCkKK2Jv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhl
YXBDZWxsKiBjZWxsKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JM
T0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0g
RnJlZUxpc3RlZCk7CisgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh2bSgpLT5o
ZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKK30KKworYm9vbCBNYXJrZWRCbG9j
azo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoreworICAg
IHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgp
LnZlcnNpb24oKSwgY2VsbCk7Cit9CiAKLSAgICBtX3N0YXRlID0gQWxsb2NhdGVkOwordm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QoKQoreworICAgIGlmIChmYWxz
ZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QhXG4iKTsKKyAgICBBU1NFUlQoaXNGcmVlTGlzdGVkKCkp
OworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7CisgICAgYWxsb2NhdG9yKCktPnNldElzQWxs
b2NhdGVkKHRoaXMsIHRydWUpOwogfQogCiBzaXplX3QgTWFya2VkQmxvY2s6Om1hcmtDb3VudCgp
CiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fbWFya3MuY291bnQoKTsK
KyAgICByZXR1cm4gbmVlZHNGbGlwKCkgPyAwIDogbV9tYXJrcy5jb3VudCgpOwogfQogCiBib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgp
OwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZCAmJiAhYmxvY2soKS5oYXNBbnlNYXJrZWQo
KSAmJiBtX3dlYWtTZXQuaXNFbXB0eSgpICYmICghbV9uZXdseUFsbG9jYXRlZCB8fCBtX25ld2x5
QWxsb2NhdGVkLT5pc0VtcHR5KCkpOworICAgIHJldHVybiBtX2FsbG9jYXRvci0+aXNFbXB0eSh0
aGlzKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJIYXNBbnlNYXJrZWQoKQpAQCAtNDMy
LDI5ICs0MzAsNzggQEAgdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJIYXNBbnlNYXJrZWQoKQogCiB2
b2lkIE1hcmtlZEJsb2NrOjpub3RlTWFya2VkU2xvdygpCiB7Ci0gICAgaGFuZGxlKCkubV9hbGxv
Y2F0b3ItPnJldGlyZSgmaGFuZGxlKCkpOworICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9t
aWNTZXRBbmRDaGVja0lzTWFya2luZ1JldGlyZWQoJmhhbmRsZSgpLCB0cnVlKTsKK30KKwordm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZW1vdmVGcm9tQWxsb2NhdG9yKCkKK3sKKyAgICBpZiAo
IW1fYWxsb2NhdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9hbGxvY2F0b3ItPnJl
bW92ZUJsb2NrKHRoaXMpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRv
QWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgaW5kZXgpCit7Cisg
ICAgQVNTRVJUKG1faW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7
CisgICAgQVNTRVJUKCFtX2FsbG9jYXRvcik7CisgICAgCisgICAgbV9pbmRleCA9IGluZGV4Owor
ICAgIG1fYWxsb2NhdG9yID0gYWxsb2NhdG9yOworICAgIAorICAgIHNpemVfdCBjZWxsU2l6ZSA9
IGFsbG9jYXRvci0+Y2VsbFNpemUoKTsKKyAgICBtX2F0b21zUGVyQ2VsbCA9IChjZWxsU2l6ZSAr
IGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZTsKKyAgICBtX2VuZEF0b20gPSBhdG9tc1BlckJsb2Nr
IC0gbV9hdG9tc1BlckNlbGwgKyAxOworICAgIAorICAgIG1fYXR0cmlidXRlcyA9IGFsbG9jYXRv
ci0+YXR0cmlidXRlcygpOworCisgICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFw
Q2VsbDo6SlNDZWxsKQorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1
Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CisgICAgCisgICAgYmxvY2soKS5tX25l
ZWRzRGVzdHJ1Y3Rpb24gPSBuZWVkc0Rlc3RydWN0aW9uKCk7CisgICAgCisgICAgdW5zaWduZWQg
Y2VsbHNQZXJCbG9jayA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBjZWxsU2l6ZTsKKyAg
ICBkb3VibGUgbWFya0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFya2VkQmxvY2tVdGlsaXph
dGlvbigpICogY2VsbHNQZXJCbG9jayk7CisgICAgCisgICAgLy8gVGhlIG1hcmsgY291bnQgYmlh
cyBzaG91bGQgYmUgY29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2UuCisgICAgUkVMRUFTRV9B
U1NFUlQobWFya0NvdW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xp
bWl0czxpbnQxNl90Pjo6bWluKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFz
IDwgMCk7CisgICAgCisgICAgLy8gVGhpcyBtZWFucyB3ZSBoYXZlbid0IG1hcmtlZCBhbnl0aGlu
ZyB5ZXQuCisgICAgYmxvY2soKS5tX2JpYXNlZE1hcmtDb3VudCA9IGJsb2NrKCkubV9tYXJrQ291
bnRCaWFzID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFya0NvdW50Qmlhcyk7Cit9CisKK3ZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAgQVNT
RVJUKG1faW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAg
QVNTRVJUKG1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4ID0gc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKTsKKyAgICBtX2FsbG9jYXRvciA9IG51bGxwdHI7Cit9CisKK2Jv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQorewor
ICAgIHJldHVybiBpc0xpdmUodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2Vs
bCk7Cit9CisKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lk
KiBwKQoreworICAgIHJldHVybiBpc0xpdmVDZWxsKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52
ZXJzaW9uKCksIHApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7
CiAKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRlKQordm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBN
b2RlIG1vZGUpCiB7Ci0gICAgc3dpdGNoIChibG9ja1N0YXRlKSB7Ci0gICAgY2FzZSBNYXJrZWRC
bG9jazo6TmV3OgotICAgICAgICBvdXQucHJpbnQoIk5ldyIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBNYXJrZWRCbG9jazo6RnJlZUxpc3RlZDoKLSAgICAgICAgb3V0LnByaW50KCJGcmVl
TGlzdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpBbGxvY2F0
ZWQ6Ci0gICAgICAgIG91dC5wcmludCgiQWxsb2NhdGVkIik7CisgICAgc3dpdGNoIChtb2RlKSB7
CisgICAgY2FzZSBKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdDoKKyAg
ICAgICAgb3V0LnByaW50KCJTd2VlcFRvRnJlZUxpc3QiKTsKICAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAgb3V0LnByaW50KCJNYXJrZWQiKTsK
KyAgICBjYXNlIEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBPbmx5OgorICAgICAgICBv
dXQucHJpbnQoIlN3ZWVwT25seSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIwICs0NCw2IEBAIGNs
YXNzIE1hcmtlZEFsbG9jYXRvcjsKIHR5cGVkZWYgdWludHB0cl90IEJpdHM7CiB0eXBlZGVmIHVp
bnQzMl90IEhlYXBWZXJzaW9uOwogCi0vLyBTZXQgdG8gbG9nIHN0YXRlIHRyYW5zaXRpb25zIG9m
IGJsb2Nrcy4KLSNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTlMgMAotCi0j
aWYgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTlMKLSNkZWZpbmUgSEVBUF9MT0dfQkxP
Q0tfU1RBVEVfVFJBTlNJVElPTihoYW5kbGUpIGRvIHsgICAgICAgICAgICBcCi0gICAgICAgIGRh
dGFMb2dGKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICAgICAgIiVzOiVkICVzOiBibG9jayAlcyA9ICVwLCAlZFxuIiwgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgX19GVU5DVElPTl9fLCAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAjaGFuZGxlLCAmKGhhbmRsZSktPmJsb2Nr
KCksIChoYW5kbGUpLT5tX3N0YXRlKTsgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQotI2Vsc2UK
LSNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTihoYW5kbGUpICgodm9pZCkw
KQotI2VuZGlmCi0KIC8vIEEgbWFya2VkIGJsb2NrIGlzIGEgcGFnZS1hbGlnbmVkIGNvbnRhaW5l
ciBmb3IgaGVhcC1hbGxvY2F0ZWQgb2JqZWN0cy4KIC8vIE9iamVjdHMgYXJlIGFsbG9jYXRlZCB3
aXRoaW4gY2VsbHMgb2YgdGhlIG1hcmtlZCBibG9jay4gRm9yIGEgZ2l2ZW4KIC8vIG1hcmtlZCBi
bG9jaywgYWxsIGNlbGxzIGhhdmUgdGhlIHNhbWUgc2l6ZS4gT2JqZWN0cyBzbWFsbGVyIHRoYW4g
dGhlCkBAIC03Niw4ICs2Miw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IEhhbmRsZTsKIHB1YmxpYzoKLSAgICBlbnVtIEJsb2NrU3RhdGUgOiB1aW50OF90IHsgTmV3LCBG
cmVlTGlzdGVkLCBBbGxvY2F0ZWQsIE1hcmtlZCB9OwotICAgICAgICAKICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IGF0b21TaXplID0gMTY7IC8vIGJ5dGVzCiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBibG9ja1NpemUgPSAxNiAqIEtCOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tNYXNr
ID0gfihibG9ja1NpemUgLSAxKTsgLy8gYmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28u
CkBAIC04NiwxMiArNzAsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljX2Fzc2VydCghKE1hcmtl
ZEJsb2NrOjphdG9tU2l6ZSAmIChNYXJrZWRCbG9jazo6YXRvbVNpemUgLSAxKSksICJNYXJrZWRC
bG9jazo6YXRvbVNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4iKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KCEoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSAmIChNYXJrZWRCbG9jazo6YmxvY2tTaXplIC0g
MSkpLCAiTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwot
CisgICAgCiAgICAgc3RydWN0IFZvaWRGdW5jdG9yIHsKICAgICAgICAgdHlwZWRlZiB2b2lkIFJl
dHVyblR5cGU7CiAgICAgICAgIHZvaWQgcmV0dXJuVmFsdWUoKSB7IH0KICAgICB9OwotCisgICAg
CiAgICAgY2xhc3MgQ291bnRGdW5jdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYg
c2l6ZV90IFJldHVyblR5cGU7CkBAIC0xMDYsMTAgKzkwLDkgQEAgcHVibGljOgogICAgICAgICBt
dXRhYmxlIFJldHVyblR5cGUgbV9jb3VudDsKICAgICB9OwogICAgICAgICAKLSAgICBjbGFzcyBI
YW5kbGUgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8SGFuZGxlPiB7CisgICAgY2xhc3Mg
SGFuZGxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsKICAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBEb3VibHlMaW5r
ZWRMaXN0Tm9kZTxIYW5kbGU+OwogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVu
ZCBzdHJ1Y3QgVmVyaWZ5TWFya2VkOwpAQCAtMTMwLDYgKzExMywxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIFZNKiB2bSgpIGNvbnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAgICAgICAg
ICAgICAKKyAgICAgICAgLy8gU3dlZXBpbmcgZW5zdXJlcyB0aGF0IGRlc3RydWN0b3JzIGdldCBj
YWxsZWQgYW5kIHJlbW92ZXMgdGhlIGJsb2NrIGZyb20gdGhlIHVuc3dlcHQKKyAgICAgICAgLy8g
c2V0LiBTd2VlcGluZyB0byBmcmVlIGxpc3QgYWxzbyByZW1vdmVzIHRoZSBibG9jayBmcm9tIHRo
ZSBlbXB0eSBzZXQsIGlmIGl0IHdhcyBpbiB0aGF0CisgICAgICAgIC8vIHNldC4gU3dlZXBpbmcg
d2l0aCBTd2VlcE9ubHkgbWF5IGFkZCB0aGlzIGJsb2NrIHRvIHRoZSBlbXB0eSBzZXQsIGlmIHRo
ZSBibG9jayBpcyBmb3VuZAorICAgICAgICAvLyB0byBiZSBlbXB0eS4KKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gTm90ZSB0aGF0IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBlbXB0eSBi
aXQgcmVmbGVjdHMgcmVhbGl0eS4gSWYgaXQncyBub3Qgc2V0CisgICAgICAgIC8vIGFuZCB0aGUg
YmxvY2sgaXMgZnJlc2hseSBjcmVhdGVkLCB0aGVuIHdlJ2xsIG1ha2UgdGhlIG1pc3Rha2Ugb2Yg
cnVubmluZyBkZXN0cnVjdG9ycyBpbgorICAgICAgICAvLyB0aGUgYmxvY2suIElmIGl0J3Mgbm90
IHNldCBhbmQgdGhlIGJsb2NrIGhhcyBub3RoaW5nIG1hcmtlZCwgdGhlbiB3ZSdsbCBtYWtlIHRo
ZQorICAgICAgICAvLyBtaXN0YWtlIG9mIG1ha2luZyBhIHBvcCBmcmVlbGlzdCByYXRoZXIgdGhh
biBhIGJ1bXAgZnJlZWxpc3QuCiAgICAgICAgIGVudW0gU3dlZXBNb2RlIHsgU3dlZXBPbmx5LCBT
d2VlcFRvRnJlZUxpc3QgfTsKICAgICAgICAgRnJlZUxpc3Qgc3dlZXAoU3dlZXBNb2RlID0gU3dl
ZXBPbmx5KTsKICAgICAgICAgCkBAIC0xNTMsOCArMTQ1LDYgQEAgcHVibGljOgogICAgICAgICAv
LyBhbmQgd2FzIHN1Y2Nlc3NmdWxseSBjbGVhcmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgICAg
ICAgIGJvb2wgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwogICAgICAgICAgICAgCi0gICAgICAgIHZv
aWQgZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgc2l6ZV90
IGNlbGxTaXplKCk7CiAgICAgICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7
CkBAIC0xNjQsOSArMTU0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG1hcmtDb3VudCgp
OwogICAgICAgICBzaXplX3Qgc2l6ZSgpOwogICAgICAgICAgICAgCisgICAgICAgIGlubGluZSBi
b29sIGlzTGl2ZShIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgaW5saW5l
IGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOworCiAgICAgICAgIGJv
b2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25z
dCB2b2lkKik7CisKICAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3Qg
SGVhcENlbGwqKTsKKyAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZl
cnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBpc05l
d2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBzZXROZXdseUFsbG9jYXRl
ZChjb25zdCB2b2lkKik7CkBAIC0xNzQsMzEgKzE2OSwyNSBAQCBwdWJsaWM6CiAgICAgICAgIAog
ICAgICAgICBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX25l
d2x5QWxsb2NhdGVkOyB9CiAgICAgICAgICAgICAKLSAgICAgICAgYm9vbCBpc0FsbG9jYXRlZCgp
IGNvbnN0OwotICAgICAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNG
cmVlTGlzdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgbmVlZHNTd2VlcGluZygpIGNvbnN0Owot
ICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwotCiAgICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYp
OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZv
ckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3Im
KTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25T
dGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxs
KGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgICAgIAogICAgICAgICBib29sIG5lZWRzRmxpcCgp
OwotICAgICAgICAgICAgCi0gICAgICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2lu
ZyhIZWFwVmVyc2lvbik7Ci0gICAgICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9u
KTsKLSAgICAgICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIAorICAgICAg
ICAKICAgICAgICAgdm9pZCBhc3NlcnRGbGlwcGVkKCk7CiAgICAgICAgICAgICAKLSAgICAgICAg
Ym9vbCBpc09uQmxvY2tzVG9Td2VlcCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPbkJsb2Nrc1RvU3dl
ZXA7IH0KLSAgICAgICAgdm9pZCBzZXRJc09uQmxvY2tzVG9Td2VlcChib29sIHZhbHVlKSB7IG1f
aXNPbkJsb2Nrc1RvU3dlZXAgPSB2YWx1ZTsgfQorICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNGcmVlTGlzdGVkOyB9CisgICAgICAgIAorICAgICAgICBzaXpl
X3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAgIAorICAgICAgICB2
b2lkIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgZGlkQWRk
VG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGluZGV4KTsKKyAgICAgICAgdm9p
ZCBkaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAgICAgICAgIAotICAgICAgICBCbG9ja1N0YXRl
IHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQotICAgICAgICAgICAgCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgSGFuZGxlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2Vs
bFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmLCB2b2lkKik7CisgICAgICAgIEhhbmRs
ZShIZWFwJiwgdm9pZCopOwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERlc3RydWN0
aW9uTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGUo
U3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKQEAgLTIwNiwzNSArMTk1LDUwIEBAIHB1YmxpYzoKICAg
ICAgICAgZW51bSBTY3JpYmJsZU1vZGUgeyBEb250U2NyaWJibGUsIFNjcmliYmxlIH07CiAgICAg
ICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGU+
Ci0gICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGUoU3dl
ZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RF
bXB0eU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgICAgIAorICAgICAgICBl
bnVtIEVtcHR5TW9kZSB7IElzRW1wdHksIE5vdEVtcHR5IH07CisgICAgICAgIAorICAgICAgICB0
ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgorICAgICAg
ICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSA9
IFN3ZWVwT25seSk7CisgICAgICAgIAogICAgICAgICBlbnVtIE5ld2x5QWxsb2NhdGVkTW9kZSB7
IEhhc05ld2x5QWxsb2NhdGVkLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkIH07Ci0gICAgICAg
ICAgICAKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlv
bk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICAKKyAgICAg
ICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3
bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFN3ZWVw
TW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8
RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXds
eUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0RmxpcE1v
ZGUoKTsKKyAgICAgICAgCisgICAgICAgIGVudW0gRmxpcE1vZGUgeyBOZWVkc0ZsaXAsIERvZXNO
b3ROZWVkRmxpcCB9OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBTd2Vl
cE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGUs
IEZsaXBNb2RlPgogICAgICAgICBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVwKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICAgICAgdm9pZCBmb3JF
YWNoRnJlZUNlbGwoY29uc3QgRnJlZUxpc3QmLCBjb25zdCBGdW5jJik7Ci0gICAgICAgICAgICAK
KyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIAogICAg
ICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX3ByZXY7CiAgICAgICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIG1fbmV4dDsKICAgICAgICAgICAgIAotICAgICAgICBzaXplX3QgbV9hdG9tc1BlckNl
bGw7Ci0gICAgICAgIHNpemVfdCBtX2VuZEF0b207IC8vIFRoaXMgaXMgYSBmdXp6eSBlbmQuIEFs
d2F5cyB0ZXN0IGZvciA8IG1fZW5kQXRvbS4KKyAgICAgICAgc2l6ZV90IG1fYXRvbXNQZXJDZWxs
IHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OworICAgICAgICBzaXplX3Qg
bV9lbmRBdG9tIHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OyAvLyBUaGlz
IGlzIGEgZnV6enkgZW5kLiBBbHdheXMgdGVzdCBmb3IgPCBtX2VuZEF0b20uCiAgICAgICAgICAg
ICAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+PiBt
X25ld2x5QWxsb2NhdGVkOwogICAgICAgICAgICAgCiAgICAgICAgIEFsbG9jYXRvckF0dHJpYnV0
ZXMgbV9hdHRyaWJ1dGVzOwotICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7Ci0gICAgICAgIGJv
b2wgbV9pc09uQmxvY2tzVG9Td2VlcCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9pc0ZyZWVM
aXN0ZWQgeyBmYWxzZSB9OwogICAgICAgICAgICAgCi0gICAgICAgIE1hcmtlZEFsbG9jYXRvciog
bV9hbGxvY2F0b3I7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3IgeyBudWxs
cHRyIH07CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsKICAgICAgICAgICAgIAot
ICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jazsKKyAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxv
Y2sgeyBudWxscHRyIH07CiAgICAgfTsKICAgICAgICAgCi0gICAgc3RhdGljIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxT
aXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7CisgICAgc3RhdGljIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJik7CiAgICAgICAgIAogICAgIEhhbmRsZSYgaGFuZGxl
KCk7CiAgICAgICAgIApAQCAtMjQ4LDM0ICsyNTIsMzUgQEAgcHVibGljOgogICAgIHNpemVfdCBt
YXJrQ291bnQoKTsKIAogICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOworICAgIGJvb2wg
aXNNYXJrZWQoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKKyAgICBib29sIGlzTWFya2VkQ29u
Y3VycmVudGx5KEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7CiAgICAgYm9vbCB0ZXN0QW5kU2V0
TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgCiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlB
bGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKICAgICAKLSAgICBib29sIGlzTWFy
a2VkRHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwotCiAg
ICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgIHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qg
dm9pZCopOwotICAgICAgICAKKyAgICAKICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAgICBjb25z
dCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7Ci0KKyAgICAKICAgICBi
b29sIGhhc0FueU1hcmtlZCgpIGNvbnN0OwogICAgIHZvaWQgbm90ZU1hcmtlZCgpOwogICAgICAg
ICAKICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7Ci0KKyAgICAKICAgICBib29sIG5lZWRzRmxpcChI
ZWFwVmVyc2lvbik7CiAgICAgYm9vbCBuZWVkc0ZsaXAoKTsKLSAgICAgICAgCi0gICAgdm9pZCBm
bGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZsaXBJ
Zk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKKyAg
ICAKKyAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKTsKICAgICAgICAgCiAgICAgdm9p
ZCBhc3NlcnRGbGlwcGVkKCk7CiAgICAgICAgIAogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNEZXN0cnVjdGlvbjsgfQotICAgICAgICAKKyAgICAKKyAg
ICBpbmxpbmUgdm9pZCByZXNldFZlcnNpb24oKTsKKyAgICAKIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKIApAQCAtMjg0
LDkgKzI4OSw5IEBAIHByaXZhdGU6CiAgICAgTWFya2VkQmxvY2soVk0mLCBIYW5kbGUmKTsKICAg
ICBBdG9tKiBhdG9tcygpOwogICAgICAgICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmlu
Z01hcmtpbmdTbG93KCk7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlTbG93KCk7CisgICAgdm9p
ZCBhYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJNYXJrcygpOwor
ICAgIHZvaWQgY2xlYXJNYXJrcyhIZWFwVmVyc2lvbik7CiAgICAgdm9pZCBjbGVhckhhc0FueU1h
cmtlZCgpOwogICAgIAogICAgIHZvaWQgbm90ZU1hcmtlZFNsb3coKTsKQEAgLTQ2OSw0MCArNDc0
LDEzIEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpuZWVkc0ZsaXAoSGVhcFYKICAgICByZXR1
cm4gaGVhcFZlcnNpb24gIT0gbV92ZXJzaW9uOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9j
azo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQoraW5saW5lIHZvaWQg
TWFya2VkQmxvY2s6OmFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAg
IGlmIChVTkxJS0VMWShuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKSkKLSAgICAgICAgZmxpcElmTmVj
ZXNzYXJ5U2xvdygpOwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNz
YXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBpZiAoVU5M
SUtFTFkobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkpCi0gICAgICAgIGZsaXBJZk5lY2Vzc2FyeUR1
cmluZ01hcmtpbmdTbG93KCk7CisgICAgICAgIGFib3V0VG9NYXJrU2xvdyhoZWFwVmVyc2lvbik7
CiAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAg
ICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7Ci19Ci0KLWlubGluZSB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZl
cnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2soKS5mbGlwSWZOZWNlc3NhcnlEdXJpbmdN
YXJraW5nKGhlYXBWZXJzaW9uKTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6ZmxpcEZvckVkZW5Db2xsZWN0aW9uKCkKLXsKLSAgICBhc3NlcnRGbGlwcGVkKCk7Ci0gICAg
ICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgCi0g
ICAgQVNTRVJUKG1fc3RhdGUgIT0gTmV3ICYmIG1fc3RhdGUgIT0gRnJlZUxpc3RlZCk7Ci0gICAg
Ci0gICAgbV9zdGF0ZSA9IE1hcmtlZDsKLX0KLQogI2lmIEFTU0VSVF9ESVNBQkxFRAogaW5saW5l
IHZvaWQgTWFya2VkQmxvY2s6OmFzc2VydEZsaXBwZWQoKQogewpAQCAtNTE0LDkgKzQ5MiwxNiBA
QCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjphc3NlcnRGCiAgICAgYmxvY2soKS5h
c3NlcnRGbGlwcGVkKCk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChj
b25zdCB2b2lkKiBwKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKEhlYXBWZXJz
aW9uIGhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKiBwKQogewotICAgIGFzc2VydEZsaXBwZWQoKTsK
KyAgICByZXR1cm4gbmVlZHNGbGlwKGhlYXBWZXJzaW9uKSA/IGZhbHNlIDogbV9tYXJrcy5nZXQo
YXRvbU51bWJlcihwKSk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZENv
bmN1cnJlbnRseShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKK3sKKyAg
ICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVy
KHApKTsKIH0KIApAQCAtNTUwLDQzICs1MzUsMTQgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OkhhbmRsZTo6Y2xlYXJOZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxs
KiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5
QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewot
ICAgIEFTU0VSVChtX3N0YXRlID09IE1hcmtlZCk7Ci0gICAgcmV0dXJuIG1fYmxvY2stPmlzTWFy
a2VkKGNlbGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkp
OworICAgIHJldHVybiBtX2Jsb2NrLT5pc01hcmtlZCh2ZXJzaW9uLCBjZWxsKSB8fCAobV9uZXds
eUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2Vs
bCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVh
cFZlcnNpb24gdmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgQVNTRVJUKG1f
aGFuZGxlLm1fc3RhdGUgPT0gTWFya2VkKTsKLSAgICByZXR1cm4gaXNNYXJrZWQoY2VsbCkgfHwg
KG1faGFuZGxlLm1fbmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXdseUFsbG9jYXRlZChj
ZWxsKSk7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZER1cmluZ1dlYWtW
aXNpdGluZyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCi17
Ci0gICAgaWYgKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gaXNNYXJrZWQoY2VsbCk7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCogY2VsbCkKLXsKLSAgICBhc3NlcnRGbGlw
cGVkKCk7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBBbGxvY2F0ZWQ6Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAgIHJldHVybiBpc01h
cmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7Ci0KLSAgICBjYXNlIE5ldzoKLSAgICBjYXNlIEZy
ZWVMaXN0ZWQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNNYXJrZWQodmVyc2lvbiwgY2VsbCkg
fHwgKG1faGFuZGxlLm1fbmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXdseUFsbG9jYXRl
ZChjZWxsKSk7CiB9CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9p
ZCogcCkKQEAgLTYwMywxMyArNTU5LDYgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRv
bShjb25zdCB2bwogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6SGFuZGxlOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCi17Ci0gICAgaWYgKCFtX2Jsb2Nr
LT5pc0F0b20ocCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNMaXZlKHN0
YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4KIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9y
RWFjaENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKQEAgLTYyMiw2MiArNTcxLDYgQEAg
aW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZAogICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4K
LWlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExpdmVD
ZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0g
ICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNl
bGwpIHsKLSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFw
Q2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5k
KSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9u
U3RhdHVzOjpEb25lOwotICAgIH0KLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51
ZTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgSXRlcmF0aW9uU3Rh
dHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhlYXBDZWxsOjpLaW5kIGtp
bmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRv
bSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIEhlYXBD
ZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRv
bXMoKVtpXSk7Ci0gICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6
OkRvbmUpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAgIH0K
LSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLX0KLQotaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNTd2VlcGluZygpIGNvbnN0Ci17Ci0gICAgY29uc3Rf
Y2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAg
IHJldHVybiBtX3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OkhhbmRsZTo6aXNBbGxvY2F0ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxv
Y2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0
ZSA9PSBBbGxvY2F0ZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omlz
TWFya2VkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0
aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwot
fQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0ZWQoKSBjb25z
dAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZO
ZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBGcmVlTGlzdGVkOwotfQotCiBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6aGFzQW55TWFya2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9iaWFzZWRNYXJrQ291bnQgIT0gbV9tYXJrQ291bnRCaWFzOwpAQCAtNzExLDcgKzYwNCw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6TWFya2UKICAgICB0eXBlZGVmIE1h
cmtlZEJsb2NrSGFzaCBIYXNoOwogfTsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUpOwordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlKTsK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKKyNpbmNsdWRl
ICJNYXJrZWRCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNMaXZlKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxs
KiBjZWxsKQoreworICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIGlmIChV
TkxJS0VMWShoYXNBbnlOZXdseUFsbG9jYXRlZCgpKSkgeworICAgICAgICBpZiAoaXNOZXdseUFs
bG9jYXRlZChjZWxsKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAg
ICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOworICAgIAorICAgIGlmIChhbGxv
Y2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAor
ICAgIGlmIChibG9jay5uZWVkc0ZsaXAodmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKK30KKworaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCB2
b2lkKiBwKQoreworICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIGlzTGl2ZSh2ZXJzaW9uLCBzdGF0aWNfY2FzdDxjb25zdCBIZWFw
Q2VsbCo+KHApKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CitpbmxpbmUgSXRl
cmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQoreworICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0
ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRB
dG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CisgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVp
bnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7CisgICAg
ICAgIGlmICghaXNMaXZlKGNlbGwpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
aWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKKyAgICB9CisgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PgoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoRGVh
ZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBIZWFwQ2VsbDo6S2luZCBraW5k
ID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOworICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20o
KTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgeworICAgICAgICBIZWFwQ2Vs
bCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21z
KClbaV0pOworICAgICAgICBpZiAoaXNMaXZlKGNlbGwpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpE
b25lKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKKyAgICB9Cisg
ICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisKK2lubGluZSB2b2lkIE1h
cmtlZEJsb2NrOjpyZXNldFZlcnNpb24oKQoreworICAgIG1fdmVyc2lvbiA9IE1hcmtlZFNwYWNl
OjpudWxsVmVyc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1h
cmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUg
PHd0Zi9MaXN0RHVtcC5oPgogCkBAIC0xOTUsNiArMTk2LDE5IEBAIE1hcmtlZFNwYWNlOjpNYXJr
ZWRTcGFjZShIZWFwKiBoZWFwKQogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CisgICAgCisgICAgTWFya2VkQWxs
b2NhdG9yKiBwcmV2aW91cyA9IG51bGxwdHI7CisgICAgZm9yRWFjaFN1YnNwYWNlKAorICAgICAg
ICBbJl0gKFN1YnNwYWNlJiBzdWJzcGFjZSwgQWxsb2NhdG9yQXR0cmlidXRlcykgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGZvciAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3Ig
OiBzdWJzcGFjZS5iYWdPZkFsbG9jYXRvcnMpIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3It
PnNldE5leHRBbGxvY2F0b3IocHJldmlvdXMpOworICAgICAgICAgICAgICAgIHByZXZpb3VzID0g
YWxsb2NhdG9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7CisgICAgbV9maXJzdEFs
bG9jYXRvciA9IHByZXZpb3VzOworICAgIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0g
cHJldmlvdXM7CiB9CiAKIE1hcmtlZFNwYWNlOjp+TWFya2VkU3BhY2UoKQpAQCAtMjIyLDE1ICsy
MzYsMjEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogCiB2b2lk
KiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUoU3Vic3BhY2UmIHN1YnNwYWNlLCBzaXplX3QgYnl0ZXMp
CiB7Ci0gICAgaWYgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1
YnNwYWNlLCBieXRlcykpCi0gICAgICAgIHJldHVybiBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7Cisg
ICAgaWYgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNwYWNl
LCBieXRlcykpIHsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgp
OworICAgICAgICAvL2RhdGFMb2coIkFsbG9jYXRlZCAiLCBSYXdQb2ludGVyKHJlc3VsdCksICJc
biIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICByZXR1cm4gYWxsb2NhdGVM
YXJnZShzdWJzcGFjZSwgYnl0ZXMpOwogfQogCiB2b2lkKiBNYXJrZWRTcGFjZTo6dHJ5QWxsb2Nh
dGUoU3Vic3BhY2UmIHN1YnNwYWNlLCBzaXplX3QgYnl0ZXMpCiB7Ci0gICAgaWYgKE1hcmtlZEFs
bG9jYXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNwYWNlLCBieXRlcykpCi0gICAg
ICAgIHJldHVybiBhbGxvY2F0b3ItPnRyeUFsbG9jYXRlKCk7CisgICAgaWYgKE1hcmtlZEFsbG9j
YXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNwYWNlLCBieXRlcykpIHsKKyAgICAg
ICAgdm9pZCogcmVzdWx0ID0gYWxsb2NhdG9yLT50cnlBbGxvY2F0ZSgpOworICAgICAgICAvL2Rh
dGFMb2coIlRyeS1hbGxvY2F0ZWQgIiwgUmF3UG9pbnRlcihyZXN1bHQpLCAiXG4iKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgcmV0dXJuIHRyeUFsbG9jYXRlTGFyZ2Uoc3Vi
c3BhY2UsIGJ5dGVzKTsKIH0KIApAQCAtMjU5LDkgKzI3OSwxMCBAQCB2b2lkKiBNYXJrZWRTcGFj
ZTo6dHJ5QWxsb2NhdGVMYXJnZShTdWJzCiB2b2lkIE1hcmtlZFNwYWNlOjpzd2VlcCgpCiB7CiAg
ICAgbV9oZWFwLT5zd2VlcGVyKCktPndpbGxGaW5pc2hTd2VlcGluZygpOwotICAgIGZvckVhY2hC
bG9jaygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAg
ICAgICAgYmxvY2stPnN3ZWVwKCk7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZd
IChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAg
ICAgICAgIGFsbG9jYXRvci5zd2VlcCgpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0
YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOwogfQogCkBAIC0yODQsMzMgKzMwNSwyMyBAQCB2
b2lkIE1hcmtlZFNwYWNlOjpzd2VlcExhcmdlQWxsb2NhdGlvbnMoCiAgICAgbV9sYXJnZUFsbG9j
YXRpb25zTnVyc2VyeU9mZnNldCA9IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7CiB9CiAKLXZv
aWQgTWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCgpCi17Ci0gICAgaWYgKE9wdGlvbnM6OmxvZ0dD
KCkpCi0gICAgICAgIGRhdGFMb2coIlpvbWJpZnlpbmcgc3dlZXAuLi4iKTsKLSAgICBtX2hlYXAt
PnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAg
ICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAo
YmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAgICAgICAgICAgICBibG9jay0+c3dlZXAoKTsK
LSAgICAgICAgfSk7Ci19Ci0KLXZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCit2
b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7CiAgICAgZm9yRWFjaEFs
bG9jYXRvcigKICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRl
cmF0aW9uU3RhdHVzIHsKLSAgICAgICAgICAgIGFsbG9jYXRvci5yZXNldCgpOworICAgICAgICAg
ICAgYWxsb2NhdG9yLnByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CiAKLSAgICBtX2Jsb2Nrc1dp
dGhOZXdPYmplY3RzLmNsZWFyKCk7CiAgICAgbV9hY3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25l
d0FjdGl2ZVdlYWtTZXRzKTsKKyAgICAKICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dy
ZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNl
cnlPZmZzZXRGb3JTd2VlcCA9IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7CiAgICAg
ZWxzZQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0Rm9yU3dlZXAgPSAw
OwogICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQgPSBtX2xhcmdlQWxsb2NhdGlv
bnMuc2l6ZSgpOworICAgIAorICAgIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gbV9m
aXJzdEFsbG9jYXRvcjsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyhIZWFw
Um9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikKQEAgLTQxMCwxMSArNDIxLDExIEBAIHZvaWQg
TWFya2VkU3BhY2U6OmZyZWVPclNocmlua0Jsb2NrKE1hcmsKIAogdm9pZCBNYXJrZWRTcGFjZTo6
c2hyaW5rKCkKIHsKLSAgICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIGZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsK
KyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxs
b2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLnNocmlu
aygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAg
ICAgIH0pOwotICAgIC8vIEZvciBMYXJnZUFsbG9jYXRpb25zLCB3ZSBkbyB0aGUgbW9yYWwgZXF1
aXZhbGVudCBpbiBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKS4KIH0KIAogdm9pZCBNYXJrZWRTcGFj
ZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCkBAIC00MjksNTcgKzQ0MCw2MSBAQCB2b2lkIE1hcmtl
ZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xh
cmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxvY2F0
aW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5jbGVhck5l
d2x5QWxsb2NhdGVkKCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgZm9yRWFjaEJsb2Nr
KAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoIWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOwotICAgICAgICB9KTsKLQot
ICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25z
KQotICAgICAgICBBU1NFUlQoIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7Ci0jZW5k
aWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfQotCi0jaWZuZGVmIE5ERUJVRyAKLXN0cnVjdCBWZXJp
ZnlNYXJrZWQgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgeyAKLSAgICB2b2lkIG9wZXJhdG9y
KCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAo
YmxvY2stPm5lZWRzRmxpcCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzd2l0Y2gg
KGJsb2NrLT5tX3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChibG9jaywg
IWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IAorICAgICAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxv
Y2F0aW9ucykKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWxsb2NhdGlvbiwgIWFsbG9jYXRp
b24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7CiAgICAgfQotfTsgCi0jZW5kaWYgCit9CiAKLXZvaWQg
TWFya2VkU3BhY2U6OmZsaXAoKQordm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsK
LSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24p
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVj
dHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT5m
bGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsKLSAgICB9IGVsc2UgewotICAgICAgICBIZWFwVmVyc2lv
biBuZXh0VmVyc2lvbiA9IG1fdmVyc2lvbiArIDE7Ci0gICAgICAgIGlmIChVTkxJS0VMWShuZXh0
VmVyc2lvbiA9PSBpbml0aWFsVmVyc2lvbikpIHsKLSAgICAgICAgICAgIC8vIE9oIG5vISBWZXJz
aW9uIHdyYXAtYXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBmbGlwcGluZyBhbGwgYmxvY2tzLiBU
aGlzIGhhcHBlbnMKLSAgICAgICAgICAgIC8vIHN1cGVyIHJhcmVseSwgcHJvYmFibHkgbmV2ZXIg
Zm9yIG1vc3QgdXNlcnMuCisgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09
IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgICAg
ICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewor
ICAgICAgICAgICAgICAgIGFsbG9jYXRvci5iZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigp
OworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgbV92ZXJzaW9uID0gbmV4dFZlcnNpb24obV92ZXJzaW9u
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChVTkxJS0VMWShtX3ZlcnNpb24gPT0gaW5pdGlhbFZl
cnNpb24pKSB7CisgICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2Ug
aGFuZGxlIHRoaXMgYnkgc2V0dGluZyBhbGwgYmxvY2sgdmVyc2lvbnMgdG8gbnVsbC4KICAgICAg
ICAgICAgIGZvckVhY2hCbG9jaygKICAgICAgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGhhbmRsZSkgewotICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmZsaXBJZk5lY2Vz
c2FyeSgpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmJsb2NrKCkucmVzZXRWZXJzaW9u
KCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgbV92ZXJzaW9uID0g
bmV4dFZlcnNpb247IC8vIEhlbmNlZm9ydGgsIGZsaXBJZk5lY2Vzc2FyeSgpIHdpbGwgdHJpZ2dl
ciBvbiBhbGwgYmxvY2tzLgorICAgICAgICAKICAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24q
IGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCiAgICAgICAgICAgICBhbGxvY2F0aW9u
LT5mbGlwKCk7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwotICAgIFZlcmlmeU1hcmtlZCB2ZXJp
ZnlGdW5jdG9yOwotICAgIGZvckVhY2hCbG9jayh2ZXJpZnlGdW5jdG9yKTsKLSNlbmRpZgorICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAg
ICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYmxvY2stPm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICAgICAg
fSk7CisgICAgfQorICAgIAorICAgIG1faXNNYXJraW5nID0gdHJ1ZTsKK30KKwordm9pZCBNYXJr
ZWRTcGFjZTo6ZW5kTWFya2luZygpCit7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAg
WyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAg
ICAgICAgICAgIGFsbG9jYXRvci5lbmRNYXJraW5nKCk7CisgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7CisgICAgCisgICAgbV9pc01hcmtp
bmcgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6d2lsbFN0YXJ0SXRlcmF0aW5nKCkK
QEAgLTU0MCwxOSArNTU1LDY2IEBAIHZvaWQgTWFya2VkU3BhY2U6OmFkZEFjdGl2ZVdlYWtTZXQo
V2Vha1MKIAogdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2spCiB7CisgICAgLy8gV0FSTklORzogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVm
b3JlIGJsb2NrIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGUgYmxvY2sgd2lsbCBub3Qga25vdwor
ICAgIC8vIGl0cyBjZWxsU2l6ZSgpIG9yIGF0dHJpYnV0ZXMoKS4gVGhlIGxhdHRlciBpbXBsaWVz
IHRoYXQgeW91IGNhbid0IGFzayB0aGluZ3MgbGlrZQorICAgIC8vIG5lZWRzRGVzdHJ1Y3Rpb24o
KS4KICAgICBtX2NhcGFjaXR5ICs9IE1hcmtlZEJsb2NrOjpibG9ja1NpemU7CiAgICAgbV9ibG9j
a3MuYWRkKCZibG9jay0+YmxvY2soKSk7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFsbG9j
YXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIHsKLSAgICBibG9jay0+YXNz
ZXJ0RmxpcHBlZCgpOwotICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHMuYXBwZW5kKGJsb2NrKTsK
LSAgICAKICAgICBpZiAoYmxvY2stPndlYWtTZXQoKS5pc09uTGlzdCgpKSB7CiAgICAgICAgIGJs
b2NrLT53ZWFrU2V0KCkucmVtb3ZlKCk7CiAgICAgICAgIG1fbmV3QWN0aXZlV2Vha1NldHMuYXBw
ZW5kKCZibG9jay0+d2Vha1NldCgpKTsKICAgICB9CiB9CiAKK01hcmtlZEJsb2NrOjpIYW5kbGUq
IE1hcmtlZFNwYWNlOjpmaW5kRW1wdHlCbG9jaygpCit7CisgICAgZm9yICg7IG1fYWxsb2NhdG9y
Rm9yRW1wdHlBbGxvY2F0aW9uOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxs
b2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgaWYg
KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRp
b24tPmZpbmRFbXB0eUJsb2NrKCkpCisgICAgICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQor
ICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1hcmtlZFNwYWNlOjpzbmFwc2hvdFVuc3dl
cHQoKQoreworICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29s
bGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChN
YXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAg
ICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAg
ICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAg
ICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMg
eworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVj
dGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OworICAgICAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIE1hcmtlZFNwYWNlOjphc3NlcnRO
b1Vuc3dlcHQoKQoreworICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCisgICAgICAgIHJldHVybjsK
KyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxs
b2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLmFzc2Vy
dE5vVW5zd2VwdCgpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGlu
dWU7CisgICAgICAgIH0pOworfQorCit2b2lkIE1hcmtlZFNwYWNlOjpkdW1wQml0cyhQcmludFN0
cmVhbSYgb3V0KQoreworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBv
dXQucHJpbnQoIkJpdHMgZm9yICIsIGFsbG9jYXRvciwgIjpcbiIpOworICAgICAgICAgICAgYWxs
b2NhdG9yLmR1bXBCaXRzKG91dCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKKyAgICAgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDYwMzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw3ICs2NSwxNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IG51bVNpemVDbGFzc2VzID0gbGFyZ2VDdXRvZmYgLyBzaXplU3RlcDsKICAgICAKLSAgICBzdGF0
aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSA0MjsgIC8vIFRoaXMgY2FuIGJl
IGFueSB2YWx1ZSwgaW5jbHVkaW5nIHJhbmRvbSBnYXJiYWdlLCBzbyBsb25nIGFzIGl0J3MgY29u
c2lzdGVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLgorICAgIHN0YXRpYyBjb25z
dCBIZWFwVmVyc2lvbiBudWxsVmVyc2lvbiA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9mIGZyZXNobHkg
YWxsb2NhdGVkIGJsb2Nrcy4KKyAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZl
cnNpb24gPSAxOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4K
KyAgICAKKyAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQor
ICAgIHsKKyAgICAgICAgdmVyc2lvbisrOworICAgICAgICBpZiAodmVyc2lvbiA9PSBudWxsVmVy
c2lvbikKKyAgICAgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgcmV0dXJuIHZlcnNpb247Cisg
ICAgfQogICAgIAogICAgIHN0YXRpYyBzaXplX3Qgc2l6ZUNsYXNzVG9JbmRleChzaXplX3Qgc2l6
ZSkKICAgICB7CkBAIC0xMTQsNyArMTIzLDcgQEAgcHVibGljOgogICAgIFN1YnNwYWNlJiBzdWJz
cGFjZUZvck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbm9ybWFsU3BhY2U7
IH0KICAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCkgeyByZXR1cm4gbV9h
dXhpbGlhcnlTcGFjZTsgfQogICAgIAotICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CisgICAg
dm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogCiAgICAgdm9pZCB2aXNpdFdlYWtTZXRzKEhl
YXBSb290VmlzaXRvciYpOwogICAgIHZvaWQgcmVhcFdlYWtTZXRzKCk7CkBAIC0xNDQsMTEgKzE1
MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFya2VkQmxvY2s6
OkhhbmRsZSopOwogICAgIHZvaWQgZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5k
bGUqKTsKIAotICAgIHZvaWQgZmxpcCgpOworICAgIHZvaWQgYmVnaW5NYXJraW5nKCk7CisgICAg
dm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICB2b2lk
IGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgICB2b2lkIHN3ZWVwKCk7CiAgICAgdm9pZCBzd2Vl
cExhcmdlQWxsb2NhdGlvbnMoKTsKLSAgICB2b2lkIHpvbWJpZnlTd2VlcCgpOworICAgIHZvaWQg
YXNzZXJ0Tm9VbnN3ZXB0KCk7CiAgICAgc2l6ZV90IG9iamVjdENvdW50KCk7CiAgICAgc2l6ZV90
IHNpemUoKTsKICAgICBzaXplX3QgY2FwYWNpdHkoKTsKQEAgLTE1Nyw4ICsxNjgsNiBAQCBwdWJs
aWM6CiAgICAgCiAgICAgSGVhcFZlcnNpb24gdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVy
c2lvbjsgfQogCi0gICAgY29uc3QgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tz
V2l0aE5ld09iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOyB9
Ci0gICAgCiAgICAgY29uc3QgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQg
bGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxs
b2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc09m
ZnNldEZvclRoaXNDb2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25z
T2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IH0KQEAgLTE2OSwxMyArMTc4LDE2IEBAIHB1YmxpYzoK
ICAgICBMYXJnZUFsbG9jYXRpb24qKiBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25F
bmQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVu
ZDsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUo
KSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemU7
IH0KICAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIGZpcnN0QWxsb2NhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdEFsbG9jYXRvcjsgfQorICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
Rm9yRW1wdHlBbGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0b3JGb3JFbXB0eUFs
bG9jYXRpb247IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9j
aygpOworICAgIAogICAgIC8vIFdoZW4gdGhpcyBpcyB0cnVlIGl0IG1lYW5zIHRoYXQgd2UgaGF2
ZSBmbGlwcGVkIGJ1dCB0aGUgbWFyayBiaXRzIGhhdmVuJ3QgY29udmVyZ2VkIHlldC4KICAgICBi
b29sIGlzTWFya2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNNYXJraW5nOyB9CiAgICAgCi0gICAg
Ly8gRklYTUU6IEFmdGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjE1ODEsIE1hcmtlZFNwYWNlIHdpbGwgY29udHJvbCB0aGlzCi0gICAgLy8gZmxhZyBkaXJlY3Rs
eS4KLSAgICB2b2lkIHNldElzTWFya2luZyhib29sIHZhbHVlKSB7IG1faXNNYXJraW5nID0gdmFs
dWU7IH0KLQorICAgIHZvaWQgZHVtcEJpdHMoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgp
KTsKKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMTkwLDggKzIwMiw4IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgdm9pZCBpbml0aWFsaXplU3Vic3BhY2UoU3Vic3BhY2UmKTsKIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9y
Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Vic3BhY2Uo
Y29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2
b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZvckVhY2hTdWJzcGFjZShjb25zdCBGdW5jdG9yJik7
CiAgICAgCiAgICAgdm9pZCBhZGRBY3RpdmVXZWFrU2V0KFdlYWtTZXQqKTsKIApAQCAtMjA1LDcg
KzIxNyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9p
c01hcmtpbmcgeyBmYWxzZSB9OwogICAgIE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOwotICAgIFZl
Y3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsKICAgICBW
ZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4gbV9sYXJnZUFsbG9jYXRpb25zOwogICAgIHVuc2lnbmVk
IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9s
YXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24geyAwIH07CkBAIC0yMTUsNDAg
KzIyNiwxMSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRo
aXNDb2xsZWN0aW9uU2l6ZSB7IDAgfTsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8V2Vha1NldCwg
QmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+IG1fYWN0aXZlV2Vha1NldHM7CiAgICAgU2Vu
dGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBt
X25ld0FjdGl2ZVdlYWtTZXRzOworICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogbV9maXJzdEFs
bG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yRm9y
RW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0
aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIEFTU0VSVChpc0l0ZXJh
dGluZygpKTsKLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwot
ICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hMaXZlQ2Vs
bChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFs
bG9jYXRpb25zKSB7Ci0gICAgICAgIGlmIChhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewotICAgICAg
ICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1
dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlv
blNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBBU1NFUlQoaXNJdGVyYXRp
bmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAg
ICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoRGVhZENlbGwo
ZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxv
Y2F0aW9ucykgewotICAgICAgICBpZiAoIWFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7Ci0gICAgICAg
ICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0
ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQogaW5saW5lIE1hcmtlZEFsbG9jYXRvciog
TWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihTdWJzcGFjZSYgc3BhY2UsIHNpemVfdCBieXRlcykK
IHsKICAgICBBU1NFUlQoYnl0ZXMpOwpAQCAtMzA0LDE1ICsyODYsMTAgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+
CiB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCiB7Ci0gICAgZm9yRWFjaFN1YnNwYWNlKAotICAgICAgICBbJl0gKFN1YnNwYWNlJiBzdWJz
cGFjZSwgQWxsb2NhdG9yQXR0cmlidXRlcykgLT4gSXRlcmF0aW9uU3RhdHVzIHsKLSAgICAgICAg
ICAgIGZvciAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgOiBzdWJzcGFjZS5iYWdPZkFsbG9j
YXRvcnMpIHsKLSAgICAgICAgICAgICAgICBpZiAoZnVuY3RvcigqYWxsb2NhdG9yKSA9PSBJdGVy
YXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkRvbmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotICAgICAgICB9KTsKKyAgICBmb3IgKE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gbV9maXJzdEFsbG9jYXRvcjsgYWxsb2NhdG9yOyBh
bGxvY2F0b3IgPSBhbGxvY2F0b3ItPm5leHRBbGxvY2F0b3IoKSkgeworICAgICAgICBpZiAoZnVu
Y3RvcigqYWxsb2NhdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtl
ZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFj
ZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCit7CisgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOworICAgIEJsb2NrSXRlcmF0b3Ig
ZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0g
bV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgo
Kml0KS0+aGFuZGxlKCkuZm9yRWFjaExpdmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1
czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChMYXJnZUFsbG9j
YXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKKyAgICAgICAgaWYgKGFs
bG9jYXRpb24tPmlzTGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9u
LT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6
OmZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQoreworICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVu
ZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1f
YmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoKCpp
dCktPmhhbmRsZSgpLmZvckVhY2hEZWFkQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6
OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoTGFyZ2VBbGxvY2F0
aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7CisgICAgICAgIGlmICghYWxs
b2NhdGlvbi0+aXNMaXZlKCkpIHsKKyAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24t
PmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25T
dGF0dXM6OkRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5
LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogICAgIHZhbGlk
YXRlKGNlbGwpOwogI2VuZGlmCiAgICAgCisgICAgLy9kYXRhTG9nKCIgICAgTWFya2luZyAiLCBS
YXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKKyAgICAKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9j
YXRpb24oKSkKICAgICAgICAgc2V0TWFya2VkQW5kQXBwZW5kVG9NYXJrU3RhY2soY2VsbC0+bGFy
Z2VBbGxvY2F0aW9uKCksIGNlbGwpOwogICAgIGVsc2UKQEAgLTE5OCw3ICsyMDAsNyBAQCB2b2lk
IFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRBbmRBcHBlbmRUb01hCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b250YWluZXJUeXBlPgogQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRB
bmRBcHBlbmRUb01hcmtTdGFjayhDb250YWluZXJUeXBlJiBjb250YWluZXIsIEpTQ2VsbCogY2Vs
bCkKIHsKLSAgICBjb250YWluZXIuZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhtX3ZlcnNp
b24pOworICAgIGNvbnRhaW5lci5hYm91dFRvTWFyayhtX3ZlcnNpb24pOwogICAgIAogICAgIGlm
IChjb250YWluZXIudGVzdEFuZFNldE1hcmtlZChjZWxsKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjQ2LDEwICsyNDgsOCBAQCB2b2lkIFNsb3RWaXNpdG9yOjptYXJrQXV4aWxpYXJ5KGNvbnN0IHZv
CiAgICAgCiAgICAgQVNTRVJUKGNlbGwtPmhlYXAoKSA9PSBoZWFwKCkpOwogICAgIAotICAgIGlm
IChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1fdmVyc2lvbiwgY2VsbCkpIHsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkoY2VsbCkpOworICAgIGlmIChI
ZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1fdmVyc2lvbiwgY2VsbCkpCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAgICAgCiAgICAgbm90ZUxpdmVBdXhpbGlhcnlDZWxsKGNlbGwpOwogfQpAQCAtMjk0
LDYgKzI5NCw4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGkKIHsK
ICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkoY2VsbCkpOwogICAgIAorICAg
IC8vZGF0YUxvZygiVmlzaXRpbmcgIiwgUmF3UG9pbnRlcihjZWxsKSwgIlxuIik7CisKICAgICBT
ZXRDdXJyZW50Q2VsbFNjb3BlIGN1cnJlbnRDZWxsU2NvcGUoKnRoaXMsIGNlbGwpOwogICAgIAog
ICAgIG1fY3VycmVudE9iamVjdENlbGxTdGF0ZUJlZm9yZVZpc2l0aW5nID0gY2VsbC0+Y2VsbFN0
YXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCShyZXZpc2lvbiAyMDYwMzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2luY2x1ZGUgIkpTRXhwb3J0
TWFjcm9zLmgiCiAjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3JUcmFp
dHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUxLDMzICs1MywzMyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIFdlYWsoVCosIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBj
b250ZXh0ID0gMCk7CisgICAgaW5saW5lIFdlYWsoVCosIFdlYWtIYW5kbGVPd25lciogPSAwLCB2
b2lkKiBjb250ZXh0ID0gMCk7CiAKICAgICBlbnVtIEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyB7
IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9OwotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdDsKLSAgICBXZWFrKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7CisgICAgaW5s
aW5lIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKKyAgICBpbmxpbmUgV2Vh
ayhIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwogCi0gICAgV2VhayhXZWFrJiYpOworICAgIGlu
bGluZSBXZWFrKFdlYWsmJik7CiAKICAgICB+V2VhaygpCiAgICAgewogICAgICAgICBjbGVhcigp
OwogICAgIH0KIAotICAgIHZvaWQgc3dhcChXZWFrJik7CisgICAgaW5saW5lIHZvaWQgc3dhcChX
ZWFrJik7CiAKLSAgICBXZWFrJiBvcGVyYXRvcj0oV2VhayYmKTsKKyAgICBpbmxpbmUgV2VhayYg
b3BlcmF0b3I9KFdlYWsmJik7CiAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwotICAgIFQq
IG9wZXJhdG9yLT4oKSBjb25zdDsKLSAgICBUJiBvcGVyYXRvciooKSBjb25zdDsKLSAgICBUKiBn
ZXQoKSBjb25zdDsKKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBpbmxp
bmUgVCogb3BlcmF0b3ItPigpIGNvbnN0OworICAgIGlubGluZSBUJiBvcGVyYXRvciooKSBjb25z
dDsKKyAgICBpbmxpbmUgVCogZ2V0KCkgY29uc3Q7CiAKLSAgICBib29sIHdhcyhUKikgY29uc3Q7
CisgICAgaW5saW5lIGJvb2wgd2FzKFQqKSBjb25zdDsKIAotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdDsKKyAgICBpbmxpbmUgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
OwogCi0gICAgV2Vha0ltcGwqIGxlYWtJbXBsKCkgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIGlu
bGluZSBXZWFrSW1wbCogbGVha0ltcGwoKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAgICAgdm9pZCBj
bGVhcigpCiAgICAgewogICAgICAgICBpZiAoIW1faW1wbCkKQEAgLTg2LDExICs4OCwzMCBAQCBw
dWJsaWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgV2Vha0ltcGwqIGhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIHN0YXRpYyBpbmxpbmUgV2Vha0ltcGwqIGhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpOwogCiAgICAgV2Vha0ltcGwqIG1faW1wbDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IFZlY3RvclRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMg
eworICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gZmFsc2U7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+
IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4geworICAgIHR5cGVkZWYgSlND
OjpXZWFrPFQ+IFN0b3JhZ2VUeXBlOworCisgICAgdHlwZWRlZiBzdGQ6Om51bGxwdHJfdCBFbXB0
eVZhbHVlVHlwZTsKKyAgICBzdGF0aWMgRW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1ZSgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KKworICAgIHR5cGVkZWYgVCogUGVla1R5cGU7CisgICAgc3RhdGljIFBl
ZWtUeXBlIHBlZWsoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5nZXQo
KTsgfQorICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQ
ZWVrVHlwZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIFdlYWtf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCShyZXZpc2lv
biAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBXZWFrQmxvY2s6OnNwZWNpYWxp
emVkVmlzaXQoQ29udGFpbgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgY29uc3Qg
SlNWYWx1ZSYganNWYWx1ZSA9IHdlYWtJbXBsLT5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChjb250
YWluZXIuaXNNYXJrZWREdXJpbmdXZWFrVmlzaXRpbmcodmVyc2lvbiwganNWYWx1ZS5hc0NlbGwo
KSkpCisgICAgICAgIGlmIChjb250YWluZXIuaXNNYXJrZWRDb25jdXJyZW50bHkodmVyc2lvbiwg
anNWYWx1ZS5hc0NlbGwoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAg
ICAgIGlmICghd2Vha0hhbmRsZU93bmVyLT5pc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5k
bGU8VW5rbm93bj46OndyYXBTbG90KCZjb25zdF9jYXN0PEpTVmFsdWUmPihqc1ZhbHVlKSksIHdl
YWtJbXBsLT5jb250ZXh0KCksIHZpc2l0b3IpKQpAQCAtMTQ3LDE3ICsxNDcsMTQgQEAgdm9pZCBX
ZWFrQmxvY2s6OnJlYXAoKQogICAgIC8vIElmIHRoaXMgV2Vha0Jsb2NrIGRvZXNuJ3QgYmVsb25n
IHRvIGEgQ2VsbENvbnRhaW5lciwgd2Ugd29uJ3QgZXZlbiBiZSBoZXJlLgogICAgIEFTU0VSVCht
X2NvbnRhaW5lcik7CiAgICAgCi0gICAgbV9jb250YWluZXIuZmxpcElmTmVjZXNzYXJ5KCk7Ci0K
LSAgICAvLyBXZSBvbmx5IHJlYXAgYWZ0ZXIgbWFya2luZy4KLSAgICBBU1NFUlQobV9jb250YWlu
ZXIuaXNNYXJrZWQoKSk7CisgICAgSGVhcFZlcnNpb24gdmVyc2lvbiA9IG1fY29udGFpbmVyLmhl
YXAoKS0+b2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdlYWtJbXBsQ291bnQoKTsgKytpKSB7CiAgICAgICAgIFdlYWtJbXBsKiB3ZWFrSW1wbCA9
ICZ3ZWFrSW1wbHMoKVtpXTsKICAgICAgICAgaWYgKHdlYWtJbXBsLT5zdGF0ZSgpID4gV2Vha0lt
cGw6OkRlYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAobV9jb250YWlu
ZXIuaXNNYXJrZWQod2Vha0ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkpIHsKKyAgICAgICAgaWYg
KG1fY29udGFpbmVyLmlzTWFya2VkKHZlcnNpb24sIHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxs
KCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQod2Vha0ltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6
OkxpdmUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAy
MDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgog
I2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
LSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ5
LDIzICsxNDgsNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xlCiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IFZlY3RvclRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NWZWN0
b3JUcmFpdHMgewotICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0g
ZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6
OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gewotICAgIHR5
cGVkZWYgSlNDOjpXZWFrPFQ+IFN0b3JhZ2VUeXBlOwotCi0gICAgdHlwZWRlZiBzdGQ6Om51bGxw
dHJfdCBFbXB0eVZhbHVlVHlwZTsKLSAgICBzdGF0aWMgRW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1
ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHR5cGVkZWYgVCogUGVla1R5cGU7Ci0gICAg
c3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5nZXQoKTsgfQotICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKEVtcHR5VmFsdWVUeXBlKSB7
IHJldHVybiBQZWVrVHlwZSgpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQogI2VuZGlm
IC8vIFdlYWtJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1
bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
aAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiVGh1bmtH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVy
LmgiCi0jaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAKICNpbmNs
dWRlICJNYXBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1hcEl0ZXJhdG9yUHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiTWF0aE9iamVjdC5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgogI2lu
Y2x1ZGUgIk1vZHVsZUxvYWRlclByb3RvdHlwZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2
ICs0Myw3IEBACiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRl
ICJQcm90b3R5cGVNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJveHlPYmplY3QuaCIKICNpbmNs
dWRlICJSZWplY3QuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCShyZXZpc2lvbiAyMDYwMzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiUHJvdG90eXBlTWFwSW5saW5lcy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDcgQEAgdHlwZWRlZiBj
b25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgbGFyZ2VBbGxvY2F0aW9u
Q3V0b2ZmLCAxMDAwMDAsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZHVtcFNpemVD
bGFzc2VzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VCdW1wQWxs
b2NhdG9yLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KGJvb2wsIGxvb2tGb3JFbXB0
eUJsb2Nrc0luT3RoZXJBbGxvY2F0b3JzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2
KGJvb2wsIGVhZ2VybHlVcGRhdGVUb3BDYWxsRnJhbWUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICBcCiAgICAgdihib29sLCB1c2VPU1JFbnRyeVRvREZHLCB0cnVlLCBOb3JtYWwsIG51
bGxwdHIpIFwKQEAgLTMwMiw3ICszMDMsNiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0
cmluZzsKICAgICB2KHVuc2lnbmVkLCBudW1iZXJPZkdDTWFya2VycywgY29tcHV0ZU51bWJlck9m
R0NNYXJrZXJzKDcpLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBvcGFxdWVS
b290TWVyZ2VUaHJlc2hvbGQsIDEwMDAsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoZG91Ymxl
LCBtaW5IZWFwVXRpbGl6YXRpb24sIDAuOCwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihkb3Vi
bGUsIG1pbkNvcGllZEJsb2NrVXRpbGl6YXRpb24sIDAuOSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihkb3VibGUsIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24sIDAuOSwgTm9ybWFsLCBudWxs
cHRyKSBcCiAgICAgdih1bnNpZ25lZCwgc2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzLCAwLCBOb3Jt
YWwsICJmb3JjZSBhIEdDIG9uIGV2ZXJ5IE50aCBzbG93IHBhdGggYWxsb2MsIHdoZXJlIE4gaXMg
c3BlY2lmaWVkIGJ5IHRoaXMgb3B0aW9uIikgXAogICAgIHYoYm9vbCwgZGVmZXJHQ1Nob3VsZENv
bGxlY3RXaXRoUHJvYmFiaWxpdHksIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSBwZXJmb3Jt
IGEgY29sbGVjdGlvbiBiYXNlZCBvbiBmbGlwcGluZyBhIGNvaW4gYWNjb3JkaW5nIHRoZSBwcm9i
YWJpbGl0eSBpbiB0aGUgJ2RlZmVyR0NQcm9iYWJpbGl0eScgb3B0aW9uIHdoZW4gRGVmZXJHQyBp
cyBkZXN0cnVjdGVkLiIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3RvdHlwZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvdG90eXBlTWFwLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb3RvdHlwZU1hcElu
bGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsOCBAQAogI2lmbmRlZiBQcm90b3R5cGVNYXBfaAogI2RlZmluZSBQcm90b3R5cGVN
YXBfaAogCisjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5o
IgogI2luY2x1ZGUgIldlYWtHQ01hcC5oIgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCkBA
IC00OCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUq
IGVtcHR5U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoSlNPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKICAgICB2b2lkIGNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5
cGUoSlNPYmplY3QqLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBhZGRQcm90b3R5cGUoSlNPYmplY3QqKTsKLSAgICBUcmlTdGF0ZSBpc1Byb3Rv
dHlwZShKU09iamVjdCopIGNvbnN0OyAvLyBSZXR1cm5zIGEgY29uc2VydmF0aXZlIGVzdGltYXRl
LgorICAgIGlubGluZSBUcmlTdGF0ZSBpc1Byb3RvdHlwZShKU09iamVjdCopIGNvbnN0OyAvLyBS
ZXR1cm5zIGEgY29uc2VydmF0aXZlIGVzdGltYXRlLgogCiBwcml2YXRlOgogICAgIFN0cnVjdHVy
ZSogY3JlYXRlRW1wdHlTdHJ1Y3R1cmUoSlNPYmplY3QqIHByb3RvdHlwZSwgY29uc3QgVHlwZUlu
Zm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFj
aXR5KTsKQEAgLTU4LDE4ICs2MCw2IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlTWFwIG1fc3Ry
dWN0dXJlczsKIH07CiAKLWlubGluZSBUcmlTdGF0ZSBQcm90b3R5cGVNYXA6OmlzUHJvdG90eXBl
KEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3Byb3RvdHlwZXMuY29udGFp
bnMob2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7Ci0KLSAgICAvLyBXZSBr
bm93IHRoYXQgJ29iamVjdCcgd2FzIHVzZWQgYXMgYSBwcm90b3R5cGUgYXQgb25lIHRpbWUsIHNv
IGJlCi0gICAgLy8gY29uc2VydmF0aXZlIGFuZCBzYXkgdGhhdCBpdCBtaWdodCBzdGlsbCBiZSBz
by4gKEl0IHdvdWxkIGJlIGV4cGVuc2l2ZQotICAgIC8vIHRvIGZpbmQgb3V0IGZvciBzdXJlLCBh
bmQgd2UgZG9uJ3Qga25vdyBvZiBhbnkgY2FzZXMgd2hlcmUgYmVpbmcgcHJlY2lzZQotICAgIC8v
IHdvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UuKQotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFByb3RvdHlwZU1hcF9oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXBJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5s
aW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3RvdHlwZU1hcElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCisjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIFRyaVN0YXRlIFByb3RvdHlwZU1hcDo6aXNQ
cm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJvdG90eXBl
cy5jb250YWlucyhvYmplY3QpKQorICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKworICAg
IC8vIFdlIGtub3cgdGhhdCAnb2JqZWN0JyB3YXMgdXNlZCBhcyBhIHByb3RvdHlwZSBhdCBvbmUg
dGltZSwgc28gYmUKKyAgICAvLyBjb25zZXJ2YXRpdmUgYW5kIHNheSB0aGF0IGl0IG1pZ2h0IHN0
aWxsIGJlIHNvLiAoSXQgd291bGQgYmUgZXhwZW5zaXZlCisgICAgLy8gdG8gZmluZCBvdXQgZm9y
IHN1cmUsIGFuZCB3ZSBkb24ndCBrbm93IG9mIGFueSBjYXNlcyB3aGVyZSBiZWluZyBwcmVjaXNl
CisgICAgLy8gd291bGQgaW1wcm92ZSBwZXJmb3JtYW5jZS4pCisgICAgcmV0dXJuIE1peGVkVHJp
U3RhdGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcu
aCIKICNpbmNsdWRlICJXZWFrLmgiCi0jaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRl
IDxhcnJheT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24g
MjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJMTEludFBD
UmFuZ2VzLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRCbG9j
a1NldC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlBDVG9D
b2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtHQ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtHQ01hcC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrR0NNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBA
CiAjZGVmaW5lIFdlYWtHQ01hcF9oCiAKICNpbmNsdWRlICJXZWFrLmgiCi0jaW5jbHVkZSAiV2Vh
a0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTgxLDE5ICs4MCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQotICAgIHsKLSAgICAgICAg
aXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGtleSk7Ci0gICAgICAgIGl0ZXJhdG9yIGVuZCA9IG1f
bWFwLmVuZCgpOwotICAgICAgICBpZiAoaXQgIT0gZW5kICYmICFpdC0+dmFsdWUpIC8vIEZvdW5k
IGEgem9tYmllIHZhbHVlLgotICAgICAgICAgICAgcmV0dXJuIGVuZDsKLSAgICAgICAgcmV0dXJu
IGl0OwotICAgIH0KKyAgICBpbmxpbmUgaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkp
OwogCi0gICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxXZWFrR0NNYXAqPih0aGlzKS0+ZmluZChr
ZXkpOwotICAgIH0KKyAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBl
JiBrZXkpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lk
IGZvckVhY2goRnVuY3RvciBmdW5jdG9yKQpAQCAtMTA0LDEyICs5Myw5IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY29udGFpbnMoY29uc3QgS2V5VHlwZSYga2V5KSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBtX21hcC5lbmQoKTsKLSAg
ICB9CisgICAgaW5saW5lIGJvb2wgY29udGFpbnMoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdDsK
IAotICAgIHZvaWQgcHJ1bmVTdGFsZUVudHJpZXMoKTsKKyAgICBpbmxpbmUgdm9pZCBwcnVuZVN0
YWxlRW50cmllcygpOwogCiBwcml2YXRlOgogICAgIEhhc2hNYXBUeXBlIG1fbWFwOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dD
TWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkhl
YXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFwLmgiCisjaW5jbHVkZSAiV2Vha0lubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ3LDYgKzQ4LDI4IEBAIGlubGluZSBXZWFr
R0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJh
aXRzQXJnPgoraW5saW5lIHR5cGVuYW1lIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNo
QXJnLCBLZXlUcmFpdHNBcmc+OjppdGVyYXRvciBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywg
SGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpCit7CisgICAg
aXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGtleSk7CisgICAgaXRlcmF0b3IgZW5kID0gbV9tYXAu
ZW5kKCk7CisgICAgaWYgKGl0ICE9IGVuZCAmJiAhaXQtPnZhbHVlKSAvLyBGb3VuZCBhIHpvbWJp
ZSB2YWx1ZS4KKyAgICAgICAgcmV0dXJuIGVuZDsKKyAgICByZXR1cm4gaXQ7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcs
IHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KK2lubGluZSB0eXBlbmFtZSBXZWFrR0NNYXA8S2V5QXJn
LCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6Y29uc3RfaXRlcmF0b3IgV2Vha0dD
TWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46OmZpbmQoY29uc3Qg
S2V5VHlwZSYga2V5KSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PFdlYWtHQ01hcCo+
KHRoaXMpLT5maW5kKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5h
bWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KK2lu
bGluZSBib29sIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmc+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZp
bmQoa2V5KSAhPSBtX21hcC5lbmQoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0
eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJn
PgogTkVWRVJfSU5MSU5FIHZvaWQgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcs
IEtleVRyYWl0c0FyZz46OnBydW5lU3RhbGVFbnRyaWVzKCkKIHsKICAgICBtX21hcC5yZW1vdmVJ
ZihbXSh0eXBlbmFtZSBIYXNoTWFwVHlwZTo6S2V5VmFsdWVQYWlyVHlwZSYgZW50cnkpIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
ICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KSW5kZXg6IFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2
IEBACisyMDE2LTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAg
ICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBwb3J0IG92ZXJsYXBwZWQgYWxs
b2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBUaGUgbWFpbiBjaGFuZ2UgaGVyZSBpcyB0byBicmlu
ZyBiYWNrIEZhc3RCaXRWZWN0b3IuY3BwLCBzbyB0aGF0IEkgY291bGQgb3V0bGluZSBzb21lCisg
ICAgICAgIGxhcmdlIHNsb3cgcGF0aCBmdW5jdGlvbnMuIFRoaXMgYWxzbyBhZGRzIHNvbWUgdXRp
bGl0aWVzLCBsaWtlIGF0b21pY1NldEFuZENoZWNrKCkgYW5kCisgICAgICAgIGlzRW1wdHkoKS4g
VGhlIEdDIHVzZXMgdGhlc2UuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0Zhc3RC
aXRWZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25l
cjo6c2V0RXF1YWxzU2xvdyk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6
OnJlc2l6ZVNsb3cpOgorICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChX
VEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OkZh
c3RCaXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0
b3JJbXBsOjppc0VtcHR5KToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6YXRvbWljU2V0
QW5kQ2hlY2spOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpvcGVyYXRvcltdKTogRGVs
ZXRlZC4KKwogMjAxNi0wOS0xNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCBpc1ZhbGlkRW51bSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMg
b2YgR0NDCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAkJMEY0NTcwNDMxQkU1QjU4RjAw
NjJBNjI5IC8qIERvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi87
IH07CiAJCTBGNDU3MDQ1MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzA0NDFCRTgzNDQxMDA2
MkE2MjkgLyogQnViYmxlU29ydC5oICovOyB9OwogCQkwRjcyNUNBQzFDNTA0NjE2MDBBRDk0M0Eg
LyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oICovOyB9OworCQkwRjdD
NUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIg
LyogRmFzdEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGODI0QTY4MUI3NDQzQTAwMDJFMzQ1RCAv
KiBQYXJraW5nTG90LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLzsgfTsK
IAkJMEY4MjRBNjkxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1
RCAvKiBQYXJraW5nTG90LmggKi87IH07CiAJCTBGODcxMDVBMTY2NDNGMTkwMDkwQjBBRCAvKiBS
YXdQb2ludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oICovOyB9OwpAQCAtMzY2
LDYgKzM2Nyw3IEBACiAJCTBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvbWluYXRvcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNv
cnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnViYmxlU29ydC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFu
Z2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZh
c3RCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmFz
dEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY0MUI3
NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBhcmtpbmdMb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQYXJraW5nTG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhd1BvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg4MCw2ICs4ODIsNyBAQAogCQkJCUE4QTQ3Mjk4MTUxQTgyNUEwMDQxMjNG
RiAvKiBkdG9hLmggKi8sCiAJCQkJMUFFQTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1UcmFp
dHMuaCAqLywKIAkJCQlBOEE0NzI5RjE1MUE4MjVBMDA0MTIzRkYgLyogRXhwb3J0TWFjcm9zLmgg
Ki8sCisJCQkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICov
LAogCQkJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8sCiAJ
CQkJQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwICovLAogCQkJCUE4
QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi8sCkBAIC0xNTk0LDYgKzE1
OTcsNyBAQAogCQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRUMxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51
bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY3QzVGQjYxRDg4NUNGMjAwNDRG
NUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjcxNTFB
ODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczRjkxNTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9tU291cmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3NDAyMTUxQTgyNUIwMDQxMjNGRiAvKiBQYWdlQmxvY2suY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsx
ODEsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBEYXRhTG9nLmNwcAogICAgIERhdGVNYXRoLmNw
cAogICAgIERlY2ltYWxOdW1iZXIuY3BwCisgICAgRmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0
TWFsbG9jLmNwcAogICAgIEZpbGVQcmludFN0cmVhbS5jcHAKICAgICBGdW5jdGlvbkRpc3BhdGNo
ZXIuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGYXN0Qml0VmVjdG9yLmgiCisKK25hbWVzcGFj
ZSBXVEYgeworCit2b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnNldEVxdWFsc1Nsb3coY29u
c3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCit7CisgICAgdWludDMyX3QqIG5ld0Fy
cmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPigKKyAgICAgICAgZmFzdENhbGxvYyhvdGhlci5h
cnJheUxlbmd0aCgpLCBzaXplb2YodWludDMyX3QpKSk7CisgICAgbWVtY3B5KG5ld0FycmF5LCBv
dGhlci5tX3dvcmRzLCBvdGhlci5hcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7Cisg
ICAgaWYgKG1fd29yZHMpCisgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOworICAgIG1fd29yZHMg
PSBuZXdBcnJheTsKKyAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7Cit9CisKK3ZvaWQg
RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXplU2xvdyhzaXplX3QgbnVtQml0cykKK3sKKyAg
ICBzaXplX3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpOwor
ICAgIAorICAgIC8vIFVzZSBmYXN0Q2FsbG9jIGluc3RlYWQgb2YgZmFzdFJlYWxsb2MgYmVjYXVz
ZSB3ZSBleHBlY3QgdGhlIGNvbW1vbgorICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1ldGhvZCB0
byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rvci4KKyAgICAKKyAgICB1
aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobmV3
TGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7CisgICAgbWVtY3B5KG5ld0FycmF5LCBtX3dvcmRz
LCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgaWYgKG1fd29yZHMpCisg
ICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOworICAgIG1fd29yZHMgPSBuZXdBcnJheTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJKHJldmlzaW9u
IDIwNjAzMSkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgpAQCAtOTEsMTcgKzkyLDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBGYXN0Qml0VmVjdG9yV29y
ZE93bmVyJiBvcGVyYXRvcj0oY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCiAg
ICAgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gb3RoZXIuYXJyYXlMZW5ndGgoKTsKLSAgICAg
ICAgaWYgKGxlbmd0aCA9PSBhcnJheUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBtZW1jcHkobV93
b3Jkcywgb3RoZXIubV93b3JkcywgbGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIGlmIChhcnJheUxlbmd0aCgpICE9IG90aGVyLmFy
cmF5TGVuZ3RoKCkpCisgICAgICAgICAgICBzZXRFcXVhbHNTbG93KG90aGVyKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkobV93b3Jkcywgb3RoZXIubV93b3JkcywgYXJyYXlM
ZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAgICAgbV9udW1CaXRzID0gb3Ro
ZXIubV9udW1CaXRzOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0
YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhsZW5ndGgsIHNpemVvZih1aW50MzJfdCkp
KTsKLSAgICAgICAgbWVtY3B5KG5ld0FycmF5LCBvdGhlci5tX3dvcmRzLCBsZW5ndGggKiBzaXpl
b2YodWludDMyX3QpKTsKLSAgICAgICAgaWYgKG1fd29yZHMpCi0gICAgICAgICAgICBmYXN0RnJl
ZShtX3dvcmRzKTsKLSAgICAgICAgbV93b3JkcyA9IG5ld0FycmF5OwotICAgICAgICBtX251bUJp
dHMgPSBvdGhlci5tX251bUJpdHM7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAgICAg
CkBAIC0xNDAsMTggKzEzNiw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlc2l6ZShzaXpl
X3QgbnVtQml0cykKICAgICB7Ci0gICAgICAgIGlmIChudW1CaXRzID09IG1fbnVtQml0cykKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIC8vIFVzZSBmYXN0Q2FsbG9jIGlu
c3RlYWQgb2YgZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBleHBlY3QgdGhlIGNvbW1vbgotICAgICAg
ICAvLyB1c2UgY2FzZSBmb3IgdGhpcyBtZXRob2QgdG8gYmUgaW5pdGlhbGl6aW5nIHRoZSBzaXpl
IG9mIHRoZSBiaXR2ZWN0b3IuCi0gICAgICAgIAotICAgICAgICBzaXplX3QgbmV3TGVuZ3RoID0g
ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpOwotICAgICAgICB1aW50MzJfdCogbmV3
QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobmV3TGVuZ3RoLCBzaXpl
b2YodWludDMyX3QpKSk7Ci0gICAgICAgIG1lbWNweShuZXdBcnJheSwgbV93b3JkcywgYXJyYXlM
ZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBpZiAobV93b3JkcykKLSAgICAg
ICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOwotICAgICAgICBtX3dvcmRzID0gbmV3QXJyYXk7Cisg
ICAgICAgIGlmIChhcnJheUxlbmd0aCgpICE9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1C
aXRzKSkKKyAgICAgICAgICAgIHJlc2l6ZVNsb3cobnVtQml0cyk7CiAgICAgICAgIG1fbnVtQml0
cyA9IG51bUJpdHM7CiAgICAgfQogICAgIApAQCAtMTcxLDYgKzE1Nyw5IEBAIHB1YmxpYzoKICAg
ICB1aW50MzJfdCogd29yZHMoKSB7IHJldHVybiBtX3dvcmRzOyB9CiAKIHByaXZhdGU6CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RXF1YWxzU2xvdyhjb25zdCBGYXN0Qml0VmVjdG9y
V29yZE93bmVyJiBvdGhlcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzaXplU2xv
dyhzaXplX3QgbnVtQml0cyk7CisgICAgCiAgICAgdWludDMyX3QqIG1fd29yZHMgeyBudWxscHRy
IH07CiAgICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKIH07CkBAIC0zMjAsNiArMzA5LDE1IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gYXJyYXlM
ZW5ndGgoKTsgaW5kZXgtLTspIHsKKyAgICAgICAgICAgIGlmIChtX3dvcmRzLndvcmQoaW5kZXgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4K
ICAgICBGYXN0Qml0VmVjdG9ySW1wbDxGYXN0Qml0VmVjdG9yQW5kV29yZHM8dHlwZW5hbWUgV29y
ZHM6OlZpZXdUeXBlLCB0eXBlbmFtZSBPdGhlcldvcmRzOjpWaWV3VHlwZT4+IG9wZXJhdG9yJihj
b25zdCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpIGNvbnN0CiAgICAgewpA
QCAtMzgwLDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gd3JpdHRlbiB0aGlzIHdheSBz
byB0aGF0IGl0IHBlcmZvcm1zIHdlbGwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHZhbHVlIGlzIGEg
Y29uc3RhbnQuCiAgICAgICAgIHVpbnQzMl90IHNraXBWYWx1ZSA9IC0oc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHZhbHVlKSBeIDEpOwogICAgICAgICAKLSAgICAgICAgc2l6ZV90IG51bVdvcmRzID0g
bV93b3Jkcy5hcnJheUxlbmd0aCgpOworICAgICAgICBzaXplX3QgbnVtV29yZHMgPSBmYXN0Qml0
VmVjdG9yQXJyYXlMZW5ndGgobV93b3Jkcy5udW1CaXRzKCkpOwogICAgICAgICAKICAgICAgICAg
c2l6ZV90IHdvcmRJbmRleCA9IHN0YXJ0SW5kZXggLyAzMjsKICAgICAgICAgc2l6ZV90IHN0YXJ0
SW5kZXhJbldvcmQgPSBzdGFydEluZGV4IC0gd29yZEluZGV4ICogMzI7CkBAIC00NzEsNiArNDY5
LDcgQEAgcHVibGljOgogICAgICAgICBtX3dvcmRzLmNsZWFyQWxsKCk7CiAgICAgfQogCisgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBvZiB0aGlzIGJpdHZlY3RvciBjaGFuZ2Vk
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAgYm9vbCBzZXRBbmRDaGVj
ayhjb25zdCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpCiAgICAgewpAQCAt
NTUwLDYgKzU0OSwyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYXQoaW5kZXgp
OwogICAgIH0KKyAgICAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnRzIGNoYW5n
ZWQuCisgICAgQUxXQVlTX0lOTElORSBib29sIGF0b21pY1NldEFuZENoZWNrKHNpemVfdCBpbmRl
eCwgYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHVpbnQzMl90KiBwb2ludGVyID0gJm1fd29y
ZHMud29yZChpbmRleCA+PiA1KTsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKGluZGV4
ICYgMzEpOworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICB1aW50MzJfdCBvbGRWYWx1
ZSA9ICpwb2ludGVyOworICAgICAgICAgICAgdWludDMyX3QgbmV3VmFsdWU7CisgICAgICAgICAg
ICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiAob2xkVmFsdWUgJiBtYXNrKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUg
PSBvbGRWYWx1ZSB8IG1hc2s7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmICghKG9sZFZhbHVlICYgbWFzaykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlICYgfm1hc2s7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAod2Vha0NvbXBhcmVBbmRTd2FwKHBvaW50ZXIsIG9sZFZh
bHVlLCBuZXdWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvR0NPYnNlcnZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9HQ09ic2VydmF0aW9uLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkdDT2JzZXJ2YXRpb24uaCIKIAogI2luY2x1ZGUgPGhlYXAvSGVhcElu
bGluZXMuaD4KKyNpbmNsdWRlIDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289238</attachid>
            <date>2016-09-19 10:48:28 -0700</date>
            <delta_ts>2016-09-19 17:32:37 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>172974</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDYxMDApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE2LTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBwb3J0IG92
ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgYSBtaWNyb2JlbmNobWFy
ayBmb3Igd2h5IHdlIHdhbnQgdG8gcmVjbGFpbSBlbXB0eSBibG9ja3MgZnJvbSBvdGhlciBhbGxv
Y2F0b3JzLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNz
ZXMuanM6IEFkZGVkLgorCiAyMDE2LTA5LTE4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIERvIG5vdCBuZWVkIHRvIHVzZSBkZWZpbmVQcm9w
ZXJ0eSB0byBkZWZpbmUgbWV0aG9kcyBmb3Igb2JqZWN0IGxpdGVyYWxzCkluZGV4OiBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9zd2l0Y2hpbmctc2l6ZS1jbGFzc2VzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNzZXMuanMJKG5vbmV4
aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3dpdGNoaW5nLXNpemUtY2xhc3Nl
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTA7ICsraSkgeworICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTAwMDAwOyArK2opCisgICAgICAg
IG5ldyBBcnJheSgxMCAqIGkpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjY4IEBACisyMDE2LTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBz
dXBwb3J0IG92ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDb25jdXJyZW50
IEdDcyBtdXN0IGFsbG93IGZvciBtdXRhdGlvbiBhbmQgYWxsb2NhdGlvbiBkdXJpbmcgY29sbGVj
dGlvbi4gV2UgYWxyZWFkeSBrbm93CisgICAgICAgIGhvdyB0byBtdXRhdGUgZHVyaW5nIGNvbGxl
Y3Rpb24uIFdlIGhhdmUgYSB3cml0ZSBiYXJyaWVyIGZvciB0aGF0LiBBbGxvY2F0aW9uIGR1cmlu
ZworICAgICAgICBjb2xsZWN0aW9uIGlzIG1vcmUgaW52b2x2ZWQ6IHRoZSBjb2xsZWN0b3IgbW9k
aWZpZXMgdGhlIHRoZSBtYXJrIGJpdHMsIGFzIHdlbGwgYXMgb3RoZXIKKyAgICAgICAga2luZHMg
b2YgTWFya2VkQmxvY2sgc3RhdGUsIGluLXBsYWNlIGR1cmluZyBhIGNvbGxlY3Rpb24uIFRoZSBh
bGxvY2F0b3IgdXNlcyB0aGF0IHNhbWUKKyAgICAgICAgTWFya2VkQmxvY2sgc3RhdGUgdG8gZGVj
aWRlIHdoaWNoIHJlZ2lvbnMgb2YgbWVtb3J5IGFyZSBmcmVlLiBUaGlzIHdvcmtzIGlmIHRoZSBh
bGxvY2F0b3IKKyAgICAgICAgbmV2ZXIgcnVucyB3aGlsZSB0aGUgY29sbGVjdG9yIGlzIHJ1bm5p
bmcsIGJ1dCBpZiB3ZSB3YW50IHRvIGFsbG93IHRoZW0gdG8gcnVuIGF0IHRoZSBzYW1lCisgICAg
ICAgIHRpbWUsIHRoZW4gd2UgbmVlZCB0byBoYXZlIHR3byB2ZXJzaW9ucyBvZiB0aGUgc3RhdGU6
IG9uZSB2ZXJzaW9uIGJ1aWx0IHVwIGJ5IHRoZQorICAgICAgICBjb2xsZWN0b3IgYW5kIGFub3Ro
ZXIgY29uc3VtZWQgYnkgdGhlIGFsbG9jYXRvci4gV2UgY2xlYXIgdGhlIGNvbGxlY3RvciBzdGF0
ZSBhdCB0aGUKKyAgICAgICAgYmVnaW5uaW5nIG9mIGNvbGxlY3Rpb24sIGFuZCBzcGxhdCB0aGUg
Y29sbGVjdG9yIHN0YXRlIG9udG8gdGhlIGFsbG9jYXRvciBzdGF0ZSBhZnRlcgorICAgICAgICBj
b2xsZWN0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjb3VsZCBiZSBzdXBlciBleHBlbnNp
dmUsIGJ1dCB3ZSBjYW4gbWFrZSBpdCBjaGVhcCB3aXRoIHNvbWUgY2xldmVybmVzcy4gVGhlIGJp
Z2dlc3QKKyAgICAgICAgb2JzZXJ2YXRpb24gaXMganVzdCB0aGF0IG1vc3Qgb2YgdGhlIHN0YXRl
IGlzIGEgaGFuZGZ1bCBvZiBiaXRzIHBlciBibG9jazogaXMgdGhlIGJsb2NrCisgICAgICAgIGZy
ZWUtbGlzdGVkPyBpcyBpdCBjb21wbGV0ZWx5IGZ1bGw/IGNvbXBsZXRlbHkgZW1wdHk/IGluIHRo
ZSBpbmNyZW1lbnRhbCBzd2VlcGVyJ3MKKyAgICAgICAgc25hcHNob3Q/IGlzIGl0IHJldGlyZWQ/
IGlzIGl0IGluIGVkZW4/IFRoZXJlIGlzIGFsc28gc3RhdGUgaW5zaWRlIGJsb2NrcywgbGlrZSB0
aGUgbWFyaworICAgICAgICBiaXRzLCBidXQgSSBoYXZlIGEgc29saWQgcGxhbiB0aGVyZSBhbmQg
SSdsbCBzYXZlIGl0IGZvciBhbm90aGVyIHBhdGNoLiBPbmNlIHdlIHZpZXcgdGhlCisgICAgICAg
IHN0YXRlIG9mIGJsb2NrcyBhcyBiaXRzLCB3ZSBjYW4gcHV0IHRoYXQgc3RhdGUgaW50byBiaXR2
ZWN0b3JzLCBzbyB0aGF0IGlmIHRoZSBjb2xsZWN0b3IKKyAgICAgICAgbmVlZHMgdG8gdHJhbnNm
b3JtIHRoZSBzdGF0ZSBvZiBzb21lIGJsb2NrcywgaXQgY2FuIGRvIGl0IHdpdGggYSBzaW5nbGUg
b3BlcmF0aW9uIG92ZXIKKyAgICAgICAgYml0dmVjdG9ycy4gSSBsaWtlIHRvIHRoaW5rIG9mIHRo
aXMgYXMgMzItd2F5IHBhcmFsbGVsaXppbmcgYmxvY2sgb3BlcmF0aW9ucywgc2luY2UKKyAgICAg
ICAgZG9pbmcgb25lIG9wZXJhdGlvbiBvbiBhIDMyLWJpdCB3b3JkIGluIG9uZSBvZiB0aG9zZSBi
aXR2ZWN0b3JzIGluc3RhbnRseSBhZmZlY3RzIDMyCisgICAgICAgIGJsb2Nrcy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgY2hhbmdlIGNvbnZlcnRzIGFsbCBwcmV2aW91cyBjb2xsZWN0aW9ucyBv
ZiBNYXJrZWRCbG9ja3MsIGFsb25nIHdpdGggdGhlIE1hcmtlZEJsb2NrCisgICAgICAgIHN0YXRl
LCBpbnRvIDggYml0dmVjdG9ycyAobGl2ZSwgZW1wdHksIGFsbG9jYXRlZCwgY2FuQWxsb2NhdGVC
dXROb3RFbXB0eSwgZWRlbiwgdW5zd2VwdCwKKyAgICAgICAgbWFya2luZ05vdEVtcHR5LCBhbmQg
bWFya2luZ1JldGlyZWQpLiBUaGUgYml0dmVjdG9ycyBzZXBhcmF0ZSBhbGxvY2F0b3Igc3RhdGUg
KGVtcHR5LAorICAgICAgICBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIGZyb20g
bWFya2luZyBzdGF0ZSAobWFya2luZ05vdEVtcHR5LCBtYXJraW5nUmV0aXJlZCkuCisgICAgICAg
IAorICAgICAgICBBcyBhIG5pY2Ugc2lkZS1lZmZlY3Qgb2Ygc3dpdGNoaW5nIHRvIGJpdHZlY3Rv
cnMsIHdlIGdldCBzaXplIGNsYXNzIHJlYmFsYW5jaW5nIGZvciBmcmVlLgorICAgICAgICBJdCB1
c2VkIHRvIGJlIHRoYXQgaWYgYSBNYXJrZWRBbGxvY2F0b3IgaGFkIGFuIGVtcHR5IGJsb2NrLCB3
ZSB3b3VsZCBvbmx5IGFsbG93IHRoYXQKKyAgICAgICAgbWVtb3J5IHRvIGJlIHJldXNlZCBieSBh
IGRpZmZlcmVudCBNYXJrZWRBbGxvY2F0b3IgaWYgd2UgZGlkIGFuIGluY3JlbWVudGFsIHN3ZWVw
IG9yIGEKKyAgICAgICAgZnVsbCBlYWdlciBzd2VlcC4gTm93IHdlIGh1bnQgZG93biBhbGwgZGVz
dHJ1Y3Rvcmxlc3MgZW1wdHkgYmxvY2tzIGJlZm9yZSBhbGxvY2F0aW5nIG5ldworICAgICAgICBN
YXJrZWRCbG9ja3MuIEl0IHdvdWxkIGJlIHJlbGF0aXZlbHkgZWFzeSB0byBhbHNvIGh1bnQgZG93
biBkZXN0cnVjdG9yIGVtcHR5IGJsb2NrcywgYnV0CisgICAgICAgIHRoZSB0aGVvcnkgaXMgdGhh
dCB0aG9zZSBtaWdodCBiZSBleHBlbnNpdmUgdG8gc3dlZXAsIHNvIGl0IG1pZ2h0IHN0aWxsIGJl
IGJldHRlciB0byBsZWF2ZQorICAgICAgICB0aG9zZSB0byB0aGUgaW5jcmVtZW50YWwgc3dlZXBl
ci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIHBlcmYtbmV1dHJhbCBhbGwgYXJv
dW5kLiBJIGRpZCBzb21lIHRlc3RzIHdpdGggdHdvIGRpZmZlcmVudCBraW5kcyBvZgorICAgICAg
ICBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgLSBzb21ldGhpbmcgdGhhdCBpcyBzb21ld2hhdCBlYXNp
ZXIgdG8gZG8gbm93IHRoYXQgeW91IGNhbiBsb29rIGZvcgorICAgICAgICBibG9ja3MgdGhhdCBh
cmUgY2FuZGlkYXRlcyBmb3IgYWxsb2NhdGlvbiBieSBqdXN0IHNjYW5uaW5nIHNvbWUgYml0dmVj
dG9ycy4gSSB0cmllZCB0d28KKyAgICAgICAgdmFyaWFudHM6CisgICAgICAgIAorICAgICAgICAt
IEFsbG9jYXRlIG91dCBvZiBub24tZW1wdHkgYmxvY2tzIGZpcnN0LCBsZWF2aW5nIGVtcHR5IGJs
b2NrcyBmb3IgbGFzdCBpbiBjYXNlIGEKKyAgICAgICAgICBkaWZmZXJlbnQgYWxsb2NhdG9yIG5l
ZWRlZCB0aGVtLiBUaGlzIGlzIHNvcnQgb2YgYSBiZXN0LWZpdCBzdHJhdGVneS4gSSB0cmllZCB0
aGlzCisgICAgICAgICAgZmlyc3QsIGFuZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFzOgorICAgICAg
ICAgIAorICAgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IG1fY2FuQWxsb2NhdGVCdXROb3RF
bXB0eS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSkKKyAgICAgICAgCisgICAgICAg
IC0gQWxsb2NhdGUgb3V0IG9mIGxvd2VyLWluZGV4ZWQgYmxvY2tzIGZpcnN0LCB0cmVhdGluZyBl
bXB0eSBhbmQgY2FuQWxsb2NhdGVCdXROb3RFbXB0eQorICAgICAgICAgIGJsb2NrcyBlcXVhbGx5
LiBUaGlzIGlzIHNvcnQgb2YgYSBmaXJzdC1maXQgc3RyYXRlZ3kuIFRoaXMgaXMgd2hhdCBJIGVu
ZGVkIHVwIHNldHRsaW5nCisgICAgICAgICAgb24sIGFuZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFz
OgorICAgICAgICAgIAorICAgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9j
YXRlQnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1
ZSkKKyAgICAgICAgCisgICAgICAgIFRoZSBiZXN0LWZpdCBzdHJhdGVneSBtZWFudCAxJSByZWdy
ZXNzaW9ucyBpbiBMb25nU3BpZGVyIGFuZCBPY3RhbmUgb3ZlcmFsbCwgYW5kIGEgMTElCisgICAg
ICAgIHJlZ3Jlc3Npb24gb24gT2N0YW5lL2VhcmxleS4gRmlyc3QtZml0IG1lYW5zIHBlcmYtbmV1
dHJhbGl0eS4gTW9zdCBncmVhdCBhbGxvY2F0b3JzIHNrZXcKKyAgICAgICAgdG93YXJkcyBmaXJz
dC1maXQgYmVjYXVzZSBpdCdzIGVtcGlyaWNhbGx5IGJldHRlciwgc28gdGhpcyByZXN1bHQgaXMg
bm90IHN1cnByaXNpbmcuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAg
KiBoZWFwL0NlbGxDb250YWluZXIuaDoKKyAgICAgICAgKiBoZWFwL0NlbGxDb250YWluZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OnZtKToKKyAgICAgICAgKEpTQzo6
Q2VsbENvbnRhaW5lcjo6aGVhcCk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmlzTWFy
a2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmFib3V0
VG9NYXJrKToKKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6aXNNYXJrZWQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmJlZ2luTWFya2luZyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2Fy
YmFnZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJbXBsKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6c25hcHNob3RNYXJrZWRTcGFjZSk6CisgICAgICAgIChKU0M6OkhlYXA6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6em9tYmlmeURlYWRPYmplY3RzKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3I6Ok1hcmtlZEJsb2NrU25h
cHNob3RGdW5jdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTbmFwc2hv
dEZ1bmN0b3I6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpyZXNl
dEFsbG9jYXRvcnMpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAq
IGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWQpOgorICAg
ICAgICAoSlNDOjpIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6Okhl
YXA6OnRlc3RBbmRTZXRNYXJrZWQpOgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuY3Bw
OgorICAgICAgICAqIGhlYXAvSGVhcFV0aWwuaDoKKyAgICAgICAgKEpTQzo6SGVhcFV0aWw6OmZp
bmRHQ09iamVjdFBvaW50ZXJzRm9yTWFya2luZyk6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpp
c1BvaW50ZXJHQ09iamVjdEpTQ2VsbCk6CisgICAgICAgICogaGVhcC9IZWFwVmVyaWZpZXIuY3Bw
OgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJ
bmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXApOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVy
OjpzdGFydFN3ZWVwaW5nKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjp3aWxs
RmluaXNoU3dlZXBpbmcpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6Cisg
ICAgICAgICogaGVhcC9MYXJnZUFsbG9jYXRpb24uaDoKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxv
Y2F0aW9uOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJr
ZWRDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6YWJvdXRU
b01hcmspOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2VkRHVyaW5nV2Vh
a1Zpc2l0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjpmbGlw
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmZs
aXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFy
a2VkQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpNYXJrZWRB
bGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJsb2NrKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbik6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUltcGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OnRyeUFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0
b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9j
ayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnByZXBhcmVGb3JBbGxvY2F0aW9uKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEFsbG9jYXRvcjo6YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlND
OjpNYXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1RvU3dlZXApOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzaHJp
bmspOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFzc2VydFNuYXBzaG90RW1wdHkp
OgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmR1bXApOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OmR1bXBCaXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9y
OjpyZXRpcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZpbHRl
ck5leHRCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0
TmV4dEJsb2NrVG9Td2VlcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJpdFZlY3Rvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpuZXh0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQWxsb2NhdG9yOjpzZXROZXh0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OnJlc3VtZUFsbG9jYXRpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6fkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJrZWRC
bG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dl
ZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2Rl
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RF
bXB0eU1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBl
clNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c2V0SXNGcmVlTGlzdGVkKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVk
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om1hcmtDb3VudCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6bm90ZU1hcmtlZFNsb3cpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpy
ZW1vdmVGcm9tQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
ZGlkQWRkVG9BbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpk
aWRSZW1vdmVGcm9tQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2Vs
bCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0
U3RhdGVBbmRTd2VlcE1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3cpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxsUmVtb3ZlQmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpwcmludEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01h
cmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRnJlZUxp
c3RlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmluZGV4KToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkQ29u
Y3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzT25C
bG9ja3NUb1N3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6c2V0SXNPbkJsb2Nrc1RvU3dlZXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpzdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwRm9yRWRlbkNv
bGxlY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRE
dXJpbmdXZWFrVmlzaXRpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc0xpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6Zm9yRWFjaExpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNTd2VlcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzQWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQpOiBEZWxldGVkLgorICAgICAgICAqIGhl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6SGFuZGxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExp
dmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRD
ZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0VmVyc2lvbik6CisgICAgICAg
ICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJr
ZWRTcGFjZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzaHJpbmspOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZW5kTWFy
a2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2spOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2spOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6c25hcHNob3QpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YXNz
ZXJ0U25hcHNob3RFbXB0eSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkdW1wQml0cyk6
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp6b21iaWZ5U3dlZXApOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6VmVyaWZ5TWFya2VkOjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6OmZsaXApOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkU3Bh
Y2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5leHRWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OmZpcnN0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmJs
b2Nrc1dpdGhOZXdPYmplY3RzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OnNldElzTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JF
YWNoTGl2ZUNlbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFj
aERlYWRDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlSW5saW5lcy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwpOgorICAgICAgICAqIGhl
YXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6c2V0TWFya2Vk
QW5kQXBwZW5kVG9NYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6bWFya0F1
eGlsaWFyeSk6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBoZWFwL1dlYWsuaDoKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8
VD4+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+
OjpwZWVrKToKKyAgICAgICAgKiBoZWFwL1dlYWtCbG9jay5jcHA6CisgICAgICAgIChKU0M6Oldl
YWtCbG9jazo6c3BlY2lhbGl6ZWRWaXNpdCk6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6cmVh
cCk6CisgICAgICAgICogaGVhcC9XZWFrSW5saW5lcy5oOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPEpTQzo6V2VhazxUPj46OmVtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPEpTQzo6V2VhazxUPj46OnBlZWspOiBEZWxldGVkLgorICAgICAgICAqIGppdC9K
SVRUaHVua3MuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb3RvdHlwZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHA6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKiB0
b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcDoKKwogMjAxNi0wOS0xNiAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3QyNjI6IFZhcmlvdXMgQ29u
c3RydWN0b3JzIGxlbmd0aCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBjb25maWd1cmFibGUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTBGN0MzOUZCMUM4RjYyOTMwMDQ4
MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5o
ICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5
RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsKIAkJMEY3
QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERG
R09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFya2VkQmxv
Y2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi87IH07
CisJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI5MUQ4ODk1
MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLzsgfTsKIAkJMEY4MDIzRUExNjEz
ODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMz
NUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1Qjgx
NjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU3Niw2ICs1NzgsNyBAQAogCQkwRjlGQjRGNDE3RkNC
OTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQjRGMjE3RkNCOTE3MDBDQjY3RjggLyog
REZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgKi87IH07CiAJCTBGOUZCNEY1MTdGQ0I5MTcwMENCNjdG
OCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlv
dXRQaGFzZS5oICovOyB9OwogCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4QzEx
NEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRkExMzE3MTFEOERENzJCMDBFQzEzMEEgLyogUHJvdG90
eXBlTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZBMTMxNzAxRDhERDcyOTAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCAq
LzsgfTsKIAkJMEZBMkMxN0IxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEyQzE3OTE3
RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmNwcCAqLzsgfTsKIAkJMEZBMkMxN0Mx
N0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMkMxN0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRl
c3RSdW5uZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjcxNTBF
OTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgKi87IH07CkBAIC02MTAsNiArNjEzLDcg
QEAKIAkJMEZCNEZCNzMxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MDFCQzg0
MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNwcCAqLzsgfTsKIAkJMEZCNEZCNzQxQkM4
NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEZCNzExQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExh
enlTbG93UGF0aC5oICovOyB9OwogCQkwRkI0RkI3NTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6
eVNsb3dQYXRoQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZCNEZCNzIxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCAq
LzsgfTsKKwkJMEZCNTMwMzkxRDkwNDA0QzAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTMwMzgxRDkw
NDA0NjAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovOyB9OwogCQkwRkI1NDY3NzE0RjU5
QjVDMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAv
KiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGQjU0Njc5MTRGNUM0NkIwMDJDMjk4OSAvKiBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuY3BwICovOyB9OwogCQkwRkI1NDY3QjE0RjVDN0UxMDAyQzI5ODkgLyogTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMjczMSw2ICsyNzM1LDggQEAKIAkJMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8q
IFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhw
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGQzFDOEY2NTk1
MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGggPSBkZmcvREZHT3BJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI3MUQ4ODhBMDEwMDQ0RjVF
MiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWFya2VkQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
N0M1RkI5MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkU3BhY2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA4LDYgKzI4MTQsNyBAQAogCQkwRjlG
QjRGMjE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdGFja0xheW91dFBoYXNlLmNwcDsgcGF0
aCA9IGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY5RkI0RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RhY2tMYXlvdXRQaGFzZS5oOyBw
YXRoID0gZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkExMzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b3R5cGVNYXBJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTJDMTc5MTdEN0NGODQwMDlEMDE1RiAvKiBU
ZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMkMx
N0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlRmxhZ3MuY3BwOyBwYXRo
ID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
ODUyLDYgKzI4NTksNyBAQAogCQkwRkI0RkI3MDFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNs
b3dQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTExhenlT
bG93UGF0aC5jcHA7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEZCNzExQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93
UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGgu
aDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZCNEZCNzIxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBw
YXRoID0gZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZCNTMwMzgxRDkwNDA0NjAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxvY2F0aW9uU2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjU0
Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4
OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNTUsNiArNTI2Myw3IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYw
MEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkwRkI1MzAzODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi8s
CiAJCQkJMEY5NjMwMzUxRDQxOTJDMzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuY3Bw
ICovLAogCQkJCTBGOTYzMDM2MUQ0MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVz
LmggKi8sCiAJCQkJMEYwNzBBNDIxRDU0M0E4OTAwNkU3MjMyIC8qIENlbGxDb250YWluZXIuaCAq
LywKQEAgLTUzMzgsOSArNTM0NywxMSBAQAogCQkJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAv
KiBNYXJrZWRBbGxvY2F0b3IuaCAqLywKIAkJCQkxNDJENkYwNjEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suY3BwICovLAogCQkJCTE0MkQ2RjA3MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJr
ZWRCbG9jay5oICovLAorCQkJCTBGN0M1RkI3MUQ4ODhBMDEwMDQ0RjVFMiAvKiBNYXJrZWRCbG9j
a0lubGluZXMuaCAqLywKIAkJCQkxNDE0NDhDQTEzQTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxv
Y2tTZXQuaCAqLywKIAkJCQkxNEQyRjNEODEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2Uu
Y3BwICovLAogCQkJCTE0RDJGM0Q5MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5oICov
LAorCQkJCTBGN0M1RkI5MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAq
LywKIAkJCQkxNDJENkYwRTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLywKIAkJ
CQkxNDJENkYwRjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggKi8sCiAJCQkJQUREQjFG
NjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RTZXQuaCAqLywKQEAgLTYwNzYsNiArNjA4
Nyw3IEBACiAJCQkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKIAkJ
CQkxNEQ4NDRBMjE2QUEyQzcwMDBBNjVBRjAgLyogUHJvdG90eXBlTWFwLmNwcCAqLywKIAkJCQkx
NEQ4NDRBMzE2QUEyQzcwMDBBNjVBRjAgLyogUHJvdG90eXBlTWFwLmggKi8sCisJCQkJMEZBMTMx
NzAxRDhERDcyOTAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCAqLywKIAkJCQk3OUIw
MENCODFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzlC
MDBDQjkxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuaCAqLywKIAkJCQk3OUIw
MENCQTFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3QuY3BwICovLApAQCAtNzMxMiw2ICs3
MzI0LDcgQEAKIAkJCQk2MkQ3NTVENzFCODRGQjRBMDAxODAxRkEgLyogQ2FsbEZyYW1lU2h1ZmZs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxs
TGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMjlFMTRDQTdEQzUwMDg1RjNDNiAv
KiBDYWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCNTMwMzkxRDkwNDA0QzAw
RjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI3NjczMjQx
QjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNC
OTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGM0I3RTJCMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzk0LDYgKzc0MDcsNyBAQAogCQkJCTBGNjZFMTZCMTRE
RjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkZCOTIxODE2RDAyRUIyMDA1NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQjgxRDg4OEEwQzAwNDRGNUUyIC8qIE1hcmtlZEJsb2Nr
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTIxQUIzRDhCRTAwQkJCOEU4IC8q
IERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkRE
ODE0MUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNDg1MzIyMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0aE1vZGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzg4Nyw2ICs3OTAxLDcgQEAKIAkJCQk4NkUzQzYxNDE2N0JBQkQ3MDA2
RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjRBQ0FGMTQ4NEM5Q0Uw
MEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUYx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RkExMzE3MTFEOERENzJCMDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVu
Y3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkyNiw3IEBACiAJCQkJ
QTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0
aFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAv
KiBKU0luamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQkExRDg4
OTUwNzAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0MgLyogSlNJbnB1
dHMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0ludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVh
ZGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weQkocmV2aXNp
b24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC02MSw5ICs2MSw4IEBAIGNsYXNzIEJ1aWx0aW5zSW50ZXJuYWxzV3JhcHBlckhlYWRlckdl
bmUKIAogICAgIGRlZiBnZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgog
ICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCi0gICAgICAgICAgICAoWyJXZWJDb3JlIl0sCi0g
ICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1ZNLmgiKSwKLSAgICAg
ICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sICgiSmF2YVNjcmlwdENvcmUiLCAi
aGVhcC9XZWFrSW5saW5lcy5oIikpLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLCAoIkphdmFT
Y3JpcHRDb3JlIiwgInJ1bnRpbWUvVk0uaCIpKQogICAgICAgICBdCiAgICAgICAgIGZvciBvYmpl
Y3QgaW4gc2VsZi5pbnRlcm5hbHM6CiAgICAgICAgICAgICBoZWFkZXJfaW5jbHVkZXMuYXBwZW5k
KChbIldlYkNvcmUiXSwgKCJXZWJDb3JlIiwgb2JqZWN0Lm9iamVjdF9uYW1lICsgIkJ1aWx0aW5z
LmgiKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5j
cHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFy
c2VyLmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgogI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNjb3BlLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNjb3Bl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhlYXAu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFsbG9jYXRpb25TY29wZSB7CitwdWJsaWM6
CisgICAgQWxsb2NhdGlvblNjb3BlKEhlYXAmIGhlYXApCisgICAgICAgIDogbV9oZWFwKGhlYXAp
CisgICAgICAgICwgbV9sYXN0T3BlcmF0aW9uKG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jlc3Mp
CisgICAgeworICAgICAgICBBU1NFUlQobV9sYXN0T3BlcmF0aW9uID09IE5vT3BlcmF0aW9uIHx8
IG1fbGFzdE9wZXJhdGlvbiA9PSBBbGxvY2F0aW9uKTsKKyAgICAgICAgbV9oZWFwLm1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9IEFsbG9jYXRpb247CisgICAgfQorICAgIAorICAgIH5BbGxvY2F0aW9u
U2NvcGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPT0gQWxsb2NhdGlvbik7CisgICAgICAgIG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PSBtX2xhc3RPcGVyYXRpb247CisgICAgfQorcHJpdmF0ZToKKyAgICBIZWFwJiBtX2hlYXA7Cisg
ICAgSGVhcE9wZXJhdGlvbiBtX2xhc3RPcGVyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIuaAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRh
aW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTIgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK2NsYXNzIEhlYXA7CiBjbGFzcyBIZWFwQ2VsbDsKIGNsYXNzIExhcmdlQWxsb2NhdGlv
bjsKIGNsYXNzIE1hcmtlZEJsb2NrOwogY2xhc3MgV2Vha1NldDsKK2NsYXNzIFZNOwogCiB0eXBl
ZGVmIHVpbnQzMl90IEhlYXBWZXJzaW9uOwogCkBAIC01Niw2ICs1OCw5IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogICAgIAorICAgIFZNKiB2bSgpIGNvbnN0OworICAgIEhlYXAqIGhlYXAoKSBj
b25zdDsKKyAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISFtX2VuY29kZWRQb2ludGVyOyB9CiAgICAgCiAgICAgYm9vbCBpc01hcmtlZEJsb2NrKCkgY29u
c3QgeyByZXR1cm4gbV9lbmNvZGVkUG9pbnRlciAmJiAhKG1fZW5jb2RlZFBvaW50ZXIgJiBpc0xh
cmdlQWxsb2NhdGlvbkJpdCk7IH0KQEAgLTczLDEzICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAqYml0d2lzZV9jYXN0PExhcmdlQWxsb2NhdGlvbio+KG1fZW5jb2RlZFBvaW50ZXIg
LSBpc0xhcmdlQWxsb2NhdGlvbkJpdCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZmxpcElmTmVj
ZXNzYXJ5KEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSgpOworICAgIHZv
aWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24pOwogICAgIGJvb2wgbmVlZHNGbGlwKCkgY29uc3Q7
CiAgICAgCi0gICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwogICAgIGJvb2wgaXNNYXJrZWQoSGVh
cENlbGwqKSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkKEhlYXBWZXJzaW9uLCBIZWFwQ2VsbCop
IGNvbnN0OwogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKikgY29u
c3Q7CisgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIEhlYXBD
ZWxsKikgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkKCk7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXJJbmxpbmVzLmgJ
KHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE0ICsyOSwyMCBAQAogI2luY2x1
ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkxhcmdlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIk1h
cmtlZEJsb2NrLmgiCisjaW5jbHVkZSAiVk0uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGlu
ZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKCkgY29uc3QKK2lubGluZSBWTSogQ2VsbENv
bnRhaW5lcjo6dm0oKSBjb25zdAogewogICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbWFya2VkQmxvY2soKS5oYW5kbGUoKS5pc01h
cmtlZCgpOworICAgICAgICByZXR1cm4gbGFyZ2VBbGxvY2F0aW9uKCkudm0oKTsKKyAgICByZXR1
cm4gbWFya2VkQmxvY2soKS52bSgpOworfQorCitpbmxpbmUgSGVhcCogQ2VsbENvbnRhaW5lcjo6
aGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICZ2bSgpLT5oZWFwOwogfQogCiBpbmxpbmUgYm9v
bCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwQ2VsbCogY2VsbCkgY29uc3QKQEAgLTQ2LDYg
KzUyLDEzIEBAIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXAKICAgICBy
ZXR1cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZChjZWxsKTsKIH0KIAoraW5saW5lIGJvb2wgQ2Vs
bENvbnRhaW5lcjo6aXNNYXJrZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgSGVhcENlbGwqIGNlbGwp
IGNvbnN0Cit7CisgICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCisgICAgICAgIHJldHVybiBs
YXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlz
TWFya2VkKHZlcnNpb24sIGNlbGwpOworfQorCiBpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjpp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgaWYg
KGlzTGFyZ2VBbGxvY2F0aW9uKCkpCkBAIC01Myw2ICs2NiwxMyBAQCBpbmxpbmUgYm9vbCBDZWxs
Q29udGFpbmVyOjppc01hcmtlZE9yTmV3CiAgICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOwogfQogCitpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVy
Ojppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgSGVhcENlbGwq
IGNlbGwpIGNvbnN0Cit7CisgICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCisgICAgICAgIHJl
dHVybiBsYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICBy
ZXR1cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQodmVyc2lvbiwgY2Vs
bCk7Cit9CisKIGlubGluZSB2b2lkIENlbGxDb250YWluZXI6Om5vdGVNYXJrZWQoKQogewogICAg
IGlmICghaXNMYXJnZUFsbG9jYXRpb24oKSkKQEAgLTczLDE2ICs5MywxMCBAQCBpbmxpbmUgV2Vh
a1NldCYgQ2VsbENvbnRhaW5lcjo6d2Vha1NldCgpCiAgICAgcmV0dXJuIG1hcmtlZEJsb2NrKCku
d2Vha1NldCgpOwogfQogCi1pbmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3Nh
cnkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlv
bigpKQotICAgICAgICBtYXJrZWRCbG9jaygpLmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7
Ci19Ci0KLWlubGluZSB2b2lkIENlbGxDb250YWluZXI6OmZsaXBJZk5lY2Vzc2FyeSgpCitpbmxp
bmUgdm9pZCBDZWxsQ29udGFpbmVyOjphYm91dFRvTWFyayhIZWFwVmVyc2lvbiBoZWFwVmVyc2lv
bikKIHsKICAgICBpZiAoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIG1hcmtlZEJsb2Nr
KCkuZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgICAgIG1hcmtlZEJsb2NrKCkuYWJvdXRUb01hcmso
aGVhcFZlcnNpb24pOwogfQogCiBpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjpuZWVkc0ZsaXAo
KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9v
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZh
dGl2ZVJvb3RzLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL09TQWxsb2NhdG9yLmg+CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
NyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAj
aW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCisjaW5jbHVkZSAiTWFya2VkU3Bh
Y2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNo
YWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKQEAgLTUyNiwxMSArNTI3
LDkgQEAgdm9pZCBIZWFwOjpiZWdpbk1hcmtpbmcoKQogICAgIH0KICAgICAKICAgICB7Ci0gICAg
ICAgIFRpbWluZ1Njb3BlIGNsZWFyTWFya3NUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3Bh
Y2UuY2xlYXJNYXJrcyIpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZsaXAoKTsKKyAgICAgICAg
VGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5i
ZWdpbk1hcmtpbmciKTsKKyAgICAgICAgbV9vYmplY3RTcGFjZS5iZWdpbk1hcmtpbmcoKTsKICAg
ICB9Ci0gICAgCi0gICAgbV9vYmplY3RTcGFjZS5zZXRJc01hcmtpbmcodHJ1ZSk7CiB9CiAKIHZv
aWQgSGVhcDo6dmlzaXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQoKQpAQCAtNzc5LDcgKzc3OCw3IEBA
IHZvaWQgSGVhcDo6ZW5kTWFya2luZygpCiAgICAgQVNTRVJUKG1fc2hhcmVkTWFya1N0YWNrLmlz
RW1wdHkoKSk7CiAgICAgbV93ZWFrUmVmZXJlbmNlSGFydmVzdGVycy5yZW1vdmVBbGwoKTsKICAg
ICAKLSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyhmYWxzZSk7CisgICAgbV9vYmplY3RT
cGFjZS5lbmRNYXJraW5nKCk7CiB9CiAKIHNpemVfdCBIZWFwOjpvYmplY3RDb3VudCgpCkBAIC05
MzksNyArOTM4LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgpCiAgICAgICAgIG1f
b2JqZWN0U3BhY2Uuc3dlZXAoKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5zaHJpbmsoKTsKICAg
ICB9Ci0gICAgQVNTRVJUKG1fYmxvY2tTbmFwc2hvdC5pc0VtcHR5KCkpOworICAgIG1fb2JqZWN0
U3BhY2UuYXNzZXJ0Tm9VbnN3ZXB0KCk7CiAKICAgICBzd2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vh
a0Jsb2NrcygpOwogfQpAQCAtMTAzOSw3ICsxMDM4LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVh
cDo6Y29sbGVjdEltcGwoSGVhcAogICAgIHJlYXBXZWFrSGFuZGxlcygpOwogICAgIHBydW5lU3Rh
bGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICBzd2VlcEFycmF5QnVmZmVycygpOwotICAg
IHNuYXBzaG90TWFya2VkU3BhY2UoKTsKKyAgICBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICBmaW5h
bGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCk7CiAgICAgcmVtb3ZlRGVhZENvbXBpbGVyV29y
a2xpc3RFbnRyaWVzKCk7CiAgICAgZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKTsKQEAgLTEw
NDgsNyArMTA0Nyw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXAK
ICAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB3cml0ZUJhcnJpZXJDdXJyZW50
bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CiAKLSAgICByZXNldEFsbG9jYXRvcnMoKTsKKyAgICBw
cmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKICAg
ICBkaWRGaW5pc2hDb2xsZWN0aW9uKGdjU3RhcnRUaW1lKTsKICAgICByZXN1bWVDb21waWxlclRo
cmVhZHMoKTsKQEAgLTEwNjMsNiArMTA2MiwxMSBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpj
b2xsZWN0SW1wbChIZWFwCiAgICAgICAgIGRvdWJsZSBhZnRlciA9IGN1cnJlbnRUaW1lTVMoKTsK
ICAgICAgICAgZGF0YUxvZyhhZnRlciAtIGJlZm9yZSwgIiBtc11cbiIpOwogICAgIH0KKyAgICAK
KyAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgZGF0YUxvZygiSGVhcCBzdGF0ZSBhZnRlciBHQzpc
biIpOworICAgICAgICBtX29iamVjdFNwYWNlLmR1bXBCaXRzKCk7CisgICAgfQogfQogCiB2b2lk
IEhlYXA6OnN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygpCkBAIC0xMTYyLDQ0ICsxMTY2LDEwIEBAIHZv
aWQgSGVhcDo6c3dlZXBBcnJheUJ1ZmZlcnMoKQogICAgIG1fYXJyYXlCdWZmZXJzLnN3ZWVwKCk7
CiB9CiAKLXN0cnVjdCBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvciA6IHB1YmxpYyBNYXJrZWRC
bG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yKFZlY3Rv
cjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIGJsb2NrcykgCi0gICAgICAgIDogbV9pbmRleCgwKSAK
LSAgICAgICAgLCBtX2Jsb2NrcyhibG9ja3MpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgb3Bl
cmF0b3IoKShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QKLSAgICB7Ci0gICAgICAg
IGJsb2NrLT5zZXRJc09uQmxvY2tzVG9Td2VlcCh0cnVlKTsKLSAgICAgICAgbV9ibG9ja3NbbV9p
bmRleCsrXSA9IGJsb2NrOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbXV0YWJs
ZSBmaWVsZCBiZWNhdWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAotICAgIG11dGFibGUgc2l6ZV90
IG1faW5kZXg7Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgbV9ibG9ja3M7Ci19
OwotCi12b2lkIEhlYXA6OnNuYXBzaG90TWFya2VkU3BhY2UoKQordm9pZCBIZWFwOjpzbmFwc2hv
dFVuc3dlcHQoKQogewotICAgIFRpbWluZ1Njb3BlIHRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6
c25hcHNob3RNYXJrZWRTcGFjZSIpOwotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJs
eSBiZSByZW5hbWVkLiBJdCdzIG5vdCBhY3R1YWxseSBzbmFwc2hvdHRpbmcgYWxsIG9mIE1hcmtl
ZFNwYWNlLgotICAgIC8vIFRoaXMgaXMgdXNlZCBieSBJbmNyZW1lbnRhbFN3ZWVwZXIsIHNvIGl0
IG9ubHkgbmVlZHMgdG8gc25hcHNob3QgYmxvY2tzLiBIb3dldmVyLCBpZiB3ZSBldmVyCi0gICAg
Ly8gd2FudGVkIHRvIGFkZCBvdGhlciBzbmFwc2hvdHRpbmcgbG9naW4sIHdlJ2QgcHJvYmFibHkg
cHV0IGl0IGhlcmUuCi0gICAgCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVu
Q29sbGVjdGlvbikgewotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA6
IG1fb2JqZWN0U3BhY2UuYmxvY2tzV2l0aE5ld09iamVjdHMoKSkgewotICAgICAgICAgICAgaWYg
KGhhbmRsZS0+aXNPbkJsb2Nrc1RvU3dlZXAoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIG1fYmxvY2tTbmFwc2hvdC5hcHBlbmQoaGFuZGxlKTsKLSAgICAgICAgICAg
IGhhbmRsZS0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgewotICAgICAgICBtX2Jsb2NrU25hcHNob3QucmVzaXplVG9GaXQobV9vYmplY3RTcGFjZS5i
bG9ja3MoKS5zZXQoKS5zaXplKCkpOwotICAgICAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rv
ciBmdW5jdG9yKG1fYmxvY2tTbmFwc2hvdCk7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFj
aEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KKyAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhp
cywgIkhlYXA6OnNuYXBzaG90VW5zd2VwdCIpOworICAgIG1fb2JqZWN0U3BhY2Uuc25hcHNob3RV
bnN3ZXB0KCk7CiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMoKQpA
QCAtMTIyMiw5ICsxMTkyLDkgQEAgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVj
dXRpbgogICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29k
ZUJsb2Nrcyh0aGlzKTsKIH0KIAotdm9pZCBIZWFwOjpyZXNldEFsbG9jYXRvcnMoKQordm9pZCBI
ZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9vYmplY3RTcGFjZS5yZXNldEFs
bG9jYXRvcnMoKTsKKyAgICBtX29iamVjdFNwYWNlLnByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiB9
CiAKIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCkBAIC0xNDczLDcgKzE0NDMs
NyBAQCBwdWJsaWM6CiB2b2lkIEhlYXA6OnpvbWJpZnlEZWFkT2JqZWN0cygpCiB7CiAgICAgLy8g
U3dlZXAgbm93IGJlY2F1c2UgZGVzdHJ1Y3RvcnMgd2lsbCBjcmFzaCBvbmNlIHdlJ3JlIHpvbWJp
ZmllZC4KLSAgICBtX29iamVjdFNwYWNlLnpvbWJpZnlTd2VlcCgpOworICAgIG1fb2JqZWN0U3Bh
Y2Uuc3dlZXAoKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRoaXMp
OwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsKGl0ZXJhdGlvblNjb3BlLCBab21i
aWZ5KCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjA2
MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw2ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBBbGxvY2F0aW9u
U2NvcGU7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrOwpAQCAtMjU1LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZEZyZWVCbG9jayhzaXplX3QgY2FwYWNpdHkpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBBbGxvY2F0aW9uU2NvcGU7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAgICBm
cmllbmQgY2xhc3MgRGVmZXJHQzsKICAgICBmcmllbmQgY2xhc3MgRGVmZXJHQ0ZvckFXaGlsZTsK
QEAgLTMyNywxMSArMzI5LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFwV2Vha0hhbmRsZXMo
KTsKICAgICB2b2lkIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICB2b2lk
IHN3ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAgdm9pZCBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7Cisg
ICAgdm9pZCBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICB2b2lkIGRlbGV0ZVNvdXJjZVByb3ZpZGVy
Q2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB2b2lk
IHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKLSAgICB2b2lkIHJl
c2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB2
b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlv
bmFsRmluYWxpemVycygpOwogICAgIHZvaWQgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVzKCk7CkBA
IC00MjIsNyArNDI0LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxs
YmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsKICAgICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxi
YWNrPiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmNyZW1l
bnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+
IG1fYmxvY2tTbmFwc2hvdDsKIAogICAgIFZlY3RvcjxIZWFwT2JzZXJ2ZXIqPiBtX29ic2VydmVy
czsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZp
c2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MSw5ICs4MSw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFw
Ojppc01hcmtlZChjb25zdCAKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CiAgICAgTWFy
a2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAgICBpZiAoYmxvY2submVl
ZHNGbGlwKGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJl
dHVybiBibG9jay5pc01hcmtlZCgKKyAgICAgICAgYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLnZlcnNpb24oKSwgY2VsbCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01h
cmtlZENvbmN1cnJlbnRseShjb25zdCB2b2lkKiByYXdDZWxsKQpAQCAtOTIsMTAgKzkxLDggQEAg
QUxXQVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2VkQ29uY3VycgogICAgIGlmIChjZWxsLT5p
c0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9u
KCkuaXNNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9j
aygpOwotICAgIGlmIChibG9jay5uZWVkc0ZsaXAoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLnZlcnNpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXVEY6OmxvYWRMb2Fk
RmVuY2UoKTsKLSAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQoY2VsbCk7CisgICAgcmV0dXJuIGJs
b2NrLmlzTWFya2VkQ29uY3VycmVudGx5KAorICAgICAgICBibG9jay52bSgpLT5oZWFwLm9iamVj
dFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6
OnRlc3RBbmRTZXRNYXJrZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qgdm9pZCogcmF3Q2Vs
bCkKQEAgLTEwNCw3ICsxMDEsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6dGVzdEFuZFNl
dE1hcmtlCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVy
biBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS50ZXN0QW5kU2V0TWFya2VkKCk7CiAgICAgTWFya2Vk
QmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAgICBibG9jay5mbGlwSWZOZWNl
c3NhcnlEdXJpbmdNYXJraW5nKHZlcnNpb24pOworICAgIGJsb2NrLmFib3V0VG9NYXJrKHZlcnNp
b24pOwogICAgIHJldHVybiBibG9jay50ZXN0QW5kU2V0TWFya2VkKGNlbGwpOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCShyZXZp
c2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGlj
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJPcHRpb25z
LmgiCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgJKHJldmlzaW9uIDIwNjAzMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg0LDkgKzg0LDggQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFmaWx0ZXIucnVsZU91
dChiaXR3aXNlX2Nhc3Q8Qml0cz4ocHJldmlvdXNDYW5kaWRhdGUpKQogICAgICAgICAgICAgICAg
ICYmIHNldC5jb250YWlucyhwcmV2aW91c0NhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAmJiBw
cmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxp
YXJ5KSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNDYW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2Fy
eShoZWFwVmVyc2lvbik7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNQb2ludGVyID0gc3RhdGlj
X2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxsQWxpZ24ocHJldmlv
dXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5k
bGUoKS5pc0xpdmVDZWxsKHByZXZpb3VzUG9pbnRlcikpCisgICAgICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKGhlYXBWZXJzaW9uLCBwcmV2aW91
c1BvaW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBmdW5jKHByZXZpb3VzUG9pbnRlcik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDEwICs5OCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCFzZXQuY29udGFpbnMoY2FuZGlkYXRlKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCi0gICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsK
LQogICAgICAgICBhdXRvIHRyeVBvaW50ZXIgPSBbJl0gKHZvaWQqIHBvaW50ZXIpIHsKLSAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwocG9pbnRlcikpCisgICAg
ICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKGhlYXBWZXJzaW9uLCBw
b2ludGVyKSkKICAgICAgICAgICAgICAgICBmdW5jKHBvaW50ZXIpOwogICAgICAgICB9OwogICAg
IApAQCAtMTcwLDcgKzE2Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFu
ZGxlKCkuY2VsbEtpbmQoKSAhPSBIZWFwQ2VsbDo6SlNDZWxsKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgY2FuZGlkYXRlLT5mbGlwSWZOZWNlc3NhcnkoKTsK
ICAgICAgICAgaWYgKCFjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwocG9pbnRlcikpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTWFya2VkU3Bh
Y2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHJldmlzaW9uIDIwNjAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBzd2Vl
cFRpbWVNdWx0aXBsaWVyIAogI2lmIFVTRShDRikKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVt
ZW50YWxTd2VlcGVyKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQogICAgIDogSGVh
cFRpbWVyKGhlYXAtPnZtKCksIHJ1bkxvb3ApCi0gICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+
bV9ibG9ja1NuYXBzaG90KQorICAgICwgbV9jdXJyZW50QWxsb2NhdG9yKG51bGxwdHIpCiB7CiB9
CiAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVy
KCkKICNlbGlmIFBMQVRGT1JNKEVGTCkKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxT
d2VlcGVyKEhlYXAqIGhlYXApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSkKLSAgICAsIG1f
YmxvY2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25hcHNob3QpCisgICAgLCBtX2N1cnJlbnRBbGxv
Y2F0b3IobnVsbHB0cikKIHsKIH0KIApAQCAtODYsNyArODYsNyBAQCB2b2lkIEluY3JlbWVudGFs
U3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogI2VsaWYgVVNFKEdMSUIpCiBJbmNyZW1lbnRhbFN3ZWVw
ZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAt
PnZtKCkpCi0gICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQorICAg
ICwgbV9jdXJyZW50QWxsb2NhdG9yKG51bGxwdHIpCiB7CiB9CiAKQEAgLTEyMSwxOSArMTIxLDIw
IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3ZWVwKGRvdWJsZSAKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fYmxvY2tzVG9Td2VlcC5jbGVhcigpOwogICAgIGNhbmNlbFRp
bWVyKCk7CiB9CiAKIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygpCiB7
Ci0gICAgd2hpbGUgKCFtX2Jsb2Nrc1RvU3dlZXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3NUb1N3ZWVwLnRha2VMYXN0KCk7Ci0gICAg
ICAgIGJsb2NrLT5zZXRJc09uQmxvY2tzVG9Td2VlcChmYWxzZSk7Ci0KLSAgICAgICAgaWYgKCFi
bG9jay0+bmVlZHNTd2VlcGluZygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG51bGxwdHI7CisgICAgCisgICAgZm9yICg7IG1fY3Vy
cmVudEFsbG9jYXRvcjsgbV9jdXJyZW50QWxsb2NhdG9yID0gbV9jdXJyZW50QWxsb2NhdG9yLT5u
ZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgYmxvY2sgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPmZp
bmRCbG9ja1RvU3dlZXAoKTsKKyAgICAgICAgaWYgKGJsb2NrKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIAorICAgIGlmIChibG9jaykgewogICAgICAgICBEZWZlckdDRm9yQVdoaWxl
IGRlZmVyR0MobV92bS0+aGVhcCk7CiAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwogICAgICAgICBt
X3ZtLT5oZWFwLm9iamVjdFNwYWNlKCkuZnJlZU9yU2hyaW5rQmxvY2soYmxvY2spOwpAQCAtMTQ2
LDExICsxNDcsMTIgQEAgYm9vbCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKAog
dm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcoKQogewogICAgIHNjaGVkdWxl
VGltZXIoKTsKKyAgICBtX2N1cnJlbnRBbGxvY2F0b3IgPSBtX3ZtLT5oZWFwLm9iamVjdFNwYWNl
KCkuZmlyc3RBbGxvY2F0b3IoKTsKIH0KIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OndpbGxG
aW5pc2hTd2VlcGluZygpCiB7Ci0gICAgbV9ibG9ja3NUb1N3ZWVwLmNsZWFyKCk7CisgICAgbV9j
dXJyZW50QWxsb2NhdG9yID0gbnVsbHB0cjsKICAgICBpZiAobV92bSkKICAgICAgICAgY2FuY2Vs
VGltZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFs
U3dlZXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3Jl
bWVudGFsU3dlZXBlci5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3
LDEyIEBACiAjZGVmaW5lIEluY3JlbWVudGFsU3dlZXBlcl9oCiAKICNpbmNsdWRlICJIZWFwVGlt
ZXIuaCIKLSNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7Ci1jbGFzcyBNYXJrZWRCbG9jazsKK2Ns
YXNzIE1hcmtlZEFsbG9jYXRvcjsKIAogY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyIDogcHVibGlj
IEhlYXBUaW1lciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1NSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRpbWVyKCk7CiAgICAgdm9pZCBjYW5jZWxU
aW1lcigpOwogICAgIAotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIG1fYmxvY2tz
VG9Td2VlcDsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fY3VycmVudEFsbG9jYXRvcjsKICNlbmRp
ZgogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0
aW9uLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xh
cmdlQWxsb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw5ICs3MCwxMCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgYm9vbCBpc05ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc05l
d2x5QWxsb2NhdGVkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2VkKCkgeyByZXR1
cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9CisgICAgQUxX
QVlTX0lOTElORSBib29sIGlzTWFya2VkKEhlYXBDZWxsKikgeyByZXR1cm4gbV9pc01hcmtlZC5s
b2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9CisgICAgQUxXQVlTX0lOTElORSBib29s
IGlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uLCBIZWFwQ2VsbCopIHsgcmV0dXJuIG1f
aXNNYXJrZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQogICAgIGJvb2wgaXNN
YXJrZWRPck5ld2x5QWxsb2NhdGVkKCkgeyByZXR1cm4gaXNNYXJrZWQoKSB8fCBpc05ld2x5QWxs
b2NhdGVkKCk7IH0KICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCop
IHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOyB9Ci0gICAgYm9vbCBpc01hcmtl
ZER1cmluZ1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVybiBpc01h
cmtlZCgpOyB9CiAgICAgYm9vbCBpc0xpdmUoKSB7IHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxv
Y2F0ZWQoKTsgfQogICAgIAogICAgIGJvb2wgaGFzVmFsaWRDZWxsKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNWYWxpZENlbGw7IH0KQEAgLTEwNiw4ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Y29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlczsgfQogICAgIAotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KHVpbnQ2NF90KSB7
IH0KLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcodWludDY0X3QpIHsgfQor
ICAgIHZvaWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24pIHsgfQogICAgIAogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDIwNjAzMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDEwICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgogCisjaW5jbHVkZSAiQWxsb2NhdGlvblNjb3BlLmgiCiAj
aW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1
ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNp
bmNsdWRlICJWTS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMzksNyArNDEs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKEhl
YXAqIGhlYXAsIE1hcmtlZFNwYWNlKiBtYXJrZWRTcGFjZSwgc2l6ZV90IGNlbGxTaXplLCBjb25z
dCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogICAgIDogbV9jdXJyZW50QmxvY2so
MCkKICAgICAsIG1fbGFzdEFjdGl2ZUJsb2NrKDApCi0gICAgLCBtX25leHRCbG9ja1RvU3dlZXAo
bnVsbHB0cikKICAgICAsIG1fY2VsbFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNlbGxTaXpl
KSkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQogICAgICwgbV9oZWFwKGhlYXApCkBA
IC01MCwxMSArNTEsMTMgQEAgTWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoSGVhcCog
aAogYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQogewog
ICAgIHVuc2lnbmVkIGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID0gMDsKLSAgICBNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jayA9IG1fYmxvY2tMaXN0LmJlZ2luKCk7Ci0gICAgd2hpbGUgKGJsb2Nr
KSB7Ci0gICAgICAgIGJsb2NrID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotICAg
ICAgICBpZiAoYmxvY2spCi0gICAgICAgICAgICBibG9jay0+ZmxpcElmTmVjZXNzYXJ5KCk7IC8v
IEZvcmNlcyB1cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRoZSBibG9jaywgYnV0IGhhcyBubyBz
ZW1hbnRpYyBlZmZlY3QuCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxv
Y2tzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
ayA9IG1fYmxvY2tzW2luZGV4XTsKKyAgICAgICAgaWYgKGJsb2NrKSB7CisgICAgICAgICAgICAv
LyBGb3JjZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8g
c2VtYW50aWMgZWZmZWN0LgorICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKKyAg
ICAgICAgICAgICAgICBibG9jay0+YmxvY2soKS5yZXNldFZlcnNpb24oKTsKKyAgICAgICAgfQog
ICAgICAgICArK2l0ZXJzU2luY2VMYXN0VGltZUNoZWNrOwogICAgICAgICBpZiAoaXRlcnNTaW5j
ZUxhc3RUaW1lQ2hlY2sgPj0gSGVhcDo6c190aW1lQ2hlY2tSZXNvbHV0aW9uKSB7CiAgICAgICAg
ICAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpOwpAQCAtNjYsODQgKzY5LDg2IEBAIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0
KGRvdWJsZSAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTWFya2VkQWxsb2NhdG9yOjpy
ZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCi17Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsgLy8gVGhpcyB3aWxsIGJlIGNhbGxlZCBpbiBwYXJhbGxlbCBkdXJpbmcgR0Mu
Ci0gICAgaWYgKGJsb2NrID09IG1fY3VycmVudEJsb2NrKSB7Ci0gICAgICAgIC8vIFRoaXMgaGFw
cGVucyB3aGVuIHRoZSBtdXRhdG9yIGlzIHJ1bm5pbmcuIFdlIGZpbmlzaGVkIGEgZnVsbCBHQyBh
bmQgbWFya2VkIHRvbyBmZXcgdGhpbmdzCi0gICAgICAgIC8vIHRvIHJldGlyZS4gVGhlbiB3ZSBz
dGFydGVkIGFsbG9jYXRpbmcgaW4gdGhpcyBibG9jay4gVGhlbiBhIGJhcnJpZXIgcmFuLCB3aGlj
aCBtYXJrZWQgYW4KLSAgICAgICAgLy8gb2JqZWN0IGluIHRoaXMgYmxvY2ssIHdoaWNoIHB1dCBp
dCBvdmVyIHRoZSByZXRpcmVtZW50IHRocmVzaG9sZC4gSXQncyBPSyB0byBzaW1wbHkgZG8KLSAg
ICAgICAgLy8gbm90aGluZyBpbiB0aGF0IGNhc2UuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGJsb2NrID09IG1fbGFzdEFjdGl2ZUJsb2NrKSB7Ci0gICAgICAgIC8vIFRoaXMgY2Fu
IGVhc2lseSBoYXBwZW4gZHVyaW5nIG1hcmtpbmcuIEl0IHdvdWxkIGJlIGVhc3kgdG8gaGFuZGxl
IHRoaXMgY2FzZSwgYnV0IGl0J3MKLSAgICAgICAgLy8ganVzdCBhcyBlYXN5IHRvIGlnbm9yZSBp
dC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+aXNP
bkxpc3QoKSk7Ci0gICAgaWYgKGJsb2NrID09IG1fbmV4dEJsb2NrVG9Td2VlcCkKLSAgICAgICAg
bV9uZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotICAg
IGJsb2NrLT5yZW1vdmUoKTsKLSAgICBtX3JldGlyZWRCbG9ja3MucHVzaChibG9jayk7Ci19Ci0K
LU1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmlsdGVyTmV4dEJsb2NrKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxs
b2NhdG9yOjpmaW5kRW1wdHlCbG9jaygpCiB7Ci0gICAgaWYgKGJsb2NrID09IG1fYmxvY2tMaXN0
LmVuZCgpKQorICAgIG1fZW1wdHlDdXJzb3IgPSBtX2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1cnNv
ciwgdHJ1ZSk7CisgICAgaWYgKG1fZW1wdHlDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYmxvY2s7CisgICAgcmV0dXJuIG1fYmxv
Y2tzW21fZW1wdHlDdXJzb3JdOwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEJs
b2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpkaWRDb25zdW1lRnJlZUxpc3QoKQogewotICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IGZp
bHRlck5leHRCbG9jayhibG9jayk7CisgICAgaWYgKG1fY3VycmVudEJsb2NrKQorICAgICAgICBt
X2N1cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7CisgICAgCisgICAgc2V0RnJlZUxp
c3QoRnJlZUxpc3QoKSk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogfQogCi12b2lk
KiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCkKK3Zv
aWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpCiB7CiAg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAg
IGlmIChtX2N1cnJlbnRCbG9jaykgewotICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0g
bV9uZXh0QmxvY2tUb1N3ZWVwKTsKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmRpZENvbnN1bWVG
cmVlTGlzdCgpOwotICAgICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fY3VycmVudEJsb2NrLT5u
ZXh0KCkpOwotICAgIH0KKyAgICBBU1NFUlQoIW1fY3VycmVudEJsb2NrKTsKKyAgICBBU1NFUlQo
IW1fZnJlZUxpc3QpOwogICAgIAotICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotCi0gICAg
UkVMRUFTRV9BU1NFUlQobV9uZXh0QmxvY2tUb1N3ZWVwICE9IG1fYmxvY2tMaXN0LmVuZCgpKTsK
LQotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jazo6
SGFuZGxlKiYgYmxvY2sgPSBtX25leHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQp
IHsKLSAgICAgICAgbmV4dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAg
ICAgICAvLyBJdCB3b3VsZCBiZSBzdXBlciB3ZWlyZCBpZiB0aGUgYmxvY2tzIHdlIGFyZSBzd2Vl
cGluZyBoYXZlIGFueXRoaW5nIGFsbG9jYXRlZCBkdXJpbmcgdGhpcwotICAgICAgICAvLyBjeWNs
ZS4KLSAgICAgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAg
Zm9yICg7OykgeworICAgICAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSAobV9jYW5BbGxvY2F0ZUJ1
dE5vdEVtcHR5IHwgbV9lbXB0eSkuZmluZEJpdChtX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOwor
ICAgICAgICBpZiAobV9hbGxvY2F0aW9uQ3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9j
ay0+c3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAg
Ci0gICAgICAgIC8vIEl0J3MgcG9zc2libGUgdG8gc3R1bWJsZSBvbiBhIGNvbXBsZXRlLWZ1bGwg
YmxvY2suIE1hcmtpbmcgdHJpZXMgdG8gcmV0aXJlIHRoZXNlLCBidXQKLSAgICAgICAgLy8gdGhh
dCBhbGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCi0g
ICAgICAgIGlmIChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSkgewotICAgICAgICAgICAg
QVNTRVJUKGJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7Ci0gICAgICAgICAgICBibG9jay0+dW5zd2Vl
cFdpdGhOb05ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzTWFy
a2VkKCkpOwotICAgICAgICAgICAgcmV0aXJlKGJsb2NrKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9CisgICAgICAgIHNldElzQ2FuQWxsb2NhdGVCdXROb3RFbXB0eShtX2FsbG9j
YXRpb25DdXJzb3IsIGZhbHNlKTsKIAotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOwot
ICAgICAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBp
ZiAodm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVJbihtX2Jsb2Nrc1ttX2FsbG9jYXRpb25DdXJz
b3JdKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmICgh
bV9mcmVlTGlzdCkgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IDA7Ci0gICAgICAgIHJldHVy
biAwOworICAgIGlmIChPcHRpb25zOjpsb29rRm9yRW1wdHlCbG9ja3NJbk90aGVyQWxsb2NhdG9y
cygpKSB7CisgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fbWFya2Vk
U3BhY2UtPmZpbmRFbXB0eUJsb2NrKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBJdCdzIGdvb2QgdGhhdCB0aGlzIGNsZWFycyBj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGFzIHdlbGwgYXMgYWxsIG90aGVyIGJpdHMsCisgICAgICAg
ICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzIGEgcmVtb3RlIGNoYW5jZSB0aGF0IGEgYmxvY2sgbWF5
IGhhdmUgYm90aCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5CisgICAgICAgICAgICAvLyBhbmQgZW1w
dHkgc2V0IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgICAgICBibG9jay0+cmVtb3ZlRnJvbUFs
bG9jYXRvcigpOworICAgICAgICAgICAgYWRkQmxvY2soYmxvY2spOworICAgICAgICAgICAgcmV0
dXJuIGFsbG9jYXRlSW4oYmxvY2spOworICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHJldHVy
biBudWxscHRyOworfQogCit2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlSW4oTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spCit7CisgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVJ
bihibG9jayk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2spCit7CisgICAgQVNTRVJUKGJsb2NrKTsKKyAgICBBU1NFUlQoIWJsb2Nr
LT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVMaXN0
ZWQoKSk7CisgICAgCisgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFya2Vk
QmxvY2s6OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAKKyAgICAvLyBJdCdzIHBvc3Np
YmxlIHRvIHN0dW1ibGUgb24gYSBjb21wbGV0ZWx5IGZ1bGwgYmxvY2suIE1hcmtpbmcgdHJpZXMg
dG8gcmV0aXJlIHRoZXNlLCBidXQKKyAgICAvLyB0aGF0IGFsZ29yaXRobSBpcyByYWN5IGFuZCBt
YXkgZm9yZ2V0IHRvIGRvIGl0IHNvbWV0aW1lcy4KKyAgICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlv
bldpbGxGYWlsKCkpIHsKKyAgICAgICAgQVNTRVJUKGJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7Cisg
ICAgICAgIGJsb2NrLT51bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICAgICAgQVNT
RVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBBU1NFUlQoIWlzRW1wdHkoYmxv
Y2spKTsKKyAgICAgICAgQVNTRVJUKCFpc0NhbkFsbG9jYXRlQnV0Tm90RW1wdHkoYmxvY2spKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAorICAgIG1fY3VycmVudEJsb2Nr
ID0gYmxvY2s7CisgICAgc2V0RnJlZUxpc3QoZnJlZUxpc3QpOworICAgIAogICAgIHZvaWQqIHJl
c3VsdDsKICAgICBpZiAobV9mcmVlTGlzdC5yZW1haW5pbmcpIHsKICAgICAgICAgdW5zaWduZWQg
Y2VsbFNpemUgPSBtX2NlbGxTaXplOwpAQCAtMTU1LDIxICsxNjAsMTEgQEAgdm9pZCogTWFya2Vk
QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQogICAgICAgICByZXN1bHQgPSBoZWFkOwogICAg
IH0KICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHNldElzRWRlbihtX2N1cnJlbnRC
bG9jaywgdHJ1ZSk7CiAgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWxsb2NhdGVJbkJsb2NrKG1fY3Vy
cmVudEJsb2NrKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgdm9pZCogTWFya2Vk
QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCkKLXsKLSAgICBBU1NFUlQo
IW1faGVhcC0+aXNCdXN5KCkpOwotICAgIG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID0g
QWxsb2NhdGlvbjsKLSAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0
aW5nSW1wbCgpOwotCi0gICAgbV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJh
dGlvbjsKLSAgICBBU1NFUlQocmVzdWx0IHx8ICFtX2N1cnJlbnRCbG9jayk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQogQUxXQVlTX0lOTElORSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZG9UZXN0
Q29sbGVjdGlvbnNJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFPcHRpb25zOjpzbG93UGF0aEFsbG9j
c0JldHdlZW5HQ3MoKSkKQEAgLTIwNiwxOSArMjAxLDE3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRv
cjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICBBU1NFUlQoIW1fbWFya2VkU3BhY2UtPmlzSXRlcmF0
aW5nKCkpOwogICAgIG1faGVhcC0+ZGlkQWxsb2NhdGUobV9mcmVlTGlzdC5vcmlnaW5hbFNpemUp
OwogICAgIAorICAgIGRpZENvbnN1bWVGcmVlTGlzdCgpOworICAgIAorICAgIG1faGVhcC0+Y29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOworICAgIAorICAgIEFsbG9jYXRpb25TY29wZSBhbGxv
Y2F0aW9uU2NvcGUoKm1faGVhcCk7CisKICAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZVdp
dGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShyZXN1bHQgIT0gMCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+Y29sbGVjdElmTmVj
ZXNzYXJ5T3JEZWZlcigpKSB7Ci0gICAgICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENv
bGxlY3RpbmcoKTsKLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX2hlYXAtPnNob3VsZENvbGxlY3QoKSk7Ci0gICAg
CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSB0cnlBbGxvY2F0ZUJsb2NrKCk7CiAg
ICAgaWYgKCFibG9jaykgewogICAgICAgICBpZiAoY3Jhc2hPbkZhaWx1cmUpCkBAIC0yMjcsOCAr
MjIwLDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlSQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIGFkZEJsb2NrKGJsb2NrKTsKLSAgICAg
ICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOworICAgIHJl
c3VsdCA9IGFsbG9jYXRlSW4oYmxvY2spOwogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC0yNDksMzcgKzI0MSw3NSBAQCBzaXplX3QgTWFya2VkQWxsb2NhdG9y
OjpibG9ja1NpemVGb3JCeXRlCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6
OnRyeUFsbG9jYXRlQmxvY2soKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxl
clNjb3BlKGZhbHNlKTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9oZWFw
LCB0aGlzLCBtX2NlbGxTaXplLCBtX2F0dHJpYnV0ZXMpOworICAgIAorICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCk7CisgICAg
aWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fbWFya2Vk
U3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsKIH0K
IAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9mcmVl
TGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMuaXNF
bXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAgIHNp
emVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxvY2tz
LmFwcGVuZChibG9jayk7CisgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9sZENh
cGFjaXR5KSB7CisgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAg
IFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tz
LmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZv
ckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0
b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0
eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7CisgICAgICAgIEFTU0VS
VCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgbV9ibG9ja3NbaW5kZXhdID0gYmxvY2s7Cisg
ICAgfQorICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZl
Y3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvciwgIXZlY3Rv
cltpbmRleF0pOworICAgICAgICB9KTsKKworICAgIC8vIFRoaXMgaXMgdGhlIHBvaW50IGF0IHdo
aWNoIHRoZSBibG9jayBsZWFybnMgb2YgaXRzIGNlbGxTaXplKCkgYW5kIGF0dHJpYnV0ZXMoKS4K
KyAgICBibG9jay0+ZGlkQWRkVG9BbGxvY2F0b3IodGhpcywgaW5kZXgpOwogICAgIAotICAgIG1f
YmxvY2tMaXN0LmFwcGVuZChibG9jayk7Ci0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChibG9jayk7
Ci0gICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soYmxvY2spOworICAgIHNldElzTGl2ZShp
bmRleCwgdHJ1ZSk7CisgICAgc2V0SXNFbXB0eShpbmRleCwgdHJ1ZSk7CiB9CiAKIHZvaWQgTWFy
a2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIHsK
LSAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gYmxvY2spIHsKLSAgICAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBmaWx0ZXJOZXh0QmxvY2sobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAgICAgIHNl
dEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotICAgIH0KLSAgICBpZiAobV9uZXh0QmxvY2tUb1N3ZWVw
ID09IGJsb2NrKQotICAgICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fbmV4dEJsb2NrVG9Td2Vl
cC0+bmV4dCgpKTsKKyAgICBBU1NFUlQoYmxvY2stPmFsbG9jYXRvcigpID09IHRoaXMpOworICAg
IEFTU0VSVChtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPT0gYmxvY2spOwogCi0gICAgYmxvY2st
PndpbGxSZW1vdmVCbG9jaygpOwotICAgIG1fYmxvY2tMaXN0LnJlbW92ZShibG9jayk7CisgICAg
bV9ibG9ja3NbYmxvY2stPmluZGV4KCldID0gbnVsbHB0cjsKKyAgICBtX2ZyZWVCbG9ja0luZGlj
ZXMuYXBwZW5kKGJsb2NrLT5pbmRleCgpKTsKKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9yKAor
ICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgdmVjdG9y
W2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOworICAgICAgICB9KTsKKyAgICAKKyAgICBibG9jay0+
ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3Rv
cEFsbG9jYXRpbmcoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9
PSBGdWxsQ29sbGVjdGlvbikKLSAgICAgICAgbV9ibG9ja0xpc3QudGFrZUZyb20obV9yZXRpcmVk
QmxvY2tzKTsKLQorICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRo
aXMpLCAiOiBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nIVxuIik7CiAgICAgQVNTRVJU
KCFtX2xhc3RBY3RpdmVCbG9jayk7CiAgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykgewogICAgICAg
ICBBU1NFUlQoIW1fZnJlZUxpc3QpOwpAQCAtMjkyLDI5ICszMjIsMjUgQEAgdm9pZCBNYXJrZWRB
bGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKICAgICBtX2ZyZWVMaXN0ID0gRnJlZUxpc3QoKTsK
IH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3ZvaWQgTWFya2VkQWxsb2NhdG9y
OjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwot
ICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxwdHI7
CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0
KCkpOwogCi0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2Jsb2NrTGlzdC5iZWdpbigpKTsKKyAg
ICBtX2FsbG9jYXRpb25DdXJzb3IgPSAwOworICAgIG1fZW1wdHlDdXJzb3IgPSAwOworICAgIG1f
dW5zd2VwdEN1cnNvciA9IDA7CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxsKCk7CiAKICAgICBp
ZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7Ci0gICAgICAgIE1h
cmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6OkhhbmRs
ZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0g
ICAgICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAg
ICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFu
ZGxlOjpTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAgICAgYmxvY2stPnphcChmcmVlTGlzdCk7
Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICB9CisgICAgICAgIC8vIEZJWE1F
OiBUaGluZ3M/CiAgICAgfQogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRv
RmluYWxpemUoKQogewotICAgIG1fYmxvY2tMaXN0LnRha2VGcm9tKG1fcmV0aXJlZEJsb2Nrcyk7
CiAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKSB7CiAgICAgICAgICAgICBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTMy
Niw0ICszNTIsMTIxIEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzZXRGcmVlTGlzdChjb25zdCAK
ICAgICBtX2ZyZWVMaXN0ID0gZnJlZUxpc3Q7CiB9CiAKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpy
ZXN1bWVBbGxvY2F0aW5nKCkKK3sKKyAgICBpZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFs
bG9jYXRpbmcoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOworICAg
IG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6
OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICAvLyBNYXJrIGJpdHMgYXJl
IHN0aWNreSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFy
IHRoZXNlIGR1cmluZyBmdWxsCisgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZl
ZCB0aGUgbGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxv
bmcKKyAgICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRlbi4KKyAgICBtX21hcmtpbmdOb3RFbXB0
eS5jbGVhckFsbCgpOworICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKK30KKwordm9p
ZCBNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcoKQoreworICAgIG1fYWxsb2NhdGVkLmNsZWFy
QWxsKCk7CisgICAgCisgICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBj
b21wcmVoZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bwor
ICAgIC8vIGtub3cgd2hhdCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdl
IGlzIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCisgICAgLy8gdmVjdG9ycy4K
KyAgICAKKyAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CisgICAgICAgIC8vIElmIGJsb2Nr
cyBuZWVkIGRlc3RydWN0aW9uIHRoZW4gbm90aGluZyBpcyBlbXB0eSEgVGhpcyBpcyBhIGNvcnJl
Y3QgYXNzZXJ0aW9uIGJ1dCBtYXkKKyAgICAgICAgLy8gYmVjb21lIHdyb25nIG9uY2Ugd2UgZ28g
ZnVsbCBjb25jdXJyZW50OiB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBibG9jaywgaXQgd2lsbCBmbGlj
a2VyCisgICAgICAgIC8vIGludG8gdGhlIGVtcHR5IHNldCBmb3IgYSB0aW55IG1vbWVudC4gT24g
dGhlIG90aGVyIGhhbmQsIHRoaXMgY29kZSBpcyBsaWtlbHkgdG8gYmUgcnVuCisgICAgICAgIC8v
IGluIHN0b3BUaGVXb3JsZC4KKyAgICAgICAgQVNTRVJUKG1fZW1wdHkuaXNFbXB0eSgpKTsKKyAg
ICAgICAgbV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ID0gbV9saXZlICYgfm1fbWFya2luZ1JldGly
ZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9lbXB0eSA9IG1fbGl2ZSAm
IH5tX21hcmtpbmdOb3RFbXB0eTsKKyAgICBtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgPSBtX2xp
dmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgIAorICAgIGlm
IChmYWxzZSkgeworICAgICAgICBkYXRhTG9nKCJCaXRzIGZvciAiLCBtX2NlbGxTaXplLCAiLCAi
LCBtX2F0dHJpYnV0ZXMsICIgYWZ0ZXIgZW5kTWFya2luZzpcbiIpOworICAgICAgICBkdW1wQml0
cyhXVEY6OmRhdGFGaWxlKCkpOworICAgIH0KK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNu
YXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3Vuc3dlcHQgfD0gbV9l
ZGVuOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENv
bGxlY3Rpb24oKQoreworICAgIG1fdW5zd2VwdCA9IG1fbGl2ZTsKK30KKworTWFya2VkQmxvY2s6
OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaW5kQmxvY2tUb1N3ZWVwKCkKK3sKKyAgICBtX3Vu
c3dlcHRDdXJzb3IgPSBtX3Vuc3dlcHQuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUpOwor
ICAgIGlmIChtX3Vuc3dlcHRDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV91bnN3ZXB0Q3Vyc29yXTsKK30KKwor
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN3ZWVwKCkKK3sKKyAgICBtX3Vuc3dlcHQuZm9yRWFjaFNl
dEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1fYmxvY2tz
W2luZGV4XS0+c3dlZXAoKTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9y
OjpzaHJpbmsoKQoreworICAgIG1fZW1wdHkuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChz
aXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1fbWFya2VkU3BhY2UtPmZyZWVCbG9jayhtX2Js
b2Nrc1tpbmRleF0pOworICAgICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFz
c2VydE5vVW5zd2VwdCgpCit7CisgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIGlmIChtX3Vuc3dlcHQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgZGF0YUxvZygiQXNzZXJ0aW9uIGZhaWxlZDogdW5zd2VwdCBub3QgZW1wdHkg
aW4gIiwgKnRoaXMsICIuXG4iKTsKKyAgICBkdW1wQml0cygpOworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOiIsIG1fY2VsbFNp
emUsICIvIiwgbV9hdHRyaWJ1dGVzKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmR1bXBC
aXRzKFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgdW5zaWduZWQgbWF4TmFtZUxlbmd0aCA9IDA7
CisgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0
b3ImLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBz
dHJsZW4obmFtZSk7CisgICAgICAgICAgICBtYXhOYW1lTGVuZ3RoID0gc3RkOjptYXgobWF4TmFt
ZUxlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgZm9yRWFjaEJpdFZlY3Rv
cldpdGhOYW1lKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvciwgY29uc3QgY2hh
ciogbmFtZSkgeworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgIiwgbmFtZSwgIjogIik7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXhOYW1lTGVuZ3RoIC0gc3RybGVuKG5hbWUp
OyBpLS07KQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIpOworICAgICAgICAgICAgb3V0
LnByaW50KHZlY3RvciwgIlxuIik7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAi
QWxsb2NhdG9yQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5jbHVkZSAi
TWFya2VkQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC0zNyw2ICszOSwxNDkgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIE1h
cmtlZFNwYWNlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisjZGVmaW5lIEZPUl9F
QUNIX01BUktFRF9BTExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2ZSkg
LyogVGhlIHNldCBvZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wK
KyAgICBtYWNybyhlbXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhh
dmUgbm8gbGl2ZSBvYmplY3RzIGFuZCBub3RoaW5nIHRvIGRlc3Ryb3kuICovIFwKKyAgICBtYWNy
byhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGxibG9ja3MgdGhhdCBhcmUg
ZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90RW1w
dHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBhcmUg
bmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtlZEJs
b2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBUaGUg
c2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0IEdD
LiAqL1wKKyAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9j
a3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9cCisg
ICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCisgICAg
bWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxs
IGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyhtYXJraW5nUmV0aXJl
ZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSByZXRp
cmVkLiAqLworCisvLyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGFu
ZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6CisvLworLy8gICAgIGNhbkFsbG9jYXRlQnV0Tm90RW1w
dHkgJiBlbXB0eSA9PSAwCisvLworLy8gSW5zdGVhZCBvZiBjYWxsaW5nIGl0IGNhbkFsbG9jYXRl
IGFuZCBtYWtpbmcgaXQgaW5jbHVzaXZlOgorLy8KKy8vICAgICBjYW5BbGxvY2F0ZSAmIGVtcHR5
ID09IGVtcHR5CisvLworLy8gVGhlIGxhdHRlciBpcyBwcm9iYWJseSBiZXR0ZXIuIEknbGwgbGVh
dmUgaXQgdG8gYSBmdXR1cmUgYnVnIHRvIGZpeCB0aGF0LCBzaW5jZSBicmVhdGhpbmcgb24KKy8v
IHRoaXMgY29kZSBsZWFkcyB0byByZWdyZXNzaW9ucyBmb3IgZGF5cywgYW5kIGl0J3Mgbm90IGNs
ZWFyIHRoYXQgbWFraW5nIHRoaXMgY2hhbmdlIHdvdWxkCisvLyBpbXByb3ZlIHBlcmYgc2luY2Ug
aXQgd291bGQgbm90IGNoYW5nZSB0aGUgY29sbGVjdG9yJ3MgYmVoYXZpb3IsIGFuZCBlaXRoZXIg
d2F5IHRoZSBhbGxvY2F0b3IKKy8vIGhhcyB0byBsb29rIGF0IGJvdGggYml0dmVjdG9ycy4KKy8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMjEKKworLy8gTm90
ZSB0aGF0IHRoaXMgY29sbGVjdG9yIHN1cHBvcnRzIG92ZXJsYXBwaW5nIGFsbG9jYXRvciBzdGF0
ZSB3aXRoIG1hcmtpbmcgc3RhdGUsIHNpbmNlIGluIGEKKy8vIGNvbmN1cnJlbnQgY29sbGVjdG9y
IHlvdSBhbGxvdyBhbGxvY2F0aW9uIHdoaWxlIG1hcmtpbmcgaXMgcnVubmluZy4gU28gaXQncyBi
ZXN0IHRvIHZpc3VhbGl6ZSBhCisvLyBmdWxsIG11dGFibGUtPmVkZW4gY29sbGVjdC0+bXV0YXRl
LT5mdWxsIGNvbGxlY3QgY3ljbGUgYW5kIHNlZSBob3cgdGhlIGJpdHMgYWJvdmUgZ2V0IGFmZmVj
dGVkLgorLy8gVGhlIGV4YW1wbGUgYmVsb3cgdHJpZXMgdG8gYmUgZXhoYXVzdGl2ZSBhYm91dCB3
aGF0IGhhcHBlbnMgdG8gdGhlIGJpdHMsIGJ1dCBvbWl0cyBhIGxvdCBvZgorLy8gdGhpbmdzIHRo
YXQgaGFwcGVuIHRvIG90aGVyIHN0YXRlLgorLy8KKy8vIENyZWF0ZSBhbGxvY2F0b3IKKy8vIC0g
YWxsIGJpdHMgYXJlIGVtcHR5CisvLyBTdGFydCBhbGxvY2F0aW5nIGluIHNvbWUgYmxvY2sKKy8v
IC0gYWxsb2NhdGUgdGhlIGJsb2NrIGFuZCBzZXQgdGhlIGxpdmUgYml0LgorLy8gLSB0aGUgZW1w
dHkgYml0IGZvciB0aGUgYmxvY2sgZmxpY2tlcnMgb24gYW5kIHRoZW4gZ2V0cyBpbW1lZGlhdGVs
eSBjbGVhcmVkIGJ5IHN3ZWVwaW5nLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNo
IGFsbG9jYXRpbmcgaW4gdGhhdCBibG9jaworLy8gLSBzZXQgdGhlIGFsbG9jYXRlZCBiaXQuCisv
LyBEbyB0aGF0IHRvIGEgbG90IG9mIGJsb2NrcyBhbmQgdGhlbiBzdGFydCBhbiBlZGVuIGNvbGxl
Y3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygpIGhhcyBub3RoaW5nIHRvIGRvLgorLy8gLSBieSBk
ZWZhdWx0IHdlIGhhdmUgY2xlYXIgbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIGJpdHMu
CisvLyAtIG1hcmtpbmcgYnVpbGRzIHVwIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJlZCBi
aXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0
cy4KKy8vIC0gZm9yIGRlc3RydWN0b3IgYmxvY2tzOiBmcmFnbWVudGVkID0gbGl2ZSAmIH5tYXJr
aW5nUmV0aXJlZAorLy8gLSBmb3Igbm9uLWRlc3RydWN0b3IgYmxvY2tzOgorLy8gICAgICAgZW1w
dHkgPSBsaXZlICYgfm1hcmtpbmdOb3RFbXB0eQorLy8gICAgICAgZnJhZ21lbnRlZCA9IGxpdmUg
JiBtYXJraW5nTm90RW1wdHkgJiB+bWFya2luZ1JldGlyZWQKKy8vIFNuYXBzaG90dGluZy4KKy8v
IC0gdW5zd2VwdCB8PSBlZGVuCisvLyBQcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVh
ciBlZGVuCisvLyBGaW5pc2ggY29sbGVjdGlvbi4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sg
dGhhdCBoYWQgc29tZSBmcmVlIGFuZCBzb21lIGxpdmUgb2JqZWN0cy4KKy8vIC0gY2xlYXIgdGhl
IGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgYml0CisvLyAtIGNsZWFyIHRoZSB1bnN3ZXB0IGJpdAor
Ly8gLSBzZXQgdGhlIGVkZW4gYml0CisvLyBGaW5pc2ggYWxsb2NhdGluZyAoc2V0IHRoZSBhbGxv
Y2F0ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3YXMgY29tcGxldGVs
eSBlbXB0eS4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8gLSBjbGVhciB0aGUgdW5zd2Vw
dCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQg
dGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9jayB0aGF0IHdhcyBj
b21wbGV0ZWx5IGVtcHR5IGluIGFub3RoZXIgYWxsb2NhdG9yLgorLy8gLSBjbGVhciB0aGUgZW1w
dHkgYml0CisvLyAtIGNsZWFyIGFsbCBiaXRzIGluIHRoYXQgYWxsb2NhdG9yCisvLyAtIHNldCB0
aGUgbGl2ZSBiaXQgaW4gYW5vdGhlciBhbGxvY2F0b3IgYW5kIHRoZSBlbXB0eSBiaXQuCisvLyAt
IGNsZWFyIHRoZSBlbXB0eSwgdW5zd2VwdCBiaXRzLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0Lgor
Ly8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBTdGFydCBh
IGZ1bGwgY29sbGVjdGlvbi4KKy8vIC0gYmVnaW5NYXJraW5nKCkgY2xlYXJzIG1hcmtpbmdOb3RF
bXB0eSwgbWFya2luZ1JldGlyZWQKKy8vIC0gdGhlIGhlYXAgdmVyc2lvbiBpcyBpbmNyZW1lbnRl
ZAorLy8gLSBtYXJraW5nIHJlYnVpbGRzIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5ncmV0aXJlZCBi
aXRzLgorLy8gV2UgZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0
cy4KKy8vIC0gc2V0IGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkvZW1wdHkgdGhlIHNhbWUgd2F5IGFz
IGluIGVkZW4gY29sbGVjdGlvbi4KKy8vIFNuYXBzaG90dGluZy4KKy8vIC0gdW5zd2VwdCA9IGxp
dmUKKy8vIHByZXBhcmUgZm9yIGFsbG9jYXRpb24uCisvLyAtIGNsZWFyIGVkZW4uCisvLyBGaW5p
c2ggY29sbGVjdGlvbi4KKy8vCisvLyBOb3RpY2UgaG93IGluIHRoaXMgc2NoZW1lLCB0aGUgZW1w
dHkvY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBzdGF0ZSBzdGF5cyBzZXBhcmF0ZSBmcm9tIHRoZQor
Ly8gbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIHN0YXRlLiBUaGlzIGlzIG9uZSBzdGVw
IHRvd2FyZHMgaGF2aW5nIHNlcGFyYXRlZCBhbGxvY2F0aW9uIGFuZAorLy8gbWFya2luZyBzdGF0
ZS4KKy8vCisvLyBBZnRlciB0aGlzLCB3ZSBqdXN0IG5lZWQgdG8gYW5zd2VyIHRoZSBxdWVzdGlv
bjogd2hhdCBkb2VzIGFuIG9iamVjdCBhbGxvY2F0ZWQgZHVyaW5nIGVkZW4gR0MKKy8vIGxvb2sg
bGlrZSB0byB0aGUgR0M/CisvLworLy8gSSd2ZSBjb21lIHVwIHdpdGggdHdvIGNvbXBlbGxpbmcg
YW5zd2Vycy4KKy8vCisvLyAxLiBBTExPQ0FURSBCTEFDSworLy8KKy8vIEkgdGhpbmsgdGhhdCB0
aGUgZWFzaWVzdCBhbnN3ZXIgaXMgdG8gYWxsb2NhdGUgdGhlIG9iamVjdCB3aGl0ZSBhbmQgdGhl
bgorLy8gaW1tZWRpYXRlbHkgbWFyayBpdC4gVGhpcyBtYWtlcyB0aGUgb2JqZWN0IGJlaGF2ZSBh
cyBpZiBpdCB3YXMgYWxsb2NhdGVkIGp1c3QgYmVmb3JlIHRoZSBzdGFydAorLy8gb2YgR0MgYW5k
IGl0IHdhcyBvbiB0aGUgc3RhY2sgYXQgdGhlIGJlZ2lubmluZyBvZiBHQy4gV2Ugd291bGRuJ3Qg
aGF2ZSB0byBkbyBhbnl0aGluZyBkaWZmZXJlbnQKKy8vIHdpdGggdGhlIHZhcmlvdXMgYmxvY2sg
Yml0cyB3aGVuIGFsbG9jYXRpbmcgZHVyaW5nIEdDOiB3ZSBjb3VsZCBzdGlsbCBzZXQgZWRlbiBh
bmQgYWxsb2NhdGVkCisvLyBzaW5jZSB0aGV5IHdpbGwgYmUgY2xlYXJlZCBhbnl3YXkuCisvLwor
Ly8gQnV0IHRoaXMgbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdvbid0IGJlIGVsaWdpYmxlIGZvciBm
cmVlaW5nIHVudGlsIHRoZSBuZXh0IGZ1bGwgR0MuIElkZWFsbHkKKy8vIHdlJ2QgbWFrZSB0aGUg
b2JqZWN0IGlzIGVsaWdpYmxlIGZvciBmcmVlaW5nIGF0IHRoZSBuZXh0IGVkZW4gR0MuIFRoZXJl
J3MgYSBidW5jaCBvZiB0aGluZ3Mgd2UKKy8vIGNvdWxkIGRvIHRvIG1ha2UgdGhpcyBoYXBwZW4u
IEhlcmUgYXJlIHNvbWUgaWRlYXM6CisvLworLy8gLSBJbnRyb2R1Y2UgYSBuZXcgQ2VsbFN0YXRl
LCBjYWxsZWQgRmxvYXQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG9iamVjdCB3YXMgYWxsb2NhdGVk
IGR1cmluZyB0aGUKKy8vICAgR0MuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IG1hcmtpbmcgZG9l
cyBub3RoaW5nIGZvciBGbG9hdHMuIFRoaXMgd291bGQgbWFrZSBtYXJraW5nIGEgdGlueQorLy8g
ICBiaXQgbW9yZSBleHBlbnNpdmUuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBiYXJyaWVy
IHJlY29nbml6ZXMgc3RvcmVzIHRvIGEgRmxvYXQgdGhlIHNhbWUKKy8vICAgd2F5IHRoYXQgaXQg
c2VlcyBhIHN0b3JlIHRvIE9sZEJsYWNrOiBpdCBwdXRzIHRoZSBvYmplY3Qgb24gdGhlIG1hcmsg
c3RhY2suIEZsb2F0cyB3b3VsZCBiZQorLy8gICBwdXQgb24gdGhlIG1hcmsgc3RhY2sgYXMgRmxv
YXRHcmV5IHRvIGluZGljYXRlIHRoYXQgdGhleSB3aWxsIGJlIHNjYW5uZWQgYnkgdGhlIEdDIGJ1
dCB0aGF0CisvLyAgIHRoZXkgYXJlbid0IGFjdHVhbGx5IG1hcmtlZC4KKy8vCisvLyAgIE5vdGUg
dGhhdCB0aGlzIGltcGxpZXMgaGF2aW5nIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhvc2UgY2Vs
bHMgZnJvbSBGbG9hdCB0byBzb21ldGhpbmcgZWxzZQorLy8gICBhdCB0aGUgZW5kIG9mIEdDLiAg
SSdtIG5vdCBzdXJlIHRoYXQgdGhpcyBpcyBzbyBncmVhdC4KKy8vCisvLyAtIE1hcmsgdGhlIG9i
amVjdHMgYWZ0ZXIgYWxsb2NhdGlvbiwgYnV0IGFsc28gc2V0IHNvbWUgb3RoZXIgYml0cyB0byBp
bmRpY2F0ZSB0aGF0IHRoZSB0aG9zZQorLy8gICBvYmplY3RzIHNob3VsZCBiZSB1bm1hcmtlZCBh
dCB0aGUgZW5kIG9mIHRoZSBHQy4KKy8vCisvLyBFaXRoZXIgb2YgdGhlc2UgYXBwcm9hY2hlcyB3
b3VsZCBtYWtlIGNvbGxlY3Rpb25zIG1vcmUgZXhwZW5zaXZlLCBidXQgaXQgZmVlbHMgbGlrZSB0
aGUgbGF0dGVyCisvLyBhcHByb2FjaCB3b3VsZCBiZSBhIHByb2ZpdGFibGUgb3B0aW1pemF0aW9u
LiBJJ20gYWxzbyByZWFsbHkgZ2V0dGluZyB3b3JyaWVkIGFib3V0IGhvdyB0aGlzIEdDCisvLyBl
eHBlcmllbmNlcyBiYWNrd2FyZHMgdGltZSB0cmF2ZWwsIHdpdGggYWxsIHRoZSByZW1hcmtpbmcg
b2YgdGhpbmdzIGxpa2UgbmV3IG9iamVjdHMgYW5kCisvLyB3aGF0bm90LgorLy8KKy8vIDIuIEFM
TE9DQVRFIFdISVRFCisvLworLy8gSSBkb24ndCBrbm93IGlmIHRoaXMgaXMgc291bmQsIGJ1dCBp
ZiBpdCB3YXMgdGhlbiBpdCB3b3VsZCBiZSB0aGUgb3B0aW1hbCBzb2x1dGlvbi4gQWxsb2NhdGlv
bgorLy8gd291bGQgd29yayBhcyBub3cgYW5kIGNvbnNlcXVlbnRseSwgZXZlcnl0aGluZyB3ZSBr
bm93IGFib3V0IHdoYXQgd2FzIGFsbG9jYXRlZCBkdXJpbmcgYSBHQyBpcworLy8gZm9yZ290dGVu
IGF0IHRoZSBlbmQgb2YgR0MuIEJ1dCB0aGF0J3MgZmluZS4gRW5kIG9mIEdDIG11c3QgcmVzY2Fu
IGFueSBoZWFwIGxvY2F0aW9ucyB0aGF0IGdvdAorLy8gc3RvcmVkIGludG8gYW5kIGl0IG11c3Qg
cmVzY2FuIHRoZSBzdGFjay4gU28sIHdoaXRlIG9iamVjdHMgYWxsb2NhdGVkIGR1cmluZyBHQyB3
b3VsZCBnZXQKKy8vIG1hcmtlZCBpZiB0aGV5IHNvbWVob3cgc3Vydml2ZWQuCisvLworLy8gVGhp
cyBtZWFucyB0aGF0IGZvciBleGFtcGxlIGlmIHRoZXJlIGlzIGEgZmllbGQgdGhhdCBvZnRlbiBn
ZXRzIHN0b3JlZCB0byB3aXRoIG5ldyBvYmplY3RzLCB0aGUKKy8vIEdDIHdpbGwgbm90IHNlZSBh
bGwgb2YgdGhlIHZhbHVlcyBpbiB0aGF0IGZpZWxkIGJ1dCBpbnN0ZWFkIGl0IHdvdWxkIHBvbGwg
dGhhdCBmaWVsZCwgaG9wZWZ1bGx5CisvLyBzb21ld2hhdCByYXJlbHkuIFdlIGNhbiBtYWtlIGl0
IHZlcnkgcmFyZSBieSBvbmx5IGluZnJlcXVlbnRseSBkb25hdGluZyBmcm9tIHRoZSBtYWluIHRo
cmVhZCdzCisvLyBzbG90IHZpc2l0b3IgdG8gYW55IG9mIHRoZSBvdGhlcnMuIFNvLCB3ZSB3b3Vs
ZCBvbmx5IG1hcmsgc29tZSBvZiB0aGUgbmV3IG9iamVjdHMgdGhhdCBnb3QKKy8vIHN0b3JlZCBp
bnRvIHRoYXQgZmllbGQuIEl0IGFsc28gbWVhbnMgdGhhdCBhbnkgb2JqZWN0IGFsbG9jYXRlZCBk
dXJpbmcgdGhlIEdDIHRoYXQgZGlkbid0IGdldAorLy8gc3RvcmVkIGludG8gYW55IG9iamVjdCB0
aGF0IHdhcyBsaXZlIHNpbmNlIGJlZm9yZSB0aGUgc3RhcnQgb2YgR0Mgd291bGQgc2ltcGx5IGRp
c2FwcGVhci4gVGhpcworLy8gbWVhbnMgbXVjaCBsZXNzIHJlc2Nhbm5pbmcgdGhhbiBhbnkgb2Yg
dGhlIG90aGVyIHByb3Bvc2Fscy4KKy8vCisvLyBJIHJlYWxseSB3YW50IHRvIGdvIHdpdGggdGhl
IGFsbG9jYXRlLXdoaXRlIGFwcHJvYWNoLCBidXQgSSBuZWVkIHRvIHRoaW5rIG1vcmUgZGVlcGx5
IGFib3V0IGl0CisvLyBiZWZvcmUgSSBjb21taXQgdG8gaXQuCisKIGNsYXNzIE1hcmtlZEFsbG9j
YXRvciB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApAQCAtNDYs
OSArMTkxLDE2IEBAIHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvcihIZWFwKiwgTWFya2Vk
U3BhY2UqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKICAg
ICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7Ci0gICAgdm9pZCByZXNldCgpOworICAgIHZv
aWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKCk7CiAg
ICAgdm9pZCByZXN1bWVBbGxvY2F0aW5nKCk7CisgICAgdm9pZCBiZWdpbk1hcmtpbmdGb3JGdWxs
Q29sbGVjdGlvbigpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNob3RV
bnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICB2b2lkIHNuYXBzaG90VW5zd2VwdEZvckZ1
bGxDb2xsZWN0aW9uKCk7CisgICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc2hyaW5rKCk7Cisg
ICAgdm9pZCBhc3NlcnROb1Vuc3dlcHQoKTsKICAgICBzaXplX3QgY2VsbFNpemUoKSBjb25zdCB7
IHJldHVybiBtX2NlbGxTaXplOyB9CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0
cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgIGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBO
ZWVkc0Rlc3RydWN0aW9uOyB9CkBAIC03Miw2ICsyMjQsNDYgQEAgcHVibGljOgogICAgIGJvb2wg
aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYmxv
Y2tTaXplRm9yQnl0ZXMoc2l6ZV90KTsKKyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9C
SVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAgICBcCisgICAgYm9v
bCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fICMj
IGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUo
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0YWxC
aXROYW1lKGJsb2NrLT5pbmRleCgpKTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0
TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4
XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzICMjIGNhcGl0YWxCaXROYW1l
KGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJ
cyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1f
ICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhpbmRleCwgdmFsdWUpOyB9IFwKKyAg
ICBib29sIGF0b21pY1NldEFuZENoZWNrSXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5h
dG9taWNTZXRBbmRDaGVjayhibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgRk9SX0VBQ0hf
TUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKQorI3Vu
ZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAg
ICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwg
Y2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAg
ICAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9D
QUxMQkFDSyk7CisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9Cisg
ICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0
b3JXaXRoTmFtZShjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNkZWZpbmUgTUFSS0VEX0FMTE9D
QVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAg
ICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSwgI2NhcGl0YWxCaXROYW1lKTsKKyAgICAgICAgRk9S
X0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sp
OworI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAorICAg
IE1hcmtlZEFsbG9jYXRvciogbmV4dEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEFs
bG9jYXRvcjsgfQorICAgIAorICAgIC8vIE1hcmtlZFNwYWNlIGNhbGxzIHRoaXMgZHVyaW5nIGlu
aXQuCisgICAgdm9pZCBzZXROZXh0QWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
KSB7IG1fbmV4dEFsbG9jYXRvciA9IGFsbG9jYXRvcjsgfQorICAgIAorICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGZpbmRFbXB0eUJsb2NrKCk7CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogZmluZEJsb2NrVG9Td2VlcCgpOworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OworICAgIHZvaWQgZHVtcEJpdHMoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgp
KTsKICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CkBAIC03OSwy
OCArMjcxLDQwIEBAIHByaXZhdGU6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2Nh
dGVTbG93Q2FzZSgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIHRyeUFsbG9jYXRlU2xv
d0Nhc2UoKTsKICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlSW1wbChib29sIGNyYXNoT25GYWls
dXJlKTsKKyAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdCgpOwogICAgIHZvaWQqIHRyeUFsbG9j
YXRlV2l0aG91dENvbGxlY3RpbmcoKTsKLSAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xs
ZWN0aW5nSW1wbCgpOwogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxvY2so
KTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2
b2lkKiBhbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZCgpOwotICAgIHZvaWQgcmV0aXJlKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKTsKICAgICAKICAgICB2b2lkIHNldEZyZWVMaXN0KGNvbnN0IEZyZWVM
aXN0Jik7CiAgICAgCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmlsdGVyTmV4dEJsb2NrKE1h
cmtlZEJsb2NrOjpIYW5kbGUqKTsKLSAgICB2b2lkIHNldE5leHRCbG9ja1RvU3dlZXAoTWFya2Vk
QmxvY2s6OkhhbmRsZSopOwotICAgIAogICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7CisgICAgCisg
ICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8dW5z
aWduZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsKKyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRP
Ul9CSVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgIEZh
c3RCaXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1lOworICAgIEZPUl9FQUNIX01BUktFRF9BTExP
Q0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKQorI3VuZGVmIE1BUktF
RF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OCisgICAgCisgICAgLy8gQWZ0ZXIgeW91IGRvIHNv
bWV0aGluZyB0byBhIGJsb2NrIGJhc2VkIG9uIG9uZSBvZiB0aGVzZSBjdXJzb3JzLCB5b3UgY2xl
YXIgdGhlIGJpdCBpbiB0aGUKKyAgICAvLyBjb3JyZXNwb25kaW5nIGJpdHZlY3RvciBhbmQgbGVh
dmUgdGhlIGN1cnNvciB3aGVyZSBpdCB3YXMuCisgICAgc2l6ZV90IG1fYWxsb2NhdGlvbkN1cnNv
ciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUg
Zm9yIGFsbG9jYXRpb24uCisgICAgc2l6ZV90IG1fZW1wdHlDdXJzb3IgeyAwIH07IC8vIFBvaW50
cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBlbXB0eSBhbGxvY2F0
aW9uIChhbGxvY2F0aW5nIGluIGVtcHR5IGJsb2NrcykuCisgICAgc2l6ZV90IG1fdW5zd2VwdEN1
cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRh
dGUgZm9yIGluY3JlbWVudGFsIHN3ZWVwaW5nLgorICAgIAogICAgIE1hcmtlZEJsb2NrOjpIYW5k
bGUqIG1fY3VycmVudEJsb2NrOwogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fbGFzdEFjdGl2
ZUJsb2NrOwotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fbmV4dEJsb2NrVG9Td2VlcDsKLSAg
ICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSwgQmFzaWNSYXdTZW50aW5l
bE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fYmxvY2tMaXN0OwotICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRC
bG9jazo6SGFuZGxlPj4gbV9yZXRpcmVkQmxvY2tzOworCiAgICAgTG9jayBtX2xvY2s7CiAgICAg
dW5zaWduZWQgbV9jZWxsU2l6ZTsKICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIG1fYXR0cmlidXRl
czsKICAgICBIZWFwKiBtX2hlYXA7CiAgICAgTWFya2VkU3BhY2UqIG1fbWFya2VkU3BhY2U7Cisg
ICAgTWFya2VkQWxsb2NhdG9yKiBtX25leHRBbGxvY2F0b3I7CiB9OwogCiBpbmxpbmUgcHRyZGlm
Zl90IE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdCgpCkBAIC0xNDksMjAgKzM1Mywx
MiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsCiAgICAgcmV0dXJu
IGhlYWQ7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGlu
ZygpCi17Ci0gICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5yZXN1bWVBbGxvY2F0aW5nKCk7Ci0g
ICAgbV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBtX2xhc3RBY3RpdmVC
bG9jayA9IDA7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBN
YXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewot
ICAgIG1fYmxvY2tMaXN0LmZvckVhY2goZnVuY3Rvcik7Ci0gICAgbV9yZXRpcmVkQmxvY2tzLmZv
ckVhY2goZnVuY3Rvcik7CisgICAgbV9saXZlLmZvckVhY2hTZXRCaXQoCisgICAgICAgIFsmXSAo
c2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7Cisg
ICAgICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJs
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTM2LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9vbCBj
b21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGljIHNpemVfdCBiYWxhbmNlOwogCi1NYXJrZWRC
bG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIE1hcmtlZEFs
bG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMpCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5
Q3JlYXRlKEhlYXAmIGhlYXApCiB7CiAgICAgaWYgKGNvbXB1dGVCYWxhbmNlKSB7CiAgICAgICAg
IGJhbGFuY2UrKzsKQEAgLTQ4LDI2ICs0OSwxNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJr
ZWRCbG9jazo6dHJ5Q3JlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChzY3JpYmJs
ZUZyZWVDZWxscygpKQogICAgICAgICBzY3JpYmJsZShibG9ja1NwYWNlLCBibG9ja1NpemUpOwot
ICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGFsbG9jYXRvciwgY2VsbFNpemUsIGF0dHJpYnV0
ZXMsIGJsb2NrU3BhY2UpOworICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGJsb2NrU3BhY2Up
OwogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgTWFya2VkQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmli
dXRlcyYgYXR0cmlidXRlcywgdm9pZCogYmxvY2tTcGFjZSkKLSAgICA6IG1fYXRvbXNQZXJDZWxs
KChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZSkKLSAgICAsIG1fZW5kQXRvbShh
dG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxKQotICAgICwgbV9hdHRyaWJ1dGVzKGF0
dHJpYnV0ZXMpCi0gICAgLCBtX3N0YXRlKE5ldykgLy8gQWxsIGNlbGxzIHN0YXJ0IG91dCB1bm1h
cmtlZC4KLSAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKLSAgICAsIG1fd2Vha1NldChhbGxv
Y2F0b3ItPmhlYXAoKS0+dm0oKSwgQ2VsbENvbnRhaW5lcigpKQorTWFya2VkQmxvY2s6OkhhbmRs
ZTo6SGFuZGxlKEhlYXAmIGhlYXAsIHZvaWQqIGJsb2NrU3BhY2UpCisgICAgOiBtX3dlYWtTZXQo
aGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkpCiB7CiAgICAgbV9ibG9jayA9IG5ldyAoTm90TnVs
bCwgYmxvY2tTcGFjZSkgTWFya2VkQmxvY2soKmhlYXAudm0oKSwgKnRoaXMpOwogICAgIAogICAg
IG1fd2Vha1NldC5zZXRDb250YWluZXIoKm1fYmxvY2spOwogICAgIAogICAgIGhlYXAuZGlkQWxs
b2NhdGVCbG9jayhibG9ja1NpemUpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJ
T04odGhpcyk7Ci0gICAgQVNTRVJUKGFsbG9jYXRvcik7Ci0gICAgaWYgKG1fYXR0cmlidXRlcy5j
ZWxsS2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0
dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CiB9CiAKIE1h
cmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUoKQpAQCAtNzgsNDUgKzcwLDM1IEBAIE1hcmtlZEJs
b2NrOjpIYW5kbGU6On5IYW5kbGUoKQogICAgICAgICBpZiAoIShiYWxhbmNlICUgMTApKQogICAg
ICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFsYW5jZTogIiwgYmFsYW5jZSwgIlxuIik7
CiAgICAgfQorICAgIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKICAgICBtX2Jsb2NrLT5+TWFya2Vk
QmxvY2soKTsKICAgICBmYXN0QWxpZ25lZEZyZWUobV9ibG9jayk7CiAgICAgaGVhcC5kaWRGcmVl
QmxvY2soYmxvY2tTaXplKTsKIH0KIAogTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKFZNJiB2bSwg
SGFuZGxlJiBoYW5kbGUpCi0gICAgOiBtX25lZWRzRGVzdHJ1Y3Rpb24oaGFuZGxlLm5lZWRzRGVz
dHJ1Y3Rpb24oKSkKLSAgICAsIG1fdmVyc2lvbih2bS5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lv
bigpKQorICAgIDogbV92ZXJzaW9uKE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbikKICAgICAsIG1f
aGFuZGxlKGhhbmRsZSkKICAgICAsIG1fdm0oJnZtKQogewotICAgIHVuc2lnbmVkIGNlbGxzUGVy
QmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gaGFuZGxlLmNlbGxTaXplKCk7Ci0g
ICAgZG91YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6
YXRpb24oKSAqIGNlbGxzUGVyQmxvY2spOwotICAgIAotICAgIC8vIFRoZSBtYXJrIGNvdW50IGJp
YXMgc2hvdWxkIGJlIGNvbWZvcnRhYmx5IHdpdGhpbiB0aGlzIHJhbmdlLgotICAgIFJFTEVBU0Vf
QVNTRVJUKG1hcmtDb3VudEJpYXMgPiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MTZfdD46Om1pbigpKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50Qmlh
cyA8IDApOwotICAgIAotICAgIG1fbWFya0NvdW50QmlhcyA9IHN0YXRpY19jYXN0PGludDE2X3Q+
KG1hcmtDb3VudEJpYXMpOwotICAgIAotICAgIG1fYmlhc2VkTWFya0NvdW50ID0gbV9tYXJrQ291
bnRCaWFzOyAvLyBUaGlzIG1lYW5zIHdlIGhhdmVuJ3QgbWFya2VkIGFueXRoaW5nIHlldC4KIH0K
IAotdGVtcGxhdGU8TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSwgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0
aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwg
TWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9k
ZT4KK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBk
ZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJs
ZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9j
YXRlZE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkZsaXBNb2RlIGZsaXBNb2RlPgogRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcCgpCiB7Ci0gICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIEFTU0VSVChibG9ja1N0
YXRlID09IE5ldyB8fCBibG9ja1N0YXRlID09IE1hcmtlZCk7Ci0gICAgQVNTRVJUKCEoZGVzdHJ1
Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2RlID09IFN3ZWVw
T25seSkpOworICAgIFJFTEVBU0VfQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSkpOwogICAgIAotICAgIGFz
c2VydEZsaXBwZWQoKTsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CisKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOwogICAgIAot
ICAgIGJvb2wgaXNOZXdCbG9jayA9IGJsb2NrU3RhdGUgPT0gTmV3OwotICAgIGJvb2wgaXNFbXB0
eUJsb2NrID0gIWJsb2NrLmhhc0FueU1hcmtlZCgpCi0gICAgICAgICYmIG5ld2x5QWxsb2NhdGVk
TW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkCi0gICAgICAgICYmIGRlc3RydWN0aW9u
TW9kZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uOwotICAgIGlmIChPcHRpb25zOjp1c2VCdW1w
QWxsb2NhdG9yKCkgJiYgKGlzTmV3QmxvY2sgfHwgaXNFbXB0eUJsb2NrKSkgewotICAgICAgICBB
U1NFUlQoYmxvY2subV9tYXJrcy5pc0VtcHR5KCkpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAg
ZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFs
aXplZFN3ZWVwIVxuIik7CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3Io
KQorICAgICAgICAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0eQorICAgICAgICAmJiBuZXdseUFsbG9j
YXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCkgeworICAgICAgICBBU1NFUlQo
ZmxpcE1vZGUgPT0gTmVlZHNGbGlwKTsKICAgICAgICAgCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZM
YXN0Q2VsbCA9IHN0YXRpY19jYXN0PGNoYXIqPihjZWxsQWxpZ24oYmxvY2suYXRvbXMoKSArIG1f
ZW5kQXRvbSAtIDEpKTsKICAgICAgICAgY2hhciogcGF5bG9hZEVuZCA9IHN0YXJ0T2ZMYXN0Q2Vs
bCArIGNlbGxTaXplKCk7CkBAIC0xMjQsNyArMTA2LDEwIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgY2hhciogcGF5bG9hZEJlZ2luID0gYml0d2lz
ZV9jYXN0PGNoYXIqPihibG9jay5hdG9tcygpICsgZmlyc3RBdG9tKCkpOwogICAgICAgICBpZiAo
c2NyaWJibGVNb2RlID09IFNjcmliYmxlKQogICAgICAgICAgICAgc2NyaWJibGUocGF5bG9hZEJl
Z2luLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsKLSAgICAgICAgbV9zdGF0ZSA9ICgoc3dl
ZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICAg
ICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgICAgICBzZXRJc0Zy
ZWVMaXN0ZWQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hbGxvY2F0b3ItPnNldElz
RW1wdHkodGhpcywgdHJ1ZSk7CiAgICAgICAgIEZyZWVMaXN0IHJlc3VsdCA9IEZyZWVMaXN0Ojpi
dW1wKHBheWxvYWRFbmQsIHBheWxvYWRFbmQgLSBwYXlsb2FkQmVnaW4pOwogICAgICAgICBpZiAo
ZmFsc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJRdWlja2x5IHN3ZXB0IGJsb2NrICIsIFJhd1Bv
aW50ZXIodGhpcyksICIgd2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0cmli
dXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xMzcsMTQgKzEy
MiwxNCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgRnJl
ZUNlbGwqIGhlYWQgPSAwOwogICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0g
ICAgICAgIGlmIChibG9ja1N0YXRlID09IE1hcmtlZAotICAgICAgICAgICAgJiYgKGJsb2NrLm1f
bWFya3MuZ2V0KGkpCisgICAgICAgIGlmIChlbXB0eU1vZGUgPT0gTm90RW1wdHkKKyAgICAgICAg
ICAgICYmICgoZmxpcE1vZGUgPT0gRG9lc05vdE5lZWRGbGlwICYmIGJsb2NrLm1fbWFya3MuZ2V0
KGkpKQogICAgICAgICAgICAgICAgIHx8IChuZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlB
bGxvY2F0ZWQgJiYgbV9uZXdseUFsbG9jYXRlZC0+Z2V0KGkpKSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKLQorICAgICAgICAKICAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9j
YXN0X3B0cjxIZWFwQ2VsbCo+KCZibG9jay5hdG9tcygpW2ldKTsKIAotICAgICAgICBpZiAoZGVz
dHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVzdHJ1Y3Rpb24gJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCisg
ICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNEZXN0cnVjdGlvbiAmJiBlbXB0eU1v
ZGUgPT0gTm90RW1wdHkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKS0+
Y2FsbERlc3RydWN0b3IoKnZtKCkpOwogCiAgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBU
b0ZyZWVMaXN0KSB7CkBAIC0xNjMsNyArMTQ4LDE5IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgbV9uZXdseUFsbG9jYXRlZCA9IG51bGxwdHI7CiAK
ICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6bGlzdChoZWFkLCBjb3VudCAqIGNlbGxT
aXplKCkpOwotICAgIG1fc3RhdGUgPSAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCA/IEZy
ZWVMaXN0ZWQgOiBNYXJrZWQpOworICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0
KQorICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5zaWdu
ZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBjZWxsU2l6ZSgp
OworICAgICAgICBpZiAoY291bnQgPT0gY2VsbHNQZXJCbG9jaykgeworICAgICAgICAgICAgLy8g
T2RkbHksIHRoaXMgbWF5IHNldCBlbXB0eSBvbiBhIGJsb2NrIHRoYXQgYWxzbyBoYXMgbV9jYW5B
bGxvY2F0ZUJ1dE5vdEVtcHR5IHNldC4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9uZSBj
b3JuZXIgY2FzZSB3aGVyZSBib3RoIGJpdHMgbWF5IGJlIHNldCBhdCB0aGUgc2FtZSB0aW1lLiBU
aGlzIG1ha2VzCisgICAgICAgICAgICAvLyB0aGUgYmxvY2sgZWxpZ2libGUgZm9yIHVzZSBieSBz
b21lIG90aGVyIGFsbG9jYXRvci4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91
bGQgYWxzbyByZXNldCB0aGUgZW1wdHkgY3Vyc29yIHdoZW4gdGhpcyBoYXBwZW5zLgorICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjEyMgor
ICAgICAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgdHJ1ZSk7CisgICAgICAg
IH0KKyAgICB9CiAgICAgaWYgKGZhbHNlKQogICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQg
YmxvY2sgIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXpl
KCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIp
OwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzEsMTUgKzE2OCwyMCBAQCBGcmVlTGlzdCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnN3ZWVwKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7
CisgICAgbV9hbGxvY2F0b3ItPnNldElzVW5zd2VwdCh0aGlzLCBmYWxzZSk7CiAgICAgCi0gICAg
SEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLQogICAgIG1fd2Vha1NldC5z
d2VlcCgpOwogCiAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkgJiYgbV9hdHRyaWJ1dGVz
LmRlc3RydWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pCiAgICAgICAgIHJldHVybiBG
cmVlTGlzdCgpOwogCisgICAgaWYgKFVOTElLRUxZKG1faXNGcmVlTGlzdGVkKSkgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAgICAg
cmV0dXJuIEZyZWVMaXN0KCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVCghbV9hbGxvY2F0b3It
PmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICAKICAgICBpZiAobV9hdHRyaWJ1dGVzLmRlc3RydWN0
aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb24pCiAgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVj
dFNjcmliYmxlTW9kZTxOZWVkc0Rlc3RydWN0aW9uPihzd2VlcE1vZGUpOwogICAgIHJldHVybiBz
d2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZTxEb2VzTm90TmVlZERlc3RydWN0aW9uPihzd2Vl
cE1vZGUpOwpAQCAtMTg5LDQ3ICsxOTEsNTkgQEAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRl
c3RydWN0aW9uTW9kZQogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJT
ZWxlY3RTY3JpYmJsZU1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKICAgICBpZiAoc2NyaWJi
bGVGcmVlQ2VsbHMoKSkKLSAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRT
d2VlcE1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsKLSAgICByZXR1
cm4gc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZTxkZXN0cnVjdGlvbk1vZGUsIERv
bnRTY3JpYmJsZT4oc3dlZXBNb2RlKTsKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0
RW1wdHlNb2RlPGRlc3RydWN0aW9uTW9kZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7CisgICAgcmV0
dXJuIHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlPGRlc3RydWN0aW9uTW9kZSwgRG9udFNjcmli
YmxlPihzd2VlcE1vZGUpOwogfQogCiB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rp
b25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgot
RnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3
ZWVwTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKLSAg
ICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBjYXNlIE5ldzoKLSAgICAgICAgQVNTRVJUKHN3ZWVw
TW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2Vl
cDxOZXcsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERv
ZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgY2FzZSBGcmVlTGlzdGVkOgotICAgICAg
ICAvLyBIYXBwZW5zIHdoZW4gYSBibG9jayB0cmFuc2l0aW9ucyB0byBmdWxseSBhbGxvY2F0ZWQu
Ci0gICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAg
cmV0dXJuIEZyZWVMaXN0KCk7Ci0gICAgY2FzZSBBbGxvY2F0ZWQ6Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAgIGNh
c2UgTWFya2VkOgotICAgICAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAgICAg
cmV0dXJuIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKLSAgICAgICAgICAgICAgICA/IHNw
ZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwg
c2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oKQotICAgICAgICAgICAgICAgIDogc3Bl
Y2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJs
ZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPigpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgcmV0dXJuIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKLSAgICAgICAgICAgICAgICA/
IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAg
ICAgICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1v
ZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBG
cmVlTGlzdCgpOworICAgIC8vIEl0J3Mgbm90IG9idmlvdXMsIGJ1dCB0aGlzIGlzIHRoZSBvbmx5
IHdheSB0byBrbm93IGlmIHRoZSBibG9jayBpcyBlbXB0eS4gSXQncyB0aGUgb25seQorICAgIC8v
IGJpdCB0aGF0IGNhcHR1cmVzIHRoZXNlIGNhdmVhdHM6CisgICAgLy8gLSBJdCdzIHRydWUgd2hl
biB0aGUgYmxvY2sgaXMgZnJlc2hseSBhbGxvY2F0ZWQuCisgICAgLy8gLSBJdCdzIHRydWUgaWYg
dGhlIGJsb2NrIGhhZCBiZWVuIHN3ZXB0IGluIHRoZSBwYXN0LCBhbGwgZGVzdHJ1Y3RvcnMgd2Vy
ZSBjYWxsZWQsIGFuZCB0aGF0CisgICAgLy8gICBzd2VlcCBwcm92ZWQgdGhhdCB0aGUgYmxvY2sg
aXMgZW1wdHkuCisgICAgLy8gLSBJdCdzIGZhbHNlIGlmIHRoZXJlIGFyZSBhbnkgZGVzdHJ1Y3Rv
cnMgdGhhdCBuZWVkIHRvIGJlIGNhbGxlZCwgZXZlbiBpZiB0aGUgYmxvY2sgaGFzIG5vCisgICAg
Ly8gICBsaXZlIG9iamVjdHMuCisgICAgaWYgKG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMpKQor
ICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxJc0VtcHR5
LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4g
c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxOb3RFbXB0eSwgZGVzdHJ1Y3Rpb25N
b2RlLCBzY3JpYmJsZU1vZGU+KHN3ZWVwTW9kZSk7Cit9CisKK3RlbXBsYXRlPE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlv
bk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+CitG
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxs
b2NhdGVkKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCit7CisgICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQp
CisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRl
c3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2Rl
KTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0
cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oc3dl
ZXBNb2RlKTsKK30KKwordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVt
cHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3
bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUp
Cit7CisgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHJldHVy
biBzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlPGVtcHR5TW9kZSwgU3dlZXBUb0ZyZWVMaXN0LCBk
ZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlPigpOworICAg
IHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlPGVtcHR5TW9kZSwgU3dlZXBPbmx5LCBk
ZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlPigpOworfQor
Cit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVz
dHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVN
b2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0
ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RG
bGlwTW9kZSgpCit7CisgICAgaWYgKG5lZWRzRmxpcCgpKQorICAgICAgICByZXR1cm4gc3BlY2lh
bGl6ZWRTd2VlcDxlbXB0eU1vZGUsIHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJs
ZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZSwgTmVlZHNGbGlwPigpOworICAgIHJldHVybiBzcGVj
aWFsaXplZFN3ZWVwPGVtcHR5TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmli
YmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlLCBEb2VzTm90TmVlZEZsaXA+KCk7CiB9CiAKIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCkKIHsK
LSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9U
UkFOU0lUSU9OKHRoaXMpOwotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgPT0gRnJl
ZUxpc3RlZCk7Ci0gICAgbV9zdGF0ZSA9IE1hcmtlZDsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lz
RnJlZUxpc3RlZCk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzZXRJc0ZyZWVMaXN0ZWQoKQoreworICAgIG1fYWxsb2NhdG9yLT5z
ZXRJc0VtcHR5KHRoaXMsIGZhbHNlKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IHRydWU7CiB9CiAK
IGNsYXNzIFNldE5ld2x5QWxsb2NhdGVkRnVuY3RvciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9p
ZEZ1bmN0b3IgewpAQCAtMjUyLDI2ICsyNjYsMTcgQEAgcHJpdmF0ZToKIAogdm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZyhjb25zdCBGcmVlTGlzdCYgZnJlZUxpc3QpCiB7
Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJ
VElPTih0aGlzKTsKKyAgICBpZiAoZmFsc2UpCisgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0
aGlzKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmchXG4iKTsKKyAgICBB
U1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSk7CiAKLSAgICBpZiAobV9zdGF0
ZSA9PSBNYXJrZWQpIHsKLSAgICAgICAgLy8gSWYgdGhlIGJsb2NrIGlzIGluIHRoZSBNYXJrZWQg
c3RhdGUgdGhlbiB3ZSBrbm93IHRoYXQgb25lIG9mIHRoZXNlCi0gICAgICAgIC8vIGNvbmRpdGlv
bnMgaG9sZHM6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIC0gSXQgd2FzIG5vdCB1c2VkIGZvciBh
bGxvY2F0aW9uIGR1cmluZyB0aGUgcHJldmlvdXMgYWxsb2NhdGlvbiBjeWNsZS4KLSAgICAgICAg
Ly8gICBJdCBtYXkgaGF2ZSBkZWFkIG9iamVjdHMsIGFuZCB3ZSBvbmx5IGtub3cgdGhlbSB0byBi
ZSBkZWFkIGJ5IHRoZQotICAgICAgICAvLyAgIGZhY3QgdGhhdCB0aGVpciBtYXJrIGJpdHMgYXJl
IHVuc2V0LgotICAgICAgICAvLwotICAgICAgICAvLyAtIFNvbWVvbmUgaGFkIGFscmVhZHkgZG9u
ZSBzdG9wQWxsb2NhdGluZygpLCBmb3IgZXhhbXBsZSBiZWNhdXNlIG9mCi0gICAgICAgIC8vICAg
aGVhcCBpdGVyYXRpb24sIGFuZCB0aGV5IGhhZCBhbHJlYWR5IAotICAgICAgICAvLyBIZW5jZSBp
ZiB0aGUgYmxvY2sgaXMgTWFya2VkIHdlIG5lZWQgdG8gbGVhdmUgaXQgTWFya2VkLgorICAgIGlm
ICghaXNGcmVlTGlzdGVkKCkpIHsKKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIGVpdGhl
ciBkaWRuJ3QgdXNlIHRoaXMgYmxvY2sgYXQgYWxsIGZvciBhbGxvY2F0aW9uIHNpbmNlIGxhc3Qg
R0MsCisgICAgICAgIC8vIG9yIHNvbWVvbmUgaGFkIGFscmVhZHkgZG9uZSBzdG9wQWxsb2NhdGlu
ZygpIGJlZm9yZS4KICAgICAgICAgQVNTRVJUKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBG
cmVlTGlzdGVkKTsKLSAgICAKICAgICAvLyBSb2xsIGJhY2sgdG8gYSBjb2hlcmVudCBzdGF0ZSBm
b3IgSGVhcCBpbnRyb3NwZWN0aW9uLiBDZWxscyBuZXdseQogICAgIC8vIGFsbG9jYXRlZCBmcm9t
IG91ciBmcmVlIGxpc3QgYXJlIG5vdCBjdXJyZW50bHkgbWFya2VkLCBzbyB3ZSBuZWVkIGFub3Ro
ZXIKICAgICAvLyB3YXkgdG8gdGVsbCB3aGF0J3MgbGl2ZSB2cyBkZWFkLiAKQEAgLTI5MCwxMSAr
Mjk1LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAg
ICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAgICAgIH0pOwogICAgIAotICAg
IG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKIH0KIAogdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7CisgICAgYWxs
b2NhdG9yKCktPnNldElzQWxsb2NhdGVkKHRoaXMsIGZhbHNlKTsKICAgICBtX2Jsb2NrLT5jbGVh
ck1hcmtzKCk7CiAgICAgbV93ZWFrU2V0Lmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CiAKQEAgLTMw
NCwxNCArMzEwLDExIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmkK
IAogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxsb2NhdGluZygpCiB7Ci0g
ICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElP
Tih0aGlzKTsKLQotICAgIEFTU0VSVChtX3N0YXRlID09IE1hcmtlZCk7CisgICAgQVNTRVJUKCFh
bGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOworICAgIEFTU0VSVCghaXNGcmVlTGlzdGVk
KCkpOwogCiAgICAgaWYgKCFtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgIC8vIFdlIGRpZG4n
dCBoYXZlIHRvIGNyZWF0ZSBhICJuZXdseSBhbGxvY2F0ZWQiIGJpdG1hcC4gVGhhdCBtZWFucyB3
ZSB3ZXJlIGFscmVhZHkgTWFya2VkCi0gICAgICAgIC8vIHdoZW4gd2UgbGFzdCBzdG9wcGVkIGFs
bG9jYXRpb24sIHNvIHJldHVybiBhbiBlbXB0eSBmcmVlIGxpc3QgYW5kIHN0YXkgaW4gdGhlIE1h
cmtlZCBzdGF0ZS4KKyAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSBoYWQgYWxyZWFkeSBleGhhdXN0
ZWQgdGhlIGJsb2NrIHdoZW4gd2Ugc3RvcHBlZCBhbGxvY2F0aW9uLgogICAgICAgICByZXR1cm4g
RnJlZUxpc3QoKTsKICAgICB9CiAKQEAgLTM0NSw0MCArMzQ4LDI4IEBAIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6Zm9yRWFjaEZyZWVDZWwKICAgICB9CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6
OmZsaXBJZk5lY2Vzc2FyeSgpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KHZtKCktPmhlYXAub2Jq
ZWN0U3BhY2UoKS52ZXJzaW9uKCkpOwotfQotCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZs
aXBJZk5lY2Vzc2FyeSgpCi17Ci0gICAgYmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoKTsKLX0KLQot
dm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5U2xvdygpCi17Ci0gICAgQVNTRVJUKG5l
ZWRzRmxpcCgpKTsKLSAgICBBU1NFUlQoIXZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtp
bmcoKSk7Ci0gICAgY2xlYXJNYXJrcygpOwotfQotCi12b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZO
ZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdygpCit2b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFy
a1Nsb3coSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiB7CiAgICAgQVNTRVJUKHZtKCktPmhlYXAu
b2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKLSAgICBpZiAobmVlZHNGbGlwKCkpCi0gICAgICAgIGNsZWFyTWFya3MoKTsKKyAgICBpZiAo
bmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkgeworICAgICAgICBjbGVhck1hcmtzKGhlYXBWZXJzaW9u
KTsKKyAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFu
eSBvYmplY3QgaW4gdGhpcyBibG9jay4KKyAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0
b21pY1NldEFuZENoZWNrSXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICB9
CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQogeworICAgIGNsZWFyTWFya3Mo
dm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSk7Cit9CisKK3ZvaWQgTWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCit7CiAgICAgbV9tYXJrcy5j
bGVhckFsbCgpOwogICAgIGNsZWFySGFzQW55TWFya2VkKCk7Ci0gICAgLy8gVGhpcyB3aWxsIGJl
Y29tZSB0cnVlIGF0IHRoZSBlbmQgb2YgdGhlIG1hcmsgcGhhc2UuIFdlIHNldCBpdCBub3cgdG8K
LSAgICAvLyBhdm9pZCBhbiBleHRyYSBwYXNzIHRvIGRvIHNvIGxhdGVyLgotICAgIGhhbmRsZSgp
Lm1fc3RhdGUgPSBNYXJrZWQ7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBtX3Zl
cnNpb24gPSB2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpOworICAgIG1fdmVyc2lv
biA9IGhlYXBWZXJzaW9uOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMzk4LDMxICsz
ODksMzggQEAgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc0ZsaXAoKQogICAgIHJldHVy
biBtX2Jsb2NrLT5uZWVkc0ZsaXAoKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjp3
aWxsUmVtb3ZlQmxvY2soKQorYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCog
cCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKKyAgICByZXR1cm4gaXNNYXJrZWQodm0oKS0+
aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgcCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0KCkKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIGZs
aXBJZk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhp
cyk7Ci0gICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7CisgICAgcmV0dXJu
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lv
bigpLCBjZWxsKTsKK30KKworYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2Nh
dGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoreworICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlB
bGxvY2F0ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7Cit9CiAK
LSAgICBtX3N0YXRlID0gQWxsb2NhdGVkOwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRD
b25zdW1lRnJlZUxpc3QoKQoreworICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQ
b2ludGVyKHRoaXMpLCAiOiBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3Qh
XG4iKTsKKyAgICBBU1NFUlQoaXNGcmVlTGlzdGVkKCkpOworICAgIG1faXNGcmVlTGlzdGVkID0g
ZmFsc2U7CisgICAgYWxsb2NhdG9yKCktPnNldElzQWxsb2NhdGVkKHRoaXMsIHRydWUpOwogfQog
CiBzaXplX3QgTWFya2VkQmxvY2s6Om1hcmtDb3VudCgpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5
KCk7Ci0gICAgcmV0dXJuIG1fbWFya3MuY291bnQoKTsKKyAgICByZXR1cm4gbmVlZHNGbGlwKCkg
PyAwIDogbV9tYXJrcy5jb3VudCgpOwogfQogCiBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omlz
RW1wdHkoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09
IE1hcmtlZCAmJiAhYmxvY2soKS5oYXNBbnlNYXJrZWQoKSAmJiBtX3dlYWtTZXQuaXNFbXB0eSgp
ICYmICghbV9uZXdseUFsbG9jYXRlZCB8fCBtX25ld2x5QWxsb2NhdGVkLT5pc0VtcHR5KCkpOwor
ICAgIHJldHVybiBtX2FsbG9jYXRvci0+aXNFbXB0eSh0aGlzKTsKIH0KIAogdm9pZCBNYXJrZWRC
bG9jazo6Y2xlYXJIYXNBbnlNYXJrZWQoKQpAQCAtNDMyLDI5ICs0MzAsNzggQEAgdm9pZCBNYXJr
ZWRCbG9jazo6Y2xlYXJIYXNBbnlNYXJrZWQoKQogCiB2b2lkIE1hcmtlZEJsb2NrOjpub3RlTWFy
a2VkU2xvdygpCiB7Ci0gICAgaGFuZGxlKCkubV9hbGxvY2F0b3ItPnJldGlyZSgmaGFuZGxlKCkp
OworICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ1Jl
dGlyZWQoJmhhbmRsZSgpLCB0cnVlKTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpy
ZW1vdmVGcm9tQWxsb2NhdG9yKCkKK3sKKyAgICBpZiAoIW1fYWxsb2NhdG9yKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgbV9hbGxvY2F0b3ItPnJlbW92ZUJsb2NrKHRoaXMpOworfQorCit2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRv
ciogYWxsb2NhdG9yLCBzaXplX3QgaW5kZXgpCit7CisgICAgQVNTRVJUKG1faW5kZXggPT0gc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKCFtX2FsbG9jYXRv
cik7CisgICAgCisgICAgbV9pbmRleCA9IGluZGV4OworICAgIG1fYWxsb2NhdG9yID0gYWxsb2Nh
dG9yOworICAgIAorICAgIHNpemVfdCBjZWxsU2l6ZSA9IGFsbG9jYXRvci0+Y2VsbFNpemUoKTsK
KyAgICBtX2F0b21zUGVyQ2VsbCA9IChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6
ZTsKKyAgICBtX2VuZEF0b20gPSBhdG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxOwor
ICAgIAorICAgIG1fYXR0cmlidXRlcyA9IGFsbG9jYXRvci0+YXR0cmlidXRlcygpOworCisgICAg
aWYgKG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQorICAgICAgICBS
RUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0
cnVjdGlvbik7CisgICAgCisgICAgYmxvY2soKS5tX25lZWRzRGVzdHJ1Y3Rpb24gPSBuZWVkc0Rl
c3RydWN0aW9uKCk7CisgICAgCisgICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNw
YWNlOjpibG9ja1BheWxvYWQgLyBjZWxsU2l6ZTsKKyAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9
IC0oT3B0aW9uczo6bWluTWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jayk7
CisgICAgCisgICAgLy8gVGhlIG1hcmsgY291bnQgYmlhcyBzaG91bGQgYmUgY29tZm9ydGFibHkg
d2l0aGluIHRoaXMgcmFuZ2UuCisgICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA+IHN0
YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90Pjo6bWluKCkpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzIDwgMCk7CisgICAgCisgICAgLy8gVGhp
cyBtZWFucyB3ZSBoYXZlbid0IG1hcmtlZCBhbnl0aGluZyB5ZXQuCisgICAgYmxvY2soKS5tX2Jp
YXNlZE1hcmtDb3VudCA9IGJsb2NrKCkubV9tYXJrQ291bnRCaWFzID0gc3RhdGljX2Nhc3Q8aW50
MTZfdD4obWFya0NvdW50Qmlhcyk7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlk
UmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAgQVNTRVJUKG1faW5kZXggIT0gc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKKyAg
ICAKKyAgICBtX2luZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKyAg
ICBtX2FsbG9jYXRvciA9IG51bGxwdHI7Cit9CisKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6
aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoreworICAgIHJldHVybiBpc0xpdmUodm0oKS0+
aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7Cit9CisKK2Jvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQoreworICAgIHJldHVybiBpc0xp
dmVDZWxsKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIHApOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIG5hbWVzcGFjZSBKU0M7
Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBNYXJrZWRCbG9jazo6Qmxv
Y2tTdGF0ZSBibG9ja1N0YXRlKQordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIG1vZGUpCiB7Ci0gICAgc3dpdGNo
IChibG9ja1N0YXRlKSB7Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TmV3OgotICAgICAgICBvdXQu
cHJpbnQoIk5ldyIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6RnJl
ZUxpc3RlZDoKLSAgICAgICAgb3V0LnByaW50KCJGcmVlTGlzdGVkIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpBbGxvY2F0ZWQ6Ci0gICAgICAgIG91dC5wcmludCgi
QWxsb2NhdGVkIik7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdDoKKyAgICAgICAgb3V0LnByaW50KCJTd2VlcFRv
RnJlZUxpc3QiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtl
ZDoKLSAgICAgICAgb3V0LnByaW50KCJNYXJrZWQiKTsKKyAgICBjYXNlIEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6U3dlZXBPbmx5OgorICAgICAgICBvdXQucHJpbnQoIlN3ZWVwT25seSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9u
IDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDIwICs0NCw2IEBAIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKIHR5
cGVkZWYgdWludHB0cl90IEJpdHM7CiB0eXBlZGVmIHVpbnQzMl90IEhlYXBWZXJzaW9uOwogCi0v
LyBTZXQgdG8gbG9nIHN0YXRlIHRyYW5zaXRpb25zIG9mIGJsb2Nrcy4KLSNkZWZpbmUgSEVBUF9M
T0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTlMgMAotCi0jaWYgSEVBUF9MT0dfQkxPQ0tfU1RBVEVf
VFJBTlNJVElPTlMKLSNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTihoYW5k
bGUpIGRvIHsgICAgICAgICAgICBcCi0gICAgICAgIGRhdGFMb2dGKCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIiVzOiVkICVzOiBi
bG9jayAlcyA9ICVwLCAlZFxuIiwgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIF9f
RklMRV9fLCBfX0xJTkVfXywgX19GVU5DVElPTl9fLCAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICAjaGFuZGxlLCAmKGhhbmRsZSktPmJsb2NrKCksIChoYW5kbGUpLT5tX3N0YXRlKTsg
ICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQotI2Vsc2UKLSNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tf
U1RBVEVfVFJBTlNJVElPTihoYW5kbGUpICgodm9pZCkwKQotI2VuZGlmCi0KIC8vIEEgbWFya2Vk
IGJsb2NrIGlzIGEgcGFnZS1hbGlnbmVkIGNvbnRhaW5lciBmb3IgaGVhcC1hbGxvY2F0ZWQgb2Jq
ZWN0cy4KIC8vIE9iamVjdHMgYXJlIGFsbG9jYXRlZCB3aXRoaW4gY2VsbHMgb2YgdGhlIG1hcmtl
ZCBibG9jay4gRm9yIGEgZ2l2ZW4KIC8vIG1hcmtlZCBibG9jaywgYWxsIGNlbGxzIGhhdmUgdGhl
IHNhbWUgc2l6ZS4gT2JqZWN0cyBzbWFsbGVyIHRoYW4gdGhlCkBAIC03Niw4ICs2Miw2IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEhhbmRsZTsKIHB1YmxpYzoKLSAgICBl
bnVtIEJsb2NrU3RhdGUgOiB1aW50OF90IHsgTmV3LCBGcmVlTGlzdGVkLCBBbGxvY2F0ZWQsIE1h
cmtlZCB9OwotICAgICAgICAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21TaXplID0gMTY7
IC8vIGJ5dGVzCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja1NpemUgPSAxNiAqIEtCOwog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tNYXNrID0gfihibG9ja1NpemUgLSAxKTsgLy8g
YmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCkBAIC04NiwxMiArNzAsMTIgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljX2Fzc2VydCghKE1hcmtlZEJsb2NrOjphdG9tU2l6ZSAmIChNYXJr
ZWRCbG9jazo6YXRvbVNpemUgLSAxKSksICJNYXJrZWRCbG9jazo6YXRvbVNpemUgbXVzdCBiZSBh
IHBvd2VyIG9mIHR3by4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkQmxvY2s6OmJsb2Nr
U2l6ZSAmIChNYXJrZWRCbG9jazo6YmxvY2tTaXplIC0gMSkpLCAiTWFya2VkQmxvY2s6OmJsb2Nr
U2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwotCisgICAgCiAgICAgc3RydWN0IFZvaWRG
dW5jdG9yIHsKICAgICAgICAgdHlwZWRlZiB2b2lkIFJldHVyblR5cGU7CiAgICAgICAgIHZvaWQg
cmV0dXJuVmFsdWUoKSB7IH0KICAgICB9OwotCisgICAgCiAgICAgY2xhc3MgQ291bnRGdW5jdG9y
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgc2l6ZV90IFJldHVyblR5cGU7CkBAIC0x
MDYsMTAgKzkwLDkgQEAgcHVibGljOgogICAgICAgICBtdXRhYmxlIFJldHVyblR5cGUgbV9jb3Vu
dDsKICAgICB9OwogICAgICAgICAKLSAgICBjbGFzcyBIYW5kbGUgOiBwdWJsaWMgQmFzaWNSYXdT
ZW50aW5lbE5vZGU8SGFuZGxlPiB7CisgICAgY2xhc3MgSGFuZGxlIHsKICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxIYW5kbGU+OwogICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQg
Y2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgVmVyaWZ5TWFya2VkOwpA
QCAtMTMwLDYgKzExMywxNSBAQCBwdWJsaWM6CiAgICAgICAgIFZNKiB2bSgpIGNvbnN0OwogICAg
ICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAgICAgICAgICAgICAKKyAgICAgICAgLy8gU3dlZXBp
bmcgZW5zdXJlcyB0aGF0IGRlc3RydWN0b3JzIGdldCBjYWxsZWQgYW5kIHJlbW92ZXMgdGhlIGJs
b2NrIGZyb20gdGhlIHVuc3dlcHQKKyAgICAgICAgLy8gc2V0LiBTd2VlcGluZyB0byBmcmVlIGxp
c3QgYWxzbyByZW1vdmVzIHRoZSBibG9jayBmcm9tIHRoZSBlbXB0eSBzZXQsIGlmIGl0IHdhcyBp
biB0aGF0CisgICAgICAgIC8vIHNldC4gU3dlZXBpbmcgd2l0aCBTd2VlcE9ubHkgbWF5IGFkZCB0
aGlzIGJsb2NrIHRvIHRoZSBlbXB0eSBzZXQsIGlmIHRoZSBibG9jayBpcyBmb3VuZAorICAgICAg
ICAvLyB0byBiZSBlbXB0eS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gTm90ZSB0aGF0IHlvdSBu
ZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBlbXB0eSBiaXQgcmVmbGVjdHMgcmVhbGl0eS4gSWYg
aXQncyBub3Qgc2V0CisgICAgICAgIC8vIGFuZCB0aGUgYmxvY2sgaXMgZnJlc2hseSBjcmVhdGVk
LCB0aGVuIHdlJ2xsIG1ha2UgdGhlIG1pc3Rha2Ugb2YgcnVubmluZyBkZXN0cnVjdG9ycyBpbgor
ICAgICAgICAvLyB0aGUgYmxvY2suIElmIGl0J3Mgbm90IHNldCBhbmQgdGhlIGJsb2NrIGhhcyBu
b3RoaW5nIG1hcmtlZCwgdGhlbiB3ZSdsbCBtYWtlIHRoZQorICAgICAgICAvLyBtaXN0YWtlIG9m
IG1ha2luZyBhIHBvcCBmcmVlbGlzdCByYXRoZXIgdGhhbiBhIGJ1bXAgZnJlZWxpc3QuCiAgICAg
ICAgIGVudW0gU3dlZXBNb2RlIHsgU3dlZXBPbmx5LCBTd2VlcFRvRnJlZUxpc3QgfTsKICAgICAg
ICAgRnJlZUxpc3Qgc3dlZXAoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgCkBAIC0x
NTMsOCArMTQ1LDYgQEAgcHVibGljOgogICAgICAgICAvLyBhbmQgd2FzIHN1Y2Nlc3NmdWxseSBj
bGVhcmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgICAgICAgIGJvb2wgY2xlYXJOZXdseUFsbG9j
YXRlZCgpOwogICAgICAgICAgICAgCi0gICAgICAgIHZvaWQgZmxpcEZvckVkZW5Db2xsZWN0aW9u
KCk7Ci0gICAgICAgICAgICAKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgICAgIGNv
bnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVz
dHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7CkBAIC0xNjQsOSArMTU0LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogICAgICAgICBzaXplX3Qgc2l6ZSgp
OwogICAgICAgICAgICAgCisgICAgICAgIGlubGluZSBib29sIGlzTGl2ZShIZWFwVmVyc2lvbiwg
Y29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVy
c2lvbiwgY29uc3Qgdm9pZCopOworCiAgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxs
Kik7CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CisKICAgICAgICAgYm9v
bCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgYm9v
bCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7
CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBpc05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQq
KTsKICAgICAgICAgdm9pZCBzZXROZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CkBAIC0xNzQs
MzEgKzE2OSwyNSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBib29sIGhhc0FueU5ld2x5
QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX25ld2x5QWxsb2NhdGVkOyB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgYm9vbCBpc0FsbG9jYXRlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlz
TWFya2VkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3Q7Ci0gICAg
ICAgIGJvb2wgbmVlZHNTd2VlcGluZygpIGNvbnN0OwotICAgICAgICB2b2lkIHdpbGxSZW1vdmVC
bG9jaygpOwotCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25T
dGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5j
dG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0
dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNv
bnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGlu
ZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAg
ICAgICAgIAogICAgICAgICBib29sIG5lZWRzRmxpcCgpOwotICAgICAgICAgICAgCi0gICAgICAg
IHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbik7Ci0gICAgICAg
IHZvaWQgZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uKTsKLSAgICAgICAgdm9pZCBmbGlwSWZO
ZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIAorICAgICAgICAKICAgICAgICAgdm9pZCBhc3NlcnRG
bGlwcGVkKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgYm9vbCBpc09uQmxvY2tzVG9Td2VlcCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNPbkJsb2Nrc1RvU3dlZXA7IH0KLSAgICAgICAgdm9pZCBzZXRJ
c09uQmxvY2tzVG9Td2VlcChib29sIHZhbHVlKSB7IG1faXNPbkJsb2Nrc1RvU3dlZXAgPSB2YWx1
ZTsgfQorICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGcmVl
TGlzdGVkOyB9CisgICAgICAgIAorICAgICAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX2luZGV4OyB9CisgICAgICAgIAorICAgICAgICB2b2lkIHJlbW92ZUZyb21BbGxvY2F0b3Io
KTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2Nh
dG9yKiwgc2l6ZV90IGluZGV4KTsKKyAgICAgICAgdm9pZCBkaWRSZW1vdmVGcm9tQWxsb2NhdG9y
KCk7CiAgICAgICAgIAotICAgICAgICBCbG9ja1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZTsgfQotICAgICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSGFuZGxlKEhl
YXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0
dHJpYnV0ZXMmLCB2b2lkKik7CisgICAgICAgIEhhbmRsZShIZWFwJiwgdm9pZCopOwogICAgICAg
ICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZT4KICAgICAgICAgRnJlZUxp
c3Qgc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsK
QEAgLTIwNiwzNSArMTk1LDUwIEBAIHB1YmxpYzoKICAgICAgICAgZW51bSBTY3JpYmJsZU1vZGUg
eyBEb250U2NyaWJibGUsIFNjcmliYmxlIH07CiAgICAgICAgICAgICAKICAgICAgICAgdGVtcGxh
dGU8RGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGU+Ci0gICAgICAgIEZyZWVMaXN0IHN3ZWVw
SGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAg
ICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGUoU3dlZXBNb2RlID0gU3dl
ZXBPbmx5KTsKICAgICAgICAgICAgIAorICAgICAgICBlbnVtIEVtcHR5TW9kZSB7IElzRW1wdHks
IE5vdEVtcHR5IH07CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3Ry
dWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNl
bGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAog
ICAgICAgICBlbnVtIE5ld2x5QWxsb2NhdGVkTW9kZSB7IEhhc05ld2x5QWxsb2NhdGVkLCBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkIH07Ci0gICAgICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8
QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3
bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBE
ZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAg
ICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9u
bHkpOworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERl
c3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAg
IEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0RmxpcE1vZGUoKTsKKyAgICAgICAgCisgICAgICAg
IGVudW0gRmxpcE1vZGUgeyBOZWVkc0ZsaXAsIERvZXNOb3ROZWVkRmxpcCB9OworICAgICAgICAK
KyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwg
U2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGUsIEZsaXBNb2RlPgogICAgICAgICBGcmVl
TGlzdCBzcGVjaWFsaXplZFN3ZWVwKCk7CiAgICAgICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KICAgICAgICAgdm9pZCBmb3JFYWNoRnJlZUNlbGwoY29uc3QgRnJlZUxp
c3QmLCBjb25zdCBGdW5jJik7Ci0gICAgICAgICAgICAKKyAgICAgICAgCisgICAgICAgIHZvaWQg
c2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiBtX3ByZXY7CiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fbmV4dDsKICAgICAgICAg
ICAgIAotICAgICAgICBzaXplX3QgbV9hdG9tc1BlckNlbGw7Ci0gICAgICAgIHNpemVfdCBtX2Vu
ZEF0b207IC8vIFRoaXMgaXMgYSBmdXp6eSBlbmQuIEFsd2F5cyB0ZXN0IGZvciA8IG1fZW5kQXRv
bS4KKyAgICAgICAgc2l6ZV90IG1fYXRvbXNQZXJDZWxsIHsgc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSB9OworICAgICAgICBzaXplX3QgbV9lbmRBdG9tIHsgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OyAvLyBUaGlzIGlzIGEgZnV6enkgZW5kLiBBbHdheXMg
dGVzdCBmb3IgPCBtX2VuZEF0b20uCiAgICAgICAgICAgICAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+PiBtX25ld2x5QWxsb2NhdGVkOwogICAgICAg
ICAgICAgCiAgICAgICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwotICAgICAg
ICBCbG9ja1N0YXRlIG1fc3RhdGU7Ci0gICAgICAgIGJvb2wgbV9pc09uQmxvY2tzVG9Td2VlcCB7
IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxzZSB9OwogICAgICAg
ICAgICAgCi0gICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgICAgIE1h
cmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBt
X2luZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBX
ZWFrU2V0IG1fd2Vha1NldDsKICAgICAgICAgICAgIAotICAgICAgICBNYXJrZWRCbG9jayogbV9i
bG9jazsKKyAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07CiAgICAgfTsK
ICAgICAgICAgCi0gICAgc3RhdGljIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFw
JiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRy
aWJ1dGVzJik7CisgICAgc3RhdGljIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFw
Jik7CiAgICAgICAgIAogICAgIEhhbmRsZSYgaGFuZGxlKCk7CiAgICAgICAgIApAQCAtMjQ4LDM0
ICsyNTIsMzUgQEAgcHVibGljOgogICAgIHNpemVfdCBtYXJrQ291bnQoKTsKIAogICAgIGJvb2wg
aXNNYXJrZWQoY29uc3Qgdm9pZCopOworICAgIGJvb2wgaXNNYXJrZWQoSGVhcFZlcnNpb24sIGNv
bnN0IHZvaWQqKTsKKyAgICBib29sIGlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uLCBj
b25zdCB2b2lkKik7CiAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAg
ICAgICAgCiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwq
KTsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiwgY29uc3Qg
SGVhcENlbGwqKTsKICAgICAKLSAgICBib29sIGlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKEhl
YXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwotCiAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9p
ZCopOwogICAgIHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwotICAgICAgICAKKyAgICAK
ICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzKCkgY29uc3Q7Ci0KKyAgICAKICAgICBib29sIGhhc0FueU1hcmtlZCgpIGNvbnN0
OwogICAgIHZvaWQgbm90ZU1hcmtlZCgpOwogICAgICAgICAKICAgICBXZWFrU2V0JiB3ZWFrU2V0
KCk7Ci0KKyAgICAKICAgICBib29sIG5lZWRzRmxpcChIZWFwVmVyc2lvbik7CiAgICAgYm9vbCBu
ZWVkc0ZsaXAoKTsKLSAgICAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJr
aW5nKEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7
Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAKKyAgICB2b2lkIGFib3V0VG9NYXJr
KEhlYXBWZXJzaW9uKTsKICAgICAgICAgCiAgICAgdm9pZCBhc3NlcnRGbGlwcGVkKCk7CiAgICAg
ICAgIAogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNE
ZXN0cnVjdGlvbjsgfQotICAgICAgICAKKyAgICAKKyAgICBpbmxpbmUgdm9pZCByZXNldFZlcnNp
b24oKTsKKyAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25t
ZW50TWFzayA9IGF0b21TaXplIC0gMTsKIApAQCAtMjg0LDkgKzI4OSw5IEBAIHByaXZhdGU6CiAg
ICAgTWFya2VkQmxvY2soVk0mLCBIYW5kbGUmKTsKICAgICBBdG9tKiBhdG9tcygpOwogICAgICAg
ICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmdTbG93KCk7Ci0gICAgdm9p
ZCBmbGlwSWZOZWNlc3NhcnlTbG93KCk7CisgICAgdm9pZCBhYm91dFRvTWFya1Nsb3coSGVhcFZl
cnNpb24pOwogICAgIHZvaWQgY2xlYXJNYXJrcygpOworICAgIHZvaWQgY2xlYXJNYXJrcyhIZWFw
VmVyc2lvbik7CiAgICAgdm9pZCBjbGVhckhhc0FueU1hcmtlZCgpOwogICAgIAogICAgIHZvaWQg
bm90ZU1hcmtlZFNsb3coKTsKQEAgLTQ2OSw0MCArNDc0LDEzIEBAIGlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjpuZWVkc0ZsaXAoSGVhcFYKICAgICByZXR1cm4gaGVhcFZlcnNpb24gIT0gbV92ZXJz
aW9uOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBW
ZXJzaW9uIGhlYXBWZXJzaW9uKQoraW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJr
KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIGlmIChVTkxJS0VMWShuZWVkc0ZsaXAo
aGVhcFZlcnNpb24pKSkKLSAgICAgICAgZmxpcElmTmVjZXNzYXJ5U2xvdygpOwotfQotCi1pbmxp
bmUgdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVy
c2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBpZiAoVU5MSUtFTFkobmVlZHNGbGlwKGhlYXBWZXJz
aW9uKSkpCi0gICAgICAgIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmdTbG93KCk7CisgICAg
ICAgIGFib3V0VG9NYXJrU2xvdyhoZWFwVmVyc2lvbik7CiAgICAgV1RGOjpsb2FkTG9hZEZlbmNl
KCk7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2Fy
eShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2Fy
eShoZWFwVmVyc2lvbik7Ci19Ci0KLWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZs
aXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0g
ICAgYmxvY2soKS5mbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKGhlYXBWZXJzaW9uKTsKLX0K
LQotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcEZvckVkZW5Db2xsZWN0aW9u
KCkKLXsKLSAgICBhc3NlcnRGbGlwcGVkKCk7Ci0gICAgICAgIAotICAgIEhFQVBfTE9HX0JMT0NL
X1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgIT0gTmV3
ICYmIG1fc3RhdGUgIT0gRnJlZUxpc3RlZCk7Ci0gICAgCi0gICAgbV9zdGF0ZSA9IE1hcmtlZDsK
LX0KLQogI2lmIEFTU0VSVF9ESVNBQkxFRAogaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmFzc2Vy
dEZsaXBwZWQoKQogewpAQCAtNTE0LDkgKzQ5MiwxNiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9j
azo6SGFuZGxlOjphc3NlcnRGCiAgICAgYmxvY2soKS5hc3NlcnRGbGlwcGVkKCk7CiB9CiAKLWlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25zdCB2b2lkKiBwKQoraW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25zdCB2
b2lkKiBwKQogewotICAgIGFzc2VydEZsaXBwZWQoKTsKKyAgICByZXR1cm4gbmVlZHNGbGlwKGhl
YXBWZXJzaW9uKSA/IGZhbHNlIDogbV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7Cit9CisKK2lu
bGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiBo
ZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKK3sKKyAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJz
aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwog
ICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKIH0KIApAQCAtNTUwLDQzICs1
MzUsMTQgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZl
cnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIEFTU0VSVChtX3N0YXRlID09IE1h
cmtlZCk7Ci0gICAgcmV0dXJuIG1fYmxvY2stPmlzTWFya2VkKGNlbGwpIHx8IChtX25ld2x5QWxs
b2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOworICAgIHJldHVybiBtX2Jsb2NrLT5p
c01hcmtlZCh2ZXJzaW9uLCBjZWxsKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxs
b2NhdGVkKGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJs
b2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qg
SGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgQVNTRVJUKG1faGFuZGxlLm1fc3RhdGUgPT0gTWFya2Vk
KTsKLSAgICByZXR1cm4gaXNNYXJrZWQoY2VsbCkgfHwgKG1faGFuZGxlLm1fbmV3bHlBbGxvY2F0
ZWQgJiYgbV9oYW5kbGUuaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7Ci19Ci0KLWlubGluZSBib29s
IE1hcmtlZEJsb2NrOjppc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiBoZWFw
VmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCi17Ci0gICAgaWYgKG5lZWRzRmxpcChoZWFw
VmVyc2lvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNNYXJrZWQoY2Vs
bCk7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25zdCBI
ZWFwQ2VsbCogY2VsbCkKLXsKLSAgICBhc3NlcnRGbGlwcGVkKCk7Ci0gICAgc3dpdGNoIChtX3N0
YXRlKSB7Ci0gICAgY2FzZSBBbGxvY2F0ZWQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Y2FzZSBNYXJrZWQ6Ci0gICAgICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2Vs
bCk7Ci0KLSAgICBjYXNlIE5ldzoKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gaXNNYXJrZWQodmVyc2lvbiwgY2VsbCkgfHwgKG1faGFuZGxlLm1fbmV3bHlBbGxv
Y2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiB9CiAKIGlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKQEAgLTYwMywxMyArNTU5LDYg
QEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2bwogICAgIHJldHVybiB0
cnVlOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKGNv
bnN0IHZvaWQqIHApCi17Ci0gICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20ocCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxs
Kj4ocCkpOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KIGlubGluZSBJdGVyYXRp
b25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKQEAgLTYyMiw2MiArNTcxLDYgQEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBN
YXJrZWRCbG9jazo6SGFuZAogICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLWlubGluZSBJdGVyYXRpb25TdGF0dXMg
TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgSGVhcENlbGw6OktpbmQga2luZCA9
IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKLSAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7
IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgSGVhcENlbGwq
IGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygp
W2ldKTsKLSAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRv
bmUpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAgIH0KLSAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+Ci1pbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIGZsaXBJZk5l
Y2Vzc2FyeSgpOwotICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtp
bmQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9
IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRf
Y2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7Ci0gICAgICAgIGlmIChp
c0xpdmUoY2VsbCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZnVuY3Rv
cihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAgIH0KLSAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVl
ZHNTd2VlcGluZygpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxl
Kj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtl
ZDsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNBbGxvY2F0ZWQoKSBj
b25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlw
SWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBBbGxvY2F0ZWQ7Ci19Ci0KLWlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkKCkgY29uc3QKLXsKLSAgICBj
b25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7
Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFy
a2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4g
bV9zdGF0ZSA9PSBGcmVlTGlzdGVkOwotfQotCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aGFz
QW55TWFya2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iaWFzZWRNYXJrQ291bnQgIT0gbV9t
YXJrQ291bnRCaWFzOwpAQCAtNzExLDcgKzYwNCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPEpTQzo6TWFya2UKICAgICB0eXBlZGVmIE1hcmtlZEJsb2NrSGFzaCBIYXNoOwogfTsK
IAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6
OkJsb2NrU3RhdGUpOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5l
cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKEhl
YXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoreworICAgIEFTU0VSVCgh
aXNGcmVlTGlzdGVkKCkpOworICAgIAorICAgIGlmIChVTkxJS0VMWShoYXNBbnlOZXdseUFsbG9j
YXRlZCgpKSkgeworICAgICAgICBpZiAoaXNOZXdseUFsbG9jYXRlZChjZWxsKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0
aGlzLT5ibG9jaygpOworICAgIAorICAgIGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhp
cykpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGlmIChibG9jay5uZWVkc0ZsaXAo
dmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBibG9jay5pc01h
cmtlZChjZWxsKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZl
Q2VsbChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCB2b2lkKiBwKQoreworICAgIGlmICghbV9i
bG9jay0+aXNBdG9tKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzTGl2
ZSh2ZXJzaW9uLCBzdGF0aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+CitpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAg
IEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChz
aXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxs
KSB7CisgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENl
bGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7CisgICAgICAgIGlmICghaXNMaXZlKGNlbGwpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkg
PT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0
YXR1czo6RG9uZTsKKyAgICB9CisgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgoraW5saW5lIEl0ZXJhdGlvblN0YXR1
cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKK3sKKyAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5k
OworICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBt
X2F0b21zUGVyQ2VsbCkgeworICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOworICAgICAgICBpZiAoaXNM
aXZlKGNlbGwpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGZ1bmN0b3Io
Y2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKKyAgICB9CisgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1
czo6Q29udGludWU7Cit9CisKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpyZXNldFZlcnNpb24o
KQoreworICAgIG1fdmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lu
Y2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCkBAIC0x
OTUsNiArMTk2LDE5IEBAIE1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAg
ICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
ICAgICAgICAgfSk7CisgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBwcmV2aW91cyA9IG51bGxw
dHI7CisgICAgZm9yRWFjaFN1YnNwYWNlKAorICAgICAgICBbJl0gKFN1YnNwYWNlJiBzdWJzcGFj
ZSwgQWxsb2NhdG9yQXR0cmlidXRlcykgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAg
IGZvciAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgOiBzdWJzcGFjZS5iYWdPZkFsbG9jYXRv
cnMpIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3ItPnNldE5leHRBbGxvY2F0b3IocHJldmlv
dXMpOworICAgICAgICAgICAgICAgIHByZXZpb3VzID0gYWxsb2NhdG9yOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250
aW51ZTsKKyAgICAgICAgfSk7CisgICAgbV9maXJzdEFsbG9jYXRvciA9IHByZXZpb3VzOworICAg
IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gcHJldmlvdXM7CiB9CiAKIE1hcmtlZFNw
YWNlOjp+TWFya2VkU3BhY2UoKQpAQCAtMjIyLDE1ICsyMzYsMjEgQEAgdm9pZCBNYXJrZWRTcGFj
ZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogCiB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUo
U3Vic3BhY2UmIHN1YnNwYWNlLCBzaXplX3QgYnl0ZXMpCiB7Ci0gICAgaWYgKE1hcmtlZEFsbG9j
YXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNwYWNlLCBieXRlcykpCi0gICAgICAg
IHJldHVybiBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgaWYgKE1hcmtlZEFsbG9jYXRvciog
YWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNwYWNlLCBieXRlcykpIHsKKyAgICAgICAgdm9p
ZCogcmVzdWx0ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOworICAgICAgICAvL2RhdGFMb2coIkFs
bG9jYXRlZCAiLCBSYXdQb2ludGVyKHJlc3VsdCksICJcbiIpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KICAgICByZXR1cm4gYWxsb2NhdGVMYXJnZShzdWJzcGFjZSwgYnl0ZXMpOwog
fQogCiB2b2lkKiBNYXJrZWRTcGFjZTo6dHJ5QWxsb2NhdGUoU3Vic3BhY2UmIHN1YnNwYWNlLCBz
aXplX3QgYnl0ZXMpCiB7Ci0gICAgaWYgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gYWxs
b2NhdG9yRm9yKHN1YnNwYWNlLCBieXRlcykpCi0gICAgICAgIHJldHVybiBhbGxvY2F0b3ItPnRy
eUFsbG9jYXRlKCk7CisgICAgaWYgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gYWxsb2Nh
dG9yRm9yKHN1YnNwYWNlLCBieXRlcykpIHsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gYWxsb2Nh
dG9yLT50cnlBbGxvY2F0ZSgpOworICAgICAgICAvL2RhdGFMb2coIlRyeS1hbGxvY2F0ZWQgIiwg
UmF3UG9pbnRlcihyZXN1bHQpLCAiXG4iKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CiAgICAgcmV0dXJuIHRyeUFsbG9jYXRlTGFyZ2Uoc3Vic3BhY2UsIGJ5dGVzKTsKIH0KIApAQCAt
MjU5LDkgKzI3OSwxMCBAQCB2b2lkKiBNYXJrZWRTcGFjZTo6dHJ5QWxsb2NhdGVMYXJnZShTdWJz
CiB2b2lkIE1hcmtlZFNwYWNlOjpzd2VlcCgpCiB7CiAgICAgbV9oZWFwLT5zd2VlcGVyKCktPndp
bGxGaW5pc2hTd2VlcGluZygpOwotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZdIChNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgYmxvY2stPnN3ZWVwKCk7Cisg
ICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9j
YXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5zd2VlcCgp
OworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAg
IH0pOwogfQogCkBAIC0yODQsMzMgKzMwNSwyMyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpzd2VlcExh
cmdlQWxsb2NhdGlvbnMoCiAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCA9IG1f
bGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7CiB9CiAKLXZvaWQgTWFya2VkU3BhY2U6OnpvbWJpZnlT
d2VlcCgpCi17Ci0gICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgIGRhdGFMb2coIlpv
bWJpZnlpbmcgc3dlZXAuLi4iKTsKLSAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3
ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAoYmxvY2stPm5lZWRzU3dlZXBpbmcoKSkK
LSAgICAgICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKLSAgICAgICAgfSk7Ci19Ci0KLXZvaWQg
TWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCit2b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJl
Rm9yQWxsb2NhdGlvbigpCiB7CiAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgWyZdIChN
YXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKLSAgICAgICAg
ICAgIGFsbG9jYXRvci5yZXNldCgpOworICAgICAgICAgICAgYWxsb2NhdG9yLnByZXBhcmVGb3JB
bGxvY2F0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51
ZTsKICAgICAgICAgfSk7CiAKLSAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLmNsZWFyKCk7CiAg
ICAgbV9hY3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0FjdGl2ZVdlYWtTZXRzKTsKKyAgICAK
ICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24p
CiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IG1fbGFy
Z2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7CiAgICAgZWxzZQogICAgICAgICBtX2xhcmdlQWxs
b2NhdGlvbnNOdXJzZXJ5T2Zmc2V0Rm9yU3dlZXAgPSAwOwogICAgIG1fbGFyZ2VBbGxvY2F0aW9u
c051cnNlcnlPZmZzZXQgPSBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOworICAgIAorICAgIG1f
YWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gbV9maXJzdEFsbG9jYXRvcjsKIH0KIAogdm9p
ZCBNYXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290Vmlz
aXRvcikKQEAgLTQxMCwxMSArNDIxLDExIEBAIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVPclNocmlu
a0Jsb2NrKE1hcmsKIAogdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKIHsKLSAgICBmb3JFYWNo
QmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAg
ICAgICAgIGZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAor
ICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0
dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLnNocmluaygpOworICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOwotICAgIC8vIEZvciBMYXJn
ZUFsbG9jYXRpb25zLCB3ZSBkbyB0aGUgbW9yYWwgZXF1aXZhbGVudCBpbiBzd2VlcExhcmdlQWxs
b2NhdGlvbnMoKS4KIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgp
CkBAIC00MjksNTcgKzQ0MCw2MSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2Nh
dGVkKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JU
aGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7ICsraSkKICAgICAg
ICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWJsb2NrLT5jbGVhck5l
d2x5QWxsb2NhdGVkKCkpOwotICAgICAgICB9KTsKLQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQotICAgICAgICBBU1NFUlQoIWFsbG9j
YXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAot
fQotCi0jaWZuZGVmIE5ERUJVRyAKLXN0cnVjdCBWZXJpZnlNYXJrZWQgOiBNYXJrZWRCbG9jazo6
Vm9pZEZ1bmN0b3IgeyAKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2spIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBzd2l0Y2ggKGJsb2NrLT5tX3N0YXRlKSB7Ci0gICAg
ICAgIGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIH0KKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxv
Y2soCisgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChibG9jaywgIWJsb2NrLT5jbGVhck5ld2x5QWxsb2Nh
dGVkKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICBmb3IgKExhcmdlQWxs
b2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKKyAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQoYWxsb2NhdGlvbiwgIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7
CiAgICAgfQotfTsgCi0jZW5kaWYgCit9CiAKLXZvaWQgTWFya2VkU3BhY2U6OmZsaXAoKQordm9p
ZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRp
b25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT5mbGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbiA9IG1fdmVyc2lv
biArIDE7Ci0gICAgICAgIGlmIChVTkxJS0VMWShuZXh0VmVyc2lvbiA9PSBpbml0aWFsVmVyc2lv
bikpIHsKLSAgICAgICAgICAgIC8vIE9oIG5vISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5k
bGUgdGhpcyBieSBmbGlwcGluZyBhbGwgYmxvY2tzLiBUaGlzIGhhcHBlbnMKLSAgICAgICAgICAg
IC8vIHN1cGVyIHJhcmVseSwgcHJvYmFibHkgbmV2ZXIgZm9yIG1vc3QgdXNlcnMuCisgICAgaWYg
KG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAg
ICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYg
YWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRv
ci5iZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
bV92ZXJzaW9uID0gbmV4dFZlcnNpb24obV92ZXJzaW9uKTsKKyAgICAgICAgCisgICAgICAgIGlm
IChVTkxJS0VMWShtX3ZlcnNpb24gPT0gaW5pdGlhbFZlcnNpb24pKSB7CisgICAgICAgICAgICAv
LyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgc2V0dGluZyBh
bGwgYmxvY2sgdmVyc2lvbnMgdG8gbnVsbC4KICAgICAgICAgICAgIGZvckVhY2hCbG9jaygKICAg
ICAgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgewotICAgICAg
ICAgICAgICAgICAgICBoYW5kbGUtPmZsaXBJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgICAg
ICAgICBoYW5kbGUtPmJsb2NrKCkucmVzZXRWZXJzaW9uKCk7CiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KLSAgICAgICAgbV92ZXJzaW9uID0gbmV4dFZlcnNpb247IC8vIEhlbmNlZm9y
dGgsIGZsaXBJZk5lY2Vzc2FyeSgpIHdpbGwgdHJpZ2dlciBvbiBhbGwgYmxvY2tzLgorICAgICAg
ICAKICAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxs
b2NhdGlvbnMpCiAgICAgICAgICAgICBhbGxvY2F0aW9uLT5mbGlwKCk7CiAgICAgfQogCi0jaWZu
ZGVmIE5ERUJVRwotICAgIFZlcmlmeU1hcmtlZCB2ZXJpZnlGdW5jdG9yOwotICAgIGZvckVhY2hC
bG9jayh2ZXJpZnlGdW5jdG9yKTsKLSNlbmRpZgorICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9j
ay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIG1f
aXNNYXJraW5nID0gdHJ1ZTsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6ZW5kTWFya2luZygpCit7
CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFs
bG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5lbmRN
YXJraW5nKCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
KyAgICAgICAgfSk7CisgICAgCisgICAgbV9pc01hcmtpbmcgPSBmYWxzZTsKIH0KIAogdm9pZCBN
YXJrZWRTcGFjZTo6d2lsbFN0YXJ0SXRlcmF0aW5nKCkKQEAgLTU0MCwxOSArNTU1LDY2IEBAIHZv
aWQgTWFya2VkU3BhY2U6OmFkZEFjdGl2ZVdlYWtTZXQoV2Vha1MKIAogdm9pZCBNYXJrZWRTcGFj
ZTo6ZGlkQWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7CisgICAgLy8gV0FS
TklORzogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGJsb2NrIGlzIGZ1bGx5IGluaXRp
YWxpemVkLiBUaGUgYmxvY2sgd2lsbCBub3Qga25vdworICAgIC8vIGl0cyBjZWxsU2l6ZSgpIG9y
IGF0dHJpYnV0ZXMoKS4gVGhlIGxhdHRlciBpbXBsaWVzIHRoYXQgeW91IGNhbid0IGFzayB0aGlu
Z3MgbGlrZQorICAgIC8vIG5lZWRzRGVzdHJ1Y3Rpb24oKS4KICAgICBtX2NhcGFjaXR5ICs9IE1h
cmtlZEJsb2NrOjpibG9ja1NpemU7CiAgICAgbV9ibG9ja3MuYWRkKCZibG9jay0+YmxvY2soKSk7
CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6
SGFuZGxlKiBibG9jaykKIHsKLSAgICBibG9jay0+YXNzZXJ0RmxpcHBlZCgpOwotICAgIG1fYmxv
Y2tzV2l0aE5ld09iamVjdHMuYXBwZW5kKGJsb2NrKTsKLSAgICAKICAgICBpZiAoYmxvY2stPndl
YWtTZXQoKS5pc09uTGlzdCgpKSB7CiAgICAgICAgIGJsb2NrLT53ZWFrU2V0KCkucmVtb3ZlKCk7
CiAgICAgICAgIG1fbmV3QWN0aXZlV2Vha1NldHMuYXBwZW5kKCZibG9jay0+d2Vha1NldCgpKTsK
ICAgICB9CiB9CiAKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZFNwYWNlOjpmaW5kRW1wdHlC
bG9jaygpCit7CisgICAgZm9yICg7IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyBtX2Fs
bG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9u
LT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrID0gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPmZpbmRFbXB0eUJsb2NrKCkpCisg
ICAgICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQor
Cit2b2lkIE1hcmtlZFNwYWNlOjpzbmFwc2hvdFVuc3dlcHQoKQoreworICAgIGlmIChtX2hlYXAt
Pm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgeworICAgICAgICBmb3JF
YWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
cikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNo
b3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRv
ciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9j
YXRvci5zbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbigpOworICAgICAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgfSk7CisgICAg
fQorfQorCit2b2lkIE1hcmtlZFNwYWNlOjphc3NlcnROb1Vuc3dlcHQoKQoreworICAgIGlmIChB
U1NFUlRfRElTQUJMRUQpCisgICAgICAgIHJldHVybjsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAor
ICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0
dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLmFzc2VydE5vVW5zd2VwdCgpOworICAgICAgICAg
ICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworfQorCit2
b2lkIE1hcmtlZFNwYWNlOjpkdW1wQml0cyhQcmludFN0cmVhbSYgb3V0KQoreworICAgIGZvckVh
Y2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+
IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBvdXQucHJpbnQoIkJpdHMgZm9yICIsIGFs
bG9jYXRvciwgIjpcbiIpOworICAgICAgICAgICAgYWxsb2NhdG9yLmR1bXBCaXRzKG91dCk7Cisg
ICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSwxNiBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG51bVNpemVDbGFzc2VzID0gbGFyZ2VD
dXRvZmYgLyBzaXplU3RlcDsKICAgICAKLSAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5p
dGlhbFZlcnNpb24gPSA0MjsgIC8vIFRoaXMgY2FuIGJlIGFueSB2YWx1ZSwgaW5jbHVkaW5nIHJh
bmRvbSBnYXJiYWdlLCBzbyBsb25nIGFzIGl0J3MgY29uc2lzdGVudCBmb3IgdGhlIGxpZmV0aW1l
IG9mIHRoZSBwcm9jZXNzLgorICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBudWxsVmVyc2lv
biA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9mIGZyZXNobHkgYWxsb2NhdGVkIGJsb2Nrcy4KKyAgICBz
dGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAxOyAvLyBUaGUgdmVyc2lv
biB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4KKyAgICAKKyAgICBIZWFwVmVyc2lvbiBu
ZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQorICAgIHsKKyAgICAgICAgdmVyc2lvbisr
OworICAgICAgICBpZiAodmVyc2lvbiA9PSBudWxsVmVyc2lvbikKKyAgICAgICAgICAgIHZlcnNp
b24rKzsKKyAgICAgICAgcmV0dXJuIHZlcnNpb247CisgICAgfQogICAgIAogICAgIHN0YXRpYyBz
aXplX3Qgc2l6ZUNsYXNzVG9JbmRleChzaXplX3Qgc2l6ZSkKICAgICB7CkBAIC0xMTQsNyArMTIz
LDcgQEAgcHVibGljOgogICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRob3V0RGVz
dHJ1Y3RvcigpIHsgcmV0dXJuIG1fbm9ybWFsU3BhY2U7IH0KICAgICBTdWJzcGFjZSYgc3Vic3Bh
Y2VGb3JBdXhpbGlhcnlEYXRhKCkgeyByZXR1cm4gbV9hdXhpbGlhcnlTcGFjZTsgfQogICAgIAot
ICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CisgICAgdm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlv
bigpOwogCiAgICAgdm9pZCB2aXNpdFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYpOwogICAgIHZv
aWQgcmVhcFdlYWtTZXRzKCk7CkBAIC0xNDQsMTEgKzE1MywxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIHZvaWQgZGlk
QWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKIAotICAgIHZvaWQgZmxpcCgp
OworICAgIHZvaWQgYmVnaW5NYXJraW5nKCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAg
dm9pZCBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsK
ICAgICB2b2lkIHN3ZWVwKCk7CiAgICAgdm9pZCBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKTsKLSAg
ICB2b2lkIHpvbWJpZnlTd2VlcCgpOworICAgIHZvaWQgYXNzZXJ0Tm9VbnN3ZXB0KCk7CiAgICAg
c2l6ZV90IG9iamVjdENvdW50KCk7CiAgICAgc2l6ZV90IHNpemUoKTsKICAgICBzaXplX3QgY2Fw
YWNpdHkoKTsKQEAgLTE1Nyw4ICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgSGVhcFZlcnNp
b24gdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogCi0gICAgY29uc3QgVmVj
dG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tzV2l0aE5ld09iamVjdHMoKSBjb25zdCB7
IHJldHVybiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOyB9Ci0gICAgCiAgICAgY29uc3QgVmVjdG9y
PExhcmdlQWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9s
YXJnZUFsbG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OyB9
CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247
IH0KQEAgLTE2OSwxMyArMTc4LDE2IEBAIHB1YmxpYzoKICAgICBMYXJnZUFsbG9jYXRpb24qKiBs
YXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX2xh
cmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZDsgfQogICAgIHVuc2lnbmVkIGxhcmdl
QWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUoKSBjb25zdCB7IHJldHVybiBtX2xhcmdl
QWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemU7IH0KICAgICAKKyAgICBNYXJrZWRBbGxv
Y2F0b3IqIGZpcnN0QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdEFsbG9jYXRvcjsg
fQorICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IH0KKyAgICAKKyAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9jaygpOworICAgIAogICAgIC8vIFdoZW4g
dGhpcyBpcyB0cnVlIGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSBmbGlwcGVkIGJ1dCB0aGUgbWFyayBi
aXRzIGhhdmVuJ3QgY29udmVyZ2VkIHlldC4KICAgICBib29sIGlzTWFya2luZygpIGNvbnN0IHsg
cmV0dXJuIG1faXNNYXJraW5nOyB9CiAgICAgCi0gICAgLy8gRklYTUU6IEFmdGVyIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1ODEsIE1hcmtlZFNwYWNlIHdpbGwg
Y29udHJvbCB0aGlzCi0gICAgLy8gZmxhZyBkaXJlY3RseS4KLSAgICB2b2lkIHNldElzTWFya2lu
Zyhib29sIHZhbHVlKSB7IG1faXNNYXJraW5nID0gdmFsdWU7IH0KLQorICAgIHZvaWQgZHVtcEJp
dHMoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgSklU
OwpAQCAtMTkwLDggKzIwMiw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXpl
U3Vic3BhY2UoU3Vic3BhY2UmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgZm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29u
c3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lk
IGZvckVhY2hTdWJzcGFjZShjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBhZGRBY3Rp
dmVXZWFrU2V0KFdlYWtTZXQqKTsKIApAQCAtMjA1LDcgKzIxNyw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9OwogICAg
IE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxl
Kj4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsKICAgICBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4g
bV9sYXJnZUFsbG9jYXRpb25zOwogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNl
cnlPZmZzZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9y
VGhpc0NvbGxlY3Rpb24geyAwIH07CkBAIC0yMTUsNDAgKzIyNiwxMSBAQCBwcml2YXRlOgogICAg
IHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSB7IDAgfTsK
ICAgICBTZW50aW5lbExpbmtlZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vh
a1NldD4+IG1fYWN0aXZlV2Vha1NldHM7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQs
IEJhc2ljUmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX25ld0FjdGl2ZVdlYWtTZXRzOworICAg
IAorICAgIE1hcmtlZEFsbG9jYXRvciogbV9maXJzdEFsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAg
ICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0
ciB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2Vk
U3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQotewotICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKLSAgICBCbG9ja0l0ZXJh
dG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBp
dCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBp
ZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25T
dGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoTGFyZ2VB
bGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7Ci0gICAgICAgIGlm
IChhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2Nh
dGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJh
dGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNw
YWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKLXsKLSAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRv
ciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQg
PSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYg
KCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKExhcmdlQWxs
b2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewotICAgICAgICBpZiAo
IWFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0
aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0
aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KLX0KLQogaW5saW5lIE1hcmtlZEFsbG9jYXRvciogTWFya2VkU3BhY2U6OmFsbG9jYXRvckZv
cihTdWJzcGFjZSYgc3BhY2UsIHNpemVfdCBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwpA
QCAtMzA0LDE1ICsyODYsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2
b2lkIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIE1hcmtlZFNwYWNlOjpmb3JF
YWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgZm9yRWFjaFN1YnNw
YWNlKAotICAgICAgICBbJl0gKFN1YnNwYWNlJiBzdWJzcGFjZSwgQWxsb2NhdG9yQXR0cmlidXRl
cykgLT4gSXRlcmF0aW9uU3RhdHVzIHsKLSAgICAgICAgICAgIGZvciAoTWFya2VkQWxsb2NhdG9y
KiBhbGxvY2F0b3IgOiBzdWJzcGFjZS5iYWdPZkFsbG9jYXRvcnMpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoZnVuY3RvcigqYWxsb2NhdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOwotICAgICAgICB9KTsKKyAgICBmb3IgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
ID0gbV9maXJzdEFsbG9jYXRvcjsgYWxsb2NhdG9yOyBhbGxvY2F0b3IgPSBhbGxvY2F0b3ItPm5l
eHRBbGxvY2F0b3IoKSkgeworICAgICAgICBpZiAoZnVuY3RvcigqYWxsb2NhdG9yKSA9PSBJdGVy
YXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2luY2x1
ZGUgIk1hcmtlZFNwYWNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJ
dGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgQVNTRVJUKGlz
SXRlcmF0aW5nKCkpOworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5k
KCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaExp
dmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xh
cmdlQWxsb2NhdGlvbnMpIHsKKyAgICAgICAgaWYgKGFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0
dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbChIZWFwSXRl
cmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEFTU0VSVChpc0l0
ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgp
OworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hEZWFk
Q2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJn
ZUFsbG9jYXRpb25zKSB7CisgICAgICAgIGlmICghYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKKyAg
ICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0
cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2
aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6
c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogICAgIHZhbGlkYXRlKGNlbGwpOwogI2VuZGlmCiAgICAg
CisgICAgLy9kYXRhTG9nKCIgICAgTWFya2luZyAiLCBSYXdQb2ludGVyKGNlbGwpLCAiXG4iKTsK
KyAgICAKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgc2V0TWFy
a2VkQW5kQXBwZW5kVG9NYXJrU3RhY2soY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCksIGNlbGwpOwog
ICAgIGVsc2UKQEAgLTE5OCw3ICsyMDAsNyBAQCB2b2lkIFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRB
bmRBcHBlbmRUb01hCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXJUeXBlPgogQUxXQVlTX0lO
TElORSB2b2lkIFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRBbmRBcHBlbmRUb01hcmtTdGFjayhDb250
YWluZXJUeXBlJiBjb250YWluZXIsIEpTQ2VsbCogY2VsbCkKIHsKLSAgICBjb250YWluZXIuZmxp
cElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhtX3ZlcnNpb24pOworICAgIGNvbnRhaW5lci5hYm91
dFRvTWFyayhtX3ZlcnNpb24pOwogICAgIAogICAgIGlmIChjb250YWluZXIudGVzdEFuZFNldE1h
cmtlZChjZWxsKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ2LDEwICsyNDgsOCBAQCB2b2lkIFNs
b3RWaXNpdG9yOjptYXJrQXV4aWxpYXJ5KGNvbnN0IHZvCiAgICAgCiAgICAgQVNTRVJUKGNlbGwt
PmhlYXAoKSA9PSBoZWFwKCkpOwogICAgIAotICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2Vk
KG1fdmVyc2lvbiwgY2VsbCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoSGVhcDo6aXNNYXJr
ZWRDb25jdXJyZW50bHkoY2VsbCkpOworICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1f
dmVyc2lvbiwgY2VsbCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgCiAgICAgbm90ZUxp
dmVBdXhpbGlhcnlDZWxsKGNlbGwpOwogfQpAQCAtMjk0LDYgKzI5NCw4IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGkKIHsKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJr
ZWRDb25jdXJyZW50bHkoY2VsbCkpOwogICAgIAorICAgIC8vZGF0YUxvZygiVmlzaXRpbmcgIiwg
UmF3UG9pbnRlcihjZWxsKSwgIlxuIik7CisKICAgICBTZXRDdXJyZW50Q2VsbFNjb3BlIGN1cnJl
bnRDZWxsU2NvcGUoKnRoaXMsIGNlbGwpOwogICAgIAogICAgIG1fY3VycmVudE9iamVjdENlbGxT
dGF0ZUJlZm9yZVZpc2l0aW5nID0gY2VsbC0+Y2VsbFN0YXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vhay5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9XZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4
LDcgKzI4LDkgQEAKIAogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSA8Y3N0
ZGRlZj4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3JUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTUxLDMzICs1MywzMyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFdlYWso
VCosIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CisgICAgaW5saW5l
IFdlYWsoVCosIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CiAKICAg
ICBlbnVtIEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9
OwotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKLSAgICBXZWFrKEhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7CisgICAgaW5saW5lIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdDsKKyAgICBpbmxpbmUgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVU
YWcpOwogCi0gICAgV2VhayhXZWFrJiYpOworICAgIGlubGluZSBXZWFrKFdlYWsmJik7CiAKICAg
ICB+V2VhaygpCiAgICAgewogICAgICAgICBjbGVhcigpOwogICAgIH0KIAotICAgIHZvaWQgc3dh
cChXZWFrJik7CisgICAgaW5saW5lIHZvaWQgc3dhcChXZWFrJik7CiAKLSAgICBXZWFrJiBvcGVy
YXRvcj0oV2VhayYmKTsKKyAgICBpbmxpbmUgV2VhayYgb3BlcmF0b3I9KFdlYWsmJik7CiAKLSAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwotICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdDsKLSAg
ICBUJiBvcGVyYXRvciooKSBjb25zdDsKLSAgICBUKiBnZXQoKSBjb25zdDsKKyAgICBpbmxpbmUg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBpbmxpbmUgVCogb3BlcmF0b3ItPigpIGNvbnN0
OworICAgIGlubGluZSBUJiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBpbmxpbmUgVCogZ2V0KCkg
Y29uc3Q7CiAKLSAgICBib29sIHdhcyhUKikgY29uc3Q7CisgICAgaW5saW5lIGJvb2wgd2FzKFQq
KSBjb25zdDsKIAotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKKyAgICBpbmxp
bmUgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogCi0gICAgV2Vha0ltcGwqIGxlYWtJ
bXBsKCkgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIGlubGluZSBXZWFrSW1wbCogbGVha0ltcGwo
KSBXQVJOX1VOVVNFRF9SRVRVUk47CiAgICAgdm9pZCBjbGVhcigpCiAgICAgewogICAgICAgICBp
ZiAoIW1faW1wbCkKQEAgLTg2LDExICs4OCwzMCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJp
dmF0ZToKLSAgICBzdGF0aWMgV2Vha0ltcGwqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAg
IHN0YXRpYyBpbmxpbmUgV2Vha0ltcGwqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwogCiAgICAg
V2Vha0ltcGwqIG1faW1wbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZlY3RvclRyYWl0czxKU0M6Oldl
YWs8VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeworICAgIHN0YXRpYyBjb25zdCBib29s
IGNhbkNvbXBhcmVXaXRoTWVtY21wID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRz
PEpTQzo6V2VhazxUPj4geworICAgIHR5cGVkZWYgSlNDOjpXZWFrPFQ+IFN0b3JhZ2VUeXBlOwor
CisgICAgdHlwZWRlZiBzdGQ6Om51bGxwdHJfdCBFbXB0eVZhbHVlVHlwZTsKKyAgICBzdGF0aWMg
RW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHR5
cGVkZWYgVCogUGVla1R5cGU7CisgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgU3RvcmFn
ZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5nZXQoKTsgfQorICAgIHN0YXRpYyBQZWVrVHlw
ZSBwZWVrKEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQZWVrVHlwZSgpOyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIFdlYWtfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdm9pZCBXZWFrQmxvY2s6OnNwZWNpYWxpemVkVmlzaXQoQ29udGFpbgogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgY29uc3QgSlNWYWx1ZSYganNWYWx1ZSA9IHdlYWtJ
bXBsLT5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChjb250YWluZXIuaXNNYXJrZWREdXJpbmdXZWFr
VmlzaXRpbmcodmVyc2lvbiwganNWYWx1ZS5hc0NlbGwoKSkpCisgICAgICAgIGlmIChjb250YWlu
ZXIuaXNNYXJrZWRDb25jdXJyZW50bHkodmVyc2lvbiwganNWYWx1ZS5hc0NlbGwoKSkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIGlmICghd2Vha0hhbmRsZU93bmVy
LT5pc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5kbGU8VW5rbm93bj46OndyYXBTbG90KCZj
b25zdF9jYXN0PEpTVmFsdWUmPihqc1ZhbHVlKSksIHdlYWtJbXBsLT5jb250ZXh0KCksIHZpc2l0
b3IpKQpAQCAtMTQ3LDE3ICsxNDcsMTQgQEAgdm9pZCBXZWFrQmxvY2s6OnJlYXAoKQogICAgIC8v
IElmIHRoaXMgV2Vha0Jsb2NrIGRvZXNuJ3QgYmVsb25nIHRvIGEgQ2VsbENvbnRhaW5lciwgd2Ug
d29uJ3QgZXZlbiBiZSBoZXJlLgogICAgIEFTU0VSVChtX2NvbnRhaW5lcik7CiAgICAgCi0gICAg
bV9jb250YWluZXIuZmxpcElmTmVjZXNzYXJ5KCk7Ci0KLSAgICAvLyBXZSBvbmx5IHJlYXAgYWZ0
ZXIgbWFya2luZy4KLSAgICBBU1NFUlQobV9jb250YWluZXIuaXNNYXJrZWQoKSk7CisgICAgSGVh
cFZlcnNpb24gdmVyc2lvbiA9IG1fY29udGFpbmVyLmhlYXAoKS0+b2JqZWN0U3BhY2UoKS52ZXJz
aW9uKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYWtJbXBsQ291bnQoKTsgKytp
KSB7CiAgICAgICAgIFdlYWtJbXBsKiB3ZWFrSW1wbCA9ICZ3ZWFrSW1wbHMoKVtpXTsKICAgICAg
ICAgaWYgKHdlYWtJbXBsLT5zdGF0ZSgpID4gV2Vha0ltcGw6OkRlYWQpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBpZiAobV9jb250YWluZXIuaXNNYXJrZWQod2Vha0ltcGwtPmpz
VmFsdWUoKS5hc0NlbGwoKSkpIHsKKyAgICAgICAgaWYgKG1fY29udGFpbmVyLmlzTWFya2VkKHZl
cnNpb24sIHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBBU1NF
UlQod2Vha0ltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lu
bGluZXMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ5LDIzICsxNDgsNCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xlCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi1u
YW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZlY3RvclRyYWl0
czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgIHN0YXRpYyBj
b25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gewotICAgIHR5cGVkZWYgSlNDOjpXZWFrPFQ+IFN0b3Jh
Z2VUeXBlOwotCi0gICAgdHlwZWRlZiBzdGQ6Om51bGxwdHJfdCBFbXB0eVZhbHVlVHlwZTsKLSAg
ICBzdGF0aWMgRW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LQotICAgIHR5cGVkZWYgVCogUGVla1R5cGU7Ci0gICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29u
c3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5nZXQoKTsgfQotICAgIHN0YXRp
YyBQZWVrVHlwZSBwZWVrKEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQZWVrVHlwZSgpOyB9Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQogI2VuZGlmIC8vIFdlYWtJbmxpbmVzX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJX
ZWFrLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgiCi0jaW5jbHVkZSAiV2Vha0lubGlu
ZXMuaCIKICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAKICNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk1hcEl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiTWFwUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aE9iamVj
dC5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgogI2luY2x1ZGUgIk1vZHVsZUxvYWRlclByb3Rv
dHlwZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJQcm90b3R5cGVNYXBJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUHJveHlPYmplY3QuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiUHJvdG90eXBlTWFwSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjA2MDMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODcsNiArMTg3LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7
CiAgICAgdih1bnNpZ25lZCwgbGFyZ2VBbGxvY2F0aW9uQ3V0b2ZmLCAxMDAwMDAsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYoYm9vbCwgZHVtcFNpemVDbGFzc2VzLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihib29sLCB1c2VCdW1wQWxsb2NhdG9yLCB0cnVlLCBOb3JtYWwsIG51
bGxwdHIpIFwKKyAgICB2KGJvb2wsIGxvb2tGb3JFbXB0eUJsb2Nrc0luT3RoZXJBbGxvY2F0b3Jz
LCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGVhZ2VybHlVcGRhdGVUb3BD
YWxsRnJhbWUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdihib29sLCB1
c2VPU1JFbnRyeVRvREZHLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTMwMiw3ICszMDMs
NiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KHVuc2lnbmVkLCBu
dW1iZXJPZkdDTWFya2VycywgY29tcHV0ZU51bWJlck9mR0NNYXJrZXJzKDcpLCBOb3JtYWwsIG51
bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQsIDEwMDAs
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoZG91YmxlLCBtaW5IZWFwVXRpbGl6YXRpb24sIDAu
OCwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihkb3VibGUsIG1pbkNvcGllZEJsb2NrVXRpbGl6
YXRpb24sIDAuOSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihkb3VibGUsIG1pbk1hcmtlZEJs
b2NrVXRpbGl6YXRpb24sIDAuOSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwg
c2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzLCAwLCBOb3JtYWwsICJmb3JjZSBhIEdDIG9uIGV2ZXJ5
IE50aCBzbG93IHBhdGggYWxsb2MsIHdoZXJlIE4gaXMgc3BlY2lmaWVkIGJ5IHRoaXMgb3B0aW9u
IikgXAogICAgIHYoYm9vbCwgZGVmZXJHQ1Nob3VsZENvbGxlY3RXaXRoUHJvYmFiaWxpdHksIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSBwZXJmb3JtIGEgY29sbGVjdGlvbiBiYXNlZCBvbiBm
bGlwcGluZyBhIGNvaW4gYWNjb3JkaW5nIHRoZSBwcm9iYWJpbGl0eSBpbiB0aGUgJ2RlZmVyR0NQ
cm9iYWJpbGl0eScgb3B0aW9uIHdoZW4gRGVmZXJHQyBpcyBkZXN0cnVjdGVkLiIpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAkocmV2
aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBl
TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkluZGV4
aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIlByb3RvdHlwZU1hcElubGluZXMuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1h
cC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90b3R5cGVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBQ
cm90b3R5cGVNYXBfaAogI2RlZmluZSBQcm90b3R5cGVNYXBfaAogCisjaW5jbHVkZSAiSW5kZXhp
bmdUeXBlLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIldlYWtHQ01hcC5o
IgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGVtcHR5U3RydWN0dXJlRm9yUHJvdG90
eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoSlNPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGNs
ZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqLCB1bnNpZ25lZCBp
bmxpbmVDYXBhY2l0eSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRQcm90b3R5cGUo
SlNPYmplY3QqKTsKLSAgICBUcmlTdGF0ZSBpc1Byb3RvdHlwZShKU09iamVjdCopIGNvbnN0OyAv
LyBSZXR1cm5zIGEgY29uc2VydmF0aXZlIGVzdGltYXRlLgorICAgIGlubGluZSBUcmlTdGF0ZSBp
c1Byb3RvdHlwZShKU09iamVjdCopIGNvbnN0OyAvLyBSZXR1cm5zIGEgY29uc2VydmF0aXZlIGVz
dGltYXRlLgogCiBwcml2YXRlOgogICAgIFN0cnVjdHVyZSogY3JlYXRlRW1wdHlTdHJ1Y3R1cmUo
SlNPYmplY3QqIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJ
bmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKQEAgLTU4LDE4ICs2MCw2IEBA
IHByaXZhdGU6CiAgICAgU3RydWN0dXJlTWFwIG1fc3RydWN0dXJlczsKIH07CiAKLWlubGluZSBU
cmlTdGF0ZSBQcm90b3R5cGVNYXA6OmlzUHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX3Byb3RvdHlwZXMuY29udGFpbnMob2JqZWN0KSkKLSAgICAgICAgcmV0
dXJuIEZhbHNlVHJpU3RhdGU7Ci0KLSAgICAvLyBXZSBrbm93IHRoYXQgJ29iamVjdCcgd2FzIHVz
ZWQgYXMgYSBwcm90b3R5cGUgYXQgb25lIHRpbWUsIHNvIGJlCi0gICAgLy8gY29uc2VydmF0aXZl
IGFuZCBzYXkgdGhhdCBpdCBtaWdodCBzdGlsbCBiZSBzby4gKEl0IHdvdWxkIGJlIGV4cGVuc2l2
ZQotICAgIC8vIHRvIGZpbmQgb3V0IGZvciBzdXJlLCBhbmQgd2UgZG9uJ3Qga25vdyBvZiBhbnkg
Y2FzZXMgd2hlcmUgYmVpbmcgcHJlY2lzZQotICAgIC8vIHdvdWxkIGltcHJvdmUgcGVyZm9ybWFu
Y2UuKQotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIFByb3RvdHlwZU1hcF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm90b3R5cGVNYXBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5saW5lcy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcElubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJvdG90eXBlTWFw
LmgiCisjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
aW5saW5lIFRyaVN0YXRlIFByb3RvdHlwZU1hcDo6aXNQcm90b3R5cGUoSlNPYmplY3QqIG9iamVj
dCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJvdG90eXBlcy5jb250YWlucyhvYmplY3QpKQorICAg
ICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKworICAgIC8vIFdlIGtub3cgdGhhdCAnb2JqZWN0
JyB3YXMgdXNlZCBhcyBhIHByb3RvdHlwZSBhdCBvbmUgdGltZSwgc28gYmUKKyAgICAvLyBjb25z
ZXJ2YXRpdmUgYW5kIHNheSB0aGF0IGl0IG1pZ2h0IHN0aWxsIGJlIHNvLiAoSXQgd291bGQgYmUg
ZXhwZW5zaXZlCisgICAgLy8gdG8gZmluZCBvdXQgZm9yIHN1cmUsIGFuZCB3ZSBkb24ndCBrbm93
IG9mIGFueSBjYXNlcyB3aGVyZSBiZWluZyBwcmVjaXNlCisgICAgLy8gd291bGQgaW1wcm92ZSBw
ZXJmb3JtYW5jZS4pCisgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNo
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENh
Y2hlLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJSZWdFeHBLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJXZWFrLmgiCi0j
aW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGlu
Z1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCiAjaW5jbHVkZSAiTWFy
a2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlBDVG9Db2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVk
ZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFdlYWtHQ01hcF9oCiAK
ICNpbmNsdWRlICJXZWFrLmgiCi0jaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgxLDE5ICs4MCw5IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGl0ZXJhdG9yIGZpbmQoY29u
c3QgS2V5VHlwZSYga2V5KQotICAgIHsKLSAgICAgICAgaXRlcmF0b3IgaXQgPSBtX21hcC5maW5k
KGtleSk7Ci0gICAgICAgIGl0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOwotICAgICAgICBpZiAo
aXQgIT0gZW5kICYmICFpdC0+dmFsdWUpIC8vIEZvdW5kIGEgem9tYmllIHZhbHVlLgotICAgICAg
ICAgICAgcmV0dXJuIGVuZDsKLSAgICAgICAgcmV0dXJuIGl0OwotICAgIH0KKyAgICBpbmxpbmUg
aXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpOwogCi0gICAgY29uc3RfaXRlcmF0b3Ig
ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29u
c3RfY2FzdDxXZWFrR0NNYXAqPih0aGlzKS0+ZmluZChrZXkpOwotICAgIH0KKyAgICBpbmxpbmUg
Y29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0OwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckVhY2goRnVuY3RvciBmdW5jdG9y
KQpAQCAtMTA0LDEyICs5Myw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJv
b2wgY29udGFpbnMoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZpbmQoa2V5KSAhPSBtX21hcC5lbmQoKTsKLSAgICB9CisgICAgaW5saW5lIGJvb2wgY29u
dGFpbnMoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdDsKIAotICAgIHZvaWQgcHJ1bmVTdGFsZUVu
dHJpZXMoKTsKKyAgICBpbmxpbmUgdm9pZCBwcnVuZVN0YWxlRW50cmllcygpOwogCiBwcml2YXRl
OgogICAgIEhhc2hNYXBUeXBlIG1fbWFwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
V2Vha0dDTWFwLmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTQ3LDYgKzQ4LDI4IEBAIGlubGluZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywg
SGFzaEEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywg
dHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIHR5cGVuYW1l
IFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjppdGVy
YXRvciBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6
ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpCit7CisgICAgaXRlcmF0b3IgaXQgPSBtX21hcC5maW5k
KGtleSk7CisgICAgaXRlcmF0b3IgZW5kID0gbV9tYXAuZW5kKCk7CisgICAgaWYgKGl0ICE9IGVu
ZCAmJiAhaXQtPnZhbHVlKSAvLyBGb3VuZCBhIHpvbWJpZSB2YWx1ZS4KKyAgICAgICAgcmV0dXJu
IGVuZDsKKyAgICByZXR1cm4gaXQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlw
ZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4K
K2lubGluZSB0eXBlbmFtZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5
VHJhaXRzQXJnPjo6Y29uc3RfaXRlcmF0b3IgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhh
c2hBcmcsIEtleVRyYWl0c0FyZz46OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAorewor
ICAgIHJldHVybiBjb25zdF9jYXN0PFdlYWtHQ01hcCo+KHRoaXMpLT5maW5kKGtleSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhh
c2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KK2lubGluZSBib29sIFdlYWtHQ01hcDxLZXlB
cmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+Ojpjb250YWlucyhjb25zdCBLZXlU
eXBlJiBrZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBtX21hcC5lbmQoKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgogTkVWRVJfSU5MSU5FIHZvaWQgV2Vh
a0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46OnBydW5lU3Rh
bGVFbnRyaWVzKCkKIHsKICAgICBtX21hcC5yZW1vdmVJZihbXSh0eXBlbmFtZSBIYXNoTWFwVHlw
ZTo6S2V5VmFsdWVQYWlyVHlwZSYgZW50cnkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNjAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRp
b25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNp
dG9yLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA5LTE2ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0
ZSB0cmFja2luZyBzdXBwb3J0IG92ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBUaGUgbWFpbiBjaGFuZ2UgaGVyZSBpcyB0byBicmluZyBiYWNrIEZhc3RCaXRWZWN0b3IuY3Bw
LCBzbyB0aGF0IEkgY291bGQgb3V0bGluZSBzb21lCisgICAgICAgIGxhcmdlIHNsb3cgcGF0aCBm
dW5jdGlvbnMuIFRoaXMgYWxzbyBhZGRzIHNvbWUgdXRpbGl0aWVzLCBsaWtlIGF0b21pY1NldEFu
ZENoZWNrKCkgYW5kCisgICAgICAgIGlzRW1wdHkoKS4gVGhlIEdDIHVzZXMgdGhlc2UuCisKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6c2V0RXF1YWxzU2xvdyk6CisgICAg
ICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZVNsb3cpOgorICAgICAgICAq
IHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3du
ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJl
c2l6ZSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjppc0VtcHR5KToKKyAgICAg
ICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6YXRvbWljU2V0QW5kQ2hlY2spOgorICAgICAgICAoV1RG
OjpGYXN0Qml0VmVjdG9yOjpvcGVyYXRvcltdKTogRGVsZXRlZC4KKwogMjAxNi0wOS0xNiAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBpc1ZhbGlk
RW51bSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgR0NDCkluZGV4OiBTb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAkJMEY0NTcwNDMxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQyMUJF
NUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi87IH07CiAJCTBGNDU3MDQ1MUJFODM0NDEw
MDYyQTYyOSAvKiBCdWJibGVTb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICov
OyB9OwogCQkwRjcyNUNBQzFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzI1Q0FCMUM1MDQ2MTYwMEFE
OTQzQSAvKiBSYW5nZVNldC5oICovOyB9OworCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyog
RmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi87
IH07CiAJCTBGODI0QTY4MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY0MUI3NDQzQTAw
MDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLzsgfTsKIAkJMEY4MjRBNjkxQjc0NDNBMDAwMkUz
NDVEIC8qIFBhcmtpbmdMb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi87IH07
CiAJCTBGODcxMDVBMTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTA1OTE2NjQzRjE5MDA5MEIw
QUQgLyogUmF3UG9pbnRlci5oICovOyB9OwpAQCAtMzY2LDYgKzM2Nyw3IEBACiAJCTBGNDU3MDQy
MUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERvbWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0
NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnViYmxlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5n
TG90LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmtpbmdMb3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0
NUQgLyogUGFya2luZ0xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJr
aW5nTG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODcxMDU5MTY2NDNGMTkw
MDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJhd1BvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4MCw2ICs4ODIs
NyBAQAogCQkJCUE4QTQ3Mjk4MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9hLmggKi8sCiAJCQkJMUFF
QTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1UcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5RjE1
MUE4MjVBMDA0MTIzRkYgLyogRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJMEY3QzVGQjUxRDg4NUNG
MjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovLAogCQkJCTBGRDgxQUM0MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8sCiAJCQkJQThBNDcyQTExNTFBODI1QTAwNDEy
M0ZGIC8qIEZhc3RNYWxsb2MuY3BwICovLAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAv
KiBGYXN0TWFsbG9jLmggKi8sCkBAIC0xNTk0LDYgKzE1OTcsNyBAQAogCQkJCUNENTQ5N0FDMTU4
NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDcz
RUMxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjcxNTFBODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2Nh
dG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZG
IC8qIE9TUmFuZG9tU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDAyMTUxQTgy
NUIwMDQxMjNGRiAvKiBQYWdlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBzZXQoV1RGX1NPVVJDRVMK
ICAgICBEYXRhTG9nLmNwcAogICAgIERhdGVNYXRoLmNwcAogICAgIERlY2ltYWxOdW1iZXIuY3Bw
CisgICAgRmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZpbGVQcmlu
dFN0cmVhbS5jcHAKICAgICBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJGYXN0Qml0VmVjdG9yLmgiCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIEZhc3RCaXRW
ZWN0b3JXb3JkT3duZXI6OnNldEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25l
ciYgb3RoZXIpCit7CisgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMy
X3QqPigKKyAgICAgICAgZmFzdENhbGxvYyhvdGhlci5hcnJheUxlbmd0aCgpLCBzaXplb2YodWlu
dDMyX3QpKSk7CisgICAgbWVtY3B5KG5ld0FycmF5LCBvdGhlci5tX3dvcmRzLCBvdGhlci5hcnJh
eUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgaWYgKG1fd29yZHMpCisgICAgICAg
IGZhc3RGcmVlKG1fd29yZHMpOworICAgIG1fd29yZHMgPSBuZXdBcnJheTsKKyAgICBtX251bUJp
dHMgPSBvdGhlci5tX251bUJpdHM7Cit9CisKK3ZvaWQgRmFzdEJpdFZlY3RvcldvcmRPd25lcjo6
cmVzaXplU2xvdyhzaXplX3QgbnVtQml0cykKK3sKKyAgICBzaXplX3QgbmV3TGVuZ3RoID0gZmFz
dEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpOworICAgIAorICAgIC8vIFVzZSBmYXN0Q2Fs
bG9jIGluc3RlYWQgb2YgZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBleHBlY3QgdGhlIGNvbW1vbgor
ICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNp
emUgb2YgdGhlIGJpdHZlY3Rvci4KKyAgICAKKyAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobmV3TGVuZ3RoLCBzaXplb2YodWludDMyX3Qp
KSk7CisgICAgbWVtY3B5KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9m
KHVpbnQzMl90KSk7CisgICAgaWYgKG1fd29yZHMpCisgICAgICAgIGZhc3RGcmVlKG1fd29yZHMp
OworICAgIG1fd29yZHMgPSBuZXdBcnJheTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XVEYv
d3RmL0Zhc3RCaXRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5o
PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtOTEsMTcgKzkyLDEyIEBAIHB1
YmxpYzoKICAgICAKICAgICBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvcGVyYXRvcj0oY29uc3Qg
RmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCiAgICAgewotICAgICAgICBzaXplX3QgbGVu
Z3RoID0gb3RoZXIuYXJyYXlMZW5ndGgoKTsKLSAgICAgICAgaWYgKGxlbmd0aCA9PSBhcnJheUxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICBtZW1jcHkobV93b3Jkcywgb3RoZXIubV93b3JkcywgbGVu
Z3RoICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
ICAgIGlmIChhcnJheUxlbmd0aCgpICE9IG90aGVyLmFycmF5TGVuZ3RoKCkpCisgICAgICAgICAg
ICBzZXRFcXVhbHNTbG93KG90aGVyKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1j
cHkobV93b3Jkcywgb3RoZXIubV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJf
dCkpOworICAgICAgICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwogICAgICAgICB9
Ci0gICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFz
dENhbGxvYyhsZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKLSAgICAgICAgbWVtY3B5KG5ld0Fy
cmF5LCBvdGhlci5tX3dvcmRzLCBsZW5ndGggKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAg
aWYgKG1fd29yZHMpCi0gICAgICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAgbV93
b3JkcyA9IG5ld0FycmF5OwotICAgICAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7CiAg
ICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAgICAgCkBAIC0xNDAsMTggKzEzNiw4IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIHJlc2l6ZShzaXplX3QgbnVtQml0cykKICAgICB7Ci0gICAg
ICAgIGlmIChudW1CaXRzID09IG1fbnVtQml0cykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCi0gICAgICAgIC8vIFVzZSBmYXN0Q2FsbG9jIGluc3RlYWQgb2YgZmFzdFJlYWxsb2MgYmVj
YXVzZSB3ZSBleHBlY3QgdGhlIGNvbW1vbgotICAgICAgICAvLyB1c2UgY2FzZSBmb3IgdGhpcyBt
ZXRob2QgdG8gYmUgaW5pdGlhbGl6aW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3IuCi0gICAg
ICAgIAotICAgICAgICBzaXplX3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3Ro
KG51bUJpdHMpOwotICAgICAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdCo+KGZhc3RDYWxsb2MobmV3TGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7Ci0gICAgICAg
IG1lbWNweShuZXdBcnJheSwgbV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJf
dCkpOwotICAgICAgICBpZiAobV93b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fd29yZHMp
OwotICAgICAgICBtX3dvcmRzID0gbmV3QXJyYXk7CisgICAgICAgIGlmIChhcnJheUxlbmd0aCgp
ICE9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKSkKKyAgICAgICAgICAgIHJlc2l6
ZVNsb3cobnVtQml0cyk7CiAgICAgICAgIG1fbnVtQml0cyA9IG51bUJpdHM7CiAgICAgfQogICAg
IApAQCAtMTcxLDYgKzE1Nyw5IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCogd29yZHMoKSB7IHJl
dHVybiBtX3dvcmRzOyB9CiAKIHByaXZhdGU6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0RXF1YWxzU2xvdyhjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzaXplU2xvdyhzaXplX3QgbnVtQml0cyk7CisgICAg
CiAgICAgdWludDMyX3QqIG1fd29yZHMgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fbnVtQml0
cyB7IDAgfTsKIH07CkBAIC0zMjAsNiArMzA5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gYXJyYXlMZW5ndGgoKTsgaW5kZXgtLTspIHsKKyAg
ICAgICAgICAgIGlmIChtX3dvcmRzLndvcmQoaW5kZXgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KICAgICBGYXN0Qml0VmVjdG9ySW1wbDxG
YXN0Qml0VmVjdG9yQW5kV29yZHM8dHlwZW5hbWUgV29yZHM6OlZpZXdUeXBlLCB0eXBlbmFtZSBP
dGhlcldvcmRzOjpWaWV3VHlwZT4+IG9wZXJhdG9yJihjb25zdCBGYXN0Qml0VmVjdG9ySW1wbDxP
dGhlcldvcmRzPiYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtMzgwLDcgKzM3OCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gd3JpdHRlbiB0aGlzIHdheSBzbyB0aGF0IGl0IHBlcmZvcm1zIHdlbGwg
cmVnYXJkbGVzcyBvZiB3aGV0aGVyIHZhbHVlIGlzIGEgY29uc3RhbnQuCiAgICAgICAgIHVpbnQz
Ml90IHNraXBWYWx1ZSA9IC0oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSBeIDEpOwogICAg
ICAgICAKLSAgICAgICAgc2l6ZV90IG51bVdvcmRzID0gbV93b3Jkcy5hcnJheUxlbmd0aCgpOwor
ICAgICAgICBzaXplX3QgbnVtV29yZHMgPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobV93b3Jk
cy5udW1CaXRzKCkpOwogICAgICAgICAKICAgICAgICAgc2l6ZV90IHdvcmRJbmRleCA9IHN0YXJ0
SW5kZXggLyAzMjsKICAgICAgICAgc2l6ZV90IHN0YXJ0SW5kZXhJbldvcmQgPSBzdGFydEluZGV4
IC0gd29yZEluZGV4ICogMzI7CkBAIC00NzEsNiArNDY5LDcgQEAgcHVibGljOgogICAgICAgICBt
X3dvcmRzLmNsZWFyQWxsKCk7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBj
b250ZW50cyBvZiB0aGlzIGJpdHZlY3RvciBjaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyV29yZHM+CiAgICAgYm9vbCBzZXRBbmRDaGVjayhjb25zdCBGYXN0Qml0VmVjdG9ySW1w
bDxPdGhlcldvcmRzPiYgb3RoZXIpCiAgICAgewpAQCAtNTUwLDYgKzU0OSwyOCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwogICAgIH0KKyAgICAKKyAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnRzIGNoYW5nZWQuCisgICAgQUxXQVlTX0lOTElORSBi
b29sIGF0b21pY1NldEFuZENoZWNrKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHVpbnQzMl90KiBwb2ludGVyID0gJm1fd29yZHMud29yZChpbmRleCA+PiA1KTsKKyAg
ICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKGluZGV4ICYgMzEpOworICAgICAgICBmb3IgKDs7
KSB7CisgICAgICAgICAgICB1aW50MzJfdCBvbGRWYWx1ZSA9ICpwb2ludGVyOworICAgICAgICAg
ICAgdWludDMyX3QgbmV3VmFsdWU7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICBpZiAob2xkVmFsdWUgJiBtYXNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSB8IG1hc2s7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghKG9sZFZhbHVlICYgbWFzaykp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBuZXdW
YWx1ZSA9IG9sZFZhbHVlICYgfm1hc2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
d2Vha0NvbXBhcmVBbmRTd2FwKHBvaW50ZXIsIG9sZFZhbHVlLCBuZXdWYWx1ZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmNwcAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkdDT2JzZXJ2
YXRpb24uaCIKIAogI2luY2x1ZGUgPGhlYXAvSGVhcElubGluZXMuaD4KKyNpbmNsdWRlIDxoZWFw
L1dlYWtJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MTAwKQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYt
MDktMTkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE1h
cmtlZEJsb2NrIHN0YXRlIHRyYWNraW5nIHN1cHBvcnQgb3ZlcmxhcHBlZCBhbGxvY2F0aW9uIGFu
ZCBtYXJraW5nIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjE1ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIFJlbW92ZSB0aGUgYWx3YXlzLXRyaWdnZXItY29weS1waGFzZSBjb25m
aWd1cmF0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKwog
MjAxNi0wOS0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQG5hdmVyY29ycC5jb20+CiAK
ICAgICAgICAgW0VGTF0gQnVtcCBlZmwgbGlicmFyeSB0byAxLjE4LjEKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cwkocmV2aXNpb24gMjA2MDMxKQorKysgVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtODY5LDEwICs4NjksNiBAQCBk
ZWYgcnVuRlRMRWFnZXJOb0NKSVRPU1JWYWxpZGF0aW9uCiAgICAgcnVuKCJmdGwtZWFnZXItbm8t
Y2ppdC1vc3ItdmFsaWRhdGlvbiIsICItLXZhbGlkYXRlRlRMT1NSRXhpdExpdmVuZXNzPXRydWUi
LCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TICsgRUFHRVJfT1BUSU9OUykpCiBlbmQK
IAotZGVmIHJ1bkFsd2F5c1RyaWdnZXJDb3B5UGhhc2UKLSAgICBydW4oImFsd2F5cy10cmlnZ2Vy
LWNvcHktcGhhc2UiLCAiLS1taW5IZWFwVXRpbGl6YXRpb249Mi4wIiwgIi0tbWluQ29waWVkQmxv
Y2tVdGlsaXphdGlvbj0yLjAiKQotZW5kCi0KIGRlZiBydW5Ob0NKSVROb0FTTwogICAgIHJ1bigi
bm8tY2ppdC1uby1hc28iLCAiLS11c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnM9
ZmFsc2UiLCAqTk9fQ0pJVF9PUFRJT05TKQogZW5kCkBAIC05MTAsNyArOTA2LDYgQEAgZGVmIGRl
ZmF1bHRSdW4KICAgICAgICAgZGVmYXVsdFF1aWNrUnVuCiAgICAgZWxzZQogICAgICAgICBydW5E
ZWZhdWx0Ci0gICAgICAgIHJ1bkFsd2F5c1RyaWdnZXJDb3B5UGhhc2UKICAgICAgICAgaWYgJGpp
dFRlc3RzCiAgICAgICAgICAgICBydW5Ob0xMSW50CiAgICAgICAgICAgICBydW5Ob0NKSVRWYWxp
ZGF0ZVBoYXNlcwpAQCAtOTM2LDcgKzkzMSw2IEBAIGRlZiBkZWZhdWx0Tm9Ob0xMSW50UnVuCiAg
ICAgICAgIGRlZmF1bHRRdWlja1J1bgogICAgIGVsc2UKICAgICAgICAgcnVuRGVmYXVsdAotICAg
ICAgICBydW5BbHdheXNUcmlnZ2VyQ29weVBoYXNlCiAgICAgICAgIGlmICRqaXRUZXN0cwogICAg
ICAgICAgICAgcnVuTm9DSklUVmFsaWRhdGVQaGFzZXMKICAgICAgICAgICAgIHJ1bkRGR0VhZ2Vy
CkBAIC05ODgsNyArOTgyLDYgQEAgZW5kCiAjIGJ5IGNvdW50aW5nIHJlY29tcGlsYXRpb25zLgog
ZGVmIGRlZmF1bHROb0VhZ2VyUnVuCiAgICAgcnVuRGVmYXVsdAotICAgIHJ1bkFsd2F5c1RyaWdn
ZXJDb3B5UGhhc2UKICAgICBpZiAkaml0VGVzdHMKICAgICAgICAgcnVuTm9MTEludAogICAgICAg
ICBydW5Ob0NKSVRWYWxpZGF0ZVBoYXNlcwpAQCAtMTAwMyw3ICs5OTYsNiBAQCBlbmQKIAogZGVm
IGRlZmF1bHROb1NhbXBsaW5nUHJvZmlsZXJSdW4KICAgICBydW5EZWZhdWx0Ci0gICAgcnVuQWx3
YXlzVHJpZ2dlckNvcHlQaGFzZQogICAgIGlmICRqaXRUZXN0cwogICAgICAgICBydW5Ob0xMSW50
CiAgICAgICAgIHJ1bk5vQ0pJVFZhbGlkYXRlUGhhc2VzCkBAIC0xMTQxLDcgKzExMzMsNiBAQCBl
bmQKIAogZGVmIHJ1bk1vZHVsZXMKICAgICBydW4oImRlZmF1bHQtbW9kdWxlcyIsICItbSIpCi0g
ICAgcnVuKCJhbHdheXMtdHJpZ2dlci1jb3B5LXBoYXNlLW1vZHVsZXMiLCAiLW0iLCAiLS1taW5I
ZWFwVXRpbGl6YXRpb249Mi4wIiwgIi0tbWluQ29waWVkQmxvY2tVdGlsaXphdGlvbj0yLjAiKQog
CiAgICAgaWYgISRqaXRUZXN0cwogICAgICAgICByZXR1cm4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>289239</attachid>
            <date>2016-09-19 10:49:40 -0700</date>
            <delta_ts>2016-09-19 17:32:37 -0700</delta_ts>
            <desc>performance</desc>
            <filename>report.txt</filename>
            <type>text/plain</type>
            <size>85877</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBMb25nU3BpZGVyLCBWOFNwaWRlciwgT2N0
YW5lLCBLcmFrZW4sIE1pY3JvYmVuY2htYXJrcywgQXNtQmVuY2gsIGFuZCBDb21wcmVzc2lvbkJl
bmNoIG9uIG11cmRlcmZhY2UgKE1hY0Jvb2tQcm8xMSw1KS4KClZNcyB0ZXN0ZWQ6CiJUaXBPZlRy
ZWUiIGF0IC9Wb2x1bWVzL0RhdGEvc2Vjb25kYXJ5L09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQvUmVs
ZWFzZS9qc2MgKHIyMDYwMzEpCiJUaGluZ3MiIGF0IC9Wb2x1bWVzL0RhdGEvcHJpbWFyeS9PcGVu
U291cmNlL1dlYktpdEJ1aWxkL1JlbGVhc2UvanNjIChyMjA2MDMxKQoKQ29sbGVjdGVkIDYgc2Ft
cGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDYgVk0gaW52b2NhdGlvbnMgcGVyIGJlbmNobWFy
ay4gRW1pdHRlZCBhIGNhbGwgdG8gZ2MoKSBiZXR3ZWVuIHNhbXBsZSBtZWFzdXJlbWVudHMuClVz
ZWQgMSBiZW5jaG1hcmsgaXRlcmF0aW9uIHBlciBWTSBpbnZvY2F0aW9uIGZvciB3YXJtLXVwLiBV
c2VkIHRoZSBqc2Mtc3BlY2lmaWMgcHJlY2lzZVRpbWUoKSBmdW5jdGlvbiB0byBnZXQgbWljcm9z
ZWNvbmQtbGV2ZWwKdGltaW5nLiBSZXBvcnRpbmcgYmVuY2htYXJrIGV4ZWN1dGlvbiB0aW1lcyB3
aXRoIDk1JSBjb25maWRlbmNlIGludGVydmFscyBpbiBtaWxsaXNlY29uZHMuCgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAg
ICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIApTdW5TcGlkZXI6CiAgIDNkLWN1YmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNzQwMystMC4wODIxICAgICA/ICAgICAgNC44NzA3Ky0wLjM4MDQgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjc1eCBzbG93ZXIKICAgM2QtbW9ycGggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42NjA0Ky0wLjA2NTggICAgID8gICAgICA0LjY4
NjkrLTAuMDgyOCAgICAgICAgPwogICAzZC1yYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjczNjQrLTAuMDU2NCAgICAgPyAgICAgIDQuODE4NCstMC4xOTIy
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3M3ggc2xvd2VyCiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTQyNSstMC4xNDI3ICAgICA/ICAgICAg
Mi4wNDk0Ky0wLjI1NTMgICAgICAgID8gbWlnaHQgYmUgMS4wNTUweCBzbG93ZXIKICAgYWNjZXNz
LWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4wODQ5Ky0wLjI1
NTAgICAgID8gICAgICA1LjMyMjgrLTAuMzQ1NSAgICAgICAgPyBtaWdodCBiZSAxLjA0Njh4IHNs
b3dlcgogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjI5ODIrLTAuMDU0NSAgICAgPyAgICAgIDIuMzQxMystMC4wNjY1ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE4OHggc2xvd2VyCiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMuMTkyNystMC4xNjk2ICAgICAgICAgICAgMy4wNzIwKy0wLjEwMTMg
ICAgICAgICAgbWlnaHQgYmUgMS4wMzkzeCBmYXN0ZXIKICAgYml0b3BzLTNiaXQtYml0cy1pbi1i
eXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wNjY5Ky0wLjA0MjkgICAgID8gICAgICAx
LjEwMzgrLTAuMDQ0MyAgICAgICAgPyBtaWdodCBiZSAxLjAzNDZ4IHNsb3dlcgogICBiaXRvcHMt
Yml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjU4NDArLTAuMTA5
OCAgICAgPyAgICAgIDIuNjE0NystMC4xNTkxICAgICAgICA/IG1pZ2h0IGJlIDEuMDExOXggc2xv
d2VyCiAgIGJpdG9wcy1iaXR3aXNlLWFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuMTIyNCstMC41NTI0ICAgICAgICAgICAgMS45Nzg4Ky0wLjE3MDMgICAgICAgICAgbWlnaHQg
YmUgMS4wNzI1eCBmYXN0ZXIKICAgYml0b3BzLW5zaWV2ZS1iaXRzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy4xNjA2Ky0wLjMzNTIgICAgICAgICAgICAyLjk2NTkrLTAuMDYxOCAg
ICAgICAgICBtaWdodCBiZSAxLjA2NTd4IGZhc3RlcgogICBjb250cm9sZmxvdy1yZWN1cnNpdmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjIxMjArLTAuMDIyMSAgICAgPyAgICAgIDIu
MjQ4OSstMC4wNTczICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2Nnggc2xvd2VyCiAgIGNyeXB0by1h
ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjE2MSstMC4zOTA1
ICAgICAgICAgICAgNC4xNDkzKy0wLjEwNzAgICAgICAgICAgbWlnaHQgYmUgMS4wMTYxeCBmYXN0
ZXIKICAgY3J5cHRvLW1kNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Mi42MTY5Ky0wLjE0MjcgICAgICAgICAgICAyLjU0NTErLTAuMDQ4OSAgICAgICAgICBtaWdodCBi
ZSAxLjAyODJ4IGZhc3RlcgogICBjcnlwdG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjYxOTcrLTAuMDU3OCAgICAgICAgICAgIDIuNTk2NistMC4wOTQwICAg
ICAgICAKICAgZGF0ZS1mb3JtYXQtdG9mdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi40NzM2Ky0wLjIxNzIgICAgID8gICAgICA2Ljc4OTYrLTAuNTg2MSAgICAgICAgPyBtaWdo
dCBiZSAxLjA0ODh4IHNsb3dlcgogICBkYXRlLWZvcm1hdC14cGFyYiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjM1NzUrLTAuMDM4MyAgICAgPyAgICAgIDQuNDc0NystMC4xMjEy
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2OXggc2xvd2VyCiAgIG1hdGgtY29yZGljICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjM4MCstMC4wODk0ICAgICA/ICAgICAg
Mi42NDQ2Ky0wLjA1NjEgICAgICAgID8KICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy44NjI2Ky0wLjEzMTcgICAgICAgICAgICAzLjg0NzUrLTAu
MjIyNiAgICAgICAgCiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuOTY0OSstMC4xMTA5ICAgICAgICAgICAgMS45NTA0Ky0wLjA0NzcgICAgICAg
IAogICByZWdleHAtZG5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2
LjExODYrLTAuMTY3MyAgICAgPyAgICAgIDYuMTIzMistMC4yMDI2ICAgICAgICA/CiAgIHN0cmlu
Zy1iYXNlNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNDU2MSstMC40
MjAxICAgICA/ICAgICAgNC42ODY2Ky0wLjQ4MDUgICAgICAgID8gbWlnaHQgYmUgMS4wNTE3eCBz
bG93ZXIKICAgc3RyaW5nLWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNS4zMjE4Ky0wLjI2ODAgICAgICAgICAgICA1LjMwMTQrLTAuMjE3OCAgICAgICAgCiAgIHN0
cmluZy10YWdjbG91ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMTY0NSst
MC41NTk5ICAgICAgICAgICAgNy44NjI1Ky0wLjEyODIgICAgICAgICAgbWlnaHQgYmUgMS4wMzg0
eCBmYXN0ZXIKICAgc3RyaW5nLXVucGFjay1jb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNi45Njg1Ky0wLjM3NDcgICAgICEgICAgIDE4LjIzMDcrLTAuODY3OCAgICAgICAgISBk
ZWZpbml0ZWx5IDEuMDc0NHggc2xvd2VyCiAgIHN0cmluZy12YWxpZGF0ZS1pbnB1dCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuMTg3MistMC4yNTEyICAgICA/ICAgICAgNC4yMTU3Ky0w
LjA4NzkgICAgICAgID8KCiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuMjk4NystMC4wMjUzICAgICA/ICAgICAgNC4zNjUwKy0wLjA0MzQgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTU0eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwT2ZUcmVlICAgICAgICAgICAgICAgICAg
IFRoaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkxvbmdTcGlkZXI6
CiAgIDNkLWN1YmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NzUu
NDkxNistMTMuODA2MyAgICA/ICAgIDc4OC4zMDIyKy0xNC41OTU5ICAgICAgID8gbWlnaHQgYmUg
MS4wMTY1eCBzbG93ZXIKICAgM2QtbW9ycGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDU2MC45MDE0Ky0zLjk4MTEgICAgICAgICAgNTYwLjI1MzArLTUuNDU0OCAgICAg
ICAgCiAgIDNkLXJheXRyYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
NTAuODIzOSstNC41NTg3ICAgICAgICAgIDQ0NS4zMzE5Ky0zLjQ1NTYgICAgICAgICAgbWlnaHQg
YmUgMS4wMTIzeCBmYXN0ZXIKICAgYWNjZXNzLWJpbmFyeS10cmVlcyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDczMC4yMDQzKy0xLjk5ODIgICAgICEgICAgNzg3LjUwMDgrLTUuOTE3NSAg
ICAgICAgISBkZWZpbml0ZWx5IDEuMDc4NXggc2xvd2VyCiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMjkuNDg5OSstNy4yMzgzICAgICA/ICAgIDIz
NC44MjA4Ky0xMS43ODA2ICAgICAgID8gbWlnaHQgYmUgMS4wMjMyeCBzbG93ZXIKICAgYWNjZXNz
LW5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5My4yNTkzKy0yLjQx
ODYgICAgID8gICAgNDk3LjE3NjErLTguMzkwMyAgICAgICAgPwogICBhY2Nlc3MtbnNpZXZlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjkxLjc0NDMrLTcuNjAyMSAgICAgICAg
ICAyNzkuMTgyNSstNi4wNTM2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ1MHggZmFzdGVyCiAgIGJp
dG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgMzEuMjk4NSst
MC40Mzc0ICAgICAgICAgICAzMC44MzQ4Ky0wLjE4MzEgICAgICAgICAgbWlnaHQgYmUgMS4wMTUw
eCBmYXN0ZXIKICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA5MS4wMjk5Ky0xLjE3MzMgICAgICAgICAgIDkwLjQ5OTArLTAuODYyNiAgICAgICAgCiAg
IGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNjcuMjEw
NCstNS4xNDczICAgICA/ICAgIDM3MS42NzEzKy03LjIwMjAgICAgICAgID8gbWlnaHQgYmUgMS4w
MTIxeCBzbG93ZXIKICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQzNS41NTY5Ky00LjcyMzkgICAgICAgICAgNDM0LjY4MDMrLTUuMDQ3MiAgICAgICAg
CiAgIGNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MjUu
NTg4MCstNS45MjYwICAgICAgICAgIDUyMy45MzY2Ky04Ljk2MDAgICAgICAgIAogICBjcnlwdG8t
bWQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYwLjgwMDArLTMuNjE5
OSAgICAgPyAgICA0NjEuNDgxNCstNC42NzgxICAgICAgICA/CiAgIGNyeXB0by1zaGExICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MzMuMDI2NystNi4xNDg4ICAgICAgICAg
IDYyNi44OTQwKy0zLjc4NzIgICAgICAgIAogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMzIzLjU4ODMrLTIuNDk2NCAgICAgISAgICAzMzQuNjUzMist
Ni43MDAyICAgICAgICAhIGRlZmluaXRlbHkgMS4wMzQyeCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQt
eHBhcmIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU5Ni4zMDA5Ky00LjQwMTYgICAg
ID8gICAgNjEzLjYxNzMrLTMyLjM5MzQgICAgICAgPyBtaWdodCBiZSAxLjAyOTB4IHNsb3dlcgog
ICBoYXNoLW1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM2LjI2
NzkrLTMuOTIzNyAgICAgPyAgICAxMzguNzcxOSstNS40OTcxICAgICAgICA/IG1pZ2h0IGJlIDEu
MDE4NHggc2xvd2VyCiAgIG1hdGgtY29yZGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0NDguOTQ5MSstNi43ODk4ICAgICAgICAgIDQ0OC4xNjYzKy05LjA0MDAgICAgICAg
IAogICBtYXRoLXBhcnRpYWwtc3VtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgw
LjY4NjArLTIuODQyMSAgICAgPyAgICAyODIuNjYwNCstMy4wNzI1ICAgICAgICA/CiAgIG1hdGgt
c3BlY3RyYWwtbm9ybSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MTcuMTYzNystMi40
NjE2ICAgICA/ICAgIDUyMi40NDE1Ky01LjUwMjIgICAgICAgID8gbWlnaHQgYmUgMS4wMTAyeCBz
bG93ZXIKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQxMC42NzY1Ky0zLjE5MDUgICAgICEgICAgNDU0Ljc3NTcrLTQuMTcwNCAgICAgICAgISBkZWZp
bml0ZWx5IDEuMTA3NHggc2xvd2VyCiAgIHN0cmluZy1mYXN0YSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzMzIuNjIxNystNS44MzQ2ICAgICA/ICAgIDMzNC43MTE0Ky0yLjY2
MzcgICAgICAgID8KICAgc3RyaW5nLXRhZ2Nsb3VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE2NS4yNzUxKy0xLjI0MjYgICAgICAgICAgMTYzLjE3MDgrLTMuMDQyMSAgICAgICAg
ICBtaWdodCBiZSAxLjAxMjl4IGZhc3RlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMzNS45OTkyKy0wLjY0NTUgICAgICEgICAgMzM5LjQxNDMr
LTEuNjg5MiAgICAgICAgISBkZWZpbml0ZWx5IDEuMDEwMnggc2xvd2VyCgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAg
ICAgICAgICAgICAgICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IApWOFNwaWRlcjoKICAgY3J5cHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzMy45NDY2Ky0wLjEzNjYgICAgID8gICAgIDM0LjI1MDUrLTAuODIwMiAgICAgICAg
PwogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3
LjcyODQrLTEuMjc4MCAgICAgICAgICAgNDYuOTM1NSstMC42NTAzICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE2OXggZmFzdGVyCiAgIGVhcmxleS1ib3llciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzQuMzc2NSstMC4xMzYyICAgICAgICAgICAzMy45ODc4Ky0wLjg5NjkgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTE0eCBmYXN0ZXIKICAgcmF5dHJhY2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxOC4yNjQ4Ky0wLjMyMjcgICAgICAgICAgIDE4LjEx
NDQrLTAuMjU5OSAgICAgICAgCiAgIHJlZ2V4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTAuNDA2OSstMi4yMjQ0ICAgICA/ICAgICA1MC44NDc0Ky0xLjQzOTkg
ICAgICAgID8KICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzNy43NDYxKy0wLjUzNjEgICAgID8gICAgIDM3Ljc4MDErLTAuNDYwMiAgICAgICAgPwog
ICBzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LjEw
NTErLTEuNTc4NyAgICAgICAgICAgMjcuMjk1OCstMC43OTgyICAgICAgICAgIG1pZ2h0IGJlIDEu
MDI5N3ggZmFzdGVyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDM0LjE2MTQrLTAuNDEyNSAgICAgICAgICAgMzMuOTM2NCstMC4yOTY5ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDA2NnggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAgICAgICBU
aGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApPY3RhbmU6CiAgIGVu
Y3J5cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4xNTA5MCst
MC4wMDQyNCAgICAgICAgICAwLjE0NzEyKy0wLjAwMzU3ICAgICAgICAgbWlnaHQgYmUgMS4wMjU3
eCBmYXN0ZXIKICAgZGVjcnlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjY5MjkwKy0wLjAxNDA2ICAgICAgICAgIDIuNjkwMjgrLTAuMDIyMTkgICAgICAgCiAg
IGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4xMTg5
OCstMC4wMDI3OCAgICAgICAgICAwLjExODE3Ky0wLjAwMjA1ICAgICAgIAogICBlYXJsZXkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjM1MjArLTAuMDAyMzkg
ICAgPyAgICAgMC4yMzg4MistMC4wMDIzMiAgICAgICA/IG1pZ2h0IGJlIDEuMDE1NHggc2xvd2Vy
CiAgIGJveWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4y
MzE5MistMC4wMTY5NiAgICAhICAgICA0LjM2MTUwKy0wLjEwMTk4ICAgICAgICEgZGVmaW5pdGVs
eSAxLjAzMDZ4IHNsb3dlcgogICBuYXZpZXItc3Rva2VzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHgyICAgICAgIDQuNjQ4OTQrLTAuMDQ1MTMgICAgICAgICAgNC42MTc5MystMC4wNDU0NSAg
ICAgICAKICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAg
ICAwLjY2MTc4Ky0wLjAwMzkxICAgICAgICAgIDAuNjU5MDYrLTAuMDA3MTEgICAgICAgCiAgIHJp
Y2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4wNzg3MCst
MC4wMDE3MCAgICAgICAgICAwLjA3NzkxKy0wLjAwMjE1ICAgICAgICAgbWlnaHQgYmUgMS4wMTAx
eCBmYXN0ZXIKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAg
ICAgICAwLjMxMzMwKy0wLjAwNDE2ICAgICAgICAgIDAuMzA4NjUrLTAuMDAxODIgICAgICAgICBt
aWdodCBiZSAxLjAxNTF4IGZhc3RlcgogICByZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgyICAgICAgMTYuNDk5NjkrLTAuOTk0MjMgICAgPyAgICAxNi42ODM2NistMC40
MzgzMCAgICAgICA/IG1pZ2h0IGJlIDEuMDExMnggc2xvd2VyCiAgIHBkZmpzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAzOC44ODkyNistMC4zNTAyMiAgICAgICAg
IDM4LjY2NjAxKy0wLjE0MjY4ICAgICAgIAogICBtYW5kcmVlbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgyICAgICAgMzkuNjgyNzIrLTAuMzM3MDAgICAgICAgICAzOS40OTEyOCst
MC4yMjg3OSAgICAgICAKICAgZ2JlbXUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MiAgICAgIDI4LjkxNTE3Ky0wLjQ1Nzg2ICAgICAgICAgMjguNTU0NjArLTAuMjk5MTEgICAg
ICAgICBtaWdodCBiZSAxLjAxMjZ4IGZhc3RlcgogICBjbG9zdXJlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDYzMzIrLTAuMDAyODUgICAgICAgICAgMC40NjIx
OCstMC4wMDM0OSAgICAgICAKICAganF1ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjMyNTE5Ky0wLjA3MDAzICAgID8gICAgIDYuMzM4MzQrLTAuMDQ1OTIg
ICAgICAgPwogICBib3gyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAg
ICAgIDguNjc3ODArLTAuMTIwMzAgICAgICAgICAgOC42MDg4OCstMC4xMDMyNSAgICAgICAKICAg
emxpYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgMzM5Ljc4MTEx
Ky0yLjQ0MTc0ICAgICAgICAzMzYuNTc1NzQrLTMuODA3MDQgICAgICAgCiAgIHR5cGVzY3JpcHQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDYwMS41MTA2NistNC4yOTkwNCAg
ICA/ICAgNjAyLjM2MDU2Ky0xMy43ODYyMiAgICAgID8KCiAgIDxnZW9tZXRyaWM+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43MTg3MistMC4wMjU1MiAgICAgICAgICA0
LjY5OTY4Ky0wLjAwODUzICAgICAgICAgbWlnaHQgYmUgMS4wMDQxeCBmYXN0ZXIKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwT2ZUcmVl
ICAgICAgICAgICAgICAgICAgIFRoaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCktyYWtlbjoKICAgYWktYXN0YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgODkuMzA3Ky0yLjcyMCAgICAgID8gICAgICA4OS43NTcrLTIuNjY2ICAgICAg
ICAgPwogICBhdWRpby1iZWF0LWRldGVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzNy45NDIrLTUuMjE2ICAgICAgICAgICAgIDM1LjQwNSstMC4xMjMgICAgICAgICAgIG1pZ2h0
IGJlIDEuMDcxN3ggZmFzdGVyCiAgIGF1ZGlvLWRmdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDk1LjU0NCstMy4zODggICAgICA/ICAgICAgOTYuMDk2Ky0zLjgyMyAg
ICAgICAgID8KICAgYXVkaW8tZmZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjcuODM4Ky0xLjI2NSAgICAgICAgICAgICAyNy40NDErLTAuMTk1ICAgICAgICAgICBt
aWdodCBiZSAxLjAxNDV4IGZhc3RlcgogICBhdWRpby1vc2NpbGxhdG9yICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0My41NjgrLTAuNjU4ICAgICAgICAgICAgIDQzLjI1MistMC4y
NjEgICAgICAgICAKICAgaW1hZ2luZy1kYXJrcm9vbSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNTYuODQ3Ky0wLjU2OCAgICAgID8gICAgICA1Ny4yNTErLTEuNjc5ICAgICAgICAg
PwogICBpbWFnaW5nLWRlc2F0dXJhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
MS4xOTMrLTAuMTc3ICAgICAgICAgICAgIDQwLjg4NistMC40MjAgICAgICAgICAKICAgaW1hZ2lu
Zy1nYXVzc2lhbi1ibHVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTcuODc0Ky0yLjM0
NCAgICAgICAgICAgICA1Ny4wNjYrLTIuODg4ICAgICAgICAgICBtaWdodCBiZSAxLjAxNDJ4IGZh
c3RlcgogICBqc29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzMS4wMjcrLTAuNzg0ICAgICAgPyAgICAgIDMxLjU2MistMC40NDkgICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE3Mnggc2xvd2VyCiAgIGpzb24tc3RyaW5naWZ5LXRpbmRlcmJveCAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIxLjY4OCstMS43NzkgICAgICAgICAgICAgMjEuMzA2Ky0xLjcxMiAg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTgweCBmYXN0ZXIKICAgc3RhbmZvcmQtY3J5cHRvLWFlcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUuMTkxKy0xLjE2OCAgICAgICAgICAgICAz
NC45NDYrLTAuMzU4ICAgICAgICAgCiAgIHN0YW5mb3JkLWNyeXB0by1jY20gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDM0LjA3MCstMi4xMjkgICAgICAgICAgICAgMzAuOTE4Ky0yLjk5
NyAgICAgICAgICAgbWlnaHQgYmUgMS4xMDE5eCBmYXN0ZXIKICAgc3RhbmZvcmQtY3J5cHRvLXBi
a2RmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODkuNDE3Ky0wLjkyNyAgICAgID8gICAg
ICA5MC4zMzkrLTEuNzAwICAgICAgICAgPyBtaWdodCBiZSAxLjAxMDN4IHNsb3dlcgogICBzdGFu
Zm9yZC1jcnlwdG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAgICAgICAgICAgICAgICAyOS40MTcrLTAu
ODU0ICAgICAgPyAgICAgIDI5LjQ0NistMS4wNjkgICAgICAgICA/CgogICA8YXJpdGhtZXRpYz4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OS4zNTIrLTAuNjA0ICAgICAg
ICAgICAgIDQ4Ljk3NistMC40NzQgICAgICAgICAgIG1pZ2h0IGJlIDEuMDA3N3ggZmFzdGVyCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRp
cE9mVHJlZSAgICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIApNaWNyb2JlbmNobWFya3M6CiAgIGFiYy1mb3J3YXJkLWxvb3AtZXF1YWwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIuNTYyMCstMS4wNjc4ICAgICA/ICAgICAyMy41
NzE4Ky0xLjYwODYgICAgICAgID8gbWlnaHQgYmUgMS4wNDQ4eCBzbG93ZXIKICAgYWJjLXBvc3Rm
aXgtYmFja3dhcmQtbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAyOC44ODA5Ky0yLjE1ODcg
ICAgICAgICAgIDI3LjkzNDErLTAuMzc2OSAgICAgICAgICBtaWdodCBiZSAxLjAzMzl4IGZhc3Rl
cgogICBhYmMtc2ltcGxlLWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgIDIy
Ljk4MDUrLTEuMDg0MSAgICAgPyAgICAgMjMuMjUxNystMS4yMDYxICAgICAgICA/IG1pZ2h0IGJl
IDEuMDExOHggc2xvd2VyCiAgIGFiYy1zaW1wbGUtZm9yd2FyZC1sb29wICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjMuMTY2NSstMS41MjczICAgICA/ICAgICAyNC4xOTMzKy0yLjA2MTMgICAg
ICAgID8gbWlnaHQgYmUgMS4wNDQzeCBzbG93ZXIKICAgYWJjLXNraXBweS1sb29wICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC4yMTIwKy0yLjMzMjcgICAgID8gICAgIDIxLjk0
NDcrLTEuNTk5OSAgICAgICAgPyBtaWdodCBiZSAxLjA4NTd4IHNsb3dlcgogICBhYnMtYm9vbGVh
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjE2MzIrLTAuMDU5MSAg
ICAgPyAgICAgIDIuMTk1MystMC4wMzAxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0OXggc2xvd2Vy
CiAgIGFkYXB0LXRvLWRvdWJsZS1kaXZpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUu
MTM4MSstMS40NDk0ICAgICAgICAgICAxNC4xMzU3Ky0wLjkyMjUgICAgICAgICAgbWlnaHQgYmUg
MS4wNzA5eCBmYXN0ZXIKICAgYWxpYXNlZC1hcmd1bWVudHMtZ2V0Ynl2YWwgICAgICAgICAgICAg
ICAgICAgICAgICAgMS4wMTk0Ky0wLjA1ODAgICAgID8gICAgICAxLjA2NTQrLTAuMDg3OCAgICAg
ICAgPyBtaWdodCBiZSAxLjA0NTF4IHNsb3dlcgogICBhbGxvY2F0ZS1iaWctb2JqZWN0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjA5MTQrLTAuMTg2OCAgICAgICAgICAgIDIuMDY0
OSstMC4xOTEzICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyOHggZmFzdGVyCiAgIGFwcGx5LW5vdC1h
cHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTc3OSstMC4wNDA2ICAg
ICA/ICAgICAgNC4zMTA3Ky0wLjI3MzUgICAgICAgID8gbWlnaHQgYmUgMS4wMzE4eCBzbG93ZXIK
ICAgYXJndW1lbnRzLW5hbWVkLWFuZC1yZWZsZWN0aXZlICAgICAgICAgICAgICAgICAgICAgNy44
MjA2Ky0wLjE0MzAgICAgID8gICAgICA3Ljg5MTUrLTAuMjMxOCAgICAgICAgPwogICBhcmd1bWVu
dHMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjQxNDQrLTAuMzI0
NSAgICAgICAgICAgIDkuMjA4OSstMC4yNDAwICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyM3ggZmFz
dGVyCiAgIGFyZ3VtZW50cy1zdHJpY3QtbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTMuNTcwNCstMC45MTc3ICAgICA/ICAgICAxMy42NDQ1Ky0wLjYzODAgICAgICAgID8KICAgYXJn
dW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi40OTQzKy0w
LjEyMTUgICAgID8gICAgICA2LjYyMjcrLTAuMzQwOSAgICAgICAgPyBtaWdodCBiZSAxLjAxOTh4
IHNsb3dlcgogICBhcml0eS1taXNtYXRjaC1pbmxpbmluZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjgwODYrLTAuMDE5NiAgICAgPyAgICAgIDAuODIxOCstMC4wMjUwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDE2NHggc2xvd2VyCiAgIGFycmF5LWFjY2Vzcy1wb2x5bW9ycGhpYy1zdHJ1Y3R1
cmUgICAgICAgICAgICAgICAgIDMuMjQ5MistMC4zMDc1ICAgICAgICAgICAgMy4yMDkxKy0wLjM5
NjUgICAgICAgICAgbWlnaHQgYmUgMS4wMTI1eCBmYXN0ZXIKICAgYXJyYXktbm9uYXJyYXktcG9s
eW1vcmhwaWMtYWNjZXNzICAgICAgICAgICAgICAgICAxOS45ODE2Ky0xLjUxNzAgICAgID8gICAg
IDIwLjMwNDMrLTEuMjc0NiAgICAgICAgPyBtaWdodCBiZSAxLjAxNjF4IHNsb3dlcgogICBhcnJh
eS1wcm90b3R5cGUtZXZlcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY2Ljk4ODkrLTAu
NzE3MyAgICAgICAgICAgNjYuMjA3NCstMC4xNzg4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExOHgg
ZmFzdGVyCiAgIGFycmF5LXByb3RvdHlwZS1mb3JFYWNoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjcuMjk2MSstMi4wNTcxICAgICAgICAgICA2Ni41NTQwKy0xLjg4NjEgICAgICAgICAgbWln
aHQgYmUgMS4wMTEyeCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLW1hcCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2Ny41MDIwKy0xLjQ5MjUgICAgICAgICAgIDY2LjA1MjcrLTAuODc4
MSAgICAgICAgICBtaWdodCBiZSAxLjAyMTl4IGZhc3RlcgogICBhcnJheS1wcm90b3R5cGUtcmVk
dWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYzLjk3MTkrLTIuMzA0NCAgICAgICAgICAg
NjIuOTc1OCstMi4yNDU1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1OHggZmFzdGVyCiAgIGFycmF5
LXByb3RvdHlwZS1yZWR1Y2VSaWdodCAgICAgICAgICAgICAgICAgICAgICAgODEuNjUxNystMC4z
Njg4ICAgICA/ICAgICA4Mi43MTEzKy0xLjkwODcgICAgICAgID8gbWlnaHQgYmUgMS4wMTMweCBz
bG93ZXIKICAgYXJyYXktcHJvdG90eXBlLXNvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2Ny4zMTQyKy0yLjIzMzcgICAgID8gICAgIDY3LjgyMjIrLTMuOTUzMiAgICAgICAgPwogICBh
cnJheS1zcGxpY2UtY29udGlndW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLjczODQr
LTAuNjcxNSAgICAgICAgICAgMTkuMTk0MystMS4wMjkwICAgICAgICAgIG1pZ2h0IGJlIDEuMDgw
NXggZmFzdGVyCiAgIGFycmF5LXdpdGgtZG91YmxlLWFkZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMTE5MCstMC4zMDk4ICAgICAgICAgICAgMy4xMTIwKy0wLjI1ODcgICAgICAgIAog
ICBhcnJheS13aXRoLWRvdWJsZS1pbmNyZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAyLjcx
MzArLTAuMTgxNCAgICAgICAgICAgIDIuNjg5NCstMC4xMjU1ICAgICAgICAKICAgYXJyYXktd2l0
aC1kb3VibGUtbXVsLWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zODIwKy0wLjA4NTQg
ICAgICAgICAgICAzLjMzOTQrLTAuMDY2NyAgICAgICAgICBtaWdodCBiZSAxLjAxMjd4IGZhc3Rl
cgogICBhcnJheS13aXRoLWRvdWJsZS1zdW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjU4MTcrLTAuMDk0MCAgICAgPyAgICAgIDIuNjcwMistMC4yOTk1ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDM0M3ggc2xvd2VyCiAgIGFycmF5LXdpdGgtaW50MzItYWRkLXN1YiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuMjMzNistMC4wODE1ICAgICA/ICAgICAgNC4yNDM5Ky0wLjA4NzAgICAg
ICAgID8KICAgYXJyYXktd2l0aC1pbnQzMi1vci1kb3VibGUtc3VtICAgICAgICAgICAgICAgICAg
ICAgMi42OTUxKy0wLjAzMzcgICAgID8gICAgICAyLjc0OTMrLTAuMjc0NiAgICAgICAgPyBtaWdo
dCBiZSAxLjAyMDF4IHNsb3dlcgogICBBcnJheUJ1ZmZlci1EYXRhVmlldy1hbGxvYy1sYXJnZS1s
b25nLWxpdmVkICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzcuNzUxOSstMC4zNTY1ICAgICBeICAgICAzNy4wNjgyKy0wLjI4ODIgICAgICAg
IF4gZGVmaW5pdGVseSAxLjAxODR4IGZhc3RlcgogICBBcnJheUJ1ZmZlci1EYXRhVmlldy1hbGxv
Yy1sb25nLWxpdmVkICAgICAgICAgICAgIDE0LjgzNzQrLTAuNTY5OCAgICAgPyAgICAgMTUuMzE3
MSstMC45Mzk2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyM3ggc2xvd2VyCiAgIEFycmF5QnVmZmVy
LUludDMyQXJyYXktYnl0ZU9mZnNldCAgICAgICAgICAgICAgICAgIDMuNjMwMSstMC4yNDM3ICAg
ICAgICAgICAgMy41MzcyKy0wLjA4NDcgICAgICAgICAgbWlnaHQgYmUgMS4wMjYzeCBmYXN0ZXIK
ICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNi41MjIyKy0w
LjUxMzAgICAgID8gICAgIDM3LjAxNzkrLTAuNTQzOSAgICAgICAgPyBtaWdodCBiZSAxLjAxMzZ4
IHNsb3dlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZC1idWZmZXIg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
MC42MjU1Ky0xLjk4MDMgICAgICAgICAgIDIwLjIyODErLTAuNTkxNCAgICAgICAgICBtaWdodCBi
ZSAxLjAxOTZ4IGZhc3RlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZl
ZCAgICAgICAgICAgIDE0LjI5MjIrLTEuNTIxNyAgICAgPyAgICAgMTQuNDU1MistMS42MTA2ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDExNHggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1h
bGxvYyAgICAgICAgICAgICAgICAgICAgICAgMTMuMjg0MystMS4zNjI4ICAgICAgICAgICAxMi42
NTczKy0wLjU0NTQgICAgICAgICAgbWlnaHQgYmUgMS4wNDk1eCBmYXN0ZXIKICAgYXJyb3dmdW5j
dGlvbi1jYWxsLWluLWNsYXNzLWNvbnN0cnVjdG9yICAgICAgICAgICAyMi4zMzM1Ky0wLjc4MDQg
ICAgID8gICAgIDIzLjAyMjErLTEuMjU1MiAgICAgICAgPyBtaWdodCBiZSAxLjAzMDh4IHNsb3dl
cgogICBhcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtbWV0aG9kICAgICAgICAgICAgICAgIDEw
LjU4MjQrLTEuMzIwMSAgICAgICAgICAgIDkuODY5OCstMC4zNzg1ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDcyMnggZmFzdGVyCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1mdW5jdGlvbiAgICAgICAg
ICAgICAgICAgICAgIDkuNDkyMSstMC4zNTU4ICAgICAgICAgICAgOS4zNjU0Ky0wLjQwMzcgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTM1eCBmYXN0ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4wNDA3Ky0wLjUxOTggICAgICAgICAgICA4Ljky
OTUrLTAuMzU1OCAgICAgICAgICBtaWdodCBiZSAxLjAxMjV4IGZhc3RlcgogICBhc21qc19ib29s
X2J1ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjQyMTIrLTAuMjA3MCAg
ICAgPyAgICAgIDcuNDMxOSstMC4xNzY1ICAgICAgICA/CiAgIGFzc2lnbi1jdXN0b20tc2V0dGVy
LXBvbHltb3JwaGljICAgICAgICAgICAgICAgICAgIDIuNTc2MSstMC4xMDQxICAgICAgICAgICAg
Mi41NDUyKy0wLjAyNjQgICAgICAgICAgbWlnaHQgYmUgMS4wMTIxeCBmYXN0ZXIKICAgYXNzaWdu
LWN1c3RvbS1zZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44NTc2Ky0wLjA5
MTggICAgID8gICAgICAzLjg3MjgrLTAuMTE4MiAgICAgICAgPwogICBiYXNpYy1zZXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2Ljk4NzcrLTAuNTIwMCAgICAgICAg
ICAgIDYuNTUyMCstMC40NzgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDY2NXggZmFzdGVyCiAgIGJp
Zy1pbnQtbXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDYwNSst
MC4yNDI5ICAgICAgICAgICAgMi45NzY2Ky0wLjA2NDcgICAgICAgICAgbWlnaHQgYmUgMS4wMjgy
eCBmYXN0ZXIKICAgYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJvbC1vci11bmRlZmluZWQgICAgICAg
ICAgICA1Ni41NDM0Ky0yLjAyNDcgICAgID8gICAgIDU2LjU0NjErLTIuMjAxNSAgICAgICAgPwog
ICBiaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAgICAgICAgICAgICAgICAgIDY0Ljcx
NTcrLTAuNTg1NyAgICAgICAgICAgNjQuNjU0NSstMC4zMTE1ICAgICAgICAKICAgYmlnc3dpdGNo
LWluZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOC42ODYyKy0wLjM5NDcg
ICAgICAgICAgIDM4LjM2MTErLTAuNjYzOSAgICAgICAgCiAgIGJpZ3N3aXRjaCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuNjY0OCstMi43MTM2ICAgICAgICAgICAy
MC44NjIzKy0xLjMwNjYgICAgICAgICAgbWlnaHQgYmUgMS4wMzg1eCBmYXN0ZXIKICAgYm9vbGVh
bi10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43MDY3Ky0wLjAy
NTIgICAgID8gICAgICAyLjg0NTMrLTAuMTkyNCAgICAgICAgPyBtaWdodCBiZSAxLjA1MTJ4IHNs
b3dlcgogICBib3VuZC1mdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA5LjMyMDgrLTAuMjE3NyAgICAgPyAgICAgMTAuMDAwOSstMC43NjgzICAgICAgICA/IG1pZ2h0
IGJlIDEuMDczMHggc2xvd2VyCiAgIGJvdW5kLWZ1bmN0aW9uLWNvbnN0cnVjdGlvbi1wZXJmb3Jt
YW5jZSAgICAgICAgIDIzNjAuNTM5NCstMTguNTY2NSAgICAhICAgMjQxMi4zMzAzKy0yNi42NDkx
ICAgICAgICEgZGVmaW5pdGVseSAxLjAyMTl4IHNsb3dlcgogICBicmFuY2gtZm9sZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjY1MTIrLTAuMjg0MyAgICAgICAgICAg
IDMuNjM4MCstMC4xOTMwICAgICAgICAKICAgYnJhbmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAg
ICAgICAgICAgICAgICAgICAgICAxMC4yNDk1Ky0wLjQwMzQgICAgID8gICAgIDEwLjQ3MzkrLTEu
NDUwNyAgICAgICAgPyBtaWdodCBiZSAxLjAyMTl4IHNsb3dlcgogICBidWctMTUzNDMxICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjA4ODkrLTAuMjk5MyAgICAgICAg
ICAgIDIuOTIyMystMC4wNTE4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU3MHggZmFzdGVyCiAgIGJ1
aWxkLWxhcmdlLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuNTU0Mist
MC41Mzg0ICAgICAgICAgICAyMy41NDc2Ky0wLjMxMzMgICAgICAgIAogICBieS12YWwtZ2VuZXJp
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjg1NDQrLTAuMjA2NCAgICAg
PyAgICAgIDMuODkyNSstMC4zMjQ1ICAgICAgICA/CiAgIGNhbGwtb3Itbm90LWNhbGwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAuNDQ5OSstMi4wMzY5ICAgICAgICAgICAyOS43
MzQyKy0wLjMwNTAgICAgICAgICAgbWlnaHQgYmUgMS4wMjQxeCBmYXN0ZXIKICAgY2FsbC1zcHJl
YWQtYXBwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi42MTQ1Ky0xLjE5NjMg
ICAgICAgICAgIDIyLjQ5OTErLTAuMjg1OSAgICAgICAgCiAgIGNhbGwtc3ByZWFkLWNhbGwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuODQ5MSstMS4zNjM4ICAgICA/ICAgICAy
NC4wNDg4Ky0wLjgzMDUgICAgICAgID8KICAgY2FwdHVyZWQtYXNzaWdubWVudHMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4zNjM1Ky0wLjAyMTYgICAgID8gICAgICAwLjM4ODUrLTAu
MDQzNCAgICAgICAgPyBtaWdodCBiZSAxLjA2ODZ4IHNsb3dlcgogICBjYXN0LWludC10by1kb3Vi
bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjcyMTIrLTAuMDkwOSAgICAgPyAg
ICAgIDQuNzM3MystMC4yMzU5ICAgICAgICA/CiAgIGNlbGwtYXJndW1lbnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTk3MCstMC4wODcxICAgICA/ICAgICAgMi42NTg4
Ky0wLjEyOTkgICAgICAgID8gbWlnaHQgYmUgMS4wMjM4eCBzbG93ZXIKICAgY2ZnLXNpbXBsaWZ5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42NjgzKy0wLjAzNDUgICAg
ID8gICAgICAyLjY3MTErLTAuMDg2MCAgICAgICAgPwogICBjaGFpbi1nZXR0ZXItYWNjZXNzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjkyMzArLTEuMDI0NSAgICAgICAgICAgMTAu
NDM5MCstMC40MDE3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ2NHggZmFzdGVyCiAgIGNtcGVxLW9i
ai10by1vYmotb3RoZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMTk3OCstMC4xNzg0
ICAgICA/ICAgICAgOC4yMDM5Ky0wLjIwMDQgICAgICAgID8KICAgY29uY2F0LWFwcGVuZC1vbmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi41MDYzKy0wLjM1NjkgICAgICAgICAg
ICA2LjQwMzgrLTAuMDgyMiAgICAgICAgICBtaWdodCBiZSAxLjAxNjB4IGZhc3RlcgogICBjb25z
dGFudC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjM5NzErLTAu
MTM2OSAgICAgICAgICAgIDQuMzIxNistMC4wNDcwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3NXgg
ZmFzdGVyCiAgIGNyZWF0ZS1sb3RzLW9mLWZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDYuMTYxOCstMC42Njc2ICAgICA/ICAgICAgNi4yNDAyKy0wLjY5ODMgICAgICAgID8gbWln
aHQgYmUgMS4wMTI3eCBzbG93ZXIKICAgY3NlLW5ldy1hcnJheS1idWZmZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMS44Mzc2Ky0wLjExMjEgICAgID8gICAgICAxLjg2MDIrLTAuMTIx
NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMjN4IHNsb3dlcgogICBjc2UtbmV3LWFycmF5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjEyNDArLTAuMjQ2MSAgICAgICAgICAg
IDEuOTY3NSstMC4wOTA5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDc5NnggZmFzdGVyCiAgIGN1c3Rv
bS1zZXR0ZXItZ2V0dGVyLWFzLXB1dC1nZXQtYnktaWQgICAgICAgICAgICAgIDAuNDU5MistMC4w
NTAyICAgICA/ICAgICAgMC40NzYyKy0wLjAyNDYgICAgICAgID8gbWlnaHQgYmUgMS4wMzY5eCBz
bG93ZXIKICAgRGF0YVZpZXctY3VzdG9tLXByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAg
ICA0Mi44NjY5Ky0wLjg4MTMgICAgICAgICAgIDQyLjgxMjIrLTAuNzYwMCAgICAgICAgCiAgIGRl
bGF5LXRlYXItb2ZmLWFyZ3VtZW50cy1zdHJpY3Rtb2RlICAgICAgICAgICAgICAgIDMuODQ4OCst
MC4xMDcxICAgICA/ICAgICAgNC4xMTc1Ky0wLjM2ODggICAgICAgID8gbWlnaHQgYmUgMS4wNjk4
eCBzbG93ZXIKICAgZGVsdGFibHVlLWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyOS4yNjg4Ky0xLjE2NDYgICAgID8gICAgIDMwLjAxMzIrLTAuNTI1MiAgICAgICAgPyBt
aWdodCBiZSAxLjAyNTR4IHNsb3dlcgogICBkZWx0YWJsdWUtdmFyYXJncyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI4LjEwMTUrLTAuOTY0NSAgICAgPyAgICAgMjguNTA3MistMC43
ODA5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0NHggc2xvd2VyCiAgIGRlbnNlLXNldCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3MDUuNzMzMSstMjMuMDA5MCAgICAgICAg
MTY4Ny45ODM4Ky0yOS4yOTk2ICAgICAgICAgbWlnaHQgYmUgMS4wMTA1eCBmYXN0ZXIKICAgZGVz
dHJ1Y3R1cmluZy1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAzNi44NjM0Ky0x
LjEyMjggICAgICAgICAgIDM1Ljk3NzUrLTAuNTUyNiAgICAgICAgICBtaWdodCBiZSAxLjAyNDZ4
IGZhc3RlcgogICBkZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlv
biAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjQyNTcrLTAuMDA3NSAgICAgPyAgICAgIDAuNDM4NSstMC4wMTU3ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDMwMXggc2xvd2VyCiAgIGRlc3RydWN0dXJpbmctc3dhcCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQuMzA5NSstMC4yMTExICAgICA/ICAgICAgNC4zMTkzKy0wLjIyMjQg
ICAgICAgID8KICAgZGlyZWN0LWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS4wMjcxKy0wLjAzODggICAgID8gICAgICAxLjA1OTcrLTAuMDk5NyAgICAgICAgPyBt
aWdodCBiZSAxLjAzMTh4IHNsb3dlcgogICBkaXJlY3QtYXJndW1lbnRzLWxlbmd0aCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA2LjYzNjgrLTAuNzA5NyAgICAgICAgICAgIDYuMTg2MistMC4y
OTc5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDcyOHggZmFzdGVyCiAgIGRpcmVjdC1hcmd1bWVudHMt
b3ZlcnJpZGRlbi1sZW5ndGggICAgICAgICAgICAgICAgIDYuNDk3NCstMC4zODE2ICAgICAgICAg
ICAgNi4yNTUyKy0wLjI0NTcgICAgICAgICAgbWlnaHQgYmUgMS4wMzg3eCBmYXN0ZXIKICAgZGly
ZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aCAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjYyODcrLTAuMjU5NyAg
ICAgICAgICAgIDYuNDY2MCstMC4wNTY0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1MnggZmFzdGVy
CiAgIGRpdi1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMu
NjY5OSstMC4wNTEwICAgICA/ICAgICAgMy43MzQwKy0wLjA2NDcgICAgICAgID8gbWlnaHQgYmUg
MS4wMTc1eCBzbG93ZXIKICAgZGl2LWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi42NjU5Ky0wLjE2NTEgICAgID8gICAgICA2LjgxMTUrLTAuMTc0MCAgICAg
ICAgPyBtaWdodCBiZSAxLjAyMTh4IHNsb3dlcgogICBkb3VibGUtZ2V0LWJ5LXZhbC1vdXQtb2Yt
Ym91bmRzICAgICAgICAgICAgICAgICAgICAzLjc1MTQrLTAuMTk4NyAgICAgPyAgICAgIDMuNzg4
NSstMC4xNDAzICAgICAgICA/CiAgIGRvdWJsZS1wb2xsdXRpb24tZ2V0Ynl2YWwgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYuNTcwMistMC4xODU5ICAgICA/ICAgICAgNi43NTY1Ky0wLjM0MzAg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjgzeCBzbG93ZXIKICAgZG91YmxlLXBvbGx1dGlvbi1wdXRi
eW9mZnNldCAgICAgICAgICAgICAgICAgICAgICAgMy4xMjU0Ky0wLjA1OTUgICAgID8gICAgICAz
LjE1MTIrLTAuMDM4NiAgICAgICAgPwogICBkb3VibGUtcmVhbC11c2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI1LjYwNDIrLTMuNjgzOSAgICAgPyAgICAgMjYuNjA0NSstMy4z
NDk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM5MXggc2xvd2VyCiAgIGRvdWJsZS10by1pbnQzMi10
eXBlZC1hcnJheS1uby1pbmxpbmUgICAgICAgICAgICAgIDIuMjE5NCstMC4wNzcwICAgICAgICAg
ICAgMi4yMDY1Ky0wLjA2OTQgICAgICAgIAogICBkb3VibGUtdG8taW50MzItdHlwZWQtYXJyYXkg
ICAgICAgICAgICAgICAgICAgICAgICAyLjIyNDUrLTAuMzgyNiAgICAgICAgICAgIDIuMTAxNCst
MC4wOTk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU4NnggZmFzdGVyCiAgIGRvdWJsZS10by11aW50
MzItdHlwZWQtYXJyYXktbm8taW5saW5lICAgICAgICAgICAgIDIuNDA4NystMC4yMDUzICAgICAg
ICAgICAgMi4zMTY0Ky0wLjA3NjggICAgICAgICAgbWlnaHQgYmUgMS4wMzk4eCBmYXN0ZXIKICAg
ZG91YmxlLXRvLXVpbnQzMi10eXBlZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgMi4xOTg5
Ky0wLjA2NjggICAgID8gICAgICAyLjI4NzcrLTAuMjM3NSAgICAgICAgPyBtaWdodCBiZSAxLjA0
MDR4IHNsb3dlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE3LjMxNTUrLTAuNzIzMCAgICAgICAgICAgMTYuODE1MystMC43NzI4ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDI5N3ggZmFzdGVyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3Qtcm9mbGNvcHRl
ciAgICAgICAgICAgICAgICAgICAgMTYuNzYxOSstMy4wMDA3ICAgICAgICAgICAxNC45Njk0Ky0w
LjMzNTMgICAgICAgICAgbWlnaHQgYmUgMS4xMTk3eCBmYXN0ZXIKICAgZWxpZGFibGUtbmV3LW9i
amVjdC10aGVuLWNhbGwgICAgICAgICAgICAgICAgICAgICAxNS41MzQ3Ky0wLjkwNzggICAgID8g
ICAgIDE2LjA1OTMrLTAuNzg2NCAgICAgICAgPyBtaWdodCBiZSAxLjAzMzh4IHNsb3dlcgogICBl
bGlkYWJsZS1uZXctb2JqZWN0LXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjAxOTUr
LTAuNzAwNCAgICAgICAgICAgMTYuNTkzMystMC45MjQ5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1
N3ggZmFzdGVyCiAgIGVtcHR5LXN0cmluZy1wbHVzLWludCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQuNDE4NystMC4xNTYwICAgICA/ICAgICAgNC41NDA5Ky0wLjA1ODEgICAgICAgID8g
bWlnaHQgYmUgMS4wMjc2eCBzbG93ZXIKICAgZW1zY3JpcHRlbi1jdWJlMmhhc2ggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyMi4zNTM0Ky0wLjQzNDIgICAgICAgICAgIDIyLjE4OTMrLTAu
NjM4OSAgICAgICAgCiAgIGV2YWwtY29tcHV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjQuNjI1MistMS4yNzU1ICAgICA/ICAgICAyNS42MDkxKy0yLjA2MjAgICAgICAg
ID8gbWlnaHQgYmUgMS4wNDAweCBzbG93ZXIKICAgZXZhbC1ub3QtZXZhbC1jb21wdXRlLWFyZ3Mg
ICAgICAgICAgICAgICAgICAgICAgICAyMy4yMDgzKy0xLjA1MjQgICAgICAgICAgIDIyLjg1NTYr
LTAuOTQ0OSAgICAgICAgICBtaWdodCBiZSAxLjAxNTR4IGZhc3RlcgogICBldmFsLW5vdC1ldmFs
LWNvbXB1dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjQ0MTYrLTIuNTM5NiAgICAg
ICAgICAgMjMuNTQxMistMC44MDIxICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4MnggZmFzdGVyCiAg
IGV4aXQtbGVuZ3RoLW9uLXBsYWluLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgIDkuMDM0
NSstMC41MjUwICAgICA/ICAgICAgOS4xMDYzKy0wLjM2NjkgICAgICAgID8KICAgZXh0ZXJuYWwt
YXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgMS4xNzkyKy0wLjI5Nzkg
ICAgICAgICAgICAxLjA4ODkrLTAuMDM5NiAgICAgICAgICBtaWdodCBiZSAxLjA4Mjl4IGZhc3Rl
cgogICBleHRlcm5hbC1hcmd1bWVudHMtcHV0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAy
LjEzMDUrLTAuMTIyMiAgICAgPyAgICAgIDIuMjY1NystMC4yNjQ5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDYzNHggc2xvd2VyCiAgIGZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UtdmFyLWluZGV4ICAg
ICAgICAgICAgICAgIDEuNDM1NCstMC4xMDI0ICAgICA/ICAgICAgMS40NzM1Ky0wLjEwMzUgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjY1eCBzbG93ZXIKICAgZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFn
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xMjA3Ky0wLjA3MTEgICAgID8gICAgICAxLjE2
NzQrLTAuMTIwNyAgICAgICAgPyBtaWdodCBiZSAxLjA0MTZ4IHNsb3dlcgogICBGbG9hdDMyQXJy
YXktbWF0cml4LW11bHQgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjcwMTQrLTAuMTk4NSAg
ICAgICAgICAgIDQuNTcyOCstMC4wMzU5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4MXggZmFzdGVy
CiAgIEZsb2F0MzJBcnJheS10by1GbG9hdDY0QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgNDAu
MDk5MCstMC4zNDA4ICAgICAgICAgICAzOS4wOTQ1Ky0wLjgzNTMgICAgICAgICAgbWlnaHQgYmUg
MS4wMjU3eCBmYXN0ZXIKICAgRmxvYXQ2NEFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAg
ICAgICAgICAgICA0OS42MzU3Ky0xLjIzNTcgICAgID8gICAgIDUyLjM4NDErLTIuNDU4OCAgICAg
ICAgPyBtaWdodCBiZSAxLjA1NTR4IHNsb3dlcgogICBGbG9hdDY0QXJyYXktdG8tSW50MTZBcnJh
eS1zZXQgICAgICAgICAgICAgICAgICAgIDQ0LjQxNTIrLTEuMDE5NiAgICAgICAgICAgNDQuMTMy
MCstMC41MDM4ICAgICAgICAKICAgZm9sZC1kb3VibGUtdG8taW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMi4xMTgzKy0wLjg5NDMgICAgICAgICAgIDExLjkyMzMrLTAuMTI2MCAg
ICAgICAgICBtaWdodCBiZSAxLjAxNjR4IGZhc3RlcgogICBmb2xkLWdldC1ieS1pZC10by1tdWx0
aS1nZXQtYnktb2Zmc2V0LXJhcmUtaW50ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDcuODcwMSstMC4xMjAxICAgICA/ICAgICAgOC4wODA2
Ky0wLjQ5MjkgICAgICAgID8gbWlnaHQgYmUgMS4wMjY4eCBzbG93ZXIKICAgZm9sZC1nZXQtYnkt
aWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldCAgICAgICAgICAgICAgNi42MDU4Ky0xLjU0MjYgICAg
ICAgICAgICA1Ljg0NzUrLTAuMTcyMCAgICAgICAgICBtaWdodCBiZSAxLjEyOTd4IGZhc3Rlcgog
ICBmb2xkLW11bHRpLWdldC1ieS1vZmZzZXQtdG8tZ2V0LWJ5LW9mZnNldCAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjIxNDErLTAuMTA0
OSAgICAgPyAgICAgIDQuMjg2NCstMC4yMjkyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3Mnggc2xv
d2VyCiAgIGZvbGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1wb2x5LWdldC1ieS1vZmZzZXQgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4x
MjgzKy0wLjA2MDMgICAgICAgICAgICA0LjExNDYrLTAuMDUwMyAgICAgICAgCiAgIGZvbGQtbXVs
dGktcHV0LWJ5LW9mZnNldC10by1wb2x5LXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zNzI3Ky0xLjk1NzQgICAg
ID8gICAgICA1LjM3NTQrLTEuOTI3MSAgICAgICAgPwogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZz
ZXQtdG8tcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjM3MDArLTAuMjMzNiAgICAgICAgICAgIDMuMzEzNSstMC4w
NTgyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3MXggZmFzdGVyCiAgIGZvbGQtbXVsdGktcHV0LWJ5
LW9mZnNldC10by1yZXBsYWNlLW9yLXRyYW5zaXRpb24tcHV0LWJ5LW9mZnNldCAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjE5MDgrLTAu
MzM5MyAgICAgPyAgICAgIDYuMjQyOSstMC4xNTQyICAgICAgICA/CiAgIGZvbGQtcHV0LWJ5LWlk
LXRvLW11bHRpLXB1dC1ieS1vZmZzZXQgICAgICAgICAgICAgIDguOTM0MistMi4yNTU4ICAgICAg
ICAgICAgOC44NDgwKy0yLjIxNzcgICAgICAgIAogICBmb2xkLXB1dC1ieS12YWwtd2l0aC1zdHJp
bmctdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA3LjIxODQrLTEuNTkxMSAgICAgPyAgICAgIDcuMjMz
NystMi4wNjU4ICAgICAgICA/CiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10by1tdWx0
aS1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYuNzEzMSstMC4xNTQyICAgICA/ICAgICAgNy45NzE5Ky0yLjA1ODMg
ICAgICAgID8gbWlnaHQgYmUgMS4xODc1eCBzbG93ZXIKICAgZm9sZC1wdXQtc3RydWN0dXJlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40MjU3Ky0xLjg0OTUgICAgICAgICAgICAz
Ljg1NjMrLTEuMzQ4NiAgICAgICAgICBtaWdodCBiZSAxLjE0NzZ4IGZhc3RlcgogICBmb3Itb2Yt
aXRlcmF0ZS1hcnJheS1lbnRyaWVzICAgICAgICAgICAgICAgICAgICAgICA4LjE2MzUrLTAuMzA3
MiAgICAgICAgICAgIDcuOTU0OCstMC42ODUwICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2MnggZmFz
dGVyCiAgIGZvci1vZi1pdGVyYXRlLWFycmF5LWtleXMgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuODIyMCstMC4yMTY3ICAgICA/ICAgICAgMy44ODAzKy0wLjIzOTIgICAgICAgID8gbWlnaHQg
YmUgMS4wMTUzeCBzbG93ZXIKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXktdmFsdWVzICAgICAgICAg
ICAgICAgICAgICAgICAgMy42NDcyKy0wLjI2MDMgICAgICAgICAgICAzLjQ4OTIrLTAuMTgxNiAg
ICAgICAgICBtaWdodCBiZSAxLjA0NTN4IGZhc3RlcgogICBmcmVlemUtYW5kLWRvLXdvcmsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjg3MTIrLTAuODU4MiAgICAgICAgICAgMTIu
NDAxMSstMC45MTMwICAgICAgICAgIG1pZ2h0IGJlIDEuMDM3OXggZmFzdGVyCiAgIGZyb3VuZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuODE5NistMC45MDc2
ICAgICAgICAgICAgOS4zMzg3Ky0wLjE4MTkgICAgICAgICAgbWlnaHQgYmUgMS4wNTE1eCBmYXN0
ZXIKICAgZnRsLWxpYnJhcnktaW5saW5pbmctZGF0YXZpZXcgICAgICAgICAgICAgICAgICAgICA1
OC4xOTIzKy0yLjAyNTkgICAgID8gICAgIDYwLjU0OTErLTQuMDg1MSAgICAgICAgPyBtaWdodCBi
ZSAxLjA0MDV4IHNsb3dlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIyLjg3OTUrLTEuMDQ1MyAgICAgICAgICAgMjIuNDEyMystMS43MTI4ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDIwOHggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1iaXRhbmQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMjcuODE2NystMS4yNjM5ICAgICAgICAgIDEyNy4x
NDkzKy0zLjg5ODIgICAgICAgIAogICBmdGwtcG9seW1vcnBoaWMtYml0b3IgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTMxLjAzOTUrLTMuNjg0NyAgICAgICAgICAxMjYuMDM3NistMi45NDU1
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5N3ggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1iaXR4
b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjkuMTg5MCstMy4wMjI2ICAgICAgICAgIDEy
NS45MTcwKy0yLjE3MjYgICAgICAgICAgbWlnaHQgYmUgMS4wMjYweCBmYXN0ZXIKICAgZnRsLXBv
bHltb3JwaGljLWRpdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0Mi43NzUxKy00Ljk4
ODIgICAgICAgICAgNDQyLjQ1MTkrLTcuNDYzNyAgICAgICAgCiAgIGZ0bC1wb2x5bW9ycGhpYy1s
c2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTQuODA0MCstMi4wNDExICAgICAgICAg
IDE1My4yMTM1Ky0yLjM0MzAgICAgICAgICAgbWlnaHQgYmUgMS4wMTA0eCBmYXN0ZXIKICAgZnRs
LXBvbHltb3JwaGljLW11bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyMy44NDQwKy0z
Ljk2MzYgICAgID8gICAgMjIzLjk2MzYrLTMuNzA1NyAgICAgICAgPwogICBmdGwtcG9seW1vcnBo
aWMtcnNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU0Ljk2NjUrLTIuNDg5OSAgICAg
PyAgICAxNTUuMzY4MystNS4wMTM0ICAgICAgICA/CiAgIGZ0bC1wb2x5bW9ycGhpYy1TdHJpbmdG
cm9tQ2hhckNvZGUgICAgICAgICAgICAgICAgNDAuODUwOCstMS41Mzg3ICAgICAgICAgICA0MC44
MTAyKy0wLjM0MTIgICAgICAgIAogICBmdGwtcG9seW1vcnBoaWMtc3ViICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTUwLjMwMzMrLTUuMzA5MiAgICAgPyAgICAxNTEuMDM3MSstNC4wMDAz
ICAgICAgICA/CiAgIGZ0bC1wb2x5bW9ycGhpYy11cnNoaWZ0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNjkuMTQ2NistMy44NDk3ICAgICAgICAgIDE2My42NjU4Ky0xLjc1OTcgICAgICAgICAg
bWlnaHQgYmUgMS4wMzM1eCBmYXN0ZXIKICAgZnVuY3Rpb24tYmluZC1pbmxpbmluZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ0Mi4zODMyKy0xNC4yMzMyICAgID8gICAgNDQ0Ljk2MDUrLTEu
MzQ1NiAgICAgICAgPwogICBmdW5jdGlvbi1iaW5kLW5vLWlubGluaW5nICAgICAgICAgICAgICAg
ICAgICAgICAgNDQ2LjA5MjQrLTUuMDk3MSAgICAgPyAgICA0NTEuNDE5NSstMy4xNTMyICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDExOXggc2xvd2VyCiAgIGZ1bmN0aW9uLWNhbGwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDkuNzk4MSstMC4wODEzICAgICA/ICAgICAxMC4xMDQz
Ky0wLjc2MzEgICAgICAgID8gbWlnaHQgYmUgMS4wMzEzeCBzbG93ZXIKICAgZnVuY3Rpb24tZG90
LWFwcGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45NjQ4Ky0wLjA3MDAgICAg
ICAgICAgICAxLjkyNjUrLTAuMDUxMSAgICAgICAgICBtaWdodCBiZSAxLjAxOTl4IGZhc3Rlcgog
ICBmdW5jdGlvbi10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQ1
NjUrLTAuMDUxNCAgICAgPyAgICAgIDIuNDgzOCstMC4wNjM5ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExMXggc2xvd2VyCiAgIGZ1bmN0aW9uLXdpdGgtZXZhbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzcuMDkwMSstMC44OTcyICAgICAgICAgICAzNS45MTA0Ky0xLjczODIgICAgICAg
ICAgbWlnaHQgYmUgMS4wMzI4eCBmYXN0ZXIKICAgZ2NzZS1wb2x5LWdldC1sZXNzLW9idmlvdXMg
ICAgICAgICAgICAgICAgICAgICAgICAxNC43NDU0Ky0wLjY5ODEgICAgID8gICAgIDE0Ljg3Njcr
LTAuODUxMSAgICAgICAgPwogICBnY3NlLXBvbHktZ2V0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE0LjM4MTYrLTAuNjI0NiAgICAgPyAgICAgMTQuNzk0OCstMS41MjM4ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDI4N3ggc2xvd2VyCiAgIGdjc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTY4MCstMC4wNzI1ICAgICA/ICAgICAgMy4z
MTY5Ky0wLjI4OTggICAgICAgID8gbWlnaHQgYmUgMS4wNDcweCBzbG93ZXIKICAgZ2VuZXJhdG9y
LWNyZWF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC43ODkzKy0wLjE0MTAg
ICAgICAgICAgICAwLjc1ODcrLTAuMDM3MyAgICAgICAgICBtaWdodCBiZSAxLjA0MDN4IGZhc3Rl
cgogICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMw
LjM5ODQrLTAuNTI2NSAgICAgICAgICAgMzAuMTEzOSstMi4wNTA1ICAgICAgICAKICAgZ2VuZXJh
dG9yLWZ1bmN0aW9uLWNyZWF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgMy40OTQyKy0wLjI0
NzEgICAgICAgICAgICAzLjQyMDcrLTAuMTI3NiAgICAgICAgICBtaWdodCBiZSAxLjAyMTV4IGZh
c3RlcgogICBnZW5lcmF0b3Itc3Vuc3BpZGVyLWFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAg
ICA0LjI2NjMrLTAuMDczMSAgICAgPyAgICAgIDQuNDUwOSstMC4yNDg2ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDQzM3ggc2xvd2VyCiAgIGdlbmVyYXRvci13aXRoLXNldmVyYWwtdHlwZXMgICAgICAg
ICAgICAgICAgICAgICAxMDAuMzUyMistOS40OTIzICAgICAgICAgICA5OS4yNTQ1Ky05LjI0Njgg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTExeCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLWJpbW9ycGhpYy1j
aGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjA2MistMC4wOTkxICAgICA/ICAg
ICAgMi4zNTgzKy0wLjE5NTkgICAgICAgID8gbWlnaHQgYmUgMS4wNjkweCBzbG93ZXIKICAgZ2V0
LWJ5LWlkLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yMjY4Ky0wLjE3
NzIgICAgICAgICAgICA0LjE1NzYrLTAuMDk2NiAgICAgICAgICBtaWdodCBiZSAxLjAxNjd4IGZh
c3RlcgogICBnZXQtYnktaWQtY2hhaW4tZnJvbS10cnktYmxvY2sgICAgICAgICAgICAgICAgICAg
ICAxLjk0MTkrLTAuMjAzMSAgICAgICAgICAgIDEuODUyOCstMC4wODg3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDQ4MXggZmFzdGVyCiAgIGdldC1ieS1pZC1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRp
b24gICAgICAgICAgICAgIDIuODY5MSstMC4xMTk3ICAgICAgICAgICAgMi44MDMyKy0wLjExMTEg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjM1eCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLXByb3RvLW9yLXNl
bGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4xNzUzKy0xLjA5MTQgICAgID8gICAgICA5
LjIyODMrLTAuMjQ1NCAgICAgICAgPwogICBnZXQtYnktaWQtcXVhZG1vcnBoaWMtY2hlY2stc3Ry
dWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjY2ODcrLTAuMTEyMiAgICAgICAgICAgIDIuNjAz
NSstMC4wNDY0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1MHggZmFzdGVyCiAgIGdldC1ieS1pZC1z
ZWxmLW9yLXByb3RvICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMjc2OSstMC4yOTMwICAg
ICAgICAgICAgOS4yMzQzKy0wLjU0ODcgICAgICAgIAogICBnZXQtYnktdmFsLW91dC1vZi1ib3Vu
ZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjcxOTcrLTAuMjAxOCAgICAgPyAgICAgIDMu
OTQ3MSstMC4yODQzICAgICAgICA/IG1pZ2h0IGJlIDEuMDYxMXggc2xvd2VyCiAgIGdldC1ieS12
YWwtd2l0aC1zdHJpbmctYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1w
bGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy4xNjU5Ky0wLjM4ODAgICAgICAgICAgICAzLjE0NTcrLTAuNDYyNyAgICAgICAgCiAgIGdl
dC1ieS12YWwtd2l0aC1zdHJpbmctYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlv
biAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2LjAyNTYrLTAuMzMxMCAgICAgICAgICAgIDUuOTY2MCstMC4zMjQ2ICAgICAgICAKICAgZ2V0
LWJ5LXZhbC13aXRoLXN0cmluZy1jaGFpbi1mcm9tLXRyeS1ibG9jayAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjkzNDMrLTAuMDkwNiAg
ICAgPyAgICAgIDEuOTQyNSstMC4wMzIyICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0aC1zdHJp
bmctY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNTAyNCstMC4yNzQ3ICAgICAgICAgICAg
NS40NTQ4Ky0wLjI1NTAgICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLXByb3RvLW9y
LXNlbGYgICAgICAgICAgICAgICA4LjMyOTgrLTAuODkyNiAgICAgPyAgICAgIDkuMTQwMCstMC43
MjI3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk3M3ggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1z
dHJpbmctcXVhZG1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjY1
NTQrLTAuMDQ5MyAgICAgPyAgICAgIDMuNzA2OSstMC4wODUzICAgICAgICA/IG1pZ2h0IGJlIDEu
MDE0MXggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctc2VsZi1vci1wcm90byAgICAg
ICAgICAgICAgIDkuMjQ2MistMC40MjQ4ICAgICA/ICAgICAgOS4zODg0Ky0wLjI3NjAgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTU0eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1v
cnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjU3NzYrLTAuMDI4NyAg
ICAgPyAgICAgIDIuODY4MCstMC40NTEyICAgICAgICA/IG1pZ2h0IGJlIDEuMTEyNnggc2xvd2Vy
CiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGlt
aW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjM4NzUrLTAuMTA4OCAgICAgPyAgICAgIDcuNDkxMCstMC4zOTQ1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE0MHggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtY2hhaW4t
ZnJvbS10cnktYmxvY2sgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi4wMjE0Ky0wLjI5MTggICAgID8gICAgICAyLjExNzgrLTAuMzQxNSAg
ICAgICAgPyBtaWdodCBiZSAxLjA0Nzd4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9s
LWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjY3MTkrLTAuMDMyNyAgICAgPyAgICAgIDUu
NzM3OCstMC4yNzcyICAgICAgICA/IG1pZ2h0IGJlIDEuMDExNnggc2xvd2VyCiAgIGdldC1ieS12
YWwtd2l0aC1zeW1ib2wtcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgIDkuMTg4MistMC41OTg0
ICAgICAgICAgICAgOS4xMzIwKy0wLjc5MzkgICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3lt
Ym9sLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xMjE5
Ky0wLjEwOTkgICAgID8gICAgICAzLjE5ODQrLTAuMzM4NSAgICAgICAgPyBtaWdodCBiZSAxLjAy
NDV4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXNlbGYtb3ItcHJvdG8gICAgICAg
ICAgICAgICA4LjQxMTIrLTAuNjAxOCAgICAgPyAgICAgIDguODI0NCstMC45OTkyICAgICAgICA/
IG1pZ2h0IGJlIDEuMDQ5MXggc2xvd2VyCiAgIGdldF9ieV92YWwtSW50MzJBcnJheSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuMjgzMCstMC4xODgyICAgICAgICAgICAgMS4yMTIwKy0w
LjA5NDYgICAgICAgICAgbWlnaHQgYmUgMS4wNTg2eCBmYXN0ZXIKICAgZ2V0X2NhbGxlZV9tb25v
bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45MjA1Ky0wLjA3NjUgICAgID8g
ICAgICAxLjkyMzgrLTAuMDM1OCAgICAgICAgPwogICBnZXRfY2FsbGVlX3BvbHltb3JwaGljICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjYzODArLTAuMjU0OCAgICAgICAgICAgIDIuNTYz
MistMC4xNTAyICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5MnggZmFzdGVyCiAgIGdldHRlci1uby1h
Y3RpdmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzg1NCstMC4wMzE1ICAg
ICA/ICAgICAgMi44Mzg4Ky0wLjA1MjYgICAgICAgID8gbWlnaHQgYmUgMS4wMTkyeCBzbG93ZXIK
ICAgZ2V0dGVyLXByb3RvdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41
MzAyKy0wLjA4NzAgICAgICAgICAgICA0LjQ4OTUrLTAuMDk4NiAgICAgICAgCiAgIGdldHRlci1y
aWNoYXJkcy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICA3ODkuOTI3MystMTkuMjY5
MCAgICAgICAgIDc4MC43MDQ3Ky0xMS45MDA0ICAgICAgICAgbWlnaHQgYmUgMS4wMTE4eCBmYXN0
ZXIKICAgZ2V0dGVyLXJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
OC44Nzg5Ky01LjIwOTUgICAgID8gICAgIDYwLjMyMTErLTMuMjA0OSAgICAgICAgPyBtaWdodCBi
ZSAxLjAyNDV4IHNsb3dlcgogICBnZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjk0OTMrLTAuMDI3NiAgICAgPyAgICAgIDMuMTAyNistMC4yNzk0ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDUyMHggc2xvd2VyCiAgIGdsb2JhbC1pc05hTiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuODk0MistMC4xNDM4ICAgICA/ICAgICAxMC4x
NTIzKy0wLjQyNjYgICAgICAgID8gbWlnaHQgYmUgMS4wMjYxeCBzbG93ZXIKICAgZ2xvYmFsLW9i
amVjdC1hY2Nlc3Mtd2l0aC1tdXRhdGluZy1zdHJ1Y3R1cmUgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44MjU0Ky0wLjA0MzUgICAgICEg
ICAgICA1LjMyNDMrLTAuMjk2MCAgICAgICAgISBkZWZpbml0ZWx5IDEuMTAzNHggc2xvd2VyCiAg
IGdsb2JhbC12YXItY29uc3QtaW5mZXItZmlyZS1mcm9tLW9wdCAgICAgICAgICAgICAgIDAuODA1
MCstMC4wOTA0ICAgICA/ICAgICAgMC44Mjk1Ky0wLjEwNTMgICAgICAgID8gbWlnaHQgYmUgMS4w
MzA1eCBzbG93ZXIKICAgZ2xvYmFsLXZhci1jb25zdC1pbmZlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC42OTY1Ky0wLjEwNDIgICAgICAgICAgICAwLjY4NzUrLTAuMDMzMyAgICAgICAg
ICBtaWdodCBiZSAxLjAxMzB4IGZhc3RlcgogICBoYXJkLW92ZXJmbG93LWNoZWNrLWVxdWFsICAg
ICAgICAgICAgICAgICAgICAgICAgIDIyLjk2MTQrLTEuMjU4MCAgICAgICAgICAgMjIuODc5Mist
MS40MjE0ICAgICAgICAKICAgaGFyZC1vdmVyZmxvdy1jaGVjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMi4xNjk5Ky0wLjkzMDUgICAgID8gICAgIDIzLjYyMjMrLTEuNjE0MCAgICAg
ICAgPyBtaWdodCBiZSAxLjA2NTV4IHNsb3dlcgogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZS1r
ZXlzICAgICAgICAgICAgICAgICAgICAgIDIxLjAzMDYrLTAuNTc1OSAgICAgPyAgICAgMjEuMjA0
NystMC42NTE3ICAgICAgICA/CiAgIEhhc2hNYXAtcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjEuMTIxMistMC44NjI5ICAgICA/ICAgICAyMS4zOTgzKy0wLjg2Nzcg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTMxeCBzbG93ZXIKICAgSGFzaE1hcC1zdHJpbmctcHV0LWdl
dC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAyMi41MjIzKy0xLjIyODkgICAgID8gICAgIDIy
LjY5NTQrLTAuNDY5NSAgICAgICAgPwogICBob2lzdC1tYWtlLXJvcGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjgxOTQrLTAuNDA4OCAgICAgICAgICAgIDMuODAwMSstMC4x
ODQwICAgICAgICAKICAgaG9pc3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUtZWZmZWN0ZnVsLWxvb3Ag
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Mi45MzA1Ky0wLjEwMjcgICAgID8gICAgICAyLjkzMTgrLTAuMDc5MCAgICAgICAgPwogICBob2lz
dC1wb2x5LWNoZWNrLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAyLjExMjIrLTAu
MjE1MSAgICAgICAgICAgIDIuMDUxMSstMC4xMzIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5OHgg
ZmFzdGVyCiAgIGltcGxpY2l0LWJpZ3N3aXRjaC1pbmRpcmVjdC1zeW1ib2wgICAgICAgICAgICAg
ICAgNDYuNjAzMystMS4xNDU0ICAgICAgICAgICA0Ni4zMzk0Ky0xLjAwMTQgICAgICAgIAogICBp
bXVsLWRvdWJsZS1vbmx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjIzNjIr
LTAuMjE5MyAgICAgICAgICAgIDMuMjE1OSstMC4xMTU0ICAgICAgICAKICAgaW11bC1pbnQtb25s
eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4xMDMzKy0wLjEyOTAgICAg
ID8gICAgICA1LjM1MjErLTAuNTc3NCAgICAgICAgPyBtaWdodCBiZSAxLjA0ODh4IHNsb3dlcgog
ICBpbXVsLW1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjAx
MjIrLTAuMjM5NiAgICAgICAgICAgIDIuOTg3OCstMC4wNjgxICAgICAgICAKICAgaW4tZm91ci1j
YXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS4yNzYzKy0xLjY1MjYg
ICAgICAgICAgIDE0LjEwNzIrLTEuMjQ4NSAgICAgICAgICBtaWdodCBiZSAxLjA4Mjl4IGZhc3Rl
cgogICBpbi1vbmUtY2FzZS1mYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
LjM4MTIrLTAuMjQ0MSAgICAgICAgICAgIDcuMzc2NystMC4xOTA1ICAgICAgICAKICAgaW4tb25l
LWNhc2UtdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4zMzQ0Ky0wLjMy
MjggICAgID8gICAgICA3LjUwNTkrLTAuMjI3NiAgICAgICAgPyBtaWdodCBiZSAxLjAyMzR4IHNs
b3dlcgogICBpbi10d28tY2FzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA3LjcxNTArLTAuNDEwNCAgICAgPyAgICAgIDcuNzE3NCstMC40ODc4ICAgICAgICA/CiAgIGlu
ZGV4ZWQtcHJvcGVydGllcy1pbi1vYmplY3RzICAgICAgICAgICAgICAgICAgICAgIDIuNjI0NSst
MC4wODAyICAgICAgICAgICAgMi42MDkwKy0wLjAyNzMgICAgICAgIAogICBpbmZlci1jbG9zdXJl
LWNvbnN0LXRoZW4tbW92LW5vLWlubGluZSAgICAgICAgICAgICAyLjkxNTYrLTAuMDIxMyAgICAg
PyAgICAgIDMuMjA3NystMC4zNjg3ICAgICAgICA/IG1pZ2h0IGJlIDEuMTAwMnggc2xvd2VyCiAg
IGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1tb3YgICAgICAgICAgICAgICAgICAgICAgIDYuNDU4
MCstMC4xMTI5ICAgICA/ICAgICAgNi41MTYyKy0wLjA4NDggICAgICAgID8KICAgaW5mZXItY2xv
c3VyZS1jb25zdC10aGVuLXB1dC10by1zY29wZS1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS41MTIyKy0wLjY3NjQgICAg
ICAgICAgIDExLjMyMjMrLTAuNDk4NyAgICAgICAgICBtaWdodCBiZSAxLjAxNjh4IGZhc3Rlcgog
ICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcHV0LXRvLXNjb3BlICAgICAgICAgICAgIDIwLjE0
OTMrLTAuNTQ0MiAgICAgICAgICAgMjAuMTIxNCstMS41MDY1ICAgICAgICAKICAgaW5mZXItY2xv
c3VyZS1jb25zdC10aGVuLXJlZW50ZXItbm8taW5saW5lICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQuNzY3NystMi40OTI2ICAgICAgICAg
ICA1Mi4wMjczKy0xLjQyMjQgICAgICAgICAgbWlnaHQgYmUgMS4wNTI3eCBmYXN0ZXIKICAgaW5m
ZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXIgICAgICAgICAgICAgICAgICAyMC43MTYxKy0x
LjY0NDYgICAgID8gICAgIDIxLjI1NDgrLTEuOTg0NSAgICAgICAgPyBtaWdodCBiZSAxLjAyNjB4
IHNsb3dlcgogICBpbmZlci1jb25zdGFudC1nbG9iYWwtcHJvcGVydHkgICAgICAgICAgICAgICAg
ICAgICAyLjUxMDIrLTAuMDQ1NiAgICAgPyAgICAgIDIuNjI0OCstMC4zNDA1ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQ1N3ggc2xvd2VyCiAgIGluZmVyLWNvbnN0YW50LXByb3BlcnR5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuMDQ3OSstMC4wODM2ICAgICA/ICAgICAgMi4wOTI2Ky0wLjEx
NzEgICAgICAgID8gbWlnaHQgYmUgMS4wMjE4eCBzbG93ZXIKICAgaW5mZXItb25lLXRpbWUtY2xv
c3VyZS10ZW4tdmFycyAgICAgICAgICAgICAgICAgICAgNi4xNDMyKy0wLjE0MTkgICAgID8gICAg
ICA2LjIyODUrLTAuMjUzNSAgICAgICAgPyBtaWdodCBiZSAxLjAxMzl4IHNsb3dlcgogICBpbmZl
ci1vbmUtdGltZS1jbG9zdXJlLXR3by12YXJzICAgICAgICAgICAgICAgICAgICA1LjkzNzIrLTAu
MTcyNCAgICAgICAgICAgIDUuODIzOCstMC4wNTYyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5NXgg
ZmFzdGVyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDYuMDI5NSstMC4yMzk5ICAgICAgICAgICAgNS43OTUwKy0wLjEzNTAgICAgICAgICAgbWln
aHQgYmUgMS4wNDA1eCBmYXN0ZXIKICAgaW5mZXItb25lLXRpbWUtZGVlcC1jbG9zdXJlICAgICAg
ICAgICAgICAgICAgICAgICAxMS4yMzYxKy0wLjg1MjAgICAgICAgICAgIDEwLjgxMTErLTAuMTgx
NiAgICAgICAgICBtaWdodCBiZSAxLjAzOTN4IGZhc3RlcgogICBpbmxpbmUtYXJndW1lbnRzLWFj
Y2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc4NzYrLTAuMTcxNyAgICAgICAgICAg
IDIuNTgwMystMC4xMzgyICAgICAgICAgIG1pZ2h0IGJlIDEuMDgwM3ggZmFzdGVyCiAgIGlubGlu
ZS1hcmd1bWVudHMtYWxpYXNlZC1hY2Nlc3MgICAgICAgICAgICAgICAgICAgIDIuODk1NSstMC4x
Nzk1ICAgICBeICAgICAgMi41NDQ4Ky0wLjE0NzEgICAgICAgIF4gZGVmaW5pdGVseSAxLjEzNzh4
IGZhc3RlcgogICBpbmxpbmUtYXJndW1lbnRzLWxvY2FsLWVzY2FwZSAgICAgICAgICAgICAgICAg
ICAgICAzLjA0MTcrLTAuMjM3NyAgICAgICAgICAgIDIuNzI0NCstMC4xNTYzICAgICAgICAgIG1p
Z2h0IGJlIDEuMTE2NXggZmFzdGVyCiAgIGlubGluZS1nZXQtc2NvcGVkLXZhciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuMTE5NistMC4wODU2ICAgICA/ICAgICAgMi4yMTA4Ky0wLjEy
NDcgICAgICAgID8gbWlnaHQgYmUgMS4wNDMweCBzbG93ZXIKICAgaW5saW5lZC1wdXQtYnktaWQt
dHJhbnNpdGlvbiAgICAgICAgICAgICAgICAgICAgICAgNS45MzY1Ky0wLjMxNDMgICAgID8gICAg
ICA2LjE4MjErLTAuMzU2MyAgICAgICAgPyBtaWdodCBiZSAxLjA0MTR4IHNsb3dlcgogICBpbmxp
bmVkLXB1dC1ieS12YWwtd2l0aC1zdHJpbmctdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4LjQ3MDUrLTEuODE1MyAgICAg
ICAgICAgMzcuNjU3MystMC40MTg0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxNnggZmFzdGVyCiAg
IGlubGluZWQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10cmFuc2l0aW9uICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzguNTg0OSstMS4wNzg0
ICAgICAgICAgICAzOC4wMzczKy0wLjcxNzEgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ0eCBmYXN0
ZXIKICAgaW5zdGFuY2VvZi1ib3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
MC4zNDYwKy0wLjcwMDAgICAgID8gICAgIDIxLjA1MjkrLTEuNzc4OCAgICAgICAgPyBtaWdodCBi
ZSAxLjAzNDd4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWJzLXRoZW4tZ2V0LWJ5LXZhbCAgICAg
ICAgICAgICAgICAgICA3LjYxMTcrLTAuNjE3NCAgICAgICAgICAgIDcuMjk0NistMC4wMzk4ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDQzNXggZmFzdGVyCiAgIGludC1vci1vdGhlci1hYnMtemVyby10
aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTUuMjU1MSstMS4zMTg1ICAgICA/ICAgICAxNS44
MDk5Ky0xLjI2MjYgICAgICAgID8gbWlnaHQgYmUgMS4wMzY0eCBzbG93ZXIKICAgaW50LW9yLW90
aGVyLWFkZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgMy44Mzg3Ky0wLjE5Mzkg
ICAgICAgICAgICAzLjc1NDkrLTAuMDYxMyAgICAgICAgICBtaWdodCBiZSAxLjAyMjN4IGZhc3Rl
cgogICBpbnQtb3Itb3RoZXItYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LjU0MTMrLTAuMTczMiAgICAgICAgICAgIDQuNDc2NystMC4xNzUxICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE0NHggZmFzdGVyCiAgIGludC1vci1vdGhlci1kaXYtdGhlbi1nZXQtYnktdmFsICAgICAg
ICAgICAgICAgICAgIDMuMTgzMystMC4wNTM5ICAgICA/ICAgICAgMy4xOTE2Ky0wLjA0NTIgICAg
ICAgID8KICAgaW50LW9yLW90aGVyLW1heC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAg
ICAgMy41MTA5Ky0wLjEwOTYgICAgICAgICAgICAzLjQzNjcrLTAuMTAyOCAgICAgICAgICBtaWdo
dCBiZSAxLjAyMTZ4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItbWluLXRoZW4tZ2V0LWJ5LXZhbCAg
ICAgICAgICAgICAgICAgICAzLjQ4MjQrLTAuMjU2MyAgICAgICAgICAgIDMuNDU3OCstMC4wNzM4
ICAgICAgICAKICAgaW50LW9yLW90aGVyLW1vZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAg
ICAgICAgMy4yNTE1Ky0wLjExMTcgICAgID8gICAgICAzLjQzODcrLTAuMjY1NCAgICAgICAgPyBt
aWdodCBiZSAxLjA1NzZ4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbXVsLXRoZW4tZ2V0LWJ5LXZh
bCAgICAgICAgICAgICAgICAgICA1LjM4MzgrLTAuMTQzNiAgICAgICAgICAgIDUuMjg0MystMC4w
NzUxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4OHggZmFzdGVyCiAgIGludC1vci1vdGhlci1uZWct
dGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDMuNzc3MystMC4xMjM5ICAgICAgICAg
ICAgMy43NTQ3Ky0wLjExNTYgICAgICAgIAogICBpbnQtb3Itb3RoZXItbmVnLXplcm8tdGhlbi1n
ZXQtYnktdmFsICAgICAgICAgICAgIDE0LjM4NDYrLTAuMTk4OSAgICAgPyAgICAgMTUuNjk0Nyst
MS42ODM4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDkxMXggc2xvd2VyCiAgIGludC1vci1vdGhlci1z
dWItdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDQuNzA0OSstMC4xMjU3ICAgICAg
ICAgICAgNC42NTQzKy0wLjE2NzYgICAgICAgICAgbWlnaHQgYmUgMS4wMTA5eCBmYXN0ZXIKICAg
aW50LW9yLW90aGVyLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43ODY3
Ky0wLjA1NzggICAgID8gICAgICAzLjk0NjQrLTAuMzU5MSAgICAgICAgPyBtaWdodCBiZSAxLjA0
MjJ4IHNsb3dlcgogICBpbnQtb3ZlcmZsb3ctbG9jYWwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjY3MjQrLTAuMDg1OSAgICAgICAgICAgIDMuNjM3MistMC4wMzIxICAgICAgICAK
ICAgSW50MTZBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICAzMy40
NDU3Ky0wLjYyMzMgICAgICEgICAgIDM1LjA1MzMrLTAuMjU0NyAgICAgICAgISBkZWZpbml0ZWx5
IDEuMDQ4MXggc2xvd2VyCiAgIEludDE2QXJyYXktYnViYmxlLXNvcnQtd2l0aC1ieXRlTGVuZ3Ro
ICAgICAgICAgICAgMTguMzQ2NCstMS45MTEyICAgICAgICAgICAxNi4zNzM3Ky0yLjAwNTggICAg
ICAgICAgbWlnaHQgYmUgMS4xMjA1eCBmYXN0ZXIKICAgSW50MTZBcnJheS1idWJibGUtc29ydCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNS4xNjgxKy0wLjQyODYgICAgICAgICAgIDE1LjE2
MjQrLTEuMDE4NCAgICAgICAgCiAgIEludDE2QXJyYXktbG9hZC1pbnQtbXVsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEuNzAwOCstMC4wOTgyICAgICAgICAgICAgMS42NTYxKy0wLjA1NjMg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjcweCBmYXN0ZXIKICAgSW50MTZBcnJheS10by1JbnQzMkFy
cmF5LXNldCAgICAgICAgICAgICAgICAgICAgICAzNi4yMDU5Ky0wLjQ2ODYgICAgID8gICAgIDM3
LjEwNDArLTEuNjkyMiAgICAgICAgPyBtaWdodCBiZSAxLjAyNDh4IHNsb3dlcgogICBJbnQzMkFy
cmF5LWFsbG9jLWxhcmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjU2ODQrLTAuNTIx
NCAgICAgICAgICAgMTEuNDUwOCstMC4zNjk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwM3ggZmFz
dGVyCiAgIEludDMyQXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgICAg
MzguMDgwOCstMC4xNzE5ICAgICAhICAgICAzOS4zODI5Ky0wLjUxMDIgICAgICAgICEgZGVmaW5p
dGVseSAxLjAzNDJ4IHNsb3dlcgogICBJbnQzMkFycmF5LWFsbG9jICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzLjA4NTUrLTAuMTExOSAgICAgPyAgICAgIDMuMjY0MistMC40Mjcw
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU3OXggc2xvd2VyCiAgIEludDMyQXJyYXktSW50OEFycmF5
LXZpZXctYWxsb2MgICAgICAgICAgICAgICAgICAgIDYuNTk3MSstMC4xODUxICAgICA/ICAgICAg
Ni43MjM4Ky0wLjIwNDggICAgICAgID8gbWlnaHQgYmUgMS4wMTkyeCBzbG93ZXIKICAgaW50NTIt
c3BpbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44NzA0Ky0wLjE1
MjcgICAgID8gICAgICA1LjE0NjYrLTAuNTA1NSAgICAgICAgPyBtaWdodCBiZSAxLjA1Njd4IHNs
b3dlcgogICBJbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgICAg
IDI5LjkzNzUrLTAuNjIzOSAgICAgPyAgICAgMzAuODc1NCstMS4xNTI2ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDMxM3ggc2xvd2VyCiAgIEludDhBcnJheS1sb2FkLXdpdGgtYnl0ZUxlbmd0aCAgICAg
ICAgICAgICAgICAgICAgIDMuMzUyOSstMC4wNzg5ICAgICA/ICAgICAgMy40NjE2Ky0wLjE0NTEg
ICAgICAgID8gbWlnaHQgYmUgMS4wMzI0eCBzbG93ZXIKICAgSW50OEFycmF5LWxvYWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zMTE2Ky0wLjA2NjQgICAgID8gICAgICAz
LjM2NTIrLTAuMDUwNiAgICAgICAgPyBtaWdodCBiZSAxLjAxNjJ4IHNsb3dlcgogICBpbnRlZ2Vy
LWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjkxMDYrLTAuNjk3
MSAgICAgICAgICAgIDkuNzgxMCstMC4xODg3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzMnggZmFz
dGVyCiAgIGludGVnZXItbW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEuOTQwNSstMC4wNzg4ICAgICA/ICAgICAgMS45OTc5Ky0wLjIwNjYgICAgICAgID8gbWlnaHQg
YmUgMS4wMjk2eCBzbG93ZXIKICAgaXMtYm9vbGVhbi1mb2xkLXRyaWNreSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi42Njk0Ky0wLjA3NzQgICAgID8gICAgICAyLjY3MDcrLTAuMDU4NSAg
ICAgICAgPwogICBpcy1ib29sZWFuLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjAwNzYrLTAuMDkxOCAgICAgICAgICAgIDEuOTkyOCstMC4wNTg3ICAgICAgICAKICAg
aXMtZnVuY3Rpb24tZm9sZC10cmlja3ktaW50ZXJuYWwtZnVuY3Rpb24gICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4yMTYzKy0wLjQwNDQg
ICAgID8gICAgICA5LjI1NTUrLTAuMTM5NSAgICAgICAgPwogICBpcy1mdW5jdGlvbi1mb2xkLXRy
aWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjkwNTcrLTAuNDI3NiAgICAgICAgICAg
IDIuODQ4NSstMC4xNDAyICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwMXggZmFzdGVyCiAgIGlzLWZ1
bmN0aW9uLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMDQxMystMC4w
MzM3ICAgICA/ICAgICAgMi4wNDM5Ky0wLjA0NzcgICAgICAgID8KICAgaXMtbnVtYmVyLWZvbGQt
dHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45MTE2Ky0wLjI5NjcgICAgICAg
ICAgICAyLjcyNzgrLTAuMDc3NyAgICAgICAgICBtaWdodCBiZSAxLjA2NzR4IGZhc3RlcgogICBp
cy1udW1iZXItZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjAwNzUr
LTAuMDQ4NSAgICAgPyAgICAgIDIuMDI5MSstMC4xMjEwICAgICAgICA/IG1pZ2h0IGJlIDEuMDEw
OHggc2xvd2VyCiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQtZnVuY3Rpb25zICAgICAgICAgICAg
ICAgICAgIDIuMDM3MCstMC4wMzk3ICAgICA/ICAgICAgMi4yMDkzKy0wLjQ0NjEgICAgICAgID8g
bWlnaHQgYmUgMS4wODQ2eCBzbG93ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC1sZXNzLXRy
aWNreSAgICAgICAgICAgICAgICAgMi43MzkxKy0wLjA2MzIgICAgICAgICAgICAyLjczNzkrLTAu
MDc0MSAgICAgICAgCiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQtdHJpY2t5ICAgICAgICAgICAg
ICAgICAgICAgIDMuMDgzNCstMC4xMzI3ICAgICAgICAgICAgMy4wODI5Ky0wLjA1MjcgICAgICAg
IAogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjA2MDArLTAuMTE3NSAgICAgICAgICAgIDIuMDMxNSstMC4wNTIwICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE0MHggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNraWVyLWZ1bmN0aW9uICAg
ICAgICAgICAgICAgIDIuODQ2NistMC4xMzYyICAgICAgICAgICAgMi44MDI0Ky0wLjA0MDIgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTU4eCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2tp
ZXItaW50ZXJuYWwtZnVuY3Rpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOS4yODMxKy0wLjI3ODggICAgID8gICAgICA5LjMxNDkrLTAu
MTc4OSAgICAgICAgPwogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja3ktZnVuY3Rpb24gICAgICAg
ICAgICAgICAgICAyLjc3NzMrLTAuMDY5NiAgICAgICAgICAgIDIuNzc1MSstMC4wNjY3ICAgICAg
ICAKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2t5LWludGVybmFsLWZ1bmN0aW9uICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMjcyMist
MC4xNjU5ICAgICA/ICAgICAgNi4zODI0Ky0wLjIzMzUgICAgICAgID8gbWlnaHQgYmUgMS4wMTc2
eCBzbG93ZXIKICAgaXMtc3RyaW5nLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi43MzM3Ky0wLjExOTkgICAgICAgICAgICAyLjczMzIrLTAuMDg1OCAgICAgICAgCiAg
IGlzLXN0cmluZy1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTg4
OSstMC4wMzI2ICAgICA/ICAgICAgMi4wMzAwKy0wLjAyOTYgICAgICAgID8gbWlnaHQgYmUgMS4w
MjA3eCBzbG93ZXIKICAgaXMtdW5kZWZpbmVkLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi4zNzY3Ky0wLjAyNDUgICAgID8gICAgICAyLjUwNzkrLTAuMjc0OCAgICAgICAg
PyBtaWdodCBiZSAxLjA1NTJ4IHNsb3dlcgogICBpcy11bmRlZmluZWQtZm9sZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyLjA1NjUrLTAuMTMxNSAgICAgICAgICAgIDIuMDUyMSst
MC4wODgzICAgICAgICAKICAgSlNPTlAtbmVnYXRpdmUtMCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yNTgzKy0wLjAzMjUgICAgICAgICAgICAwLjIyNzYrLTAuMDEyOSAgICAg
ICAgICBtaWdodCBiZSAxLjEzNTB4IGZhc3RlcgogICBsYXJnZS1pbnQtY2FwdHVyZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk5NzcrLTAuMTk3NCAgICAgXiAgICAgIDIuNjAy
OSstMC4wOTk1ICAgICAgICBeIGRlZmluaXRlbHkgMS4xNTE2eCBmYXN0ZXIKICAgbGFyZ2UtaW50
LW5lZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4yNjU3Ky0wLjE2OTIg
ICAgICAgICAgICA4LjE0OTIrLTAuMDM4MiAgICAgICAgICBtaWdodCBiZSAxLjAxNDN4IGZhc3Rl
cgogICBsYXJnZS1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
Ljg1ODgrLTAuMTk4NyAgICAgPyAgICAgIDguNDEzOCstMS4xNDA5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDcwNnggc2xvd2VyCiAgIGxhcmdlLW1hcC1pdGVyYXRpb24td2l0aC1hZGRpdGlvbnMgICAg
ICAgICAgICAgICAzOTUuMTE5NCstMTUuNjU3NSAgICAgICAgIDM4OS4xNjcwKy0xMC41NTI3ICAg
ICAgICAgbWlnaHQgYmUgMS4wMTUzeCBmYXN0ZXIKICAgbGFyZ2UtbWFwLWl0ZXJhdGlvbi13aXRo
LW11dGF0aW9uICAgICAgICAgICAgICAgIDE5MC40NzgwKy03LjQwNDEgICAgICAgICAgMTkwLjQ0
ODYrLTQuNDc5NyAgICAgICAgCiAgIGxhcmdlLW1hcC1pdGVyYXRpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOTUuODM2MystMy41OTE3ICAgICA/ICAgICA5Ni45NjAxKy0zLjkxMjcg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTE3eCBzbG93ZXIKICAgbGF6eS1hcnJheS1zcGVjaWVzLXdh
dGNocG9pbnRzICAgICAgICAgICAgICAgICAgICAyMS43NjcxKy0wLjM2MTIgICAgID8gICAgIDIz
LjA1NjgrLTIuMTA5NyAgICAgICAgPyBtaWdodCBiZSAxLjA1OTN4IHNsb3dlcgogICBsaWNtLWRy
YWdvbnMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgIDMxLjA0NzUrLTEuNTE5
MyAgICAgICAgICAgMzAuOTQyMistMS4zMzUxICAgICAgICAKICAgbGljbS1kcmFnb25zLW92ZXJm
bG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy43MjI0Ky0wLjQ4MDYgICAgID8gICAg
IDE4LjEyMTArLTAuNjk2NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMjV4IHNsb3dlcgogICBsaWNt
LWRyYWdvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0Ljk5OTYrLTAu
NjQ3NSAgICAgICAgICAgMzQuMjMwNystMC4xNTE3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyNXgg
ZmFzdGVyCiAgIGxvYWQtdmFyYXJncy1lbGltaW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTkuMTU0MystMS42OTg1ICAgICAgICAgICAxOC45MzE5Ky0xLjYxODggICAgICAgICAgbWln
aHQgYmUgMS4wMTE4eCBmYXN0ZXIKICAgbG9jYWxlLWNvbXBhcmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyMS41ODU3Ky0xLjI1MzkgICAgID8gICAgIDIxLjgzNDErLTEuMDQ0
OSAgICAgICAgPyBtaWdodCBiZSAxLjAxMTV4IHNsb3dlcgogICBsb2dpY2FsLW5vdC13ZWlyZC10
eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQyMjIrLTAuMzE3NiAgICAgICAgICAg
IDIuMzMyNSstMC4wNDIzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4NXggZmFzdGVyCiAgIGxvZ2lj
YWwtbm90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzI4NCstMC40
ODQ2ICAgICA/ICAgICAgMy44Mjg1Ky0wLjQyMzMgICAgICAgID8gbWlnaHQgYmUgMS4wMjY5eCBz
bG93ZXIKICAgbG90cy1vZi1maWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNy45OTQxKy0wLjQ0MzkgICAgICAgICAgICA3Ljk1NTErLTAuMzYzMSAgICAgICAgCiAgIG1h
a2UtaW5kZXhlZC1zdG9yYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMzQwMyst
MC4zMzQzICAgICA/ICAgICAgMi40ODAxKy0wLjQ5ODIgICAgICAgID8gbWlnaHQgYmUgMS4wNTk4
eCBzbG93ZXIKICAgbWFrZS1yb3BlLWNzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi40ODg4Ky0wLjE1ODYgICAgICEgICAgICAzLjA5NjMrLTAuMDk4NSAgICAgICAgISBk
ZWZpbml0ZWx5IDEuMjQ0MXggc2xvd2VyCiAgIG1hbnktZm9yZWFjaC1jYWxscyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuMzYzOSstMC4wNzYwICAgICAgICAgICAgMi4zNDgwKy0w
LjA0ODAgICAgICAgIAogICBtYW55LXJlcGVhdC1zdG9yZXMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE0Ljg4NTIrLTAuMzU0NCAgICAgICAgICAgMTQuNjQxMCstMC4wNDI3ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDE2N3ggZmFzdGVyCiAgIG1hcC1jb25zdGFudC1rZXkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNzkuMTczNSstMy41NjA4ICAgICA/ICAgIDE3OS45MTEw
Ky0zLjk0NTcgICAgICAgID8KICAgbWFwLWZvci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC4yMzY3Ky0wLjA1NDcgICAgID8gICAgICA0LjMwNzArLTAuMDM4MCAg
ICAgICAgPyBtaWdodCBiZSAxLjAxNjZ4IHNsb3dlcgogICBtYXAtZm9yLW9mICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjE5MzQrLTEuMjA5MyAgICAgICAgICAgMTgu
OTEzNSstMC42Njk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0OHggZmFzdGVyCiAgIG1hcC1nZXQt
Z2V0LWNzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NTAuOTg1NCstNS42NDY3
ICAgICAgICAgIDU0My4yNDQzKy0zNi4yMDA4ICAgICAgICAgbWlnaHQgYmUgMS4wMTQyeCBmYXN0
ZXIKICAgbWFwLWhhcy1nZXQtY3NlLW9wcG9ydHVuaXR5ICAgICAgICAgICAgICAgICAgICAgICA3
My45OTM5Ky00LjQ1MDYgICAgID8gICAgIDc2LjQ2ODMrLTQuMjY4NiAgICAgICAgPyBtaWdodCBi
ZSAxLjAzMzR4IHNsb3dlcgogICBtYXAtcmVoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3LjE1ODkrLTAuNDA3MSAgICAgPyAgICAgIDcuMTU5MystMC4yNTQxICAg
ICAgICA/CiAgIG1hcnNhZ2xpYS1sYXJnZXItaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjIuMDQ5MCstMC42OTI3ICAgICA/ICAgICA2Mi43ODczKy0xLjYzMDMgICAgICAgID8gbWln
aHQgYmUgMS4wMTE5eCBzbG93ZXIKICAgbWFyc2FnbGlhLW9zci1lbnRyeSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNi44MjkzKy0wLjk5MDQgICAgICAgICAgIDE2LjA4NzgrLTAuNTc0
OSAgICAgICAgICBtaWdodCBiZSAxLjA0NjF4IGZhc3RlcgogICBtYXRoLXJhbmRvbSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjE3MjIrLTAuNzg2MCAgICAgPyAgICAg
MTQuNTYzNSstMS4zOTE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3Nnggc2xvd2VyCiAgIG1hdGgt
dHJ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNTAwNystMC4x
NzMwICAgICAgICAgICAgNS4zODQ2Ky0wLjA4MTEgICAgICAgICAgbWlnaHQgYmUgMS4wMjE2eCBm
YXN0ZXIKICAgbWF0aC13aXRoLW91dC1vZi1ib3VuZHMtYXJyYXktdmFsdWVzICAgICAgICAgICAg
ICAyOC40OTEyKy0yLjIyMTQgICAgID8gICAgIDI5LjMwNzcrLTEuODQ0MyAgICAgICAgPyBtaWdo
dCBiZSAxLjAyODd4IHNsb3dlcgogICBtYXgtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjIyNzUrLTAuMDk1MiAgICAgICAgICAgIDIuMjE0OCstMC4xMDc4
ICAgICAgICAKICAgbWVnYW1vcnBoaWMtbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyNi41MzUyKy0zLjMzNjEgICAgID8gICAgIDI5LjU2ODUrLTMuOTI3MCAgICAgICAgPyBt
aWdodCBiZSAxLjExNDN4IHNsb3dlcgogICBtZXRob2Qtb24tbnVtYmVyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE2LjU2OTErLTEuNDI1NiAgICAgICAgICAgMTUuODczOSstMC4z
MTE1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQzOHggZmFzdGVyCiAgIG1pbi1ib29sZWFuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTc3MistMC4wNzA1ICAgICA/ICAg
ICAgMi4yMzcxKy0wLjA1NDUgICAgICAgID8gbWlnaHQgYmUgMS4wMjc1eCBzbG93ZXIKICAgbWlu
dXMtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zMDk4Ky0w
LjE1NDEgICAgICAgICAgICAyLjE5NDQrLTAuMDMxOSAgICAgICAgICBtaWdodCBiZSAxLjA1MjZ4
IGZhc3RlcgogICBtaW51cy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxLjk0NTErLTAuMTIwMyAgICAgPyAgICAgIDEuOTc4MystMC4yNzc0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDE3MHggc2xvd2VyCiAgIG1pc2MtYnVncy04NDczODktanBlZzIwMDAgICAgICAg
ICAgICAgICAgICAgICAgIDM3MzYuNzAyOCstMTMuNjQ3NyAgICAgICAgMzcyNi42NjMwKy0yMi4z
OTQ1ICAgICAgIAogICBtaXNjLXN0cmljdC1lcSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE5Ljk1MTcrLTAuOTY2NSAgICAgICAgICAgMTkuMjM2NystMS43Njc5ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDM3MnggZmFzdGVyCiAgIG1vZC1ib29sZWFuLWRvdWJsZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDguODE4MCstMC4yNTcyICAgICAgICAgICAgOC42NTIxKy0w
LjA2MjggICAgICAgICAgbWlnaHQgYmUgMS4wMTkyeCBmYXN0ZXIKICAgbW9kLWJvb2xlYW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi42NjI4Ky0wLjE1NjMgICAgID8g
ICAgICA2Ljc4ODcrLTAuMjUwNiAgICAgICAgPyBtaWdodCBiZSAxLjAxODl4IHNsb3dlcgogICBt
dWwtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjYyMzcr
LTAuMDkwNyAgICAgICAgICAgIDIuNTk5MCstMC4wMzExICAgICAgICAKICAgbXVsLWJvb2xlYW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yMjA5Ky0wLjA0MTQgICAg
ID8gICAgICAyLjMyNzcrLTAuMjU1MSAgICAgICAgPyBtaWdodCBiZSAxLjA0ODF4IHNsb3dlcgog
ICBuZWctYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjMw
MzErLTAuMDk2NCAgICAgICAgICAgIDIuMjUxMCstMC4wNTE1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDIzMnggZmFzdGVyCiAgIG5lZ2F0aXZlLXplcm8tZGl2aWRlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMzI0NistMC4wMTY3ICAgICA/ICAgICAgMC4zODU5Ky0wLjA2MzcgICAgICAg
ID8gbWlnaHQgYmUgMS4xODg2eCBzbG93ZXIKICAgbmVnYXRpdmUtemVyby1tb2R1bG8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4zNTkyKy0wLjAyNjcgICAgID8gICAgICAwLjM2OTAr
LTAuMDQ4MCAgICAgICAgPyBtaWdodCBiZSAxLjAyNzN4IHNsb3dlcgogICBuZWdhdGl2ZS16ZXJv
LW5lZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM0MTArLTAuMDM3MyAgICAg
ICAgICAgIDAuMzIwNSstMC4wMTkzICAgICAgICAgIG1pZ2h0IGJlIDEuMDY0MXggZmFzdGVyCiAg
IG5lc3RlZC1mdW5jdGlvbi1wYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQuODU4
NystMC42ODUxICAgICA/ICAgICAzNi4xMjY4Ky0yLjEwNDQgICAgICAgID8gbWlnaHQgYmUgMS4w
MzY0eCBzbG93ZXIKICAgbmV3LWFycmF5LWJ1ZmZlci1kZWFkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1My43MzY5Ky0yLjEzNjIgICAgICAgICAgIDUyLjk1NTQrLTEuNzExNiAgICAgICAg
ICBtaWdodCBiZSAxLjAxNDh4IGZhc3RlcgogICBuZXctYXJyYXktYnVmZmVyLXB1c2ggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LjMzNDArLTAuNTg5OSAgICAgICAgICAgIDQuMTg1Nist
MC4zNzQzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1NXggZmFzdGVyCiAgIG5ldy1hcnJheS1kZWFk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNTYxMSstMC4zMDMxICAgICA/
ICAgICAgNi43MjI2Ky0wLjM2NDUgICAgICAgID8gbWlnaHQgYmUgMS4wMjQ2eCBzbG93ZXIKICAg
bmV3LWFycmF5LXB1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wODQ5
Ky0wLjIzNDggICAgICAgICAgICAzLjAxOTQrLTAuMDkxOSAgICAgICAgICBtaWdodCBiZSAxLjAy
MTd4IGZhc3RlcgogICBuby1pbmxpbmUtY29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDI0LjA5MzUrLTAuODk2NSAgICAgICAgICAgMjQuMDAyMystMC42NzA4ICAgICAgICAK
ICAgTnVtYmVyLWlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC42
MDQ5Ky0xLjA3MDYgICAgICAgICAgICA5Ljk1MzMrLTAuMDcxNCAgICAgICAgICBtaWdodCBiZSAx
LjA2NTV4IGZhc3RlcgogICBudW1iZXItdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjc0MDIrLTAuMTI3NSAgICAgPyAgICAgIDIuNzUxNistMC4wNjY5ICAgICAg
ICA/CiAgIG9iamVjdC1hbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuNjU2MSstMC4xMTQyICAgICA/ICAgICAgNC43MjA5Ky0wLjE5NDAgICAgICAgID8gbWlnaHQg
YmUgMS4wMTM5eCBzbG93ZXIKICAgb2JqZWN0LWNsb3N1cmUtY2FsbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC40OTYzKy0wLjMyNDAgICAgICAgICAgICA0LjMwNTcrLTAuMDE5NCAg
ICAgICAgICBtaWdodCBiZSAxLjA0NDN4IGZhc3RlcgogICBvYmplY3QtZ2V0LW93bi1wcm9wZXJ0
eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuMDU3OSstMC4wOTcyICAgICA/ICAgICAgMS4yMTY4
Ky0wLjIzNDEgICAgICAgID8gbWlnaHQgYmUgMS4xNTAyeCBzbG93ZXIKICAgb2JqZWN0LWludC1h
ZGQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC40Njc5Ky0wLjcwNzAgICAg
ICAgICAgIDEwLjEwMjUrLTAuMDU5OSAgICAgICAgICBtaWdodCBiZSAxLjAzNjJ4IGZhc3Rlcgog
ICBvYmplY3QtaW50LWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjQy
MDYrLTAuNDE2MiAgICAgPyAgICAgMTIuNzU2MCstMC40NzA3ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDI3MHggc2xvd2VyCiAgIG9iamVjdC1pbnQtYW5kLWFycmF5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAuODIxNCstMC42OTM1ICAgICAgICAgICAxMC4zMjgxKy0wLjQ0MjUgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDc4eCBmYXN0ZXIKICAgb2JqZWN0LWludC1tdWwtYXJyYXkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOS4yODA3Ky0wLjUwNTQgICAgICAgICAgICA4LjkwOTcr
LTAuNDE1MCAgICAgICAgICBtaWdodCBiZSAxLjA0MTZ4IGZhc3RlcgogICBvYmplY3QtaW50LXN1
Yi1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjQwODkrLTAuMDcxOCAgICAg
PyAgICAgIDcuNjU0NystMC4zMTEwICAgICAgICA/IG1pZ2h0IGJlIDEuMDMzMnggc2xvd2VyCiAg
IG9iamVjdC1pbnQtc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuMjM3
NSstMC4zMDQwICAgICA/ICAgICAxMi4yNTU5Ky0wLjM4MTkgICAgICAgID8KICAgb2JqZWN0LWxz
aGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42Mjc4Ky0wLjA1ODEg
ICAgID8gICAgICA0LjYyODArLTAuMDU3OSAgICAgICAgPwogICBvYmplY3Qtb3IgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjY4MTYrLTAuMTcwOSAgICAgICAgICAg
IDQuNjMxNystMC4wNjkwICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwOHggZmFzdGVyCiAgIG9iamVj
dC1yc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjMxMCstMC4w
OTYyICAgICA/ICAgICAgNC42NzE1Ky0wLjA5MjUgICAgICAgID8KICAgb2JqZWN0LXRlc3QgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40ODA1Ky0wLjA3OTIgICAgICAg
ICAgICAyLjQ1NzErLTAuMDMyMSAgICAgICAgCiAgIG9iamVjdC11cnNoaWZ0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjQyMSstMC4wNTk4ICAgICA/ICAgICAgNC43NDI5
Ky0wLjIyODMgICAgICAgID8gbWlnaHQgYmUgMS4wMjE3eCBzbG93ZXIKICAgb2JqZWN0LXhvciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41ODQwKy0wLjA2OTIgICAg
ID8gICAgICA0LjcyMTcrLTAuMTc1NSAgICAgICAgPyBtaWdodCBiZSAxLjAzMDB4IHNsb3dlcgog
ICBvYnZpb3VzLXNpbmstcGF0aG9sb2d5LXRha2VuICAgICAgICAgICAgICAgICAgICAgIDY1Ljk2
MzIrLTIuNDY5MSAgICAgPyAgICAgNjcuOTc0NSstMC4yODIyICAgICAgICA/IG1pZ2h0IGJlIDEu
MDMwNXggc2xvd2VyCiAgIG9idmlvdXMtc2luay1wYXRob2xvZ3kgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTUuODY5MistMC43MDIzICAgICA/ICAgICAxNi4xNDkzKy0wLjgwMTUgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTc2eCBzbG93ZXIKICAgb2J2aW91c2x5LWVsaWRhYmxlLW5ldy1vYmpl
Y3QgICAgICAgICAgICAgICAgICAgICAxMy40MjkyKy0wLjEzNTEgICAgID8gICAgIDEzLjU3Nzgr
LTAuODA0OSAgICAgICAgPyBtaWdodCBiZSAxLjAxMTF4IHNsb3dlcgogICBwbHVzLWJvb2xlYW4t
YXJpdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjA3MzQrLTAuMDg1NSAgICAg
ICAgICAgIDIuMDE2MSstMC4xMzYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4NHggZmFzdGVyCiAg
IHBsdXMtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjE4
MystMC4wNTUxICAgICA/ICAgICAgMi4yNDQyKy0wLjA2NjUgICAgICAgID8gbWlnaHQgYmUgMS4w
MTE3eCBzbG93ZXIKICAgcGx1cy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi4wMjc3Ky0wLjI4MTAgICAgICAgICAgICAxLjk0NDMrLTAuMDU3OSAgICAgICAg
ICBtaWdodCBiZSAxLjA0Mjl4IGZhc3RlcgogICBwb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQt
cHJvdG90eXBlcy1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi4zMTUzKy0wLjAwODggICAgID8gICAgICAyLjM1NDIrLTAuMTYy
NCAgICAgICAgPyBtaWdodCBiZSAxLjAxNjh4IHNsb3dlcgogICBwb2x5LWNoYWluLWFjY2Vzcy1k
aWZmZXJlbnQtcHJvdG90eXBlcyAgICAgICAgICAgICAyLjM5MjQrLTAuMTQwMSAgICAgICAgICAg
IDIuMzAxMistMC4wNjMzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5NnggZmFzdGVyCiAgIHBvbHkt
Y2hhaW4tYWNjZXNzLXNpbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMzAxMistMC4w
NTk0ICAgICAgICAgICAgMi4yODIyKy0wLjA2MTAgICAgICAgIAogICBwb2x5LWNoYWluLWFjY2Vz
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjI4MzIrLTAuMDkwNCAgICAgPyAg
ICAgIDIuMzE5MCstMC4xMTgyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1N3ggc2xvd2VyCiAgIHBv
bHktc3RyaWN0ZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYuNTM0NCst
Mi4wNTc5ICAgICAgICAgICA0NS41MzkwKy0wLjM4ODMgICAgICAgICAgbWlnaHQgYmUgMS4wMjE5
eCBmYXN0ZXIKICAgcG9seW1vcnBoaWMtYXJyYXktY2FsbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS4zMzgzKy0wLjA5OTEgICAgICAgICAgICAxLjMzMTkrLTAuMTcxMSAgICAgICAgCiAg
IHBvbHltb3JwaGljLWdldC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuODc1
MistMC4xMzg1ICAgICA/ICAgICAgMS45NTM4Ky0wLjEyODkgICAgICAgID8gbWlnaHQgYmUgMS4w
NDE5eCBzbG93ZXIKICAgcG9seW1vcnBoaWMtcHV0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyMy42MzczKy0xLjI0MzEgICAgID8gICAgIDIzLjY1MTArLTAuNjYxOCAgICAgICAg
PwogICBwb2x5bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAgIDI0
LjE0MzYrLTAuOTEyOCAgICAgPyAgICAgMjQuNjM2MCstMS43MTY0ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDIwNHggc2xvd2VyCiAgIHBvbHltb3JwaGljLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wgICAg
ICAgICAgICAgICAgMjQuMzUxMistMS4wNjUwICAgICA/ICAgICAyNS41NjQxKy0xLjk4OTUgICAg
ICAgID8gbWlnaHQgYmUgMS4wNDk4eCBzbG93ZXIKICAgcG9seW1vcnBoaWMtc3RydWN0dXJlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMi41MTE0Ky0xLjE1MDQgICAgICAgICAgIDExLjc3
MTArLTAuMjk3MSAgICAgICAgICBtaWdodCBiZSAxLjA2Mjl4IGZhc3RlcgogICBwb2x5dmFyaWFu
dC1tb25vbW9ycGhpYy1nZXQtYnktaWQgICAgICAgICAgICAgICAgICAzLjM2ODcrLTAuMTc5NSAg
ICAgICAgICAgIDMuMzI0MystMC4wNDM5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzM3ggZmFzdGVy
CiAgIHByZXZlbnQtZXh0ZW5zaW9ucy1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgMTIu
NzQyNSstMC41MjYyICAgICAgICAgICAxMi41Njk3Ky0wLjg0MTggICAgICAgICAgbWlnaHQgYmUg
MS4wMTM3eCBmYXN0ZXIKICAgcHJvdG8tZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMC4zODMxKy0wLjU1MzcgICAgID8gICAgIDEwLjUwNTUrLTAuOTU4MiAgICAg
ICAgPyBtaWdodCBiZSAxLjAxMTh4IHNsb3dlcgogICBwcm90b3R5cGUtYWNjZXNzLXdpdGgtbXV0
YXRpbmctcHJvdG90eXBlICAgICAgICAgICA0LjI0OTIrLTAuMDUzNCAgICAgPyAgICAgIDQuNTg4
MystMC4zNTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDc5OHggc2xvd2VyCiAgIHB1dC1ieS1pZC1y
ZXBsYWNlLWFuZC10cmFuc2l0aW9uICAgICAgICAgICAgICAgICAgIDQuNjk4NistMC4xNjM5ICAg
ICAgICAgICAgNC42ODQ0Ky0wLjI5OTYgICAgICAgIAogICBwdXQtYnktaWQtc2xpZ2h0bHktcG9s
eW1vcnBoaWMgICAgICAgICAgICAgICAgICAgICAyLjMxNDgrLTAuMTMyNiAgICAgICAgICAgIDIu
MzA2NistMC4xNjEyICAgICAgICAKICAgcHV0LWJ5LWlkLXRyYW5zaXRpb24td2l0aC1pbmRleGlu
Zy1oZWFkZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMC44NjYzKy0wLjI3OTkgICAgICAgICAgIDEwLjY5NDIrLTAuMjAyNyAgICAgICAg
ICBtaWdodCBiZSAxLjAxNjF4IGZhc3RlcgogICBwdXQtYnktaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3LjU3MzcrLTEuNzM0NCAgICAgICAgICAgIDcuMjk5NSst
MC40MTgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM3NnggZmFzdGVyCiAgIHB1dC1ieS12YWwtZGly
ZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjg2MystMC4wMTYwICAgICAh
ICAgICAgMC4zMTU1Ky0wLjAxMjAgICAgICAgICEgZGVmaW5pdGVseSAxLjEwMjB4IHNsb3dlcgog
ICBwdXQtYnktdmFsLWxhcmdlLWluZGV4LWJsYW5rLWluZGV4aW5nLXR5cGUgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44MjIzKy0wLjMz
NjQgICAgICAgICAgICA0LjcyMDcrLTAuMjQ1MyAgICAgICAgICBtaWdodCBiZSAxLjAyMTV4IGZh
c3RlcgogICBwdXQtYnktdmFsLW1hY2hpbmUtaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjUzMzIrLTAuMTk0MSAgICAgICAgICAgIDIuNDM0NCstMC4xMDg3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDQwNnggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctcmVwbGFjZS1hbmQt
dHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2Ljk2ODkrLTAuMjA3MiAgICAgPyAgICAgIDcuNDAyMystMC44MzQ2ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDYyMnggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctc2xp
Z2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy4yMzYwKy0wLjA2NDkgICAgID8gICAgICAzLjI4MzQrLTAuMTc5
OSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDZ4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3Ry
aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjgzNzQrLTAuMTk3MCAgICAgICAgICAg
IDYuNzk1OSstMC4xNzQxICAgICAgICAKICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC1yZXBsYWNl
LWFuZC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYuNDI1MystMC4wNzIwICAgICA/ICAgICAgNi44MTEzKy0wLjUxNDUg
ICAgICAgID8gbWlnaHQgYmUgMS4wNjAxeCBzbG93ZXIKICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJv
bC1zbGlnaHRseS1wb2x5bW9ycGhpYyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyLjU0NzkrLTAuMjg2MyAgICAgICAgICAgIDIuNTAzMyst
MC4wNjcxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3OHggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0
aC1zeW1ib2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMzI0MSstMC40NDcwICAgICA/
ICAgICAgNy4zNzg5Ky0wLjMxMDYgICAgICAgID8KICAgcmFyZS1vc3ItZXhpdC1vbi1sb2NhbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMC45MTEwKy0xLjExMDYgICAgID8gICAgIDExLjM1
OTUrLTAuMjE3NiAgICAgICAgPyBtaWdodCBiZSAxLjA0MTF4IHNsb3dlcgogICByYXl0cmFjZS13
aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICA0Ljc5NDIrLTAuMTU5NCAg
ICAgPyAgICAgIDQuOTA2NSstMC4xMDU5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzNHggc2xvd2Vy
CiAgIHJheXRyYWNlLXdpdGgtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcu
NjU4NistMC4xODAxICAgICAgICAgICAgNy42MDI3Ky0wLjE3MDMgICAgICAgIAogICByZWdleHAt
ZXhlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3Ljg2MTIrLTAuOTE4
OCAgICAgPyAgICAgMjcuOTExNSstMC42MzA3ICAgICAgICA/CiAgIHJlZ2V4cC1sYXN0LWluZGV4
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguNDQxNCstMC4yNTYzICAgICA/ICAg
ICAgOC43ODk4Ky0xLjIwNDcgICAgICAgID8gbWlnaHQgYmUgMS4wNDEzeCBzbG93ZXIKICAgcmVn
ZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2UgICAgICAgICAgICAgICAgICAgMC4zNjMxKy0w
LjAxNzIgICAgID8gICAgICAwLjM4MzYrLTAuMDQwNCAgICAgICAgPyBtaWdodCBiZSAxLjA1NjV4
IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjgxNjArLTAuMDc5OCAgICAgICAgICAgIDAuNzkxOSstMC4wNjg5ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDMwNHggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjMwNjkrLTAuMDYwNSAgICAgPyAgICAgIDAuMzE0OSstMC4wNDQ3ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDI2MHggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMS4xODQzKy0wLjA2ODYgICAgICAgICAgICAxLjE3MDEr
LTAuMDI4NiAgICAgICAgICBtaWdodCBiZSAxLjAxMjF4IGZhc3RlcgogICByZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMwMzgrLTAuMDExNyAgICAgPyAg
ICAgIDAuMzI3OSstMC4wNTkxICAgICAgICA/IG1pZ2h0IGJlIDEuMDc5Nnggc2xvd2VyCiAgIHJl
Z2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzI5
NSstMC4wMzIxICAgICA/ICAgICAgMC4zNTUzKy0wLjA3MjEgICAgICAgID8gbWlnaHQgYmUgMS4w
Nzg1eCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtZ2xvYmFsICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMzg1NSstMC4xMjEyICAgICAgICAgICAgMC4zMjY2Ky0wLjAyNzEgICAg
ICAgICAgbWlnaHQgYmUgMS4xODAzeCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZSAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMyNjIrLTAuMDI1MSAgICAgPyAg
ICAgIDAuMzMxMistMC4wMzA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1M3ggc2xvd2VyCiAgIHJl
Z2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZSAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjM0OTYrLTAuMDYzNSAgICAgICAgICAgIDAuMzI1OSstMC4wNDE4ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDcyOHggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLXN0aWNreSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjMwNTErLTAuMDA4OSAgICAgPyAgICAgIDAuMzQzMystMC4wNTY3
ICAgICAgICA/IG1pZ2h0IGJlIDEuMTI1NXggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMTQ2Ky0wLjAzNTYgICAgID8g
ICAgICAwLjM2MzIrLTAuMDk2MiAgICAgICAgPyBtaWdodCBiZSAxLjE1NDZ4IHNsb3dlcgogICBy
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNCAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM4NTkrLTAu
MDk3MCAgICAgICAgICAgIDAuMzQ0MystMC4wNDc2ICAgICAgICAgIG1pZ2h0IGJlIDEuMTIwOXgg
ZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtdGVzdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
Ljc0NDcrLTAuMDcxOCAgICAgICAgICAgIDAuNjg1MistMC4wNzcxICAgICAgICAgIG1pZ2h0IGJl
IDEuMDg2OHggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtdGVzdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4zNDE3Ky0wLjA0NTUgICAgICAgICAgICAwLjI5OTIrLTAuMDE1NCAgICAgICAg
ICBtaWdodCBiZSAxLjE0MjF4IGZhc3RlcgogICByZWdleHAtc2V0LWxhc3QtaW5kZXggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5LjA4MDIrLTAuNDUwMSAgICAgPyAgICAgIDkuMTA2Mist
MC40NzUzICAgICAgICA/CiAgIHJlZ2lzdGVyLXByZXNzdXJlLWZyb20tb3NyICAgICAgICAgICAg
ICAgICAgICAgICAgMTQuNjU5NCstMC4zOTUyICAgICA/ICAgICAxNC44NDA0Ky0wLjUxNzUgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTIzeCBzbG93ZXIKICAgcmVwZWF0LW11bHRpLWdldC1ieS1vZmZz
ZXQgICAgICAgICAgICAgICAgICAgICAgICAxOS4zOTMzKy0wLjg3OTUgICAgICAgICAgIDE4LjY3
NzUrLTAuNjkzNyAgICAgICAgICBtaWdodCBiZSAxLjAzODN4IGZhc3RlcgogICByZXN0LXBhcmFt
ZXRlci1jb25zdHJ1Y3Rpb24tcGVyZm9ybWFuY2UgICAgICAgICAgIDI1Ljk2NzcrLTAuMjAyMyAg
ICAgICAgICAgMjUuOTE5NystMC4xNzEwICAgICAgICAKICAgcmljaGFyZHMtZW1wdHktdHJ5LWNh
dGNoICAgICAgICAgICAgICAgICAgICAgICAgICA0OC45NzMxKy0wLjUxOTEgICAgICAgICAgIDQ4
LjQzMTIrLTAuODExMyAgICAgICAgICBtaWdodCBiZSAxLjAxMTJ4IGZhc3RlcgogICByaWNoYXJk
cy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjA2LjU4NTArLTMuMjE1
MiAgICAgICAgICAyMDMuNzUxOCstMy40NDczICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOXggZmFz
dGVyCiAgIHNjb3BlZC1hcmd1bWVudHMtbGVuZ3RoICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDYuMDM0NystMC4wODYxICAgICAgICAgICAgNS45OTAyKy0wLjA4NTEgICAgICAgIAogICBzY29w
ZWQtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoICAgICAgICAgICAgICAgICA1LjkzOTArLTAu
MDM4NSAgICAgPyAgICAgIDUuOTgxMistMC4wOTA3ICAgICAgICA/CiAgIHNjb3BlZC1hcmd1bWVu
dHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGggICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi41OTEyKy0wLjA1NzEgICAgID8gICAgICA2
LjY4MjcrLTAuMTc5NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMzl4IHNsb3dlcgogICBzZWFsLWFu
ZC1kby13b3JrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjI0ODUrLTAuNDIz
NCAgICAgPyAgICAgMTIuNDYyMistMC42MjIzICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3NHggc2xv
d2VyCiAgIHNldC1mb3ItZWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuOTAyMSstMC40Nzg0ICAgICAgICAgICAgMy41NzkxKy0wLjA4NTEgICAgICAgICAgbWlnaHQg
YmUgMS4wOTAzeCBmYXN0ZXIKICAgc2V0LWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNi40NjI1Ky0wLjU0NTEgICAgICAgICAgICA2LjMwNTgrLTAuMTc0NiAg
ICAgICAgICBtaWdodCBiZSAxLjAyNDh4IGZhc3RlcgogICBzZXR0ZXItcHJvdG90eXBlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjMyNzcrLTAuMDUwNCAgICAgICAgICAgIDQu
MzIxMCstMC4wNDg5ICAgICAgICAKICAgc2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi44MTkxKy0wLjA3NDUgICAgID8gICAgICAyLjg3MTMrLTAuMDQy
NiAgICAgICAgPyBtaWdodCBiZSAxLjAxODV4IHNsb3dlcgogICBzaW1wbGUtYWN0aXZhdGlvbi1k
ZW1vICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLjAzMTkrLTIuMjg4MiAgICAgPyAgICAg
MjIuODEzNCstMS44NzQ3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1NXggc2xvd2VyCiAgIHNpbXBs
ZS1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTguMzMxMCstMS4y
MzQ5ICAgICAgICAgICAxNi41NjY2Ky0xLjEzNDUgICAgICAgICAgbWlnaHQgYmUgMS4xMDY1eCBm
YXN0ZXIKICAgc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy43NDk3Ky0wLjEzMDcgICAgICAgICAgICAzLjczNjkrLTAuMDYyMSAgICAgICAgCiAgIHNp
bXBsZS1wb2x5LWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMzAwOSst
MC4xMzA5ICAgICAgICAgICAgMS4yMjA2Ky0wLjA0MDIgICAgICAgICAgbWlnaHQgYmUgMS4wNjU4
eCBmYXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbCAgICAgICAgICAgICAg
ICAgICAgMi44Mjk4Ky0wLjE2MDUgICAgICAgICAgICAyLjY4NjIrLTAuMDkzMiAgICAgICAgICBt
aWdodCBiZSAxLjA1MzV4IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZyAgICAg
ICAgICAgICAgICAgICAgICAgIDE1Ljc2MjErLTAuMTgwOSAgICAgXiAgICAgMTQuNzc1MystMC4z
MTc3ICAgICAgICBeIGRlZmluaXRlbHkgMS4wNjY4eCBmYXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmctZmFpbC13aXRoLWhvaXN0ZWQtcmVnZXhwICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguNDA2MistMC40MDgwICAgICAg
ICAgICAgOC4xMTgyKy0wLjE4NjIgICAgICAgICAgbWlnaHQgYmUgMS4wMzU1eCBmYXN0ZXIKICAg
c2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbCAgICAgICAgICAgICAgICAgICAxMi44NjM3
Ky0wLjMyMTYgICAgID8gICAgIDEzLjk1NTMrLTIuNTM4OSAgICAgICAgPyBtaWdodCBiZSAxLjA4
NDl4IHNsb3dlcgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy13aXRoLWhvaXN0ZWQtcmVn
ZXhwICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDkuMzIxMSstMC4zNjcyICAgICA/ICAgICAgOS4zODExKy0wLjMwMTAgICAgICAgID8KICAg
c2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcgICAgICAgICAgICAgICAgICAgICAgICAxNC40NTQ4
Ky0wLjU0MjAgICAgICAgICAgIDE0LjI1MjQrLTAuNDQ5OCAgICAgICAgICBtaWdodCBiZSAxLjAx
NDJ4IGZhc3RlcgogICBzaW4tYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA2LjA0OTErLTAuMTE3NSAgICAgPyAgICAgIDYuMTc2MistMC4yNzA0ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDIxMHggc2xvd2VyCiAgIHNpbmdsZXRvbi1zY29wZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNTkuMDQzNCstMC41NDY3ICAgICAgICAgICA1OC45OTA4Ky0w
LjQxMzYgICAgICAgIAogICBzaW5rLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LjgzODcrLTAuMzgzNSAgICAgPyAgICAgIDUuMzI3NistMC40NTQwICAgICAg
ICA/IG1pZ2h0IGJlIDEuMTAxMHggc2xvd2VyCiAgIHNpbmstaHVnZS1hY3RpdmF0aW9uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTEuNjI5MistMC44NTcyICAgICAgICAgICAxMS42MTAz
Ky0wLjkwNjcgICAgICAgIAogICBzaW5rYWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMzLjc3ODArLTEuMDkwMiAgICAgICAgICAgMzMuMzQ3OSstMC40MTQ3ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEyOXggZmFzdGVyCiAgIHNpbmthYmxlLW5ldy1vYmplY3QtdGFr
ZW4gICAgICAgICAgICAgICAgICAgICAgICAgMzAuMTMwNCstMS44NjA4ICAgICAgICAgICAyOS4z
OTAzKy0wLjY4MDQgICAgICAgICAgbWlnaHQgYmUgMS4wMjUyeCBmYXN0ZXIKICAgc2lua2FibGUt
bmV3LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS44ODY2Ky0wLjgwNzgg
ICAgICAgICAgIDE1LjY5MDQrLTAuNjUyOCAgICAgICAgICBtaWdodCBiZSAxLjAxMjV4IGZhc3Rl
cgogICBzbG93LWFycmF5LXByb2ZpbGUtY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICAgICAy
LjA5NDkrLTAuMDc5NSAgICAgPyAgICAgIDIuMTY4NSstMC4wMzgwICAgICAgICA/IG1pZ2h0IGJl
IDEuMDM1Mnggc2xvd2VyCiAgIHNsb3ctY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuMzEwOCstMC4wNDU5ICAgICA/ICAgICAgMi4zMTMwKy0wLjAzMDQgICAg
ICAgID8KICAgc2xvdy10ZXJuYXJpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMi4xNjY5Ky0xLjA0MTUgICAgICAgICAgIDExLjc3NTArLTAuMTU3OSAgICAgICAgICBtaWdo
dCBiZSAxLjAzMzN4IGZhc3RlcgogICBzb3J0aW5nLWJlbmNobWFyayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE2LjU2NTkrLTAuNTczMiAgICAgPyAgICAgMTcuMjQ3NSstMC41Nzc4
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxMXggc2xvd2VyCiAgIHNwYXJzZS1jb25kaXRpb25hbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTMxNistMC4wNTA5ICAgICAgICAgICAg
MS4xMTI5Ky0wLjAzNTkgICAgICAgICAgbWlnaHQgYmUgMS4wMTY3eCBmYXN0ZXIKICAgc3BhcnNl
LXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ny45Nzk5Ky0yLjIw
ODIgICAgICAgICAgIDU3LjIwMTkrLTAuNTE5MiAgICAgICAgICBtaWdodCBiZSAxLjAxMzZ4IGZh
c3RlcgogICBzcGxpY2UtdG8tcmVtb3ZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE0LjM1NjcrLTEuNjg0OCAgICAgICAgICAgMTMuNjg2NCstMC44Njg2ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDQ5MHggZmFzdGVyCiAgIHN0cmNhdC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDUuMjM5MSstMC4yMTk5ICAgICAgICAgICAgNS4yMzg3Ky0wLjQwMTYg
ICAgICAgIAogICBzdHJjYXQtbGVuZ3RoLWNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjQ3MTYrLTAuMjI5NSAgICAgICAgICAgIDUuNDI5OSstMC4yMTE3ICAgICAgICAKICAg
c3RyaWN0LW9zci1lbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4yNzY0
Ky0wLjIxNDQgICAgICAgICAgICA4LjI2MzcrLTAuMTk4OCAgICAgICAgCiAgIHN0cmluZy1jaGFy
LWNvZGUtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuOTA0OSstMC41NDMxICAg
ICA/ICAgICAxMi4zMTI5Ky0xLjAzOTYgICAgICAgID8gbWlnaHQgYmUgMS4wMzQzeCBzbG93ZXIK
ICAgc3RyaW5nLWNvbmNhdC1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS43
MjYzKy0wLjAyODcgICAgICEgICAgICAyLjIxMjkrLTAuMjM2NSAgICAgICAgISBkZWZpbml0ZWx5
IDEuMjgxOXggc2xvd2VyCiAgIHN0cmluZy1jb25jYXQtcGFpci1vYmplY3QgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEuNzYwNSstMC4wOTEyICAgICAhICAgICAgMi4xMDk1Ky0wLjExOTkgICAg
ICAgICEgZGVmaW5pdGVseSAxLjE5ODJ4IHNsb3dlcgogICBzdHJpbmctY29uY2F0LXBhaXItc2lt
cGxlICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcyMzErLTAuMTEyMyAgICAgICAgICAgIDIu
NjU0NCstMC4wMTkzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1OXggZmFzdGVyCiAgIHN0cmluZy1j
b25jYXQtc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuODgzNistMC4yMTkz
ICAgICA/ICAgICAgOC4xNjAyKy0wLjUxNDggICAgICAgID8gbWlnaHQgYmUgMS4wMzUxeCBzbG93
ZXIKICAgc3RyaW5nLWNvbnMtcmVwZWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS4zNDYwKy0wLjIwMTQgICAgICEgICAgICA1LjkzOTcrLTAuMjkxMiAgICAgICAgISBkZWZpbml0
ZWx5IDEuMTExMXggc2xvd2VyCiAgIHN0cmluZy1jb25zLXRvd2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQuMDYzNCstMC4wODk0ICAgICAhICAgICAgNi4zMzE3Ky0wLjI1OTAg
ICAgICAgICEgZGVmaW5pdGVseSAxLjU1ODJ4IHNsb3dlcgogICBzdHJpbmctZXF1YWxpdHkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjYyMTYrLTEuMDQ2NyAgICAgPyAgICAg
MTQuOTM3MystMS4yNTgzICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxNnggc2xvd2VyCiAgIHN0cmlu
Zy1mcm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjExOCstMC4w
NTcyICAgICA/ICAgICAgNS44MDQ5Ky0wLjMwMjcgICAgICAgID8gbWlnaHQgYmUgMS4wMzQ0eCBz
bG93ZXIKICAgc3RyaW5nLWdldC1ieS12YWwtYmlnLWNoYXIgICAgICAgICAgICAgICAgICAgICAg
ICAgNC4xMTk5Ky0wLjAzMzIgICAgID8gICAgICA0LjEyNDUrLTAuMjIyMyAgICAgICAgPwogICBz
dHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzLWluc2FuZSAgICAgICAgICAgICAzLjU0MjIr
LTAuMDUyNCAgICAgICAgICAgIDMuNTE1OCstMC4wODE2ICAgICAgICAKICAgc3RyaW5nLWdldC1i
eS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgMy45MzI5Ky0wLjAyMDMgICAg
ID8gICAgICA0LjAwMTMrLTAuMDkxMyAgICAgICAgPyBtaWdodCBiZSAxLjAxNzR4IHNsb3dlcgog
ICBzdHJpbmctZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjg3
NzArLTAuMjIxMiAgICAgICAgICAgIDEuODY5NCstMC4wNjY5ICAgICAgICAKICAgc3RyaW5nLWhh
c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44NDk3Ky0wLjAxMjcg
ICAgID8gICAgICAyLjAyOTcrLTAuNDMyOSAgICAgICAgPyBtaWdodCBiZSAxLjA5NzN4IHNsb3dl
cgogICBzdHJpbmctbG9uZy1pZGVudC1lcXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAgIDEx
Ljk4MTQrLTAuMzA0NiAgICAgPyAgICAgMTIuMzE0OCstMS4yMTk3ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDI3OHggc2xvd2VyCiAgIHN0cmluZy1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuMjMwMSstMC4yNzMxICAgICA/ICAgICAgOS4yNDE4Ky0wLjQzOTcgICAg
ICAgID8KICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC45MTEwKy0wLjAzNTcgICAgID8gICAgICAwLjk1NTIrLTAuMDc5NyAgICAgICAgPyBtaWdodCBi
ZSAxLjA0ODZ4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4zNjAwKy0wLjAzMTYgICAgICAgICAgICAwLjM1NDQrLTAuMDE4MCAgICAg
ICAgICBtaWdodCBiZSAxLjAxNTd4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4zNTczKy0wLjAyMjEgICAgID8gICAgICAwLjM2NTQr
LTAuMDQzNSAgICAgICAgPyBtaWdodCBiZSAxLjAyMjV4IHNsb3dlcgogICBzdHJpbmctcHJvdG90
eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNDY2Ky0wLjAyOTMgICAgID8g
ICAgICAwLjM3MDUrLTAuMDU0MyAgICAgICAgPyBtaWdodCBiZSAxLjA2ODl4IHNsb3dlcgogICBz
dHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMzQ5NSstMC4w
NDcyICAgICAgICAgICAgMS4zMTkxKy0wLjAzNjEgICAgICAgICAgbWlnaHQgYmUgMS4wMjMweCBm
YXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4zOTMxKy0wLjA1NjYgICAgID8gICAgICAwLjQ3NzUrLTAuMjg2MiAgICAgICAgPyBtaWdodCBi
ZSAxLjIxNDZ4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjM2OTUrLTAuMDI3MyAgICAgPyAgICAgIDAuMzc0OSstMC4wMzYw
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0OHggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM3NTUrLTAuMDMwMiAgICAgPyAg
ICAgIDAuMzkxNSstMC4wNDEyICAgICAgICA/IG1pZ2h0IGJlIDEuMDQyNnggc2xvd2VyCiAgIHN0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2Ug
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4zODQwKy0wLjA0ODEgICAgID8gICAgICAwLjM5NDErLTAuMDUxOCAgICAgICAgPyBtaWdodCBi
ZSAxLjAyNjJ4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC40MTM1Ky0wLjAzNTcgICAgICAgICAgICAwLjM4MzErLTAu
MDIzOSAgICAgICAgICBtaWdodCBiZSAxLjA3OTF4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40MDEwKy0wLjA0NzAgICAg
ID8gICAgICAwLjQwODcrLTAuMDQ5OSAgICAgICAgPyBtaWdodCBiZSAxLjAxOTF4IHNsb3dlcgog
ICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2Rl
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuNDIyOSstMC4xMTcxICAgICAgICAgICAgMC4zNjI4Ky0wLjAwNjIgICAgICAgICAgbWlnaHQg
YmUgMS4xNjU2eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC40MzEzKy0wLjA4MDAgICAgICAgICAgICAwLjM5MDErLTAuMDY1MCAgICAg
ICAgICBtaWdodCBiZSAxLjEwNTR4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LWFyaXRoICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjc0NzYrLTEuNjM2NiAgICAgICAgICAgMjEuMDAx
MCstMS45NDg1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1NnggZmFzdGVyCiAgIHN0cmluZy1yZXBl
YXQtbm90LXJlc29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDIuNTA3MistMC4xNTk5ICAg
ICA/ICAgICAgMi42OTAzKy0wLjE2MzEgICAgICAgID8gbWlnaHQgYmUgMS4wNzMweCBzbG93ZXIK
ICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLW5vLWlubGluZSAgICAgICAgICAgICAgMy4x
MzcyKy0wLjA5MjQgICAgICEgICAgICAzLjcwNzIrLTAuMjYyMCAgICAgICAgISBkZWZpbml0ZWx5
IDEuMTgxN3ggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZyAgICAgICAgICAg
ICAgICAgICAgICAgIDMuMDg5MSstMC4xNTU2ICAgICAhICAgICAgMy40MjUyKy0wLjEzOTMgICAg
ICAgICEgZGVmaW5pdGVseSAxLjEwODh4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LXJlc29sdmlu
Zy1maXhlZCAgICAgICAgICAgICAgICAgICAgIDIxLjA2MTYrLTAuMjE2NiAgICAgPyAgICAgMjIu
MjYzNCstMS43NDc1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU3MXggc2xvd2VyCiAgIHN0cmluZy1y
ZXBlYXQtcmVzb2x2aW5nLW5vLWlubGluZSAgICAgICAgICAgICAgICAgMjguMTg5OCstMC4yNTEx
ICAgICA/ICAgICAyOC44OTU4Ky0xLjEzNTkgICAgICAgID8gbWlnaHQgYmUgMS4wMjUweCBzbG93
ZXIKICAgc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAy
OS4wOTU5Ky0xLjg4NTkgICAgICAgICAgIDI4Ljg5NTgrLTEuNTUxOSAgICAgICAgCiAgIHN0cmlu
Zy1yZXBlYXQtc2luZ2xlLW5vdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgIDYuNTgyMistMS4x
MzA2ICAgICA/ICAgICAgNy4xMDI4Ky0xLjA3MzQgICAgICAgID8gbWlnaHQgYmUgMS4wNzkxeCBz
bG93ZXIKICAgc3RyaW5nLXJlcGVhdC1zaW5nbGUtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAg
ICAgNi40MTIwKy0wLjgxNDQgICAgID8gICAgICA2Ljc4MTgrLTEuMTEyMiAgICAgICAgPyBtaWdo
dCBiZSAxLjA1Nzd4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LXNtYWxsLW5vdC1yZXNvbHZpbmcg
ICAgICAgICAgICAgICAgICAyLjUzNTQrLTAuMDg1NyAgICAgISAgICAgIDIuODcyNSstMC4xNjY2
ICAgICAgICAhIGRlZmluaXRlbHkgMS4xMzI5eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1zbWFs
bC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAyOS4wMjkxKy0wLjkzMDggICAgID8gICAg
IDI5LjA4NjMrLTEuNTg5MiAgICAgICAgPwogICBzdHJpbmctcmVwbGFjZS1lbXB0eSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3LjczMTIrLTAuNDUxNyAgICAgICAgICAgIDcuNDIxMyst
MC4zOTE4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQxOHggZmFzdGVyCiAgIHN0cmluZy1yZXBsYWNl
LWdlbmVyaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkuMzA2MystMi4zOTU0ICAgICA/
ICAgICA0OS44NTM1Ky0wLjYwOTAgICAgICAgID8gbWlnaHQgYmUgMS4wMTExeCBzbG93ZXIKICAg
c3RyaW5nLXJlcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4wNDcx
Ky0wLjcyNDUgICAgICAgICAgICA3LjQxMzkrLTAuMTE3NyAgICAgICAgICBtaWdodCBiZSAxLjA4
NTR4IGZhc3RlcgogICBzdHJpbmctcm9wZS13aXRoLW9iamVjdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE1LjkyMzYrLTEuMDA5MCAgICAgPyAgICAgMTYuMzQ2NistMC45NDM2ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI2Nnggc2xvd2VyCiAgIHN0cmluZy1zdWIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMzMuMjQxNSstMC41NzM3ICAgICAgICAgICAzMi4yODUzKy0x
LjE5ODEgICAgICAgICAgbWlnaHQgYmUgMS4wMjk2eCBmYXN0ZXIKICAgc3RyaW5nLXRlc3QgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42MTMzKy0wLjAzNDYgICAgID8g
ICAgICAyLjYxNzgrLTAuMDcwOSAgICAgICAgPwogICBzdHJpbmctdHJhbnNjb2RpbmcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjE2NzArLTAuMzY5OSAgICAgPyAgICAgMTMuNzEy
OCstMS42MjYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxNXggc2xvd2VyCiAgIHN0cmluZy12YXIt
ZXF1YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuNTAxNSstMS43MDMyICAg
ICAgICAgICAyNC4xMjcwKy0xLjI0MTEgICAgICAgICAgbWlnaHQgYmUgMS4wMTU1eCBmYXN0ZXIK
ICAgc3RydWN0dXJlLWhvaXN0LW92ZXItdHJhbnNpdGlvbnMgICAgICAgICAgICAgICAgICAgMi4w
MzAwKy0wLjA2ODEgICAgID8gICAgICAyLjExNjUrLTAuMzE3OSAgICAgICAgPyBtaWdodCBiZSAx
LjA0MjZ4IHNsb3dlcgogICBzdWJzdHJpbmctY29uY2F0LXdlaXJkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMxLjM3NDMrLTAuMzI4NSAgICAgISAgICAgMzMuNDQ2MistMC4zMTk1ICAgICAg
ICAhIGRlZmluaXRlbHkgMS4wNjYweCBzbG93ZXIKICAgc3Vic3RyaW5nLWNvbmNhdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNS4xMDkyKy0wLjQwNDIgICAgID8gICAgIDM3Ljc3
MjgrLTIuNDA4NiAgICAgICAgPyBtaWdodCBiZSAxLjA3NTl4IHNsb3dlcgogICBzdWJzdHJpbmcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwLjI3MzYrLTEuMjY1NCAg
ICAgPyAgICAgNDEuOTI3OSstMC42NzA2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxMXggc2xvd2Vy
CiAgIHN1cGVyLWdldC1ieS1pZC13aXRoLXRoaXMtbW9ub21vcnBoaWMgICAgICAgICAgICAgMjQu
OTk0MCstMC41MDc5ICAgICA/ICAgICAyNS42NjE2Ky0wLjc4OTMgICAgICAgID8gbWlnaHQgYmUg
MS4wMjY3eCBzbG93ZXIKICAgc3VwZXItZ2V0LWJ5LWlkLXdpdGgtdGhpcy1wb2x5bW9ycGhpYyAg
ICAgICAgICAgICAyMy4yNzc5Ky0wLjY5NzEgICAgICAgICAgIDIyLjg5NzgrLTAuODExOCAgICAg
ICAgICBtaWdodCBiZSAxLjAxNjZ4IGZhc3RlcgogICBzdXBlci1nZXQtYnktdmFsLXdpdGgtdGhp
cy1tb25vbW9ycGhpYyAgICAgICAgICAgIDI2LjA5MjUrLTIuMDA5NSAgICAgICAgICAgMjUuNzkw
MSstMC41MjUwICAgICAgICAgIG1pZ2h0IGJlIDEuMDExN3ggZmFzdGVyCiAgIHN1cGVyLWdldC1i
eS12YWwtd2l0aC10aGlzLXBvbHltb3JwaGljICAgICAgICAgICAgMjMuOTAxMystMC41MzI3ICAg
ICA/ICAgICAyMy45MDc3Ky0wLjQ3ODkgICAgICAgID8KICAgc3dpdGNoLWNoYXItY29uc3RhbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45NzI5Ky0wLjI0ODQgICAgICAgICAgICAx
Ljk0NDErLTAuMTU0MCAgICAgICAgICBtaWdodCBiZSAxLjAxNDh4IGZhc3RlcgogICBzd2l0Y2gt
Y2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjM5ODgrLTAuMzkw
MiAgICAgICAgICAgIDQuMzEzNSstMC4wNTMyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5OHggZmFz
dGVyCiAgIHN3aXRjaC1jb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuOTMzNSstMC4xNTE2ICAgICA/ICAgICAgMy45OTUxKy0wLjE0OTYgICAgICAgID8gbWlnaHQg
YmUgMS4wMTU3eCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYy1iaWctdmFyICAgICAgICAg
ICAgICAgICAgICAgICAxMy43MzQ5Ky0xLjA0MDcgICAgID8gICAgIDEzLjc3NzgrLTEuMjEwNCAg
ICAgICAgPwogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDExLjg0MTgrLTAuODMwOSAgICAgPyAgICAgMTIuMjUxMSstMC42NDk1ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDM0Nnggc2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtdmFyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTQuMjc2OCstMS4yNzU0ICAgICAgICAgICAxNC4yMTM3Ky0xLjE3
NTEgICAgICAgIAogICBzd2l0Y2gtc3RyaW5nLWJhc2ljICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEwLjYwNTIrLTAuMTE4MCAgICAgPyAgICAgMTAuNjgzOCstMC4xNjczICAgICAgICA/
CiAgIHN3aXRjaC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgMTgu
NjAzNystMC41NDAwICAgICAgICAgICAxOC40ODMwKy0xLjE1NzUgICAgICAgIAogICBzd2l0Y2gt
c3RyaW5nLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgICAgIDE0LjQzMjUrLTEuNDYx
MCAgICAgICAgICAgMTQuNDA1NSstMS41NDE1ICAgICAgICAKICAgc3dpdGNoLXN0cmluZy1sZW5n
dGgtdG93ZXIgICAgICAgICAgICAgICAgICAgICAgICAxMC4zNjY5Ky0wLjEzMTcgICAgID8gICAg
IDEwLjQ2MjgrLTAuMjMyMSAgICAgICAgPwogICBzd2l0Y2gtc3RyaW5nLXNob3J0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEwLjE0NzYrLTAuMTEzMSAgICAgPyAgICAgMTEuMDM4Nist
MS4yNjg4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDg3OHggc2xvd2VyCiAgIHN3aXRjaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMzM5MSstMC4xNzYyICAgICA/
ICAgICAgNS40NTc2Ky0wLjE0NzQgICAgICAgID8gbWlnaHQgYmUgMS4wMjIyeCBzbG93ZXIKICAg
c3dpdGNoaW5nLXNpemUtY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Mi44Mzk0
Ky0wLjY2NzIgICAgIF4gICAgIDM4LjQ4NzMrLTAuNTIwMCAgICAgICAgXiBkZWZpbml0ZWx5IDEu
MTEzMXggZmFzdGVyCiAgIHN5bWJvbC10b3N0cmluZ3RhZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuMDAzMystMC4xMDM1ICAgICAgICAgICAgMi45NTQ0Ky0wLjE5MzUgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTY2eCBmYXN0ZXIKICAgdGFuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2Ni44OTY3Ky0xLjcwNTUgICAgICAgICAgIDY2LjY2NTYr
LTEuODEyNiAgICAgICAgCiAgIHRlYXItb2ZmLWFyZ3VtZW50cy1zaW1wbGUgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuMTA4NystMC4xMTA2ICAgICAgICAgICAgMi4wNTc2Ky0wLjEyMzYgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjQ4eCBmYXN0ZXIKICAgdGVhci1vZmYtYXJndW1lbnRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44NjkwKy0wLjI5OTEgICAgID8gICAgICAyLjk3
MDcrLTAuMjUxOCAgICAgICAgPyBtaWdodCBiZSAxLjAzNTR4IHNsb3dlcgogICB0ZW1wb3JhbC1z
dHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjM1OTgrLTAuNjMxOSAg
ICAgPyAgICAgMTEuMzk2NystMC42Mjc0ICAgICAgICA/CiAgIHRvLWludDMyLWJvb2xlYW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNTU0MCstMC41MzE3ICAgICA/ICAgICAx
Mi43ODc5Ky0xLjM5MTMgICAgICAgID8gbWlnaHQgYmUgMS4wMTg2eCBzbG93ZXIKICAgdG8tbnVt
YmVyLWNvbnN0cnVjdG9yLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZyAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQ5NDUrLTAuMTcz
NSAgICAgPyAgICAgIDMuNDk5NystMC4xNDAxICAgICAgICA/CiAgIHRvLW51bWJlci1jb25zdHJ1
Y3Rvci1vbmx5LW51bWJlciAgICAgICAgICAgICAgICAgIDAuNjg4MCstMC4wNTg4ICAgICA/ICAg
ICAgMC43MDA0Ky0wLjA1NTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTgweCBzbG93ZXIKICAgdG8t
bnVtYmVyLWNvbnN0cnVjdG9yLW9ubHktc3RyaW5nICAgICAgICAgICAgICAgICAgMS41Mzc4Ky0w
LjA0MzMgICAgID8gICAgICAxLjU4ODArLTAuMDQ5MCAgICAgICAgPyBtaWdodCBiZSAxLjAzMjZ4
IHNsb3dlcgogICB0by1udW1iZXItY29uc3RydWN0b3Itc3RyaW5nLW51bWJlci1zdHJpbmctbnVt
YmVyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIuOTQ0NCstMC4yNjI1ICAgICAgICAgICAgMi45MjE2Ky0wLjI3NTUgICAgICAgIAogICB0
by1udW1iZXItbnVtYmVyLXN0cmluZy1udW1iZXItc3RyaW5nICAgICAgICAgICAgICAzLjIzOTkr
LTAuNDExMSAgICAgICAgICAgIDMuMDQ0MSstMC4wNjk1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY0
M3ggZmFzdGVyCiAgIHRvLW51bWJlci1vbmx5LW51bWJlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuNjQ2NistMC4xMTQ2ICAgICA/ICAgICAgMC42NjE5Ky0wLjA1OTEgICAgICAgID8g
bWlnaHQgYmUgMS4wMjM3eCBzbG93ZXIKICAgdG8tbnVtYmVyLW9ubHktc3RyaW5nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMS41NTUwKy0wLjE4ODUgICAgICAgICAgICAxLjU1MDkrLTAu
MDY2MCAgICAgICAgCiAgIHRvLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZy1udW1iZXIgICAg
ICAgICAgICAgIDIuODA5MystMC4xMTg3ICAgICA/ICAgICAgMi44NDMxKy0wLjA1NzMgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTIweCBzbG93ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtY2xvbmVk
LWFyZ3VtZW50cyAgICAgICAgICAgICAgMy4xMTM5Ky0wLjMzNjAgICAgICAgICAgICAyLjkyNzIr
LTAuMTE2MyAgICAgICAgICBtaWdodCBiZSAxLjA2Mzd4IGZhc3RlcgogICB0cnktY2F0Y2gtZ2V0
LWJ5LXZhbC1kaXJlY3QtYXJndW1lbnRzICAgICAgICAgICAgICAxLjYyNzcrLTAuMTA1MiAgICAg
PyAgICAgIDEuNjYzMCstMC4wOTU3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxN3ggc2xvd2VyCiAg
IHRyeS1jYXRjaC1nZXQtYnktdmFsLXNjb3BlZC1hcmd1bWVudHMgICAgICAgICAgICAgIDMuNTIz
NSstMC4yMzEyICAgICAgICAgICAgMy41MDU1Ky0wLjIwNDcgICAgICAgIAogICB0cnktZ2V0LWJ5
LWlkLWJhc2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjU2NTErLTAuMjYxMiAg
ICAgPyAgICAgIDUuNjgyMystMC4xNjIwICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxMXggc2xvd2Vy
CiAgIHRyeS1nZXQtYnktaWQtcG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAgICAgICAgIDYu
Mzk1OSstMC4xNjQyICAgICA/ICAgICAgNi41OTgxKy0wLjI3NzYgICAgICAgID8gbWlnaHQgYmUg
MS4wMzE2eCBzbG93ZXIKICAgdHlwZWQtYXJyYXktZ2V0LXNldC1ieS12YWwtcHJvZmlsaW5nICAg
ICAgICAgICAgICAxOS41MDg0Ky0wLjYxNTUgICAgICAgICAgIDE5LjI4ODMrLTAuNDgyMSAgICAg
ICAgICBtaWdodCBiZSAxLjAxMTR4IGZhc3RlcgogICB0eXBlZC1hcnJheS1zdWJhcnJheSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMxLjkzNzUrLTAuNDg2MCAgICAgPyAgICAgMzIuMjI2
NistMC4zMDI0ICAgICAgICA/CiAgIHVuZGVmaW5lZC1wcm9wZXJ0eS1hY2Nlc3MgICAgICAgICAg
ICAgICAgICAgICAgICAyMDYuMzkwMCstMC40NzIxICAgICA/ICAgIDIwNy43OTIwKy00LjUxMDMg
ICAgICAgID8KICAgdW5kZWZpbmVkLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi44NDQzKy0wLjI0NTUgICAgICAgICAgICAyLjczNTUrLTAuMTI1OSAgICAgICAgICBt
aWdodCBiZSAxLjAzOTh4IGZhc3RlcgogICB1bnByb2ZpbGVkLWxpY20gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1LjYzMjIrLTAuMzE2MiAgICAgPyAgICAgIDUuODAwMSstMC40
ODk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5OHggc2xvd2VyCiAgIHVudHlwZWQtc3RyaW5nLWZy
b20tY2hhci1jb2RlICAgICAgICAgICAgICAgICAgICAgIDkuMjMxMCstMC4xNDEyICAgICAgICAg
ICAgOS4xNzExKy0wLjUwMDkgICAgICAgIAogICB2OC1yYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1j
YXRjaCAgICAgICAgICAgICAgICAgIDI0LjA4NTArLTAuODE5OSAgICAgPyAgICAgMjQuMzAyMSst
MC4zNDEzICAgICAgICA/CiAgIHY4LXJheXRyYWNlLXdpdGgtdHJ5LWNhdGNoLWhpZ2gtZnJlcXVl
bmN5LXRocm93cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjgyLjg2NDQrLTguMDM0NiAgICAgICAgICAyODIuNDM2MSstNC4wNTg0ICAgICAg
ICAKICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICA1
My4zNDczKy0xLjA2MDggICAgID8gICAgIDUzLjY5OTErLTAuNjE3NSAgICAgICAgPwogICB2OC1y
ZWdleHAtc2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5LjIwMTcrLTIu
NjY0MSAgICAgICAgICAgNDYuOTIzMSstMC40MDExICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4Nngg
ZmFzdGVyCiAgIHZhcmFyZ3MtY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTIuNzA3OCstMC41NTYyICAgICAgICAgICAxMi42NzQ0Ky0wLjU3MzcgICAgICAgIAogICB2
YXJhcmdzLWNvbnN0cnVjdC1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjE4NjYr
LTAuMzU5MiAgICAgPyAgICAgMTQuNDkzMystMC41NzQ3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIx
Nnggc2xvd2VyCiAgIHZhcmFyZ3MtY29uc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTIuMjgyMCstMC44MjE0ICAgICA/ICAgICAxMi45OTk4Ky0wLjkzNTYgICAgICAgID8g
bWlnaHQgYmUgMS4wNTg0eCBzbG93ZXIKICAgdmFyYXJncy1pbmxpbmUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOC41NzEyKy0xLjE1MDAgICAgICAgICAgICA3Ljc5MzIrLTAu
MTExNCAgICAgICAgICBtaWdodCBiZSAxLjA5OTh4IGZhc3RlcgogICB2YXJhcmdzLXN0cmljdC1t
b2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjAzOTIrLTAuMTA5MSAgICAgPyAg
ICAgIDkuMTk1OCstMC4yNjkwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3M3ggc2xvd2VyCiAgIHZh
cmFyZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguOTcxMist
MC4wODk4ICAgICA/ICAgICAgOS4yMjE4Ky0wLjUwOTAgICAgICAgID8gbWlnaHQgYmUgMS4wMjc5
eCBzbG93ZXIKICAgd2VpcmQtaW5saW5pbmctY29uc3QtcHJvcCAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS45MzYyKy0wLjEzNTMgICAgID8gICAgICAxLjkzOTkrLTAuMzU4MiAgICAgICAgPwoK
ICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4w
ODExKy0wLjAxMTAgICAgICEgICAgICA3LjExMzIrLTAuMDExOCAgICAgICAgISBkZWZpbml0ZWx5
IDEuMDA0NXggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApBc21CZW5jaDoKICAgYmlnZmliLmNwcCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwMy42MTQ5Ky02LjEwMDAgICAg
ID8gICAgNDA3LjA5MzArLTkuNjc5MSAgICAgICAgPwogICBjcmF5LmMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzU5LjkzNTUrLTMuNTQwNCAgICAgPyAgICAzNjAu
ODI2MistMS4xNzEwICAgICAgICA/CiAgIGRyeS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0MDAuNTM1OCstMy41NTk2ICAgICA/ICAgIDQzNy4zOTk1Ky04MC4w
OTY4ICAgICAgID8gbWlnaHQgYmUgMS4wOTIweCBzbG93ZXIKICAgRmxvYXRNTS5jICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY4Ny4wMTAzKy0zOC4yMzY3ICAgID8gICAg
Njk4Ljg2NDkrLTM5LjY0MjEgICAgICAgPyBtaWdodCBiZSAxLjAxNzN4IHNsb3dlcgogICBnY2Mt
bG9vcHMuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMzcwLjA1NDMrLTEw
LjQzMjcgICAgPyAgIDMzNzEuMTA4OCstMTQuNDEzOCAgICAgICA/CiAgIG4tYm9keS5jICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NTEuODY1OCstNS4zNDY2ICAgICA/
ICAgIDc1NC43ODcwKy0zLjc3NjkgICAgICAgID8KICAgUXVpY2tzb3J0LmMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDM3Ny4yMDY0Ky03LjIxOTYgICAgICAgICAgMzcwLjkw
MjMrLTYuMjU1MyAgICAgICAgICBtaWdodCBiZSAxLjAxNzB4IGZhc3RlcgogICBzdGVwYW5vdl9j
b250YWluZXIuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAzMTQwLjgxODYrLTExLjE4NTUg
ICAgICAgIDMxMjQuMzg1MCstMjMuODU0NyAgICAgICAKICAgVG93ZXJzLmMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1Mi4wMjA0Ky00Ljc4MzMgICAgICAgICAgMjUx
LjIyNTArLTMuNDI0OSAgICAgICAgCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjc3LjgxOTUrLTQuODQyOCAgICAgPyAgICA2ODQuMjUzNystMTEu
NDYxMCAgICAgICA/IG1pZ2h0IGJlIDEuMDA5NXggc2xvd2VyCgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAg
ICAgICAgICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApDb21w
cmVzc2lvbkJlbmNoOgogICBodWZmbWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE4LjEwMDIrLTEuMTkyNiAgICAgPyAgICAgMTguOTM2MSstMS40NjgwICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDQ2Mnggc2xvd2VyCiAgIGFyaXRobWV0aWMtc2ltcGxlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyNDkuMTEwNistNC4yNTU4ICAgICA/ICAgIDI1MS4xMjQ3
Ky00LjAzOTYgICAgICAgID8KICAgYXJpdGhtZXRpYy1wcmVjaXNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIzNy4wMjU0Ky0zLjgyOTQgICAgID8gICAgMjM3LjY3NzcrLTMuNzQxMyAg
ICAgICAgPwogICBhcml0aG1ldGljLWNvbXBsZXgtcHJlY2lzZSAgICAgICAgICAgICAgICAgICAg
ICAgMjM2LjA1MjkrLTQuMDAwNCAgICAgICAgICAyMzQuNTU0OSstMS44OTMwICAgICAgICAKICAg
YXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTAgICAgICAgICAgICAgICAgICAgICAgIDI1NS4yMDM2
Ky00LjYzNjkgICAgID8gICAgMjU1Ljc0NjkrLTIuNzc5MiAgICAgICAgPwogICBhcml0aG1ldGlj
LXByZWNpc2Utb3JkZXItMSAgICAgICAgICAgICAgICAgICAgICAgMjg1LjY2NTErLTIuMjI1NiAg
ICAgPyAgICAyODcuNTg0NSstMy43MTQ0ICAgICAgICA/CiAgIGFyaXRobWV0aWMtcHJlY2lzZS1v
cmRlci0yICAgICAgICAgICAgICAgICAgICAgICAzMjYuNDg1MystMy4zMTU4ICAgICA/ICAgIDMy
OC4zODE1Ky00LjQ4NTIgICAgICAgID8KICAgYXJpdGhtZXRpYy1zaW1wbGUtb3JkZXItMSAgICAg
ICAgICAgICAgICAgICAgICAgIDI5NS42MTE0Ky00LjA5ODMgICAgID8gICAgMjk1LjY4MTYrLTMu
NzE0OCAgICAgICAgPwogICBhcml0aG1ldGljLXNpbXBsZS1vcmRlci0yICAgICAgICAgICAgICAg
ICAgICAgICAgMzQ3Ljk0NTgrLTEwLjIwMDEgICAgPyAgICAzNTAuMTA0NystNi4wNzI3ICAgICAg
ICA/CiAgIGx6LXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
NjguOTU5NistNy43NzA4ICAgICA/ICAgIDI3MS44NDc3Ky0xMC40MjM3ICAgICAgID8gbWlnaHQg
YmUgMS4wMTA3eCBzbG93ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyMDkuODU2MSstMS4zMjAyICAgICA/ICAgIDIxMS41NjIyKy0yLjAyODIg
ICAgICAgID8gbWlnaHQgYmUgMS4wMDgxeCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwT2ZUcmVlICAgICAgICAgICAgICAg
ICAgIFRoaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkdlb21lYW4g
b2YgcHJlZmVycmVkIG1lYW5zOgogICA8c2NhbGVkLXJlc3VsdD4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQyLjk0NjMrLTAuMDcwNSAgICAgPyAgICAgNDMuMTAzMCstMC4xMjMw
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAzNnggc2xvd2VyCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289291</attachid>
            <date>2016-09-19 17:32:37 -0700</date>
            <delta_ts>2016-09-19 20:51:00 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>173497</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDYxMDApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE2LTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBwb3J0IG92
ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgYSBtaWNyb2JlbmNobWFy
ayBmb3Igd2h5IHdlIHdhbnQgdG8gcmVjbGFpbSBlbXB0eSBibG9ja3MgZnJvbSBvdGhlciBhbGxv
Y2F0b3JzLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNz
ZXMuanM6IEFkZGVkLgorCiAyMDE2LTA5LTE4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIERvIG5vdCBuZWVkIHRvIHVzZSBkZWZpbmVQcm9w
ZXJ0eSB0byBkZWZpbmUgbWV0aG9kcyBmb3Igb2JqZWN0IGxpdGVyYWxzCkluZGV4OiBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9zd2l0Y2hpbmctc2l6ZS1jbGFzc2VzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNzZXMuanMJKG5vbmV4
aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3dpdGNoaW5nLXNpemUtY2xhc3Nl
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTA7ICsraSkgeworICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTAwMDAwOyArK2opCisgICAgICAg
IG5ldyBBcnJheSgxMCAqIGkpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjY4IEBACisyMDE2LTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBz
dXBwb3J0IG92ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDb25jdXJyZW50
IEdDcyBtdXN0IGFsbG93IGZvciBtdXRhdGlvbiBhbmQgYWxsb2NhdGlvbiBkdXJpbmcgY29sbGVj
dGlvbi4gV2UgYWxyZWFkeSBrbm93CisgICAgICAgIGhvdyB0byBtdXRhdGUgZHVyaW5nIGNvbGxl
Y3Rpb24uIFdlIGhhdmUgYSB3cml0ZSBiYXJyaWVyIGZvciB0aGF0LiBBbGxvY2F0aW9uIGR1cmlu
ZworICAgICAgICBjb2xsZWN0aW9uIGlzIG1vcmUgaW52b2x2ZWQ6IHRoZSBjb2xsZWN0b3IgbW9k
aWZpZXMgdGhlIHRoZSBtYXJrIGJpdHMsIGFzIHdlbGwgYXMgb3RoZXIKKyAgICAgICAga2luZHMg
b2YgTWFya2VkQmxvY2sgc3RhdGUsIGluLXBsYWNlIGR1cmluZyBhIGNvbGxlY3Rpb24uIFRoZSBh
bGxvY2F0b3IgdXNlcyB0aGF0IHNhbWUKKyAgICAgICAgTWFya2VkQmxvY2sgc3RhdGUgdG8gZGVj
aWRlIHdoaWNoIHJlZ2lvbnMgb2YgbWVtb3J5IGFyZSBmcmVlLiBUaGlzIHdvcmtzIGlmIHRoZSBh
bGxvY2F0b3IKKyAgICAgICAgbmV2ZXIgcnVucyB3aGlsZSB0aGUgY29sbGVjdG9yIGlzIHJ1bm5p
bmcsIGJ1dCBpZiB3ZSB3YW50IHRvIGFsbG93IHRoZW0gdG8gcnVuIGF0IHRoZSBzYW1lCisgICAg
ICAgIHRpbWUsIHRoZW4gd2UgbmVlZCB0byBoYXZlIHR3byB2ZXJzaW9ucyBvZiB0aGUgc3RhdGU6
IG9uZSB2ZXJzaW9uIGJ1aWx0IHVwIGJ5IHRoZQorICAgICAgICBjb2xsZWN0b3IgYW5kIGFub3Ro
ZXIgY29uc3VtZWQgYnkgdGhlIGFsbG9jYXRvci4gV2UgY2xlYXIgdGhlIGNvbGxlY3RvciBzdGF0
ZSBhdCB0aGUKKyAgICAgICAgYmVnaW5uaW5nIG9mIGNvbGxlY3Rpb24sIGFuZCBzcGxhdCB0aGUg
Y29sbGVjdG9yIHN0YXRlIG9udG8gdGhlIGFsbG9jYXRvciBzdGF0ZSBhZnRlcgorICAgICAgICBj
b2xsZWN0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjb3VsZCBiZSBzdXBlciBleHBlbnNp
dmUsIGJ1dCB3ZSBjYW4gbWFrZSBpdCBjaGVhcCB3aXRoIHNvbWUgY2xldmVybmVzcy4gVGhlIGJp
Z2dlc3QKKyAgICAgICAgb2JzZXJ2YXRpb24gaXMganVzdCB0aGF0IG1vc3Qgb2YgdGhlIHN0YXRl
IGlzIGEgaGFuZGZ1bCBvZiBiaXRzIHBlciBibG9jazogaXMgdGhlIGJsb2NrCisgICAgICAgIGZy
ZWUtbGlzdGVkPyBpcyBpdCBjb21wbGV0ZWx5IGZ1bGw/IGNvbXBsZXRlbHkgZW1wdHk/IGluIHRo
ZSBpbmNyZW1lbnRhbCBzd2VlcGVyJ3MKKyAgICAgICAgc25hcHNob3Q/IGlzIGl0IHJldGlyZWQ/
IGlzIGl0IGluIGVkZW4/IFRoZXJlIGlzIGFsc28gc3RhdGUgaW5zaWRlIGJsb2NrcywgbGlrZSB0
aGUgbWFyaworICAgICAgICBiaXRzLCBidXQgSSBoYXZlIGEgc29saWQgcGxhbiB0aGVyZSBhbmQg
SSdsbCBzYXZlIGl0IGZvciBhbm90aGVyIHBhdGNoLiBPbmNlIHdlIHZpZXcgdGhlCisgICAgICAg
IHN0YXRlIG9mIGJsb2NrcyBhcyBiaXRzLCB3ZSBjYW4gcHV0IHRoYXQgc3RhdGUgaW50byBiaXR2
ZWN0b3JzLCBzbyB0aGF0IGlmIHRoZSBjb2xsZWN0b3IKKyAgICAgICAgbmVlZHMgdG8gdHJhbnNm
b3JtIHRoZSBzdGF0ZSBvZiBzb21lIGJsb2NrcywgaXQgY2FuIGRvIGl0IHdpdGggYSBzaW5nbGUg
b3BlcmF0aW9uIG92ZXIKKyAgICAgICAgYml0dmVjdG9ycy4gSSBsaWtlIHRvIHRoaW5rIG9mIHRo
aXMgYXMgMzItd2F5IHBhcmFsbGVsaXppbmcgYmxvY2sgb3BlcmF0aW9ucywgc2luY2UKKyAgICAg
ICAgZG9pbmcgb25lIG9wZXJhdGlvbiBvbiBhIDMyLWJpdCB3b3JkIGluIG9uZSBvZiB0aG9zZSBi
aXR2ZWN0b3JzIGluc3RhbnRseSBhZmZlY3RzIDMyCisgICAgICAgIGJsb2Nrcy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgY2hhbmdlIGNvbnZlcnRzIGFsbCBwcmV2aW91cyBjb2xsZWN0aW9ucyBv
ZiBNYXJrZWRCbG9ja3MsIGFsb25nIHdpdGggdGhlIE1hcmtlZEJsb2NrCisgICAgICAgIHN0YXRl
LCBpbnRvIDggYml0dmVjdG9ycyAobGl2ZSwgZW1wdHksIGFsbG9jYXRlZCwgY2FuQWxsb2NhdGVC
dXROb3RFbXB0eSwgZWRlbiwgdW5zd2VwdCwKKyAgICAgICAgbWFya2luZ05vdEVtcHR5LCBhbmQg
bWFya2luZ1JldGlyZWQpLiBUaGUgYml0dmVjdG9ycyBzZXBhcmF0ZSBhbGxvY2F0b3Igc3RhdGUg
KGVtcHR5LAorICAgICAgICBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIGZyb20g
bWFya2luZyBzdGF0ZSAobWFya2luZ05vdEVtcHR5LCBtYXJraW5nUmV0aXJlZCkuCisgICAgICAg
IAorICAgICAgICBBcyBhIG5pY2Ugc2lkZS1lZmZlY3Qgb2Ygc3dpdGNoaW5nIHRvIGJpdHZlY3Rv
cnMsIHdlIGdldCBzaXplIGNsYXNzIHJlYmFsYW5jaW5nIGZvciBmcmVlLgorICAgICAgICBJdCB1
c2VkIHRvIGJlIHRoYXQgaWYgYSBNYXJrZWRBbGxvY2F0b3IgaGFkIGFuIGVtcHR5IGJsb2NrLCB3
ZSB3b3VsZCBvbmx5IGFsbG93IHRoYXQKKyAgICAgICAgbWVtb3J5IHRvIGJlIHJldXNlZCBieSBh
IGRpZmZlcmVudCBNYXJrZWRBbGxvY2F0b3IgaWYgd2UgZGlkIGFuIGluY3JlbWVudGFsIHN3ZWVw
IG9yIGEKKyAgICAgICAgZnVsbCBlYWdlciBzd2VlcC4gTm93IHdlIGh1bnQgZG93biBhbGwgZGVz
dHJ1Y3Rvcmxlc3MgZW1wdHkgYmxvY2tzIGJlZm9yZSBhbGxvY2F0aW5nIG5ldworICAgICAgICBN
YXJrZWRCbG9ja3MuIEl0IHdvdWxkIGJlIHJlbGF0aXZlbHkgZWFzeSB0byBhbHNvIGh1bnQgZG93
biBkZXN0cnVjdG9yIGVtcHR5IGJsb2NrcywgYnV0CisgICAgICAgIHRoZSB0aGVvcnkgaXMgdGhh
dCB0aG9zZSBtaWdodCBiZSBleHBlbnNpdmUgdG8gc3dlZXAsIHNvIGl0IG1pZ2h0IHN0aWxsIGJl
IGJldHRlciB0byBsZWF2ZQorICAgICAgICB0aG9zZSB0byB0aGUgaW5jcmVtZW50YWwgc3dlZXBl
ci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIHBlcmYtbmV1dHJhbCBhbGwgYXJv
dW5kLiBJIGRpZCBzb21lIHRlc3RzIHdpdGggdHdvIGRpZmZlcmVudCBraW5kcyBvZgorICAgICAg
ICBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgLSBzb21ldGhpbmcgdGhhdCBpcyBzb21ld2hhdCBlYXNp
ZXIgdG8gZG8gbm93IHRoYXQgeW91IGNhbiBsb29rIGZvcgorICAgICAgICBibG9ja3MgdGhhdCBh
cmUgY2FuZGlkYXRlcyBmb3IgYWxsb2NhdGlvbiBieSBqdXN0IHNjYW5uaW5nIHNvbWUgYml0dmVj
dG9ycy4gSSB0cmllZCB0d28KKyAgICAgICAgdmFyaWFudHM6CisgICAgICAgIAorICAgICAgICAt
IEFsbG9jYXRlIG91dCBvZiBub24tZW1wdHkgYmxvY2tzIGZpcnN0LCBsZWF2aW5nIGVtcHR5IGJs
b2NrcyBmb3IgbGFzdCBpbiBjYXNlIGEKKyAgICAgICAgICBkaWZmZXJlbnQgYWxsb2NhdG9yIG5l
ZWRlZCB0aGVtLiBUaGlzIGlzIHNvcnQgb2YgYSBiZXN0LWZpdCBzdHJhdGVneS4gSSB0cmllZCB0
aGlzCisgICAgICAgICAgZmlyc3QsIGFuZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFzOgorICAgICAg
ICAgIAorICAgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IG1fY2FuQWxsb2NhdGVCdXROb3RF
bXB0eS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSkKKyAgICAgICAgCisgICAgICAg
IC0gQWxsb2NhdGUgb3V0IG9mIGxvd2VyLWluZGV4ZWQgYmxvY2tzIGZpcnN0LCB0cmVhdGluZyBl
bXB0eSBhbmQgY2FuQWxsb2NhdGVCdXROb3RFbXB0eQorICAgICAgICAgIGJsb2NrcyBlcXVhbGx5
LiBUaGlzIGlzIHNvcnQgb2YgYSBmaXJzdC1maXQgc3RyYXRlZ3kuIFRoaXMgaXMgd2hhdCBJIGVu
ZGVkIHVwIHNldHRsaW5nCisgICAgICAgICAgb24sIGFuZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFz
OgorICAgICAgICAgIAorICAgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9j
YXRlQnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1
ZSkKKyAgICAgICAgCisgICAgICAgIFRoZSBiZXN0LWZpdCBzdHJhdGVneSBtZWFudCAxJSByZWdy
ZXNzaW9ucyBpbiBMb25nU3BpZGVyIGFuZCBPY3RhbmUgb3ZlcmFsbCwgYW5kIGEgMTElCisgICAg
ICAgIHJlZ3Jlc3Npb24gb24gT2N0YW5lL2VhcmxleS4gRmlyc3QtZml0IG1lYW5zIHBlcmYtbmV1
dHJhbGl0eS4gTW9zdCBncmVhdCBhbGxvY2F0b3JzIHNrZXcKKyAgICAgICAgdG93YXJkcyBmaXJz
dC1maXQgYmVjYXVzZSBpdCdzIGVtcGlyaWNhbGx5IGJldHRlciwgc28gdGhpcyByZXN1bHQgaXMg
bm90IHN1cnByaXNpbmcuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAg
KiBoZWFwL0NlbGxDb250YWluZXIuaDoKKyAgICAgICAgKiBoZWFwL0NlbGxDb250YWluZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OnZtKToKKyAgICAgICAgKEpTQzo6
Q2VsbENvbnRhaW5lcjo6aGVhcCk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmlzTWFy
a2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmFib3V0
VG9NYXJrKToKKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6aXNNYXJrZWQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmJlZ2luTWFya2luZyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2Fy
YmFnZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJbXBsKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6c25hcHNob3RNYXJrZWRTcGFjZSk6CisgICAgICAgIChKU0M6OkhlYXA6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6em9tYmlmeURlYWRPYmplY3RzKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3I6Ok1hcmtlZEJsb2NrU25h
cHNob3RGdW5jdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTbmFwc2hv
dEZ1bmN0b3I6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpyZXNl
dEFsbG9jYXRvcnMpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAq
IGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWQpOgorICAg
ICAgICAoSlNDOjpIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6Okhl
YXA6OnRlc3RBbmRTZXRNYXJrZWQpOgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuY3Bw
OgorICAgICAgICAqIGhlYXAvSGVhcFV0aWwuaDoKKyAgICAgICAgKEpTQzo6SGVhcFV0aWw6OmZp
bmRHQ09iamVjdFBvaW50ZXJzRm9yTWFya2luZyk6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpp
c1BvaW50ZXJHQ09iamVjdEpTQ2VsbCk6CisgICAgICAgICogaGVhcC9IZWFwVmVyaWZpZXIuY3Bw
OgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJ
bmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXApOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVy
OjpzdGFydFN3ZWVwaW5nKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjp3aWxs
RmluaXNoU3dlZXBpbmcpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6Cisg
ICAgICAgICogaGVhcC9MYXJnZUFsbG9jYXRpb24uaDoKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxv
Y2F0aW9uOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJr
ZWRDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6YWJvdXRU
b01hcmspOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2VkRHVyaW5nV2Vh
a1Zpc2l0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjpmbGlw
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmZs
aXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFy
a2VkQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpNYXJrZWRB
bGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJsb2NrKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbik6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUltcGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OnRyeUFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0
b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9j
ayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnByZXBhcmVGb3JBbGxvY2F0aW9uKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEFsbG9jYXRvcjo6YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlND
OjpNYXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1RvU3dlZXApOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzaHJp
bmspOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFzc2VydFNuYXBzaG90RW1wdHkp
OgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmR1bXApOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OmR1bXBCaXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9y
OjpyZXRpcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZpbHRl
ck5leHRCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0
TmV4dEJsb2NrVG9Td2VlcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJpdFZlY3Rvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpuZXh0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQWxsb2NhdG9yOjpzZXROZXh0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OnJlc3VtZUFsbG9jYXRpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6fkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJrZWRC
bG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dl
ZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2Rl
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RF
bXB0eU1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBl
clNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c2V0SXNGcmVlTGlzdGVkKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVk
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om1hcmtDb3VudCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6bm90ZU1hcmtlZFNsb3cpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpy
ZW1vdmVGcm9tQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
ZGlkQWRkVG9BbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpk
aWRSZW1vdmVGcm9tQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2Vs
bCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0
U3RhdGVBbmRTd2VlcE1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3cpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxsUmVtb3ZlQmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpwcmludEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01h
cmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRnJlZUxp
c3RlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmluZGV4KToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkQ29u
Y3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzT25C
bG9ja3NUb1N3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6c2V0SXNPbkJsb2Nrc1RvU3dlZXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpzdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwRm9yRWRlbkNv
bGxlY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRE
dXJpbmdXZWFrVmlzaXRpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc0xpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6Zm9yRWFjaExpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNTd2VlcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzQWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQpOiBEZWxldGVkLgorICAgICAgICAqIGhl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6SGFuZGxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExp
dmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRD
ZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0VmVyc2lvbik6CisgICAgICAg
ICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJr
ZWRTcGFjZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzaHJpbmspOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZW5kTWFy
a2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2spOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2spOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6c25hcHNob3QpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YXNz
ZXJ0U25hcHNob3RFbXB0eSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkdW1wQml0cyk6
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp6b21iaWZ5U3dlZXApOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6VmVyaWZ5TWFya2VkOjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6OmZsaXApOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkU3Bh
Y2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5leHRWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OmZpcnN0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmJs
b2Nrc1dpdGhOZXdPYmplY3RzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OnNldElzTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JF
YWNoTGl2ZUNlbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFj
aERlYWRDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlSW5saW5lcy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwpOgorICAgICAgICAqIGhl
YXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6c2V0TWFya2Vk
QW5kQXBwZW5kVG9NYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6bWFya0F1
eGlsaWFyeSk6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBoZWFwL1dlYWsuaDoKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8
VD4+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+
OjpwZWVrKToKKyAgICAgICAgKiBoZWFwL1dlYWtCbG9jay5jcHA6CisgICAgICAgIChKU0M6Oldl
YWtCbG9jazo6c3BlY2lhbGl6ZWRWaXNpdCk6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6cmVh
cCk6CisgICAgICAgICogaGVhcC9XZWFrSW5saW5lcy5oOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPEpTQzo6V2VhazxUPj46OmVtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPEpTQzo6V2VhazxUPj46OnBlZWspOiBEZWxldGVkLgorICAgICAgICAqIGppdC9K
SVRUaHVua3MuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb3RvdHlwZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHA6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKiB0
b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcDoKKwogMjAxNi0wOS0xNiAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3QyNjI6IFZhcmlvdXMgQ29u
c3RydWN0b3JzIGxlbmd0aCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBjb25maWd1cmFibGUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw4IEBACiAJCTBGN0MzOUZCMUM4RjYyOTMwMDQ4
MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5o
ICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5
RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsKIAkJMEY3
QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERG
R09wSW5mby5oICovOyB9OworCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFya2VkQmxv
Y2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggKi87IH07
CisJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI5MUQ4ODk1
MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLzsgfTsKIAkJMEY4MDIzRUExNjEz
ODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMz
NUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1Qjgx
NjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU3Niw2ICs1NzgsNyBAQAogCQkwRjlGQjRGNDE3RkNC
OTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQjRGMjE3RkNCOTE3MDBDQjY3RjggLyog
REZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgKi87IH07CiAJCTBGOUZCNEY1MTdGQ0I5MTcwMENCNjdG
OCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlv
dXRQaGFzZS5oICovOyB9OwogCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4QzEx
NEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRkExMzE3MTFEOERENzJCMDBFQzEzMEEgLyogUHJvdG90
eXBlTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZBMTMxNzAxRDhERDcyOTAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCAq
LzsgfTsKIAkJMEZBMkMxN0IxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEyQzE3OTE3
RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmNwcCAqLzsgfTsKIAkJMEZBMkMxN0Mx
N0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMkMxN0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRl
c3RSdW5uZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjcxNTBF
OTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgKi87IH07CkBAIC02MTAsNiArNjEzLDcg
QEAKIAkJMEZCNEZCNzMxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MDFCQzg0
MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNwcCAqLzsgfTsKIAkJMEZCNEZCNzQxQkM4
NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEZCNzExQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExh
enlTbG93UGF0aC5oICovOyB9OwogCQkwRkI0RkI3NTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6
eVNsb3dQYXRoQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZCNEZCNzIxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCAq
LzsgfTsKKwkJMEZCNTMwMzkxRDkwNDA0QzAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTMwMzgxRDkw
NDA0NjAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovOyB9OwogCQkwRkI1NDY3NzE0RjU5
QjVDMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAv
KiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGQjU0Njc5MTRGNUM0NkIwMDJDMjk4OSAvKiBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuY3BwICovOyB9OwogCQkwRkI1NDY3QjE0RjVDN0UxMDAyQzI5ODkgLyogTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMjczMSw2ICsyNzM1LDggQEAKIAkJMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8q
IFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhw
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGQzFDOEY2NTk1
MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGggPSBkZmcvREZHT3BJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI3MUQ4ODhBMDEwMDQ0RjVF
MiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWFya2VkQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
N0M1RkI5MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkU3BhY2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA4LDYgKzI4MTQsNyBAQAogCQkwRjlG
QjRGMjE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdGFja0xheW91dFBoYXNlLmNwcDsgcGF0
aCA9IGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY5RkI0RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RhY2tMYXlvdXRQaGFzZS5oOyBw
YXRoID0gZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkExMzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b3R5cGVNYXBJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTJDMTc5MTdEN0NGODQwMDlEMDE1RiAvKiBU
ZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMkMx
N0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlRmxhZ3MuY3BwOyBwYXRo
ID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
ODUyLDYgKzI4NTksNyBAQAogCQkwRkI0RkI3MDFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNs
b3dQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTExhenlT
bG93UGF0aC5jcHA7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEZCNzExQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93
UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGgu
aDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZCNEZCNzIxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBw
YXRoID0gZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZCNTMwMzgxRDkwNDA0NjAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxvY2F0aW9uU2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjU0
Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4
OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNTUsNiArNTI2Myw3IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYw
MEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkwRkI1MzAzODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi8s
CiAJCQkJMEY5NjMwMzUxRDQxOTJDMzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuY3Bw
ICovLAogCQkJCTBGOTYzMDM2MUQ0MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVz
LmggKi8sCiAJCQkJMEYwNzBBNDIxRDU0M0E4OTAwNkU3MjMyIC8qIENlbGxDb250YWluZXIuaCAq
LywKQEAgLTUzMzgsOSArNTM0NywxMSBAQAogCQkJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAv
KiBNYXJrZWRBbGxvY2F0b3IuaCAqLywKIAkJCQkxNDJENkYwNjEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suY3BwICovLAogCQkJCTE0MkQ2RjA3MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJr
ZWRCbG9jay5oICovLAorCQkJCTBGN0M1RkI3MUQ4ODhBMDEwMDQ0RjVFMiAvKiBNYXJrZWRCbG9j
a0lubGluZXMuaCAqLywKIAkJCQkxNDE0NDhDQTEzQTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxv
Y2tTZXQuaCAqLywKIAkJCQkxNEQyRjNEODEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2Uu
Y3BwICovLAogCQkJCTE0RDJGM0Q5MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5oICov
LAorCQkJCTBGN0M1RkI5MUQ4ODk1MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAq
LywKIAkJCQkxNDJENkYwRTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLywKIAkJ
CQkxNDJENkYwRjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggKi8sCiAJCQkJQUREQjFG
NjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RTZXQuaCAqLywKQEAgLTYwNzYsNiArNjA4
Nyw3IEBACiAJCQkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKIAkJ
CQkxNEQ4NDRBMjE2QUEyQzcwMDBBNjVBRjAgLyogUHJvdG90eXBlTWFwLmNwcCAqLywKIAkJCQkx
NEQ4NDRBMzE2QUEyQzcwMDBBNjVBRjAgLyogUHJvdG90eXBlTWFwLmggKi8sCisJCQkJMEZBMTMx
NzAxRDhERDcyOTAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCAqLywKIAkJCQk3OUIw
MENCODFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzlC
MDBDQjkxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuaCAqLywKIAkJCQk3OUIw
MENCQTFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3QuY3BwICovLApAQCAtNzMxMiw2ICs3
MzI0LDcgQEAKIAkJCQk2MkQ3NTVENzFCODRGQjRBMDAxODAxRkEgLyogQ2FsbEZyYW1lU2h1ZmZs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxs
TGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMjlFMTRDQTdEQzUwMDg1RjNDNiAv
KiBDYWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCNTMwMzkxRDkwNDA0QzAw
RjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI3NjczMjQx
QjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNC
OTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGM0I3RTJCMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzk0LDYgKzc0MDcsNyBAQAogCQkJCTBGNjZFMTZCMTRE
RjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkZCOTIxODE2RDAyRUIyMDA1NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQjgxRDg4OEEwQzAwNDRGNUUyIC8qIE1hcmtlZEJsb2Nr
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTIxQUIzRDhCRTAwQkJCOEU4IC8q
IERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkRE
ODE0MUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNDg1MzIyMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0aE1vZGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzg4Nyw2ICs3OTAxLDcgQEAKIAkJCQk4NkUzQzYxNDE2N0JBQkQ3MDA2
RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjRBQ0FGMTQ4NEM5Q0Uw
MEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUYx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RkExMzE3MTFEOERENzJCMDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVu
Y3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTEsNiArNzkyNiw3IEBACiAJCQkJ
QTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0
aFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAv
KiBKU0luamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzVGQkExRDg4
OTUwNzAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNDQyQ0IyNTFBNkNEQjhDMDA1RDNEN0MgLyogSlNJbnB1
dHMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0ludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVh
ZGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weQkocmV2aXNp
b24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC02MSw5ICs2MSw4IEBAIGNsYXNzIEJ1aWx0aW5zSW50ZXJuYWxzV3JhcHBlckhlYWRlckdl
bmUKIAogICAgIGRlZiBnZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgog
ICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCi0gICAgICAgICAgICAoWyJXZWJDb3JlIl0sCi0g
ICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1ZNLmgiKSwKLSAgICAg
ICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sICgiSmF2YVNjcmlwdENvcmUiLCAi
aGVhcC9XZWFrSW5saW5lcy5oIikpLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLCAoIkphdmFT
Y3JpcHRDb3JlIiwgInJ1bnRpbWUvVk0uaCIpKQogICAgICAgICBdCiAgICAgICAgIGZvciBvYmpl
Y3QgaW4gc2VsZi5pbnRlcm5hbHM6CiAgICAgICAgICAgICBoZWFkZXJfaW5jbHVkZXMuYXBwZW5k
KChbIldlYkNvcmUiXSwgKCJXZWJDb3JlIiwgb2JqZWN0Lm9iamVjdF9uYW1lICsgIkJ1aWx0aW5z
LmgiKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5j
cHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFy
c2VyLmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgogI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNjb3BlLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNjb3Bl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhlYXAu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFsbG9jYXRpb25TY29wZSB7CitwdWJsaWM6
CisgICAgQWxsb2NhdGlvblNjb3BlKEhlYXAmIGhlYXApCisgICAgICAgIDogbV9oZWFwKGhlYXAp
CisgICAgICAgICwgbV9sYXN0T3BlcmF0aW9uKG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jlc3Mp
CisgICAgeworICAgICAgICBBU1NFUlQobV9sYXN0T3BlcmF0aW9uID09IE5vT3BlcmF0aW9uIHx8
IG1fbGFzdE9wZXJhdGlvbiA9PSBBbGxvY2F0aW9uKTsKKyAgICAgICAgbV9oZWFwLm1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9IEFsbG9jYXRpb247CisgICAgfQorICAgIAorICAgIH5BbGxvY2F0aW9u
U2NvcGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPT0gQWxsb2NhdGlvbik7CisgICAgICAgIG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PSBtX2xhc3RPcGVyYXRpb247CisgICAgfQorcHJpdmF0ZToKKyAgICBIZWFwJiBtX2hlYXA7Cisg
ICAgSGVhcE9wZXJhdGlvbiBtX2xhc3RPcGVyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIuaAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRh
aW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTIgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK2NsYXNzIEhlYXA7CiBjbGFzcyBIZWFwQ2VsbDsKIGNsYXNzIExhcmdlQWxsb2NhdGlv
bjsKIGNsYXNzIE1hcmtlZEJsb2NrOwogY2xhc3MgV2Vha1NldDsKK2NsYXNzIFZNOwogCiB0eXBl
ZGVmIHVpbnQzMl90IEhlYXBWZXJzaW9uOwogCkBAIC01Niw2ICs1OCw5IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogICAgIAorICAgIFZNKiB2bSgpIGNvbnN0OworICAgIEhlYXAqIGhlYXAoKSBj
b25zdDsKKyAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISFtX2VuY29kZWRQb2ludGVyOyB9CiAgICAgCiAgICAgYm9vbCBpc01hcmtlZEJsb2NrKCkgY29u
c3QgeyByZXR1cm4gbV9lbmNvZGVkUG9pbnRlciAmJiAhKG1fZW5jb2RlZFBvaW50ZXIgJiBpc0xh
cmdlQWxsb2NhdGlvbkJpdCk7IH0KQEAgLTczLDEzICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAqYml0d2lzZV9jYXN0PExhcmdlQWxsb2NhdGlvbio+KG1fZW5jb2RlZFBvaW50ZXIg
LSBpc0xhcmdlQWxsb2NhdGlvbkJpdCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZmxpcElmTmVj
ZXNzYXJ5KEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSgpOworICAgIHZv
aWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24pOwogICAgIGJvb2wgbmVlZHNGbGlwKCkgY29uc3Q7
CiAgICAgCi0gICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwogICAgIGJvb2wgaXNNYXJrZWQoSGVh
cENlbGwqKSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkKEhlYXBWZXJzaW9uLCBIZWFwQ2VsbCop
IGNvbnN0OwogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKikgY29u
c3Q7CisgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIEhlYXBD
ZWxsKikgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkKCk7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXJJbmxpbmVzLmgJ
KHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250
YWluZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE0ICsyOSwyMCBAQAogI2luY2x1
ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkxhcmdlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIk1h
cmtlZEJsb2NrLmgiCisjaW5jbHVkZSAiVk0uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGlu
ZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKCkgY29uc3QKK2lubGluZSBWTSogQ2VsbENv
bnRhaW5lcjo6dm0oKSBjb25zdAogewogICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbWFya2VkQmxvY2soKS5oYW5kbGUoKS5pc01h
cmtlZCgpOworICAgICAgICByZXR1cm4gbGFyZ2VBbGxvY2F0aW9uKCkudm0oKTsKKyAgICByZXR1
cm4gbWFya2VkQmxvY2soKS52bSgpOworfQorCitpbmxpbmUgSGVhcCogQ2VsbENvbnRhaW5lcjo6
aGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICZ2bSgpLT5oZWFwOwogfQogCiBpbmxpbmUgYm9v
bCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwQ2VsbCogY2VsbCkgY29uc3QKQEAgLTQ2LDYg
KzUyLDEzIEBAIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXAKICAgICBy
ZXR1cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZChjZWxsKTsKIH0KIAoraW5saW5lIGJvb2wgQ2Vs
bENvbnRhaW5lcjo6aXNNYXJrZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgSGVhcENlbGwqIGNlbGwp
IGNvbnN0Cit7CisgICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCisgICAgICAgIHJldHVybiBs
YXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOworICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlz
TWFya2VkKHZlcnNpb24sIGNlbGwpOworfQorCiBpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjpp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgaWYg
KGlzTGFyZ2VBbGxvY2F0aW9uKCkpCkBAIC01Myw2ICs2NiwxMyBAQCBpbmxpbmUgYm9vbCBDZWxs
Q29udGFpbmVyOjppc01hcmtlZE9yTmV3CiAgICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOwogfQogCitpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVy
Ojppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgSGVhcENlbGwq
IGNlbGwpIGNvbnN0Cit7CisgICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCisgICAgICAgIHJl
dHVybiBsYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICBy
ZXR1cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQodmVyc2lvbiwgY2Vs
bCk7Cit9CisKIGlubGluZSB2b2lkIENlbGxDb250YWluZXI6Om5vdGVNYXJrZWQoKQogewogICAg
IGlmICghaXNMYXJnZUFsbG9jYXRpb24oKSkKQEAgLTczLDE2ICs5MywxMCBAQCBpbmxpbmUgV2Vh
a1NldCYgQ2VsbENvbnRhaW5lcjo6d2Vha1NldCgpCiAgICAgcmV0dXJuIG1hcmtlZEJsb2NrKCku
d2Vha1NldCgpOwogfQogCi1pbmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3Nh
cnkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlv
bigpKQotICAgICAgICBtYXJrZWRCbG9jaygpLmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7
Ci19Ci0KLWlubGluZSB2b2lkIENlbGxDb250YWluZXI6OmZsaXBJZk5lY2Vzc2FyeSgpCitpbmxp
bmUgdm9pZCBDZWxsQ29udGFpbmVyOjphYm91dFRvTWFyayhIZWFwVmVyc2lvbiBoZWFwVmVyc2lv
bikKIHsKICAgICBpZiAoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIG1hcmtlZEJsb2Nr
KCkuZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgICAgIG1hcmtlZEJsb2NrKCkuYWJvdXRUb01hcmso
aGVhcFZlcnNpb24pOwogfQogCiBpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjpuZWVkc0ZsaXAo
KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9v
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZh
dGl2ZVJvb3RzLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL09TQWxsb2NhdG9yLmg+CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
NyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAj
aW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCisjaW5jbHVkZSAiTWFya2VkU3Bh
Y2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNo
YWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKQEAgLTUyNiwxMSArNTI3
LDkgQEAgdm9pZCBIZWFwOjpiZWdpbk1hcmtpbmcoKQogICAgIH0KICAgICAKICAgICB7Ci0gICAg
ICAgIFRpbWluZ1Njb3BlIGNsZWFyTWFya3NUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3Bh
Y2UuY2xlYXJNYXJrcyIpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZsaXAoKTsKKyAgICAgICAg
VGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5i
ZWdpbk1hcmtpbmciKTsKKyAgICAgICAgbV9vYmplY3RTcGFjZS5iZWdpbk1hcmtpbmcoKTsKICAg
ICB9Ci0gICAgCi0gICAgbV9vYmplY3RTcGFjZS5zZXRJc01hcmtpbmcodHJ1ZSk7CiB9CiAKIHZv
aWQgSGVhcDo6dmlzaXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQoKQpAQCAtNzc5LDcgKzc3OCw3IEBA
IHZvaWQgSGVhcDo6ZW5kTWFya2luZygpCiAgICAgQVNTRVJUKG1fc2hhcmVkTWFya1N0YWNrLmlz
RW1wdHkoKSk7CiAgICAgbV93ZWFrUmVmZXJlbmNlSGFydmVzdGVycy5yZW1vdmVBbGwoKTsKICAg
ICAKLSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyhmYWxzZSk7CisgICAgbV9vYmplY3RT
cGFjZS5lbmRNYXJraW5nKCk7CiB9CiAKIHNpemVfdCBIZWFwOjpvYmplY3RDb3VudCgpCkBAIC05
MzYsMTAgKzkzNSwxOSBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkKICAgICBpZiAo
VU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKQogICAgICAgICBzd2VlcGVy
KCktPndpbGxGaW5pc2hTd2VlcGluZygpOwogICAgIGVsc2UgeworICAgICAgICBkb3VibGUgYmVm
b3JlID0gMDsKKyAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpIHsKKyAgICAgICAgICAgIGRh
dGFMb2coIltGdWxsIHN3ZWVwOiAiLCBjYXBhY2l0eSgpIC8gMTAyNCwgIiBrYiAiKTsKKyAgICAg
ICAgICAgIGJlZm9yZSA9IGN1cnJlbnRUaW1lTVMoKTsKKyAgICAgICAgfQogICAgICAgICBtX29i
amVjdFNwYWNlLnN3ZWVwKCk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc2hyaW5rKCk7CisgICAg
ICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7CisgICAgICAgICAgICBkb3VibGUgYWZ0ZXIgPSBj
dXJyZW50VGltZU1TKCk7CisgICAgICAgICAgICBkYXRhTG9nKCI9PiAiLCBjYXBhY2l0eSgpIC8g
MTAyNCwgIiBrYiwgIiwgYWZ0ZXIgLSBiZWZvcmUsICIgbXNdXG4iKTsKKyAgICAgICAgfQogICAg
IH0KLSAgICBBU1NFUlQobV9ibG9ja1NuYXBzaG90LmlzRW1wdHkoKSk7CisgICAgbV9vYmplY3RT
cGFjZS5hc3NlcnROb1Vuc3dlcHQoKTsKIAogICAgIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFr
QmxvY2tzKCk7CiB9CkBAIC0xMDM5LDcgKzEwNDcsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFw
Ojpjb2xsZWN0SW1wbChIZWFwCiAgICAgcmVhcFdlYWtIYW5kbGVzKCk7CiAgICAgcHJ1bmVTdGFs
ZUVudHJpZXNGcm9tV2Vha0dDTWFwcygpOwogICAgIHN3ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAg
c25hcHNob3RNYXJrZWRTcGFjZSgpOworICAgIHNuYXBzaG90VW5zd2VwdCgpOwogICAgIGZpbmFs
aXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKICAgICByZW1vdmVEZWFkQ29tcGlsZXJXb3Jr
bGlzdEVudHJpZXMoKTsKICAgICBkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpOwpAQCAtMTA0
OCw3ICsxMDU2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAog
ICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwogICAgIHdyaXRlQmFycmllckN1cnJlbnRs
eUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKIAotICAgIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHBy
ZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwogICAg
IGRpZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUpOwogICAgIHJlc3VtZUNvbXBpbGVyVGhy
ZWFkcygpOwpAQCAtMTA2Myw2ICsxMDcxLDExIEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNv
bGxlY3RJbXBsKEhlYXAKICAgICAgICAgZG91YmxlIGFmdGVyID0gY3VycmVudFRpbWVNUygpOwog
ICAgICAgICBkYXRhTG9nKGFmdGVyIC0gYmVmb3JlLCAiIG1zXVxuIik7CiAgICAgfQorICAgIAor
ICAgIGlmIChmYWxzZSkgeworICAgICAgICBkYXRhTG9nKCJIZWFwIHN0YXRlIGFmdGVyIEdDOlxu
Iik7CisgICAgICAgIG1fb2JqZWN0U3BhY2UuZHVtcEJpdHMoKTsKKyAgICB9CiB9CiAKIHZvaWQg
SGVhcDo6c3dlZXBMYXJnZUFsbG9jYXRpb25zKCkKQEAgLTExNjIsNDQgKzExNzUsMTAgQEAgdm9p
ZCBIZWFwOjpzd2VlcEFycmF5QnVmZmVycygpCiAgICAgbV9hcnJheUJ1ZmZlcnMuc3dlZXAoKTsK
IH0KIAotc3RydWN0IE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yIDogcHVibGljIE1hcmtlZEJs
b2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IoVmVjdG9y
PE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tzKSAKLSAgICAgICAgOiBtX2luZGV4KDApIAot
ICAgICAgICAsIG1fYmxvY2tzKGJsb2NrcykKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVy
YXRvcigpKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdAotICAgIHsKLSAgICAgICAg
YmxvY2stPnNldElzT25CbG9ja3NUb1N3ZWVwKHRydWUpOwotICAgICAgICBtX2Jsb2Nrc1ttX2lu
ZGV4KytdID0gYmxvY2s7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgYSBtdXRhYmxl
IGZpZWxkIGJlY2F1ZSB0aGlzIGlzbid0IGEgQysrIGxhbWJkYS4KLSAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjQ0Ci0gICAgbXV0YWJsZSBzaXplX3Qg
bV9pbmRleDsKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBtX2Jsb2NrczsKLX07
Ci0KLXZvaWQgSGVhcDo6c25hcHNob3RNYXJrZWRTcGFjZSgpCit2b2lkIEhlYXA6OnNuYXBzaG90
VW5zd2VwdCgpCiB7Ci0gICAgVGltaW5nU2NvcGUgdGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjpz
bmFwc2hvdE1hcmtlZFNwYWNlIik7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IGJlIHJlbmFtZWQuIEl0J3Mgbm90IGFjdHVhbGx5IHNuYXBzaG90dGluZyBhbGwgb2YgTWFya2Vk
U3BhY2UuCi0gICAgLy8gVGhpcyBpcyB1c2VkIGJ5IEluY3JlbWVudGFsU3dlZXBlciwgc28gaXQg
b25seSBuZWVkcyB0byBzbmFwc2hvdCBibG9ja3MuIEhvd2V2ZXIsIGlmIHdlIGV2ZXIKLSAgICAv
LyB3YW50ZWQgdG8gYWRkIG90aGVyIHNuYXBzaG90dGluZyBsb2dpbiwgd2UnZCBwcm9iYWJseSBw
dXQgaXQgaGVyZS4KLSAgICAKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEVkZW5D
b2xsZWN0aW9uKSB7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlIDog
bV9vYmplY3RTcGFjZS5ibG9ja3NXaXRoTmV3T2JqZWN0cygpKSB7Ci0gICAgICAgICAgICBpZiAo
aGFuZGxlLT5pc09uQmxvY2tzVG9Td2VlcCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgbV9ibG9ja1NuYXBzaG90LmFwcGVuZChoYW5kbGUpOwotICAgICAgICAgICAg
aGFuZGxlLT5zZXRJc09uQmxvY2tzVG9Td2VlcCh0cnVlKTsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG1fYmxvY2tTbmFwc2hvdC5yZXNpemVUb0ZpdChtX29iamVjdFNwYWNlLmJs
b2NrcygpLnNldCgpLnNpemUoKSk7Ci0gICAgICAgIE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9y
IGZ1bmN0b3IobV9ibG9ja1NuYXBzaG90KTsKLSAgICAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7Ci0gICAgfQorICAgIFRpbWluZ1Njb3BlIHRpbWluZ1Njb3BlKCp0aGlz
LCAiSGVhcDo6c25hcHNob3RVbnN3ZXB0Iik7CisgICAgbV9vYmplY3RTcGFjZS5zbmFwc2hvdFVu
c3dlcHQoKTsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpCkBA
IC0xMjIyLDkgKzEyMDEsOSBAQCB2b2lkIEhlYXA6OndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1
dGluCiAgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2Rl
QmxvY2tzKHRoaXMpOwogfQogCi12b2lkIEhlYXA6OnJlc2V0QWxsb2NhdG9ycygpCit2b2lkIEhl
YXA6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKLSAgICBtX29iamVjdFNwYWNlLnJlc2V0QWxs
b2NhdG9ycygpOworICAgIG1fb2JqZWN0U3BhY2UucHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIH0K
IAogdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKQEAgLTE0NzMsNyArMTQ1Miw3
IEBAIHB1YmxpYzoKIHZvaWQgSGVhcDo6em9tYmlmeURlYWRPYmplY3RzKCkKIHsKICAgICAvLyBT
d2VlcCBub3cgYmVjYXVzZSBkZXN0cnVjdG9ycyB3aWxsIGNyYXNoIG9uY2Ugd2UncmUgem9tYmlm
aWVkLgotICAgIG1fb2JqZWN0U3BhY2Uuem9tYmlmeVN3ZWVwKCk7CisgICAgbV9vYmplY3RTcGFj
ZS5zd2VlcCgpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7
CiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENlbGwoaXRlcmF0aW9uU2NvcGUsIFpvbWJp
ZnkoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDYgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEFsbG9jYXRpb25T
Y29wZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEVkZW5H
Q0FjdGl2aXR5Q2FsbGJhY2s7CkBAIC0yNTUsNiArMjU2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkRnJlZUJsb2NrKHNpemVfdCBjYXBhY2l0eSk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIEFsbG9jYXRpb25TY29wZTsKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgIGZy
aWVuZCBjbGFzcyBEZWZlckdDOwogICAgIGZyaWVuZCBjbGFzcyBEZWZlckdDRm9yQVdoaWxlOwpA
QCAtMzI3LDExICszMjksMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYXBXZWFrSGFuZGxlcygp
OwogICAgIHZvaWQgcHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWFwcygpOwogICAgIHZvaWQg
c3dlZXBBcnJheUJ1ZmZlcnMoKTsKLSAgICB2b2lkIHNuYXBzaG90TWFya2VkU3BhY2UoKTsKKyAg
ICB2b2lkIHNuYXBzaG90VW5zd2VwdCgpOwogICAgIHZvaWQgZGVsZXRlU291cmNlUHJvdmlkZXJD
YWNoZXMoKTsKICAgICB2b2lkIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwogICAgIHZvaWQg
d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOwotICAgIHZvaWQgcmVz
ZXRBbGxvY2F0b3JzKCk7CisgICAgdm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHZv
aWQgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzKCk7CiAgICAgdm9pZCBjbGVhclVubWFya2VkRXhlY3V0YWJsZXMoKTsKQEAg
LTQyMiw3ICs0MjQsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrPiBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrOwogICAgIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJh
Y2s+IG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluY3JlbWVu
dGFsU3dlZXBlcj4gbV9zd2VlcGVyOwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4g
bV9ibG9ja1NuYXBzaG90OwogCiAgICAgVmVjdG9yPEhlYXBPYnNlcnZlcio+IG1fb2JzZXJ2ZXJz
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlz
aW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDkgKzgxLDggQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6
OmlzTWFya2VkKGNvbnN0IAogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAg
ICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsKICAgICBNYXJr
ZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGlmIChibG9jay5uZWVk
c0ZsaXAoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQoY2VsbCk7CisgICAgcmV0
dXJuIGJsb2NrLmlzTWFya2VkKAorICAgICAgICBibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNl
KCkudmVyc2lvbigpLCBjZWxsKTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFy
a2VkQ29uY3VycmVudGx5KGNvbnN0IHZvaWQqIHJhd0NlbGwpCkBAIC05MiwxMCArOTEsOCBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWRDb25jdXJyCiAgICAgaWYgKGNlbGwtPmlz
TGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24o
KS5pc01hcmtlZCgpOwogICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2Nr
KCk7Ci0gICAgaWYgKGJsb2NrLm5lZWRzRmxpcChibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNl
KCkudmVyc2lvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdURjo6bG9hZExvYWRG
ZW5jZSgpOwotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKKyAgICByZXR1cm4gYmxv
Y2suaXNNYXJrZWRDb25jdXJyZW50bHkoCisgICAgICAgIGJsb2NrLnZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6
dGVzdEFuZFNldE1hcmtlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCB2b2lkKiByYXdDZWxs
KQpAQCAtMTA0LDcgKzEwMSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjp0ZXN0QW5kU2V0
TWFya2UKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJu
IGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLnRlc3RBbmRTZXRNYXJrZWQoKTsKICAgICBNYXJrZWRC
bG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGJsb2NrLmZsaXBJZk5lY2Vz
c2FyeUR1cmluZ01hcmtpbmcodmVyc2lvbik7CisgICAgYmxvY2suYWJvdXRUb01hcmsodmVyc2lv
bik7CiAgICAgcmV0dXJuIGJsb2NrLnRlc3RBbmRTZXRNYXJrZWQoY2VsbCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHJldmlz
aW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVy
YXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wdGlvbnMu
aCIKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkocmV2aXNpb24gMjA2MDMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkod29ya2luZyBjb3B5KQpA
QCAtODQsOSArODQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIWZpbHRlci5ydWxlT3V0
KGJpdHdpc2VfY2FzdDxCaXRzPihwcmV2aW91c0NhbmRpZGF0ZSkpCiAgICAgICAgICAgICAgICAg
JiYgc2V0LmNvbnRhaW5zKHByZXZpb3VzQ2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICYmIHBy
ZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxsS2luZCgpID09IEhlYXBDZWxsOjpBdXhpbGlh
cnkpIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c0NhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5
KGhlYXBWZXJzaW9uKTsKICAgICAgICAgICAgICAgICBwcmV2aW91c1BvaW50ZXIgPSBzdGF0aWNf
Y2FzdDxjaGFyKj4ocHJldmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxBbGlnbihwcmV2aW91
c1BvaW50ZXIpKTsKLSAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNDYW5kaWRhdGUtPmhhbmRs
ZSgpLmlzTGl2ZUNlbGwocHJldmlvdXNQb2ludGVyKSkKKyAgICAgICAgICAgICAgICBpZiAocHJl
dmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwoaGVhcFZlcnNpb24sIHByZXZpb3Vz
UG9pbnRlcikpCiAgICAgICAgICAgICAgICAgICAgIGZ1bmMocHJldmlvdXNQb2ludGVyKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTksMTAgKzk4LDggQEAgcHVibGljOgogICAgICAg
ICBpZiAoIXNldC5jb250YWlucyhjYW5kaWRhdGUpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKLSAgICAgICAgY2FuZGlkYXRlLT5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwot
CiAgICAgICAgIGF1dG8gdHJ5UG9pbnRlciA9IFsmXSAodm9pZCogcG9pbnRlcikgewotICAgICAg
ICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChwb2ludGVyKSkKKyAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwoaGVhcFZlcnNpb24sIHBv
aW50ZXIpKQogICAgICAgICAgICAgICAgIGZ1bmMocG9pbnRlcik7CiAgICAgICAgIH07CiAgICAg
CkBAIC0xNzAsNyArMTY3LDYgQEAgcHVibGljOgogICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYW5k
bGUoKS5jZWxsS2luZCgpICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAotICAgICAgICBjYW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2FyeSgpOwog
ICAgICAgICBpZiAoIWNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChwb2ludGVyKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFj
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAkocmV2aXNpb24gMjA2MDMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHN3ZWVw
VGltZU11bHRpcGxpZXIgCiAjaWYgVVNFKENGKQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1l
bnRhbFN3ZWVwZXIoSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCiAgICAgOiBIZWFw
VGltZXIoaGVhcC0+dm0oKSwgcnVuTG9vcCkKLSAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFwLT5t
X2Jsb2NrU25hcHNob3QpCisgICAgLCBtX2N1cnJlbnRBbGxvY2F0b3IobnVsbHB0cikKIHsKIH0K
IApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIo
KQogI2VsaWYgUExBVEZPUk0oRUZMKQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3
ZWVwZXIoSGVhcCogaGVhcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpKQotICAgICwgbV9i
bG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKKyAgICAsIG1fY3VycmVudEFsbG9j
YXRvcihudWxscHRyKQogewogfQogCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgSW5jcmVtZW50YWxT
d2VlcGVyOjpjYW5jZWxUaW1lcigpCiAjZWxpZiBVU0UoR0xJQikKIEluY3JlbWVudGFsU3dlZXBl
cjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+
dm0oKSkKLSAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25hcHNob3QpCisgICAg
LCBtX2N1cnJlbnRBbGxvY2F0b3IobnVsbHB0cikKIHsKIH0KIApAQCAtMTIxLDE5ICsxMjEsMjAg
QEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXAoZG91YmxlIAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9ibG9ja3NUb1N3ZWVwLmNsZWFyKCk7CiAgICAgY2FuY2VsVGlt
ZXIoKTsKIH0KIAogYm9vbCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKCkKIHsK
LSAgICB3aGlsZSAoIW1fYmxvY2tzVG9Td2VlcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1RvU3dlZXAudGFrZUxhc3QoKTsKLSAgICAg
ICAgYmxvY2stPnNldElzT25CbG9ja3NUb1N3ZWVwKGZhbHNlKTsKLQotICAgICAgICBpZiAoIWJs
b2NrLT5uZWVkc1N3ZWVwaW5nKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQorICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbnVsbHB0cjsKKyAgICAKKyAgICBmb3IgKDsgbV9jdXJy
ZW50QWxsb2NhdG9yOyBtX2N1cnJlbnRBbGxvY2F0b3IgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPm5l
eHRBbGxvY2F0b3IoKSkgeworICAgICAgICBibG9jayA9IG1fY3VycmVudEFsbG9jYXRvci0+Zmlu
ZEJsb2NrVG9Td2VlcCgpOworICAgICAgICBpZiAoYmxvY2spCisgICAgICAgICAgICBicmVhazsK
KyAgICB9CisgICAgCisgICAgaWYgKGJsb2NrKSB7CiAgICAgICAgIERlZmVyR0NGb3JBV2hpbGUg
ZGVmZXJHQyhtX3ZtLT5oZWFwKTsKICAgICAgICAgYmxvY2stPnN3ZWVwKCk7CiAgICAgICAgIG1f
dm0tPmhlYXAub2JqZWN0U3BhY2UoKS5mcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CkBAIC0xNDYs
MTEgKzE0NywxMiBAQCBib29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soCiB2
b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZygpCiB7CiAgICAgc2NoZWR1bGVU
aW1lcigpOworICAgIG1fY3VycmVudEFsbG9jYXRvciA9IG1fdm0tPmhlYXAub2JqZWN0U3BhY2Uo
KS5maXJzdEFsbG9jYXRvcigpOwogfQogCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZp
bmlzaFN3ZWVwaW5nKCkKIHsKLSAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsKKyAgICBtX2N1
cnJlbnRBbGxvY2F0b3IgPSBudWxscHRyOwogICAgIGlmIChtX3ZtKQogICAgICAgICBjYW5jZWxU
aW1lcigpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxT
d2VlcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVt
ZW50YWxTd2VlcGVyLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcs
MTIgQEAKICNkZWZpbmUgSW5jcmVtZW50YWxTd2VlcGVyX2gKIAogI2luY2x1ZGUgIkhlYXBUaW1l
ci5oIgotI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKLWNsYXNzIE1hcmtlZEJsb2NrOworY2xh
c3MgTWFya2VkQWxsb2NhdG9yOwogCiBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXIgOiBwdWJsaWMg
SGVhcFRpbWVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlVGltZXIoKTsKICAgICB2b2lkIGNhbmNlbFRp
bWVyKCk7CiAgICAgCi0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgbV9ibG9ja3NU
b1N3ZWVwOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9jdXJyZW50QWxsb2NhdG9yOwogI2VuZGlm
CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRp
b24uaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFy
Z2VBbGxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDkgKzcwLDEwIEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIGlzTmV3bHlBbGxvY2F0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTmV3
bHlBbGxvY2F0ZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNYXJrZWQoKSB7IHJldHVy
biBtX2lzTWFya2VkLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNNYXJrZWQoSGVhcENlbGwqKSB7IHJldHVybiBtX2lzTWFya2VkLmxv
YWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24sIEhlYXBDZWxsKikgeyByZXR1cm4gbV9p
c01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9CiAgICAgYm9vbCBpc01h
cmtlZE9yTmV3bHlBbGxvY2F0ZWQoKSB7IHJldHVybiBpc01hcmtlZCgpIHx8IGlzTmV3bHlBbGxv
Y2F0ZWQoKTsgfQogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKikg
eyByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7IH0KLSAgICBib29sIGlzTWFya2Vk
RHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9uLCBIZWFwQ2VsbCopIHsgcmV0dXJuIGlzTWFy
a2VkKCk7IH0KICAgICBib29sIGlzTGl2ZSgpIHsgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZCgpOyB9CiAgICAgCiAgICAgYm9vbCBoYXNWYWxpZENlbGwoKSBjb25zdCB7IHJldHVybiBt
X2hhc1ZhbGlkQ2VsbDsgfQpAQCAtMTA2LDggKzEwNyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBj
b25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9h
dHRyaWJ1dGVzOyB9CiAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkodWludDY0X3QpIHsg
fQotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyh1aW50NjRfdCkgeyB9Cisg
ICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lvbikgeyB9CiAgICAgCiAgICAgQUxXQVlTX0lO
TElORSBib29sIHRlc3RBbmRTZXRNYXJrZWQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjA2MDMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTWFya2VkQWxsb2NhdG9yLmgiCiAKKyNpbmNsdWRlICJBbGxvY2F0aW9uU2NvcGUuaCIKICNp
bmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVk
ZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2lu
Y2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0zOSw3ICs0MSw2
IEBAIG5hbWVzcGFjZSBKU0MgewogTWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoSGVh
cCogaGVhcCwgTWFya2VkU3BhY2UqIG1hcmtlZFNwYWNlLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0
IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiAgICAgOiBtX2N1cnJlbnRCbG9jaygw
KQogICAgICwgbV9sYXN0QWN0aXZlQmxvY2soMCkKLSAgICAsIG1fbmV4dEJsb2NrVG9Td2VlcChu
dWxscHRyKQogICAgICwgbV9jZWxsU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2VsbFNpemUp
KQogICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCiAgICAgLCBtX2hlYXAoaGVhcCkKQEAg
LTUwLDExICs1MSwxMyBAQCBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBo
CiBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiB7CiAg
ICAgdW5zaWduZWQgaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPSAwOwotICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja0xpc3QuYmVnaW4oKTsKLSAgICB3aGlsZSAoYmxvY2sp
IHsKLSAgICAgICAgYmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5leHQoKSk7Ci0gICAg
ICAgIGlmIChibG9jaykKLSAgICAgICAgICAgIGJsb2NrLT5mbGlwSWZOZWNlc3NhcnkoKTsgLy8g
Rm9yY2VzIHVzIHRvIHRvdWNoIHRoZSBtZW1vcnkgb2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNl
bWFudGljIGVmZmVjdC4KKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9ibG9j
a3Muc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
ID0gbV9ibG9ja3NbaW5kZXhdOworICAgICAgICBpZiAoYmxvY2spIHsKKyAgICAgICAgICAgIC8v
IEZvcmNlcyB1cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRoZSBibG9jaywgYnV0IGhhcyBubyBz
ZW1hbnRpYyBlZmZlY3QuCisgICAgICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQorICAg
ICAgICAgICAgICAgIGJsb2NrLT5ibG9jaygpLnJlc2V0VmVyc2lvbigpOworICAgICAgICB9CiAg
ICAgICAgICsraXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2s7CiAgICAgICAgIGlmIChpdGVyc1NpbmNl
TGFzdFRpbWVDaGVjayA+PSBIZWFwOjpzX3RpbWVDaGVja1Jlc29sdXRpb24pIHsKICAgICAgICAg
ICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CkBAIC02Niw4NCArNjksOTYgQEAgYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQo
ZG91YmxlIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJl
dGlyZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK2Jvb2wgTWFya2VkQWxsb2NhdG9yOjpz
aG91bGRTdGVhbEVtcHR5QmxvY2tzRnJvbU90aGVyQWxsb2NhdG9ycygpIGNvbnN0CiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsgLy8gVGhpcyB3aWxsIGJlIGNhbGxlZCBpbiBwYXJh
bGxlbCBkdXJpbmcgR0MuCi0gICAgaWYgKGJsb2NrID09IG1fY3VycmVudEJsb2NrKSB7Ci0gICAg
ICAgIC8vIFRoaXMgaGFwcGVucyB3aGVuIHRoZSBtdXRhdG9yIGlzIHJ1bm5pbmcuIFdlIGZpbmlz
aGVkIGEgZnVsbCBHQyBhbmQgbWFya2VkIHRvbyBmZXcgdGhpbmdzCi0gICAgICAgIC8vIHRvIHJl
dGlyZS4gVGhlbiB3ZSBzdGFydGVkIGFsbG9jYXRpbmcgaW4gdGhpcyBibG9jay4gVGhlbiBhIGJh
cnJpZXIgcmFuLCB3aGljaCBtYXJrZWQgYW4KLSAgICAgICAgLy8gb2JqZWN0IGluIHRoaXMgYmxv
Y2ssIHdoaWNoIHB1dCBpdCBvdmVyIHRoZSByZXRpcmVtZW50IHRocmVzaG9sZC4gSXQncyBPSyB0
byBzaW1wbHkgZG8KLSAgICAgICAgLy8gbm90aGluZyBpbiB0aGF0IGNhc2UuCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKGJsb2NrID09IG1fbGFzdEFjdGl2ZUJsb2NrKSB7Ci0gICAg
ICAgIC8vIFRoaXMgY2FuIGVhc2lseSBoYXBwZW4gZHVyaW5nIG1hcmtpbmcuIEl0IHdvdWxkIGJl
IGVhc3kgdG8gaGFuZGxlIHRoaXMgY2FzZSwgYnV0IGl0J3MKLSAgICAgICAgLy8ganVzdCBhcyBl
YXN5IHRvIGlnbm9yZSBpdC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FT
U0VSVChibG9jay0+aXNPbkxpc3QoKSk7Ci0gICAgaWYgKGJsb2NrID09IG1fbmV4dEJsb2NrVG9T
d2VlcCkKLSAgICAgICAgbV9uZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVyTmV4dEJsb2NrKGJsb2Nr
LT5uZXh0KCkpOwotICAgIGJsb2NrLT5yZW1vdmUoKTsKLSAgICBtX3JldGlyZWRCbG9ja3MucHVz
aChibG9jayk7CisgICAgcmV0dXJuICFuZWVkc0Rlc3RydWN0aW9uKCk7CiB9CiAKLU1hcmtlZEJs
b2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmlsdGVyTmV4dEJsb2NrKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKQorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpm
aW5kRW1wdHlCbG9ja1RvU3RlYWwoKQogewotICAgIGlmIChibG9jayA9PSBtX2Jsb2NrTGlzdC5l
bmQoKSkKKyAgICAvLyBEb24ndCBhbGxvdyBvdGhlcnMgdG8gc3RlYWwgZnJvbSB1cywgaWYgd2Ug
d291bGRuJ3Qgc3RlYWwgZnJvbSBvdGhlcnMuCisgICAgaWYgKCFzaG91bGRTdGVhbEVtcHR5Qmxv
Y2tzRnJvbU90aGVyQWxsb2NhdG9ycygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAK
KyAgICBtX2VtcHR5Q3Vyc29yID0gbV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJzb3IsIHRydWUp
OworICAgIGlmIChtX2VtcHR5Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGJsb2NrOworICAgIHJldHVybiBtX2Jsb2Nrc1ttX2Vt
cHR5Q3Vyc29yXTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dl
ZXAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZGlk
Q29uc3VtZUZyZWVMaXN0KCkKIHsKLSAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBmaWx0ZXJOZXh0
QmxvY2soYmxvY2spOworICAgIGlmIChtX2N1cnJlbnRCbG9jaykKKyAgICAgICAgbV9jdXJyZW50
QmxvY2stPmRpZENvbnN1bWVGcmVlTGlzdCgpOworICAgIAorICAgIHNldEZyZWVMaXN0KEZyZWVM
aXN0KCkpOworICAgIG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsKIH0KIAotdm9pZCogTWFya2Vk
QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpCit2b2lkKiBNYXJr
ZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKQogewogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBpZiAobV9j
dXJyZW50QmxvY2spIHsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IG1fbmV4dEJs
b2NrVG9Td2VlcCk7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3Qo
KTsKLSAgICAgICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsK
LSAgICB9CisgICAgQVNTRVJUKCFtX2N1cnJlbnRCbG9jayk7CisgICAgQVNTRVJUKCFtX2ZyZWVM
aXN0KTsKICAgICAKLSAgICBzZXRGcmVlTGlzdChGcmVlTGlzdCgpKTsKLQotICAgIFJFTEVBU0Vf
QVNTRVJUKG1fbmV4dEJsb2NrVG9Td2VlcCAhPSBtX2Jsb2NrTGlzdC5lbmQoKSk7Ci0KLSAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBuZXh0OwotICAgIGZvciAoTWFya2VkQmxvY2s6OkhhbmRsZSom
IGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAg
ICAgIG5leHQgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5leHQoKSk7Ci0KLSAgICAgICAgLy8g
SXQgd291bGQgYmUgc3VwZXIgd2VpcmQgaWYgdGhlIGJsb2NrcyB3ZSBhcmUgc3dlZXBpbmcgaGF2
ZSBhbnl0aGluZyBhbGxvY2F0ZWQgZHVyaW5nIHRoaXMKLSAgICAgICAgLy8gY3ljbGUuCi0gICAg
ICAgIEFTU0VSVCghYmxvY2stPmhhc0FueU5ld2x5QWxsb2NhdGVkKCkpOwotICAgICAgICAKLSAg
ICAgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OkhhbmRs
ZTo6U3dlZXBUb0ZyZWVMaXN0KTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIG1fYWxsb2NhdGlv
bkN1cnNvciA9IChtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KG1f
YWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGlmIChtX2FsbG9jYXRpb25DdXJzb3Ig
Pj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAg
ICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1ibGUgb24gYSBjb21wbGV0ZS1mdWxsIGJsb2NrLiBN
YXJraW5nIHRyaWVzIHRvIHJldGlyZSB0aGVzZSwgYnV0Ci0gICAgICAgIC8vIHRoYXQgYWxnb3Jp
dGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQgdG8gZG8gaXQgc29tZXRpbWVzLgotICAgICAgICBp
ZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChi
bG9jay0+aXNGcmVlTGlzdGVkKCkpOwotICAgICAgICAgICAgYmxvY2stPnVuc3dlZXBXaXRoTm9O
ZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc01hcmtlZCgpKTsK
LSAgICAgICAgICAgIHJldGlyZShibG9jayk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQorICAgICAgICBzZXRJc0NhbkFsbG9jYXRlQnV0Tm90RW1wdHkobV9hbGxvY2F0aW9uQ3Vy
c29yLCBmYWxzZSk7CiAKLSAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jazsKLSAgICAgICAg
c2V0RnJlZUxpc3QoZnJlZUxpc3QpOwotICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHZvaWQq
IHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4obV9ibG9ja3NbbV9hbGxvY2F0aW9uQ3Vyc29yXSkpCisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBpZiAoIW1fZnJlZUxp
c3QpIHsKLSAgICAgICAgbV9jdXJyZW50QmxvY2sgPSAwOwotICAgICAgICByZXR1cm4gMDsKKyAg
ICBpZiAoT3B0aW9uczo6c3RlYWxFbXB0eUJsb2Nrc0Zyb21PdGhlckFsbG9jYXRvcnMoKQorICAg
ICAgICAmJiBzaG91bGRTdGVhbEVtcHR5QmxvY2tzRnJvbU90aGVyQWxsb2NhdG9ycygpKSB7Cisg
ICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fbWFya2VkU3BhY2UtPmZp
bmRFbXB0eUJsb2NrVG9TdGVhbCgpKSB7CisgICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgLy8gSXQncyBnb29kIHRoYXQgdGhpcyBjbGVhcnMgY2Fu
QWxsb2NhdGVCdXROb3RFbXB0eSBhcyB3ZWxsIGFzIGFsbCBvdGhlciBiaXRzLAorICAgICAgICAg
ICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBhIHJlbW90ZSBjaGFuY2UgdGhhdCBhIGJsb2NrIG1heSBo
YXZlIGJvdGggY2FuQWxsb2NhdGVCdXROb3RFbXB0eQorICAgICAgICAgICAgLy8gYW5kIGVtcHR5
IHNldCBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICAgICAgYmxvY2stPnJlbW92ZUZyb21BbGxv
Y2F0b3IoKTsKKyAgICAgICAgICAgIGFkZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgICAgIHJldHVy
biBhbGxvY2F0ZUluKGJsb2NrKTsKKyAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KIAordm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUluKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKQoreworICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSW4o
YmxvY2spOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKQoreworICAgIEFTU0VSVChibG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+
aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVk
KCkpOworICAgIAorICAgIEZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJs
b2NrOjpIYW5kbGU6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgCisgICAgLy8gSXQncyBwb3NzaWJs
ZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGVseSBmdWxsIGJsb2NrLiBNYXJraW5nIHRyaWVzIHRv
IHJldGlyZSB0aGVzZSwgYnV0CisgICAgLy8gdGhhdCBhbGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5
IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCisgICAgaWYgKGZyZWVMaXN0LmFsbG9jYXRpb25X
aWxsRmFpbCgpKSB7CisgICAgICAgIEFTU0VSVChibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAg
ICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCk7CisgICAgICAgIEFTU0VS
VCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgQVNTRVJUKCFpc0VtcHR5KGJsb2Nr
KSk7CisgICAgICAgIEFTU0VSVCghaXNDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KGJsb2NrKSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKKyAgICBtX2N1cnJlbnRCbG9jayA9
IGJsb2NrOworICAgIHNldEZyZWVMaXN0KGZyZWVMaXN0KTsKKyAgICAKICAgICB2b2lkKiByZXN1
bHQ7CiAgICAgaWYgKG1fZnJlZUxpc3QucmVtYWluaW5nKSB7CiAgICAgICAgIHVuc2lnbmVkIGNl
bGxTaXplID0gbV9jZWxsU2l6ZTsKQEAgLTE1NSwyMSArMTcwLDExIEBAIHZvaWQqIE1hcmtlZEFs
bG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3UKICAgICAgICAgcmVzdWx0ID0gaGVhZDsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICBzZXRJc0VkZW4obV9jdXJyZW50Qmxv
Y2ssIHRydWUpOwogICAgIG1fbWFya2VkU3BhY2UtPmRpZEFsbG9jYXRlSW5CbG9jayhtX2N1cnJl
bnRCbG9jayk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHZvaWQqIE1hcmtlZEFs
bG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpCi17Ci0gICAgQVNTRVJUKCFt
X2hlYXAtPmlzQnVzeSgpKTsKLSAgICBtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IEFs
bG9jYXRpb247Ci0gICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGlu
Z0ltcGwoKTsKLQotICAgIG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRp
b247Ci0gICAgQVNTRVJUKHJlc3VsdCB8fCAhbV9jdXJyZW50QmxvY2spOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmRvVGVzdENv
bGxlY3Rpb25zSWZOZWVkZWQoKQogewogICAgIGlmICghT3B0aW9uczo6c2xvd1BhdGhBbGxvY3NC
ZXR3ZWVuR0NzKCkpCkBAIC0yMDYsMTkgKzIxMSwxNyBAQCB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6
OmFsbG9jYXRlU2xvd0Nhc2VJCiAgICAgQVNTRVJUKCFtX21hcmtlZFNwYWNlLT5pc0l0ZXJhdGlu
ZygpKTsKICAgICBtX2hlYXAtPmRpZEFsbG9jYXRlKG1fZnJlZUxpc3Qub3JpZ2luYWxTaXplKTsK
ICAgICAKKyAgICBkaWRDb25zdW1lRnJlZUxpc3QoKTsKKyAgICAKKyAgICBtX2hlYXAtPmNvbGxl
Y3RJZk5lY2Vzc2FyeU9yRGVmZXIoKTsKKyAgICAKKyAgICBBbGxvY2F0aW9uU2NvcGUgYWxsb2Nh
dGlvblNjb3BlKCptX2hlYXApOworCiAgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRo
b3V0Q29sbGVjdGluZygpOwogICAgIAogICAgIGlmIChMSUtFTFkocmVzdWx0ICE9IDApKQogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIAotICAgIGlmIChtX2hlYXAtPmNvbGxlY3RJZk5lY2Vz
c2FyeU9yRGVmZXIoKSkgewotICAgICAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xs
ZWN0aW5nKCk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQotICAgIEFTU0VSVCghbV9oZWFwLT5zaG91bGRDb2xsZWN0KCkpOwotICAgIAog
ICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gdHJ5QWxsb2NhdGVCbG9jaygpOwogICAg
IGlmICghYmxvY2spIHsKICAgICAgICAgaWYgKGNyYXNoT25GYWlsdXJlKQpAQCAtMjI3LDggKzIz
MCw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBhZGRCbG9jayhibG9jayk7Ci0gICAgICAg
IAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKKyAgICByZXN1
bHQgPSBhbGxvY2F0ZUluKGJsb2NrKTsKICAgICBBU1NFUlQocmVzdWx0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpAQCAtMjQ5LDM3ICsyNTEsNzUgQEAgc2l6ZV90IE1hcmtlZEFsbG9jYXRvcjo6
YmxvY2tTaXplRm9yQnl0ZQogTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjp0
cnlBbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7Ci0gICAgcmV0dXJuIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCwg
dGhpcywgbV9jZWxsU2l6ZSwgbV9hdHRyaWJ1dGVzKTsKKyAgICAKKyAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXApOworICAgIGlm
ICghaGFuZGxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBtX21hcmtlZFNw
YWNlLT5kaWRBZGRCbG9jayhoYW5kbGUpOworICAgIAorICAgIHJldHVybiBoYW5kbGU7CiB9CiAK
IHZvaWQgTWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykKIHsKLSAgICBBU1NFUlQoIW1fY3VycmVudEJsb2NrKTsKLSAgICBBU1NFUlQoIW1fZnJlZUxp
c3QpOworICAgIHNpemVfdCBpbmRleDsKKyAgICBpZiAobV9mcmVlQmxvY2tJbmRpY2VzLmlzRW1w
dHkoKSkgeworICAgICAgICBpbmRleCA9IG1fYmxvY2tzLnNpemUoKTsKKworICAgICAgICBzaXpl
X3Qgb2xkQ2FwYWNpdHkgPSBtX2Jsb2Nrcy5jYXBhY2l0eSgpOworICAgICAgICBtX2Jsb2Nrcy5h
cHBlbmQoYmxvY2spOworICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAhPSBvbGRDYXBh
Y2l0eSkgeworICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAgICAgICAgICAgICAgICBb
Jl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKHZlY3RvciwgdmVjdG9yLm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChtX2Jsb2Nrcy5j
YXBhY2l0eSgpID4gb2xkQ2FwYWNpdHkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3JF
YWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9y
KSB7CisgICAgICAgICAgICAgICAgICAgIHZlY3Rvci5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHko
KSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgpOworICAgICAgICBBU1NFUlQo
IW1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIG1fYmxvY2tzW2luZGV4XSA9IGJsb2NrOworICAg
IH0KICAgICAKLSAgICBtX2Jsb2NrTGlzdC5hcHBlbmQoYmxvY2spOwotICAgIHNldE5leHRCbG9j
a1RvU3dlZXAoYmxvY2spOwotICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGJsb2NrKTsK
KyAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
cikgeworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsICF2ZWN0b3JbaW5kZXhdKTsK
KyAgICAgICAgfSk7CisKKyAgICAvLyBUaGlzIGlzIHRoZSBwb2ludCBhdCB3aGljaCB0aGUgYmxv
Y2sgbGVhcm5zIG9mIGl0cyBjZWxsU2l6ZSgpIGFuZCBhdHRyaWJ1dGVzKCkuCisgICAgYmxvY2st
PmRpZEFkZFRvQWxsb2NhdG9yKHRoaXMsIGluZGV4KTsKKyAgICAKKyAgICBzZXRJc0xpdmUoaW5k
ZXgsIHRydWUpOworICAgIHNldElzRW1wdHkoaW5kZXgsIHRydWUpOwogfQogCiB2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6cmVtb3ZlQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7Ci0g
ICAgaWYgKG1fY3VycmVudEJsb2NrID09IGJsb2NrKSB7Ci0gICAgICAgIG1fY3VycmVudEJsb2Nr
ID0gZmlsdGVyTmV4dEJsb2NrKG1fY3VycmVudEJsb2NrLT5uZXh0KCkpOwotICAgICAgICBzZXRG
cmVlTGlzdChGcmVlTGlzdCgpKTsKLSAgICB9Ci0gICAgaWYgKG1fbmV4dEJsb2NrVG9Td2VlcCA9
PSBibG9jaykKLSAgICAgICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX25leHRCbG9ja1RvU3dlZXAt
Pm5leHQoKSk7CisgICAgQVNTRVJUKGJsb2NrLT5hbGxvY2F0b3IoKSA9PSB0aGlzKTsKKyAgICBB
U1NFUlQobV9ibG9ja3NbYmxvY2stPmluZGV4KCldID09IGJsb2NrKTsKIAotICAgIGJsb2NrLT53
aWxsUmVtb3ZlQmxvY2soKTsKLSAgICBtX2Jsb2NrTGlzdC5yZW1vdmUoYmxvY2spOworICAgIG1f
YmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9IG51bGxwdHI7CisgICAgbV9mcmVlQmxvY2tJbmRpY2Vz
LmFwcGVuZChibG9jay0+aW5kZXgoKSk7CisgICAgCisgICAgZm9yRWFjaEJpdFZlY3RvcigKKyAg
ICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgIHZlY3Rvclti
bG9jay0+aW5kZXgoKV0gPSBmYWxzZTsKKyAgICAgICAgfSk7CisgICAgCisgICAgYmxvY2stPmRp
ZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN0b3BB
bGxvY2F0aW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0g
RnVsbENvbGxlY3Rpb24pCi0gICAgICAgIG1fYmxvY2tMaXN0LnRha2VGcm9tKG1fcmV0aXJlZEJs
b2Nrcyk7Ci0KKyAgICBpZiAoZmFsc2UpCisgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlz
KSwgIjogTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZyFcbiIpOwogICAgIEFTU0VSVCgh
bV9sYXN0QWN0aXZlQmxvY2spOwogICAgIGlmICghbV9jdXJyZW50QmxvY2spIHsKICAgICAgICAg
QVNTRVJUKCFtX2ZyZWVMaXN0KTsKQEAgLTI5MiwyOSArMzMyLDI1IEBAIHZvaWQgTWFya2VkQWxs
b2NhdG9yOjpzdG9wQWxsb2NhdGluZygpCiAgICAgbV9mcmVlTGlzdCA9IEZyZWVMaXN0KCk7CiB9
CiAKLXZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXNldCgpCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewotICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKLSAg
ICBtX2N1cnJlbnRCbG9jayA9IDA7CisgICAgbV9sYXN0QWN0aXZlQmxvY2sgPSBudWxscHRyOwor
ICAgIG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsKICAgICBzZXRGcmVlTGlzdChGcmVlTGlzdCgp
KTsKIAotICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9ibG9ja0xpc3QuYmVnaW4oKSk7CisgICAg
bV9hbGxvY2F0aW9uQ3Vyc29yID0gMDsKKyAgICBtX2VtcHR5Q3Vyc29yID0gMDsKKyAgICBtX3Vu
c3dlcHRDdXJzb3IgPSAwOworICAgIAorICAgIG1fZWRlbi5jbGVhckFsbCgpOwogCiAgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnVzZUltbW9ydGFsT2JqZWN0cygpKSkgewotICAgICAgICBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBuZXh0OwotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUq
JiBibG9jayA9IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAg
ICAgICAgICAgbmV4dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAg
ICAgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OkhhbmRs
ZTo6U3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgICAgIGJsb2NrLT56YXAoZnJlZUxpc3QpOwot
ICAgICAgICAgICAgcmV0aXJlKGJsb2NrKTsKLSAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTog
VGhpbmdzPwogICAgIH0KIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6Omxhc3RDaGFuY2VUb0Zp
bmFsaXplKCkKIHsKLSAgICBtX2Jsb2NrTGlzdC50YWtlRnJvbShtX3JldGlyZWRCbG9ja3MpOwog
ICAgIGZvckVhY2hCbG9jaygKICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykgewogICAgICAgICAgICAgYmxvY2stPmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CkBAIC0zMjYs
NCArMzYyLDEyMSBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0RnJlZUxpc3QoY29uc3QgCiAg
ICAgbV9mcmVlTGlzdCA9IGZyZWVMaXN0OwogfQogCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVz
dW1lQWxsb2NhdGluZygpCit7CisgICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9jaykKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5yZXN1bWVBbGxv
Y2F0aW5nKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBtX2xhc3RBY3RpdmVCbG9jazsKKyAgICBt
X2xhc3RBY3RpdmVCbG9jayA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpi
ZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpCit7CisgICAgLy8gTWFyayBiaXRzIGFyZSBz
dGlja3kgYW5kIHNvIGlzIG91ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25seSBjbGVhciB0
aGVzZSBkdXJpbmcgZnVsbAorICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ugc3Vydml2ZWQg
dGhlIGxhc3QgY29sbGVjdGlvbiB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9uZSBzbyBsb25n
CisgICAgLy8gYXMgdGhlIG5leHQgb25lIGlzIGVkZW4uCisgICAgbV9tYXJraW5nTm90RW1wdHku
Y2xlYXJBbGwoKTsKKyAgICBtX21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7Cit9CisKK3ZvaWQg
TWFya2VkQWxsb2NhdG9yOjplbmRNYXJraW5nKCkKK3sKKyAgICBtX2FsbG9jYXRlZC5jbGVhckFs
bCgpOworICAgIAorICAgIC8vIEl0J3Mgc3VycHJpc2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8gY29t
cHJlaGVuZCwgYnV0IHRoZSBlbmQtb2YtbWFya2luZyBmbGlwIGRvZXMgbm90IG5lZWQgdG8KKyAg
ICAvLyBrbm93IHdoYXQga2luZCBvZiBjb2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3dsZWRnZSBp
cyBhbHJlYWR5IGVuY29kZWQgaW4gdGhlIG1fbWFya2luZ1hZWgorICAgIC8vIHZlY3RvcnMuCisg
ICAgCisgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgeworICAgICAgICAvLyBJZiBibG9ja3Mg
bmVlZCBkZXN0cnVjdGlvbiB0aGVuIG5vdGhpbmcgaXMgZW1wdHkhIFRoaXMgaXMgYSBjb3JyZWN0
IGFzc2VydGlvbiBidXQgbWF5CisgICAgICAgIC8vIGJlY29tZSB3cm9uZyBvbmNlIHdlIGdvIGZ1
bGwgY29uY3VycmVudDogd2hlbiB3ZSBjcmVhdGUgYSBuZXcgYmxvY2ssIGl0IHdpbGwgZmxpY2tl
cgorICAgICAgICAvLyBpbnRvIHRoZSBlbXB0eSBzZXQgZm9yIGEgdGlueSBtb21lbnQuIE9uIHRo
ZSBvdGhlciBoYW5kLCB0aGlzIGNvZGUgaXMgbGlrZWx5IHRvIGJlIHJ1bgorICAgICAgICAvLyBp
biBzdG9wVGhlV29ybGQuCisgICAgICAgIEFTU0VSVChtX2VtcHR5LmlzRW1wdHkoKSk7CisgICAg
ICAgIG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdSZXRpcmVk
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1fZW1wdHkgPSBtX2xpdmUgJiB+
bV9tYXJraW5nTm90RW1wdHk7CisgICAgbV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ID0gbV9saXZl
ICYgbV9tYXJraW5nTm90RW1wdHkgJiB+bV9tYXJraW5nUmV0aXJlZDsKKyAgICAKKyAgICBpZiAo
ZmFsc2UpIHsKKyAgICAgICAgZGF0YUxvZygiQml0cyBmb3IgIiwgbV9jZWxsU2l6ZSwgIiwgIiwg
bV9hdHRyaWJ1dGVzLCAiIGFmdGVyIGVuZE1hcmtpbmc6XG4iKTsKKyAgICAgICAgZHVtcEJpdHMo
V1RGOjpkYXRhRmlsZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzbmFw
c2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpCit7CisgICAgbV91bnN3ZXB0IHw9IG1fZWRl
bjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90VW5zd2VwdEZvckZ1bGxDb2xs
ZWN0aW9uKCkKK3sKKyAgICBtX3Vuc3dlcHQgPSBtX2xpdmU7Cit9CisKK01hcmtlZEJsb2NrOjpI
YW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmluZEJsb2NrVG9Td2VlcCgpCit7CisgICAgbV91bnN3
ZXB0Q3Vyc29yID0gbV91bnN3ZXB0LmZpbmRCaXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKKyAg
ICBpZiAobV91bnN3ZXB0Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIG1fYmxvY2tzW21fdW5zd2VwdEN1cnNvcl07Cit9CisKK3Zv
aWQgTWFya2VkQWxsb2NhdG9yOjpzd2VlcCgpCit7CisgICAgbV91bnN3ZXB0LmZvckVhY2hTZXRC
aXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBtX2Jsb2Nrc1tp
bmRleF0tPnN3ZWVwKCk7CisgICAgICAgIH0pOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
c2hyaW5rKCkKK3sKKyAgICBtX2VtcHR5LmZvckVhY2hTZXRCaXQoCisgICAgICAgIFsmXSAoc2l6
ZV90IGluZGV4KSB7CisgICAgICAgICAgICBtX21hcmtlZFNwYWNlLT5mcmVlQmxvY2sobV9ibG9j
a3NbaW5kZXhdKTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjphc3Nl
cnROb1Vuc3dlcHQoKQoreworICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBpZiAobV91bnN3ZXB0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIGRhdGFMb2coIkFzc2VydGlvbiBmYWlsZWQ6IHVuc3dlcHQgbm90IGVtcHR5IGlu
ICIsICp0aGlzLCAiLlxuIik7CisgICAgZHVtcEJpdHMoKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKK3sKKyAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjoiLCBtX2NlbGxTaXpl
LCAiLyIsIG1fYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpkdW1wQml0
cyhQcmludFN0cmVhbSYgb3V0KQoreworICAgIHVuc2lnbmVkIG1heE5hbWVMZW5ndGggPSAwOwor
ICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9y
JiwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
bGVuKG5hbWUpOworICAgICAgICAgICAgbWF4TmFtZUxlbmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVM
ZW5ndGgsIGxlbmd0aCk7CisgICAgICAgIH0pOworICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3JX
aXRoTmFtZSgKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IsIGNvbnN0IGNoYXIq
IG5hbWUpIHsKKyAgICAgICAgICAgIG91dC5wcmludCgiICAgICIsIG5hbWUsICI6ICIpOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF4TmFtZUxlbmd0aCAtIHN0cmxlbihuYW1lKTsg
aS0tOykKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiKTsKKyAgICAgICAgICAgIG91dC5w
cmludCh2ZWN0b3IsICJcbiIpOworICAgICAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5o
CShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRB
bGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgIkFs
bG9jYXRvckF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1ZGUgIk1h
cmtlZEJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtMzcsNiArMzksMTQ5IEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBNYXJr
ZWRTcGFjZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAorI2RlZmluZSBGT1JfRUFD
SF9NQVJLRURfQUxMT0NBVE9SX0JJVChtYWNybykgXAorICAgIG1hY3JvKGxpdmUsIExpdmUpIC8q
IFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCisg
ICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZl
IG5vIGxpdmUgb2JqZWN0cyBhbmQgbm90aGluZyB0byBkZXN0cm95LiAqLyBcCisgICAgbWFjcm8o
YWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxsYmxvY2tzIHRoYXQgYXJlIGZ1
bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAgICBtYWNybyhjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5
LCBDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgYXJlIG5l
aXRoZXIgZW1wdHkgbm9yIHJldGlyZWQgKGkuZS4gYXJlIG1vcmUgdGhhbiBtaW5NYXJrZWRCbG9j
a1V0aWxpemF0aW9uIGZ1bGwpLiAqLyBcCisgICAgbWFjcm8oZWRlbiwgRWRlbikgLyogVGhlIHNl
dCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUgbGFzdCBHQy4g
Ki9cCisgICAgbWFjcm8odW5zd2VwdCwgVW5zd2VwdCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tz
IHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIuICovXAorICAg
IFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcuICovXAorICAgIG1h
Y3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisgICAgbWFjcm8obWFya2luZ1JldGlyZWQs
IE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgcmV0aXJl
ZC4gKi8KKworLy8gRklYTUU6IFdlIGRlZmluZWQgY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBhbmQg
ZW1wdHkgdG8gYmUgZXhjbHVzaXZlOgorLy8KKy8vICAgICBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5
ICYgZW1wdHkgPT0gMAorLy8KKy8vIEluc3RlYWQgb2YgY2FsbGluZyBpdCBjYW5BbGxvY2F0ZSBh
bmQgbWFraW5nIGl0IGluY2x1c2l2ZToKKy8vCisvLyAgICAgY2FuQWxsb2NhdGUgJiBlbXB0eSA9
PSBlbXB0eQorLy8KKy8vIFRoZSBsYXR0ZXIgaXMgcHJvYmFibHkgYmV0dGVyLiBJJ2xsIGxlYXZl
IGl0IHRvIGEgZnV0dXJlIGJ1ZyB0byBmaXggdGhhdCwgc2luY2UgYnJlYXRoaW5nIG9uCisvLyB0
aGlzIGNvZGUgbGVhZHMgdG8gcmVncmVzc2lvbnMgZm9yIGRheXMsIGFuZCBpdCdzIG5vdCBjbGVh
ciB0aGF0IG1ha2luZyB0aGlzIGNoYW5nZSB3b3VsZAorLy8gaW1wcm92ZSBwZXJmIHNpbmNlIGl0
IHdvdWxkIG5vdCBjaGFuZ2UgdGhlIGNvbGxlY3RvcidzIGJlaGF2aW9yLCBhbmQgZWl0aGVyIHdh
eSB0aGUgYWxsb2NhdG9yCisvLyBoYXMgdG8gbG9vayBhdCBib3RoIGJpdHZlY3RvcnMuCisvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIxCisKKy8vIE5vdGUg
dGhhdCB0aGlzIGNvbGxlY3RvciBzdXBwb3J0cyBvdmVybGFwcGluZyBhbGxvY2F0b3Igc3RhdGUg
d2l0aCBtYXJraW5nIHN0YXRlLCBzaW5jZSBpbiBhCisvLyBjb25jdXJyZW50IGNvbGxlY3RvciB5
b3UgYWxsb3cgYWxsb2NhdGlvbiB3aGlsZSBtYXJraW5nIGlzIHJ1bm5pbmcuIFNvIGl0J3MgYmVz
dCB0byB2aXN1YWxpemUgYQorLy8gZnVsbCBtdXRhYmxlLT5lZGVuIGNvbGxlY3QtPm11dGF0ZS0+
ZnVsbCBjb2xsZWN0IGN5Y2xlIGFuZCBzZWUgaG93IHRoZSBiaXRzIGFib3ZlIGdldCBhZmZlY3Rl
ZC4KKy8vIFRoZSBleGFtcGxlIGJlbG93IHRyaWVzIHRvIGJlIGV4aGF1c3RpdmUgYWJvdXQgd2hh
dCBoYXBwZW5zIHRvIHRoZSBiaXRzLCBidXQgb21pdHMgYSBsb3Qgb2YKKy8vIHRoaW5ncyB0aGF0
IGhhcHBlbiB0byBvdGhlciBzdGF0ZS4KKy8vCisvLyBDcmVhdGUgYWxsb2NhdG9yCisvLyAtIGFs
bCBiaXRzIGFyZSBlbXB0eQorLy8gU3RhcnQgYWxsb2NhdGluZyBpbiBzb21lIGJsb2NrCisvLyAt
IGFsbG9jYXRlIHRoZSBibG9jayBhbmQgc2V0IHRoZSBsaXZlIGJpdC4KKy8vIC0gdGhlIGVtcHR5
IGJpdCBmb3IgdGhlIGJsb2NrIGZsaWNrZXJzIG9uIGFuZCB0aGVuIGdldHMgaW1tZWRpYXRlbHkg
Y2xlYXJlZCBieSBzd2VlcGluZy4KKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBh
bGxvY2F0aW5nIGluIHRoYXQgYmxvY2sKKy8vIC0gc2V0IHRoZSBhbGxvY2F0ZWQgYml0LgorLy8g
RG8gdGhhdCB0byBhIGxvdCBvZiBibG9ja3MgYW5kIHRoZW4gc3RhcnQgYW4gZWRlbiBjb2xsZWN0
aW9uLgorLy8gLSBiZWdpbk1hcmtpbmcoKSBoYXMgbm90aGluZyB0byBkby4KKy8vIC0gYnkgZGVm
YXVsdCB3ZSBoYXZlIGNsZWFyIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJlZCBiaXRzLgor
Ly8gLSBtYXJraW5nIGJ1aWxkcyB1cCBtYXJraW5nTm90RW1wdHkvbWFya2luZ1JldGlyZWQgYml0
cy4KKy8vIFdlIGRvIGVuZE1hcmtpbmcoKQorLy8gLSBjbGVhciBhbGwgYWxsb2NhdGVkIGJpdHMu
CisvLyAtIGZvciBkZXN0cnVjdG9yIGJsb2NrczogZnJhZ21lbnRlZCA9IGxpdmUgJiB+bWFya2lu
Z1JldGlyZWQKKy8vIC0gZm9yIG5vbi1kZXN0cnVjdG9yIGJsb2NrczoKKy8vICAgICAgIGVtcHR5
ID0gbGl2ZSAmIH5tYXJraW5nTm90RW1wdHkKKy8vICAgICAgIGZyYWdtZW50ZWQgPSBsaXZlICYg
bWFya2luZ05vdEVtcHR5ICYgfm1hcmtpbmdSZXRpcmVkCisvLyBTbmFwc2hvdHRpbmcuCisvLyAt
IHVuc3dlcHQgfD0gZWRlbgorLy8gUHJlcGFyZSBmb3IgYWxsb2NhdGlvbi4KKy8vIC0gY2xlYXIg
ZWRlbgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLyBBbGxvY2F0ZSBpbiBzb21lIGJsb2NrIHRo
YXQgaGFkIHNvbWUgZnJlZSBhbmQgc29tZSBsaXZlIG9iamVjdHMuCisvLyAtIGNsZWFyIHRoZSBj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGJpdAorLy8gLSBjbGVhciB0aGUgdW5zd2VwdCBiaXQKKy8v
IC0gc2V0IHRoZSBlZGVuIGJpdAorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxsb2Nh
dGVkIGJpdCkuCisvLyBBbGxvY2F0ZSBpbiBzb21lIGJsb2NrIHRoYXQgd2FzIGNvbXBsZXRlbHkg
ZW1wdHkuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSBiaXQKKy8vIC0gY2xlYXIgdGhlIHVuc3dlcHQg
Yml0CisvLyAtIHNldCB0aGUgZWRlbiBiaXQuCisvLyBGaW5pc2ggYWxsb2NhdGluZyAoc2V0IHRo
ZSBhbGxvY2F0ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3YXMgY29t
cGxldGVseSBlbXB0eSBpbiBhbm90aGVyIGFsbG9jYXRvci4KKy8vIC0gY2xlYXIgdGhlIGVtcHR5
IGJpdAorLy8gLSBjbGVhciBhbGwgYml0cyBpbiB0aGF0IGFsbG9jYXRvcgorLy8gLSBzZXQgdGhl
IGxpdmUgYml0IGluIGFub3RoZXIgYWxsb2NhdG9yIGFuZCB0aGUgZW1wdHkgYml0LgorLy8gLSBj
bGVhciB0aGUgZW1wdHksIHVuc3dlcHQgYml0cy4KKy8vIC0gc2V0IHRoZSBlZGVuIGJpdC4KKy8v
IEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQpLgorLy8gU3RhcnQgYSBm
dWxsIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygpIGNsZWFycyBtYXJraW5nTm90RW1w
dHksIG1hcmtpbmdSZXRpcmVkCisvLyAtIHRoZSBoZWFwIHZlcnNpb24gaXMgaW5jcmVtZW50ZWQK
Ky8vIC0gbWFya2luZyByZWJ1aWxkcyBtYXJraW5nTm90RW1wdHkvbWFya2luZ3JldGlyZWQgYml0
cy4KKy8vIFdlIGRvIGVuZE1hcmtpbmcoKQorLy8gLSBjbGVhciBhbGwgYWxsb2NhdGVkIGJpdHMu
CisvLyAtIHNldCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5L2VtcHR5IHRoZSBzYW1lIHdheSBhcyBp
biBlZGVuIGNvbGxlY3Rpb24uCisvLyBTbmFwc2hvdHRpbmcuCisvLyAtIHVuc3dlcHQgPSBsaXZl
CisvLyBwcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBlZGVuLgorLy8gRmluaXNo
IGNvbGxlY3Rpb24uCisvLworLy8gTm90aWNlIGhvdyBpbiB0aGlzIHNjaGVtZSwgdGhlIGVtcHR5
L2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgc3RhdGUgc3RheXMgc2VwYXJhdGUgZnJvbSB0aGUKKy8v
IG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJlZCBzdGF0ZS4gVGhpcyBpcyBvbmUgc3RlcCB0
b3dhcmRzIGhhdmluZyBzZXBhcmF0ZWQgYWxsb2NhdGlvbiBhbmQKKy8vIG1hcmtpbmcgc3RhdGUu
CisvLworLy8gQWZ0ZXIgdGhpcywgd2UganVzdCBuZWVkIHRvIGFuc3dlciB0aGUgcXVlc3Rpb246
IHdoYXQgZG9lcyBhbiBvYmplY3QgYWxsb2NhdGVkIGR1cmluZyBlZGVuIEdDCisvLyBsb29rIGxp
a2UgdG8gdGhlIEdDPworLy8KKy8vIEkndmUgY29tZSB1cCB3aXRoIHR3byBjb21wZWxsaW5nIGFu
c3dlcnMuCisvLworLy8gMS4gQUxMT0NBVEUgQkxBQ0sKKy8vCisvLyBJIHRoaW5rIHRoYXQgdGhl
IGVhc2llc3QgYW5zd2VyIGlzIHRvIGFsbG9jYXRlIHRoZSBvYmplY3Qgd2hpdGUgYW5kIHRoZW4K
Ky8vIGltbWVkaWF0ZWx5IG1hcmsgaXQuIFRoaXMgbWFrZXMgdGhlIG9iamVjdCBiZWhhdmUgYXMg
aWYgaXQgd2FzIGFsbG9jYXRlZCBqdXN0IGJlZm9yZSB0aGUgc3RhcnQKKy8vIG9mIEdDIGFuZCBp
dCB3YXMgb24gdGhlIHN0YWNrIGF0IHRoZSBiZWdpbm5pbmcgb2YgR0MuIFdlIHdvdWxkbid0IGhh
dmUgdG8gZG8gYW55dGhpbmcgZGlmZmVyZW50CisvLyB3aXRoIHRoZSB2YXJpb3VzIGJsb2NrIGJp
dHMgd2hlbiBhbGxvY2F0aW5nIGR1cmluZyBHQzogd2UgY291bGQgc3RpbGwgc2V0IGVkZW4gYW5k
IGFsbG9jYXRlZAorLy8gc2luY2UgdGhleSB3aWxsIGJlIGNsZWFyZWQgYW55d2F5LgorLy8KKy8v
IEJ1dCB0aGlzIG1lYW5zIHRoYXQgdGhlIG9iamVjdCB3b24ndCBiZSBlbGlnaWJsZSBmb3IgZnJl
ZWluZyB1bnRpbCB0aGUgbmV4dCBmdWxsIEdDLiBJZGVhbGx5CisvLyB3ZSdkIG1ha2UgdGhlIG9i
amVjdCBpcyBlbGlnaWJsZSBmb3IgZnJlZWluZyBhdCB0aGUgbmV4dCBlZGVuIEdDLiBUaGVyZSdz
IGEgYnVuY2ggb2YgdGhpbmdzIHdlCisvLyBjb3VsZCBkbyB0byBtYWtlIHRoaXMgaGFwcGVuLiBI
ZXJlIGFyZSBzb21lIGlkZWFzOgorLy8KKy8vIC0gSW50cm9kdWNlIGEgbmV3IENlbGxTdGF0ZSwg
Y2FsbGVkIEZsb2F0LCB3aGljaCBtZWFucyB0aGF0IHRoZSBvYmplY3Qgd2FzIGFsbG9jYXRlZCBk
dXJpbmcgdGhlCisvLyAgIEdDLiBXZSB3b3VsZCBtYWtlIHN1cmUgdGhhdCBtYXJraW5nIGRvZXMg
bm90aGluZyBmb3IgRmxvYXRzLiBUaGlzIHdvdWxkIG1ha2UgbWFya2luZyBhIHRpbnkKKy8vICAg
Yml0IG1vcmUgZXhwZW5zaXZlLiBXZSB3b3VsZCBtYWtlIHN1cmUgdGhhdCB0aGUgYmFycmllciBy
ZWNvZ25pemVzIHN0b3JlcyB0byBhIEZsb2F0IHRoZSBzYW1lCisvLyAgIHdheSB0aGF0IGl0IHNl
ZXMgYSBzdG9yZSB0byBPbGRCbGFjazogaXQgcHV0cyB0aGUgb2JqZWN0IG9uIHRoZSBtYXJrIHN0
YWNrLiBGbG9hdHMgd291bGQgYmUKKy8vICAgcHV0IG9uIHRoZSBtYXJrIHN0YWNrIGFzIEZsb2F0
R3JleSB0byBpbmRpY2F0ZSB0aGF0IHRoZXkgd2lsbCBiZSBzY2FubmVkIGJ5IHRoZSBHQyBidXQg
dGhhdAorLy8gICB0aGV5IGFyZW4ndCBhY3R1YWxseSBtYXJrZWQuCisvLworLy8gICBOb3RlIHRo
YXQgdGhpcyBpbXBsaWVzIGhhdmluZyB0byBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRob3NlIGNlbGxz
IGZyb20gRmxvYXQgdG8gc29tZXRoaW5nIGVsc2UKKy8vICAgYXQgdGhlIGVuZCBvZiBHQy4gIEkn
bSBub3Qgc3VyZSB0aGF0IHRoaXMgaXMgc28gZ3JlYXQuCisvLworLy8gLSBNYXJrIHRoZSBvYmpl
Y3RzIGFmdGVyIGFsbG9jYXRpb24sIGJ1dCBhbHNvIHNldCBzb21lIG90aGVyIGJpdHMgdG8gaW5k
aWNhdGUgdGhhdCB0aGUgdGhvc2UKKy8vICAgb2JqZWN0cyBzaG91bGQgYmUgdW5tYXJrZWQgYXQg
dGhlIGVuZCBvZiB0aGUgR0MuCisvLworLy8gRWl0aGVyIG9mIHRoZXNlIGFwcHJvYWNoZXMgd291
bGQgbWFrZSBjb2xsZWN0aW9ucyBtb3JlIGV4cGVuc2l2ZSwgYnV0IGl0IGZlZWxzIGxpa2UgdGhl
IGxhdHRlcgorLy8gYXBwcm9hY2ggd291bGQgYmUgYSBwcm9maXRhYmxlIG9wdGltaXphdGlvbi4g
SSdtIGFsc28gcmVhbGx5IGdldHRpbmcgd29ycmllZCBhYm91dCBob3cgdGhpcyBHQworLy8gZXhw
ZXJpZW5jZXMgYmFja3dhcmRzIHRpbWUgdHJhdmVsLCB3aXRoIGFsbCB0aGUgcmVtYXJraW5nIG9m
IHRoaW5ncyBsaWtlIG5ldyBvYmplY3RzIGFuZAorLy8gd2hhdG5vdC4KKy8vCisvLyAyLiBBTExP
Q0FURSBXSElURQorLy8KKy8vIEkgZG9uJ3Qga25vdyBpZiB0aGlzIGlzIHNvdW5kLCBidXQgaWYg
aXQgd2FzIHRoZW4gaXQgd291bGQgYmUgdGhlIG9wdGltYWwgc29sdXRpb24uIEFsbG9jYXRpb24K
Ky8vIHdvdWxkIHdvcmsgYXMgbm93IGFuZCBjb25zZXF1ZW50bHksIGV2ZXJ5dGhpbmcgd2Uga25v
dyBhYm91dCB3aGF0IHdhcyBhbGxvY2F0ZWQgZHVyaW5nIGEgR0MgaXMKKy8vIGZvcmdvdHRlbiBh
dCB0aGUgZW5kIG9mIEdDLiBCdXQgdGhhdCdzIGZpbmUuIEVuZCBvZiBHQyBtdXN0IHJlc2NhbiBh
bnkgaGVhcCBsb2NhdGlvbnMgdGhhdCBnb3QKKy8vIHN0b3JlZCBpbnRvIGFuZCBpdCBtdXN0IHJl
c2NhbiB0aGUgc3RhY2suIFNvLCB3aGl0ZSBvYmplY3RzIGFsbG9jYXRlZCBkdXJpbmcgR0Mgd291
bGQgZ2V0CisvLyBtYXJrZWQgaWYgdGhleSBzb21laG93IHN1cnZpdmVkLgorLy8KKy8vIFRoaXMg
bWVhbnMgdGhhdCBmb3IgZXhhbXBsZSBpZiB0aGVyZSBpcyBhIGZpZWxkIHRoYXQgb2Z0ZW4gZ2V0
cyBzdG9yZWQgdG8gd2l0aCBuZXcgb2JqZWN0cywgdGhlCisvLyBHQyB3aWxsIG5vdCBzZWUgYWxs
IG9mIHRoZSB2YWx1ZXMgaW4gdGhhdCBmaWVsZCBidXQgaW5zdGVhZCBpdCB3b3VsZCBwb2xsIHRo
YXQgZmllbGQsIGhvcGVmdWxseQorLy8gc29tZXdoYXQgcmFyZWx5LiBXZSBjYW4gbWFrZSBpdCB2
ZXJ5IHJhcmUgYnkgb25seSBpbmZyZXF1ZW50bHkgZG9uYXRpbmcgZnJvbSB0aGUgbWFpbiB0aHJl
YWQncworLy8gc2xvdCB2aXNpdG9yIHRvIGFueSBvZiB0aGUgb3RoZXJzLiBTbywgd2Ugd291bGQg
b25seSBtYXJrIHNvbWUgb2YgdGhlIG5ldyBvYmplY3RzIHRoYXQgZ290CisvLyBzdG9yZWQgaW50
byB0aGF0IGZpZWxkLiBJdCBhbHNvIG1lYW5zIHRoYXQgYW55IG9iamVjdCBhbGxvY2F0ZWQgZHVy
aW5nIHRoZSBHQyB0aGF0IGRpZG4ndCBnZXQKKy8vIHN0b3JlZCBpbnRvIGFueSBvYmplY3QgdGhh
dCB3YXMgbGl2ZSBzaW5jZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIEdDIHdvdWxkIHNpbXBseSBkaXNh
cHBlYXIuIFRoaXMKKy8vIG1lYW5zIG11Y2ggbGVzcyByZXNjYW5uaW5nIHRoYW4gYW55IG9mIHRo
ZSBvdGhlciBwcm9wb3NhbHMuCisvLworLy8gSSByZWFsbHkgd2FudCB0byBnbyB3aXRoIHRoZSBh
bGxvY2F0ZS13aGl0ZSBhcHByb2FjaCwgYnV0IEkgbmVlZCB0byB0aGluayBtb3JlIGRlZXBseSBh
Ym91dCBpdAorLy8gYmVmb3JlIEkgY29tbWl0IHRvIGl0LgorCiBjbGFzcyBNYXJrZWRBbGxvY2F0
b3IgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKQEAgLTQ2LDkg
KzE5MSwxNiBAQCBwdWJsaWM6CiAKICAgICBNYXJrZWRBbGxvY2F0b3IoSGVhcCosIE1hcmtlZFNw
YWNlKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7CiAgICAg
dm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwotICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lk
IHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBzdG9wQWxsb2NhdGluZygpOwogICAg
IHZvaWQgcmVzdW1lQWxsb2NhdGluZygpOworICAgIHZvaWQgYmVnaW5NYXJraW5nRm9yRnVsbENv
bGxlY3Rpb24oKTsKKyAgICB2b2lkIGVuZE1hcmtpbmcoKTsKKyAgICB2b2lkIHNuYXBzaG90VW5z
d2VwdEZvckVkZW5Db2xsZWN0aW9uKCk7CisgICAgdm9pZCBzbmFwc2hvdFVuc3dlcHRGb3JGdWxs
Q29sbGVjdGlvbigpOworICAgIHZvaWQgc3dlZXAoKTsKKyAgICB2b2lkIHNocmluaygpOworICAg
IHZvaWQgYXNzZXJ0Tm9VbnN3ZXB0KCk7CiAgICAgc2l6ZV90IGNlbGxTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9jZWxsU2l6ZTsgfQogICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KICAgICBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVl
ZHNEZXN0cnVjdGlvbjsgfQpAQCAtNzIsMzUgKzIyNCw4OSBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBibG9j
a1NpemVGb3JCeXRlcyhzaXplX3QpOworICAgIAorI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJ
VF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKKyAgICBib29s
IGlzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV8gIyMg
bG93ZXJCaXROYW1lW2luZGV4XTsgfSBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QgeyByZXR1cm4gaXMgIyMgY2FwaXRhbEJp
dE5hbWUoYmxvY2stPmluZGV4KCkpOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXRO
YW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhd
ID0gdmFsdWU7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUo
YmxvY2stPmluZGV4KCksIHZhbHVlKTsgfSBcCisgICAgYm9vbCBhdG9taWNTZXRBbmRDaGVja0lz
ICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV8g
IyMgbG93ZXJCaXROYW1lLmF0b21pY1NldEFuZENoZWNrKGluZGV4LCB2YWx1ZSk7IH0gXAorICAg
IGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6
SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lLmF0
b21pY1NldEFuZENoZWNrKGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0KKyAgICBGT1JfRUFDSF9N
QVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMpCisjdW5k
ZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihjb25zdCBGdW5jJiBmdW5jKQorICAg
IHsKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBj
YXBpdGFsQml0TmFtZSkgXAorICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSk7CisgICAg
ICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0NB
TExCQUNLKTsKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSworICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rv
cldpdGhOYW1lKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworI2RlZmluZSBNQVJLRURfQUxMT0NB
VE9SX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCisgICAgICAg
IGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOworICAgICAgICBGT1Jf
RUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyk7
CisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9CisgICAgCisgICAg
TWFya2VkQWxsb2NhdG9yKiBuZXh0QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0QWxs
b2NhdG9yOyB9CisgICAgCisgICAgLy8gTWFya2VkU3BhY2UgY2FsbHMgdGhpcyBkdXJpbmcgaW5p
dC4KKyAgICB2b2lkIHNldE5leHRBbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3Ip
IHsgbV9uZXh0QWxsb2NhdG9yID0gYWxsb2NhdG9yOyB9CisgICAgCisgICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCk7CisgICAgCisgICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogZmluZEJsb2NrVG9Td2VlcCgpOworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZHVtcEJpdHMoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRh
RmlsZSgpKTsKICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAg
ICAgCisgICAgYm9vbCBzaG91bGRTdGVhbEVtcHR5QmxvY2tzRnJvbU90aGVyQWxsb2NhdG9ycygp
IGNvbnN0OworICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nh
c2UoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiB0cnlBbGxvY2F0ZVNsb3dDYXNlKCk7
CiAgICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZUltcGwoYm9vbCBjcmFzaE9uRmFpbHVyZSk7Cisg
ICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhv
dXRDb2xsZWN0aW5nKCk7Ci0gICAgdm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0lt
cGwoKTsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAg
dm9pZCogdHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7CisgICAgdm9pZCogYWxs
b2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRv
VGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoKTsKLSAgICB2b2lkIHJldGlyZShNYXJrZWRCbG9jazo6
SGFuZGxlKik7CiAgICAgCiAgICAgdm9pZCBzZXRGcmVlTGlzdChjb25zdCBGcmVlTGlzdCYpOwog
ICAgIAotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbHRlck5leHRCbG9jayhNYXJrZWRCbG9j
azo6SGFuZGxlKik7Ci0gICAgdm9pZCBzZXROZXh0QmxvY2tUb1N3ZWVwKE1hcmtlZEJsb2NrOjpI
YW5kbGUqKTsKLSAgICAKICAgICBGcmVlTGlzdCBtX2ZyZWVMaXN0OworICAgIAorICAgIFZlY3Rv
cjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9ja3M7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBt
X2ZyZWVCbG9ja0luZGljZXM7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0RF
Q0xBUkFUSU9OKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICBGYXN0Qml0VmVj
dG9yIG1fICMjIGxvd2VyQml0TmFtZTsKKyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJ
VChNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTikKKyN1bmRlZiBNQVJLRURfQUxMT0NB
VE9SX0JJVF9ERUNMQVJBVElPTgorICAgIAorICAgIC8vIEFmdGVyIHlvdSBkbyBzb21ldGhpbmcg
dG8gYSBibG9jayBiYXNlZCBvbiBvbmUgb2YgdGhlc2UgY3Vyc29ycywgeW91IGNsZWFyIHRoZSBi
aXQgaW4gdGhlCisgICAgLy8gY29ycmVzcG9uZGluZyBiaXR2ZWN0b3IgYW5kIGxlYXZlIHRoZSBj
dXJzb3Igd2hlcmUgaXQgd2FzLgorICAgIHNpemVfdCBtX2FsbG9jYXRpb25DdXJzb3IgeyAwIH07
IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBhbGxv
Y2F0aW9uLgorICAgIHNpemVfdCBtX2VtcHR5Q3Vyc29yIHsgMCB9OyAvLyBQb2ludHMgdG8gdGhl
IG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgZW1wdHkgYWxsb2NhdGlvbiAoYWxs
b2NhdGluZyBpbiBlbXB0eSBibG9ja3MpLgorICAgIHNpemVfdCBtX3Vuc3dlcHRDdXJzb3IgeyAw
IH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBp
bmNyZW1lbnRhbCBzd2VlcGluZy4KKyAgICAKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2N1
cnJlbnRCbG9jazsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2xhc3RBY3RpdmVCbG9jazsK
LSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHRCbG9ja1RvU3dlZXA7Ci0gICAgU2VudGlu
ZWxMaW5rZWRMaXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1h
cmtlZEJsb2NrOjpIYW5kbGU+PiBtX2Jsb2NrTGlzdDsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8
TWFya2VkQmxvY2s6OkhhbmRsZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6Okhh
bmRsZT4+IG1fcmV0aXJlZEJsb2NrczsKKwogICAgIExvY2sgbV9sb2NrOwogICAgIHVuc2lnbmVk
IG1fY2VsbFNpemU7CiAgICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAgICAg
SGVhcCogbV9oZWFwOwogICAgIE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOworICAgIE1hcmtl
ZEFsbG9jYXRvciogbV9uZXh0QWxsb2NhdG9yOwogfTsKIAogaW5saW5lIHB0cmRpZmZfdCBNYXJr
ZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKQpAQCAtMTQ5LDIwICszNTUsMTIgQEAgQUxX
QVlTX0lOTElORSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbAogICAgIHJldHVybiBoZWFkOwog
fQogCi1pbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcoKQotewot
ICAgIGlmICghbV9sYXN0QWN0aXZlQmxvY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZnJl
ZUxpc3QgPSBtX2xhc3RBY3RpdmVCbG9jay0+cmVzdW1lQWxsb2NhdGluZygpOwotICAgIG1fY3Vy
cmVudEJsb2NrID0gbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAw
OwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxs
b2NhdG9yOjpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX2Js
b2NrTGlzdC5mb3JFYWNoKGZ1bmN0b3IpOwotICAgIG1fcmV0aXJlZEJsb2Nrcy5mb3JFYWNoKGZ1
bmN0b3IpOworICAgIG1fbGl2ZS5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBp
bmRleCkgeworICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nrc1tpbmRleF0pOworICAgICAgICB9
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVj
dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGlu
ZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0z
Niw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJh
bGFuY2UgPSBmYWxzZTsKIHN0YXRpYyBzaXplX3QgYmFsYW5jZTsKIAotTWFya2VkQmxvY2s6Okhh
bmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzKQorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShI
ZWFwJiBoZWFwKQogewogICAgIGlmIChjb21wdXRlQmFsYW5jZSkgewogICAgICAgICBiYWxhbmNl
Kys7CkBAIC00OCwyNiArNDksMTcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6
OnRyeUNyZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoc2NyaWJibGVGcmVlQ2Vs
bHMoKSkKICAgICAgICAgc2NyaWJibGUoYmxvY2tTcGFjZSwgYmxvY2tTaXplKTsKLSAgICByZXR1
cm4gbmV3IEhhbmRsZShoZWFwLCBhbGxvY2F0b3IsIGNlbGxTaXplLCBhdHRyaWJ1dGVzLCBibG9j
a1NwYWNlKTsKKyAgICByZXR1cm4gbmV3IEhhbmRsZShoZWFwLCBibG9ja1NwYWNlKTsKIH0KIAot
TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciog
YWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIHZvaWQqIGJsb2NrU3BhY2UpCi0gICAgOiBtX2F0b21zUGVyQ2VsbCgoY2VsbFNp
emUgKyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemUpCi0gICAgLCBtX2VuZEF0b20oYXRvbXNQZXJC
bG9jayAtIG1fYXRvbXNQZXJDZWxsICsgMSkKLSAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVz
KQotICAgICwgbV9zdGF0ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCi0g
ICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX3dlYWtTZXQoYWxsb2NhdG9yLT5o
ZWFwKCktPnZtKCksIENlbGxDb250YWluZXIoKSkKK01hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRs
ZShIZWFwJiBoZWFwLCB2b2lkKiBibG9ja1NwYWNlKQorICAgIDogbV93ZWFrU2V0KGhlYXAudm0o
KSwgQ2VsbENvbnRhaW5lcigpKQogewogICAgIG1fYmxvY2sgPSBuZXcgKE5vdE51bGwsIGJsb2Nr
U3BhY2UpIE1hcmtlZEJsb2NrKCpoZWFwLnZtKCksICp0aGlzKTsKICAgICAKICAgICBtX3dlYWtT
ZXQuc2V0Q29udGFpbmVyKCptX2Jsb2NrKTsKICAgICAKICAgICBoZWFwLmRpZEFsbG9jYXRlQmxv
Y2soYmxvY2tTaXplKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMp
OwotICAgIEFTU0VSVChhbGxvY2F0b3IpOwotICAgIGlmIChtX2F0dHJpYnV0ZXMuY2VsbEtpbmQg
IT0gSGVhcENlbGw6OkpTQ2VsbCkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hdHRyaWJ1dGVz
LmRlc3RydWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pOwogfQogCiBNYXJrZWRCbG9j
azo6SGFuZGxlOjp+SGFuZGxlKCkKQEAgLTc4LDQ1ICs3MCwzNSBAQCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjp+SGFuZGxlKCkKICAgICAgICAgaWYgKCEoYmFsYW5jZSAlIDEwKSkKICAgICAgICAgICAg
IGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJhbGFuY2UsICJcbiIpOwogICAgIH0K
KyAgICByZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAgICAgbV9ibG9jay0+fk1hcmtlZEJsb2NrKCk7
CiAgICAgZmFzdEFsaWduZWRGcmVlKG1fYmxvY2spOwogICAgIGhlYXAuZGlkRnJlZUJsb2NrKGJs
b2NrU2l6ZSk7CiB9CiAKIE1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhWTSYgdm0sIEhhbmRsZSYg
aGFuZGxlKQotICAgIDogbV9uZWVkc0Rlc3RydWN0aW9uKGhhbmRsZS5uZWVkc0Rlc3RydWN0aW9u
KCkpCi0gICAgLCBtX3ZlcnNpb24odm0uaGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSkKKyAg
ICA6IG1fdmVyc2lvbihNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb24pCiAgICAgLCBtX2hhbmRsZSho
YW5kbGUpCiAgICAgLCBtX3ZtKCZ2bSkKIHsKLSAgICB1bnNpZ25lZCBjZWxsc1BlckJsb2NrID0g
TWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGhhbmRsZS5jZWxsU2l6ZSgpOwotICAgIGRvdWJs
ZSBtYXJrQ291bnRCaWFzID0gLShPcHRpb25zOjptaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uKCkg
KiBjZWxsc1BlckJsb2NrKTsKLSAgICAKLSAgICAvLyBUaGUgbWFyayBjb3VudCBiaWFzIHNob3Vs
ZCBiZSBjb21mb3J0YWJseSB3aXRoaW4gdGhpcyByYW5nZS4KLSAgICBSRUxFQVNFX0FTU0VSVCht
YXJrQ291bnRCaWFzID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDE2X3Q+OjptaW4oKSkpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtDb3VudEJpYXMgPCAwKTsK
LSAgICAKLSAgICBtX21hcmtDb3VudEJpYXMgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihtYXJrQ291
bnRCaWFzKTsKLSAgICAKLSAgICBtX2JpYXNlZE1hcmtDb3VudCA9IG1fbWFya0NvdW50Qmlhczsg
Ly8gVGhpcyBtZWFucyB3ZSBoYXZlbid0IG1hcmtlZCBhbnl0aGluZyB5ZXQuCiB9CiAKLXRlbXBs
YXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUs
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+Cit0ZW1w
bGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rp
b25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2Rl
LCBNYXJrZWRCbG9jazo6SGFuZGxlOjpGbGlwTW9kZSBmbGlwTW9kZT4KIEZyZWVMaXN0IE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoKQogewotICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBBU1NFUlQoYmxvY2tTdGF0ZSA9PSBO
ZXcgfHwgYmxvY2tTdGF0ZSA9PSBNYXJrZWQpOwotICAgIEFTU0VSVCghKGRlc3RydWN0aW9uTW9k
ZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCghKGRlc3RydWN0aW9uTW9kZSA9PSBEb2VzTm90TmVlZERlc3Ry
dWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsKICAgICAKLSAgICBhc3NlcnRGbGlw
cGVkKCk7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwor
CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+YmxvY2soKTsKICAgICAKLSAgICBib29s
IGlzTmV3QmxvY2sgPSBibG9ja1N0YXRlID09IE5ldzsKLSAgICBib29sIGlzRW1wdHlCbG9jayA9
ICFibG9jay5oYXNBbnlNYXJrZWQoKQotICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0g
RG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZAotICAgICAgICAmJiBkZXN0cnVjdGlvbk1vZGUgPT0g
RG9lc05vdE5lZWREZXN0cnVjdGlvbjsKLSAgICBpZiAoT3B0aW9uczo6dXNlQnVtcEFsbG9jYXRv
cigpICYmIChpc05ld0Jsb2NrIHx8IGlzRW1wdHlCbG9jaykpIHsKLSAgICAgICAgQVNTRVJUKGJs
b2NrLm1fbWFya3MuaXNFbXB0eSgpKTsKKyAgICBpZiAoZmFsc2UpCisgICAgICAgIGRhdGFMb2co
UmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2Vl
cCFcbiIpOworICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2NhdG9yKCkKKyAgICAg
ICAgJiYgZW1wdHlNb2RlID09IElzRW1wdHkKKyAgICAgICAgJiYgbmV3bHlBbGxvY2F0ZWRNb2Rl
ID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQpIHsKKyAgICAgICAgQVNTRVJUKGZsaXBNb2Rl
ID09IE5lZWRzRmxpcCk7CiAgICAgICAgIAogICAgICAgICBjaGFyKiBzdGFydE9mTGFzdENlbGwg
PSBzdGF0aWNfY2FzdDxjaGFyKj4oY2VsbEFsaWduKGJsb2NrLmF0b21zKCkgKyBtX2VuZEF0b20g
LSAxKSk7CiAgICAgICAgIGNoYXIqIHBheWxvYWRFbmQgPSBzdGFydE9mTGFzdENlbGwgKyBjZWxs
U2l6ZSgpOwpAQCAtMTI0LDcgKzEwNiwxMCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpzcGVjaWFsaXplCiAgICAgICAgIGNoYXIqIHBheWxvYWRCZWdpbiA9IGJpdHdpc2VfY2FzdDxj
aGFyKj4oYmxvY2suYXRvbXMoKSArIGZpcnN0QXRvbSgpKTsKICAgICAgICAgaWYgKHNjcmliYmxl
TW9kZSA9PSBTY3JpYmJsZSkKICAgICAgICAgICAgIHNjcmliYmxlKHBheWxvYWRCZWdpbiwgcGF5
bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7Ci0gICAgICAgIG1fc3RhdGUgPSAoKHN3ZWVwTW9kZSA9
PSBTd2VlcFRvRnJlZUxpc3QpID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7CisgICAgICAgIGlmIChz
d2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICAgICAgc2V0SXNGcmVlTGlzdGVk
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRo
aXMsIHRydWUpOwogICAgICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6YnVtcChwYXls
b2FkRW5kLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsKICAgICAgICAgaWYgKGZhbHNlKQog
ICAgICAgICAgICAgZGF0YUxvZygiUXVpY2tseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKHRo
aXMpLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwg
bV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTM2LDE1ICsxMjEsMTggQEAg
RnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgIC8vIG9yZGVyIG9m
IHRoZSBmcmVlIGxpc3QuCiAgICAgRnJlZUNlbGwqIGhlYWQgPSAwOwogICAgIHNpemVfdCBjb3Vu
dCA9IDA7CisgICAgYm9vbCBpc0VtcHR5ID0gdHJ1ZTsKICAgICBmb3IgKHNpemVfdCBpID0gZmly
c3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAg
aWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkCi0gICAgICAgICAgICAmJiAoYmxvY2subV9tYXJrcy5n
ZXQoaSkKLSAgICAgICAgICAgICAgICB8fCAobmV3bHlBbGxvY2F0ZWRNb2RlID09IEhhc05ld2x5
QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChpKSkpKQorICAgICAgICBpZiAoZW1w
dHlNb2RlID09IE5vdEVtcHR5CisgICAgICAgICAgICAmJiAoKGZsaXBNb2RlID09IERvZXNOb3RO
ZWVkRmxpcCAmJiBibG9jay5tX21hcmtzLmdldChpKSkKKyAgICAgICAgICAgICAgICB8fCAobmV3
bHlBbGxvY2F0ZWRNb2RlID09IEhhc05ld2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQt
PmdldChpKSkpKSB7CisgICAgICAgICAgICBpc0VtcHR5ID0gZmFsc2U7CiAgICAgICAgICAgICBj
b250aW51ZTsKLQorICAgICAgICB9CisgICAgICAgIAogICAgICAgICBIZWFwQ2VsbCogY2VsbCA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmJsb2NrLmF0b21zKClbaV0pOwogCi0g
ICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNEZXN0cnVjdGlvbiAmJiBibG9ja1N0
YXRlICE9IE5ldykKKyAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0
aW9uICYmIGVtcHR5TW9kZSA9PSBOb3RFbXB0eSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEpT
Q2VsbCo+KGNlbGwpLT5jYWxsRGVzdHJ1Y3Rvcigqdm0oKSk7CiAKICAgICAgICAgaWYgKHN3ZWVw
TW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKQEAgLTE2Myw3ICsxNTEsMTAgQEAgRnJlZUxpc3Qg
TWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgICAgICBtX25ld2x5QWxsb2NhdGVk
ID0gbnVsbHB0cjsKIAogICAgIEZyZWVMaXN0IHJlc3VsdCA9IEZyZWVMaXN0OjpsaXN0KGhlYWQs
IGNvdW50ICogY2VsbFNpemUoKSk7Ci0gICAgbV9zdGF0ZSA9IChzd2VlcE1vZGUgPT0gU3dlZXBU
b0ZyZWVMaXN0ID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7CisgICAgaWYgKHN3ZWVwTW9kZSA9PSBT
d2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHNldElzRnJlZUxpc3RlZCgpOworICAgIGVsc2UgaWYg
KGlzRW1wdHkpCisgICAgICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIHRydWUpOwog
ICAgIGlmIChmYWxzZSkKICAgICAgICAgZGF0YUxvZygiU2xvd2x5IHN3ZXB0IGJsb2NrICIsIFJh
d1BvaW50ZXIoJmJsb2NrKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSgpLCAiIGFuZCBh
dHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcmVzdWx0LCAiXG4iKTsKICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtMTcxLDE1ICsxNjIsMjAgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3BlY2lhbGl6ZQogCiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcChT
d2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOworICAgIG1fYWxs
b2NhdG9yLT5zZXRJc1Vuc3dlcHQodGhpcywgZmFsc2UpOwogICAgIAotICAgIEhFQVBfTE9HX0JM
T0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0KICAgICBtX3dlYWtTZXQuc3dlZXAoKTsKIAog
ICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlv
biA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsK
IAorICAgIGlmIChVTkxJS0VMWShtX2lzRnJlZUxpc3RlZCkpIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7CisgICAgICAgIHJldHVybiBGcmVl
TGlzdCgpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yLT5pc0FsbG9jYXRl
ZCh0aGlzKSk7CisgICAgCiAgICAgaWYgKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVk
c0Rlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1v
ZGU8TmVlZHNEZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsKICAgICByZXR1cm4gc3dlZXBIZWxwZXJT
ZWxlY3RTY3JpYmJsZU1vZGU8RG9lc05vdE5lZWREZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsKQEAg
LTE4OSw0NyArMTg1LDU5IEBAIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1v
ZGUKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJi
bGVNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxz
KCkpCi0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlPGRl
c3RydWN0aW9uTW9kZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7Ci0gICAgcmV0dXJuIHN3ZWVwSGVs
cGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJibGU+
KHN3ZWVwTW9kZSk7CisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxk
ZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhl
bHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIERvbnRTY3JpYmJsZT4oc3dlZXBN
b2RlKTsKIH0KIAogdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KLUZyZWVMaXN0IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGUoU3dl
ZXBNb2RlIHN3ZWVwTW9kZSkKK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVs
cGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgc3dpdGNoICht
X3N0YXRlKSB7Ci0gICAgY2FzZSBOZXc6Ci0gICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2Vl
cFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5l
d2x5QWxsb2NhdGVkPigpOwotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAgLy8gSGFwcGVu
cyB3aGVuIGEgYmxvY2sgdHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxsb2NhdGVkLgotICAgICAgICBB
U1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBGcmVl
TGlzdCgpOwotICAgIGNhc2UgQWxsb2NhdGVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKLSAgICBjYXNlIE1hcmtlZDoK
LSAgICAgICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBzd2Vl
cE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3
ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9k
ZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dl
ZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNO
ZXdseUFsbG9jYXRlZD4oKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBz
d2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICAgICAgPyBzcGVjaWFsaXpl
ZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxl
TW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKQotICAgICAgICAgICAgICAgIDogc3Bl
Y2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJs
ZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRnJlZUxpc3QoKTsK
KyAgICAvLyBJdCdzIG5vdCBvYnZpb3VzLCBidXQgdGhpcyBpcyB0aGUgb25seSB3YXkgdG8ga25v
dyBpZiB0aGUgYmxvY2sgaXMgZW1wdHkuIEl0J3MgdGhlIG9ubHkKKyAgICAvLyBiaXQgdGhhdCBj
YXB0dXJlcyB0aGVzZSBjYXZlYXRzOgorICAgIC8vIC0gSXQncyB0cnVlIHdoZW4gdGhlIGJsb2Nr
IGlzIGZyZXNobHkgYWxsb2NhdGVkLgorICAgIC8vIC0gSXQncyB0cnVlIGlmIHRoZSBibG9jayBo
YWQgYmVlbiBzd2VwdCBpbiB0aGUgcGFzdCwgYWxsIGRlc3RydWN0b3JzIHdlcmUgY2FsbGVkLCBh
bmQgdGhhdAorICAgIC8vICAgc3dlZXAgcHJvdmVkIHRoYXQgdGhlIGJsb2NrIGlzIGVtcHR5Lgor
ICAgIC8vIC0gSXQncyBmYWxzZSBpZiB0aGVyZSBhcmUgYW55IGRlc3RydWN0b3JzIHRoYXQgbmVl
ZCB0byBiZSBjYWxsZWQsIGV2ZW4gaWYgdGhlIGJsb2NrIGhhcyBubworICAgIC8vICAgbGl2ZSBv
YmplY3RzLgorICAgIGlmIChtX2FsbG9jYXRvci0+aXNFbXB0eSh0aGlzKSkKKyAgICAgICAgcmV0
dXJuIHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQ8SXNFbXB0eSwgZGVzdHJ1Y3Rp
b25Nb2RlLCBzY3JpYmJsZU1vZGU+KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVy
U2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQ8Tm90RW1wdHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlPihzd2VlcE1vZGUpOworfQorCit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpF
bXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgorRnJlZUxpc3QgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2Vl
cE1vZGUgc3dlZXBNb2RlKQoreworICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKQorICAgICAgICBy
ZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1v
ZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7CisgICAgcmV0
dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2Rl
LCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7Cit9
CisKK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIERl
c3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmli
YmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVk
TW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
d2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQoreworICAgIGlm
IChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICByZXR1cm4gc3dlZXBIZWxw
ZXJTZWxlY3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25N
b2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKKyAgICByZXR1cm4gc3dl
ZXBIZWxwZXJTZWxlY3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25N
b2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZT4oKTsKK30KKwordGVtcGxhdGU8
TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9k
ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KK0Zy
ZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RmxpcE1vZGUoKQor
eworICAgIGlmIChuZWVkc0ZsaXAoKSkKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8
ZW1wdHlNb2RlLCBzd2VlcE1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXds
eUFsbG9jYXRlZE1vZGUsIE5lZWRzRmxpcD4oKTsKKyAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2Vl
cDxlbXB0eU1vZGUsIHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5l
d2x5QWxsb2NhdGVkTW9kZSwgRG9lc05vdE5lZWRGbGlwPigpOwogfQogCiB2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpCiB7Ci0gICAgZmxpcElm
TmVjZXNzYXJ5KCk7Ci0gICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0
aGlzKTsKLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOwot
ICAgIG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pc0ZyZWVMaXN0ZWQp
OworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c2V0SXNGcmVlTGlzdGVkKCkKK3sKKyAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0
aGlzLCBmYWxzZSk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSB0cnVlOwogfQogCiBjbGFzcyBTZXRO
ZXdseUFsbG9jYXRlZEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsK
QEAgLTI1MiwyNiArMjYwLDE3IEBAIHByaXZhdGU6CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRnJlZUxpc3QmIGZyZWVMaXN0KQogewotICAgIGZsaXBJ
Zk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7
CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nIVxuIik7CisgICAgQVNTRVJUKCFhbGxv
Y2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOwogCi0gICAgaWYgKG1fc3RhdGUgPT0gTWFya2Vk
KSB7Ci0gICAgICAgIC8vIElmIHRoZSBibG9jayBpcyBpbiB0aGUgTWFya2VkIHN0YXRlIHRoZW4g
d2Uga25vdyB0aGF0IG9uZSBvZiB0aGVzZQotICAgICAgICAvLyBjb25kaXRpb25zIGhvbGRzOgot
ICAgICAgICAvLwotICAgICAgICAvLyAtIEl0IHdhcyBub3QgdXNlZCBmb3IgYWxsb2NhdGlvbiBk
dXJpbmcgdGhlIHByZXZpb3VzIGFsbG9jYXRpb24gY3ljbGUuCi0gICAgICAgIC8vICAgSXQgbWF5
IGhhdmUgZGVhZCBvYmplY3RzLCBhbmQgd2Ugb25seSBrbm93IHRoZW0gdG8gYmUgZGVhZCBieSB0
aGUKLSAgICAgICAgLy8gICBmYWN0IHRoYXQgdGhlaXIgbWFyayBiaXRzIGFyZSB1bnNldC4KLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gLSBTb21lb25lIGhhZCBhbHJlYWR5IGRvbmUgc3RvcEFsbG9j
YXRpbmcoKSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBvZgotICAgICAgICAvLyAgIGhlYXAgaXRlcmF0
aW9uLCBhbmQgdGhleSBoYWQgYWxyZWFkeSAKLSAgICAgICAgLy8gSGVuY2UgaWYgdGhlIGJsb2Nr
IGlzIE1hcmtlZCB3ZSBuZWVkIHRvIGxlYXZlIGl0IE1hcmtlZC4KKyAgICBpZiAoIWlzRnJlZUxp
c3RlZCgpKSB7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBlaXRoZXIgZGlkbid0IHVz
ZSB0aGlzIGJsb2NrIGF0IGFsbCBmb3IgYWxsb2NhdGlvbiBzaW5jZSBsYXN0IEdDLAorICAgICAg
ICAvLyBvciBzb21lb25lIGhhZCBhbHJlYWR5IGRvbmUgc3RvcEFsbG9jYXRpbmcoKSBiZWZvcmUu
CiAgICAgICAgIEFTU0VSVChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7
Ci0gICAgCiAgICAgLy8gUm9sbCBiYWNrIHRvIGEgY29oZXJlbnQgc3RhdGUgZm9yIEhlYXAgaW50
cm9zcGVjdGlvbi4gQ2VsbHMgbmV3bHkKICAgICAvLyBhbGxvY2F0ZWQgZnJvbSBvdXIgZnJlZSBs
aXN0IGFyZSBub3QgY3VycmVudGx5IG1hcmtlZCwgc28gd2UgbmVlZCBhbm90aGVyCiAgICAgLy8g
d2F5IHRvIHRlbGwgd2hhdCdzIGxpdmUgdnMgZGVhZC4gCkBAIC0yOTAsMTEgKzI4OSwxMiBAQCB2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nCiAgICAgICAgICAgICBjbGVh
ck5ld2x5QWxsb2NhdGVkKGNlbGwpOwogICAgICAgICB9KTsKICAgICAKLSAgICBtX3N0YXRlID0g
TWFya2VkOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7CiB9CiAKIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogeworICAgIGFsbG9jYXRvcigpLT5z
ZXRJc0FsbG9jYXRlZCh0aGlzLCBmYWxzZSk7CiAgICAgbV9ibG9jay0+Y2xlYXJNYXJrcygpOwog
ICAgIG1fd2Vha1NldC5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCkBAIC0zMDQsMTQgKzMwNCwx
MSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpCiAKIEZyZWVMaXN0
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcoKQogewotICAgIGZsaXBJZk5l
Y2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0K
LSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOworICAgIEFTU0VSVCghYWxsb2NhdG9yKCkt
PmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKIAogICAg
IGlmICghbV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAvLyBXZSBkaWRuJ3QgaGF2ZSB0byBj
cmVhdGUgYSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAuIFRoYXQgbWVhbnMgd2Ugd2VyZSBhbHJl
YWR5IE1hcmtlZAotICAgICAgICAvLyB3aGVuIHdlIGxhc3Qgc3RvcHBlZCBhbGxvY2F0aW9uLCBz
byByZXR1cm4gYW4gZW1wdHkgZnJlZSBsaXN0IGFuZCBzdGF5IGluIHRoZSBNYXJrZWQgc3RhdGUu
CisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVkIHRoZSBibG9j
ayB3aGVuIHdlIHN0b3BwZWQgYWxsb2NhdGlvbi4KICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7
CiAgICAgfQogCkBAIC0zNDUsNDAgKzM0MiwyOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmZvckVhY2hGcmVlQ2VsCiAgICAgfQogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNl
c3NhcnkoKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCku
dmVyc2lvbigpKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3Nh
cnkoKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KCk7Ci19Ci0KLXZvaWQgTWFya2Vk
QmxvY2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3coKQotewotICAgIEFTU0VSVChuZWVkc0ZsaXAoKSk7
Ci0gICAgQVNTRVJUKCF2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOwotICAg
IGNsZWFyTWFya3MoKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVy
aW5nTWFya2luZ1Nsb3coKQordm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KEhlYXBW
ZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVjdFNwYWNl
KCkuaXNNYXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgaWYg
KG5lZWRzRmxpcCgpKQotICAgICAgICBjbGVhck1hcmtzKCk7CisgICAgaWYgKG5lZWRzRmxpcCho
ZWFwVmVyc2lvbikpIHsKKyAgICAgICAgY2xlYXJNYXJrcyhoZWFwVmVyc2lvbik7CisgICAgICAg
IC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGlu
IHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRD
aGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgfQogfQogCiB2b2lk
IE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKKyAgICBjbGVhck1hcmtzKHZtKCktPmhlYXAu
b2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1h
cmtzKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQorewogICAgIG1fbWFya3MuY2xlYXJBbGwoKTsK
ICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgdHJ1ZSBh
dCB0aGUgZW5kIG9mIHRoZSBtYXJrIHBoYXNlLiBXZSBzZXQgaXQgbm93IHRvCi0gICAgLy8gYXZv
aWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4KLSAgICBoYW5kbGUoKS5tX3N0YXRlID0g
TWFya2VkOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgbV92ZXJzaW9uID0gdm0o
KS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKKyAgICBtX3ZlcnNpb24gPSBoZWFwVmVy
c2lvbjsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTM5OCwzMSArMzgzLDM4IEBAIGJv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkKICAgICByZXR1cm4gbV9ibG9jay0+
bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6d2lsbFJlbW92ZUJs
b2NrKCkKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHApCiB7Ci0gICAg
ZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgcmV0dXJuIGlzTWFya2VkKHZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCksIHApOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRp
ZENvbnN1bWVGcmVlTGlzdCgpCitib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBmbGlwSWZOZWNlc3Nh
cnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAot
ICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOworICAgIHJldHVybiBpc01hcmtlZE9y
TmV3bHlBbGxvY2F0ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7
Cit9CisKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBI
ZWFwQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHZt
KCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOworfQogCi0gICAgbV9zdGF0
ZSA9IEFsbG9jYXRlZDsKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVM
aXN0KCkKK3sKKyAgICBpZiAoZmFsc2UpCisgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlz
KSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0IVxuIik7CisgICAg
QVNTRVJUKGlzRnJlZUxpc3RlZCgpKTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOworICAg
IGFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlzLCB0cnVlKTsKIH0KIAogc2l6ZV90IE1h
cmtlZEJsb2NrOjptYXJrQ291bnQoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJl
dHVybiBtX21hcmtzLmNvdW50KCk7CisgICAgcmV0dXJuIG5lZWRzRmxpcCgpID8gMCA6IG1fbWFy
a3MuY291bnQoKTsKIH0KIAogYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0VtcHR5KCkKIHsK
LSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQgJiYg
IWJsb2NrKCkuaGFzQW55TWFya2VkKCkgJiYgbV93ZWFrU2V0LmlzRW1wdHkoKSAmJiAoIW1fbmV3
bHlBbGxvY2F0ZWQgfHwgbV9uZXdseUFsbG9jYXRlZC0+aXNFbXB0eSgpKTsKKyAgICByZXR1cm4g
bV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcyk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFy
SGFzQW55TWFya2VkKCkKQEAgLTQzMiwyOSArNDI0LDc4IEBAIHZvaWQgTWFya2VkQmxvY2s6OmNs
ZWFySGFzQW55TWFya2VkKCkKIAogdm9pZCBNYXJrZWRCbG9jazo6bm90ZU1hcmtlZFNsb3coKQog
ewotICAgIGhhbmRsZSgpLm1fYWxsb2NhdG9yLT5yZXRpcmUoJmhhbmRsZSgpKTsKKyAgICBoYW5k
bGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hlY2tJc01hcmtpbmdSZXRpcmVkKCZoYW5k
bGUoKSwgdHJ1ZSk7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFs
bG9jYXRvcigpCit7CisgICAgaWYgKCFtX2FsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIG1fYWxsb2NhdG9yLT5yZW1vdmVCbG9jayh0aGlzKTsKK30KKwordm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVCghbV9hbGxvY2F0b3IpOworICAgIAor
ICAgIG1faW5kZXggPSBpbmRleDsKKyAgICBtX2FsbG9jYXRvciA9IGFsbG9jYXRvcjsKKyAgICAK
KyAgICBzaXplX3QgY2VsbFNpemUgPSBhbGxvY2F0b3ItPmNlbGxTaXplKCk7CisgICAgbV9hdG9t
c1BlckNlbGwgPSAoY2VsbFNpemUgKyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemU7CisgICAgbV9l
bmRBdG9tID0gYXRvbXNQZXJCbG9jayAtIG1fYXRvbXNQZXJDZWxsICsgMTsKKyAgICAKKyAgICBt
X2F0dHJpYnV0ZXMgPSBhbGxvY2F0b3ItPmF0dHJpYnV0ZXMoKTsKKworICAgIGlmIChtX2F0dHJp
YnV0ZXMuY2VsbEtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pOwor
ICAgIAorICAgIGJsb2NrKCkubV9uZWVkc0Rlc3RydWN0aW9uID0gbmVlZHNEZXN0cnVjdGlvbigp
OworICAgIAorICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQ
YXlsb2FkIC8gY2VsbFNpemU7CisgICAgZG91YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6
Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxzUGVyQmxvY2spOworICAgIAorICAg
IC8vIFRoZSBtYXJrIGNvdW50IGJpYXMgc2hvdWxkIGJlIGNvbWZvcnRhYmx5IHdpdGhpbiB0aGlz
IHJhbmdlLgorICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtDb3VudEJpYXMgPiBzdGF0aWNfY2FzdDxk
b3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MTZfdD46Om1pbigpKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQobWFya0NvdW50QmlhcyA8IDApOworICAgIAorICAgIC8vIFRoaXMgbWVhbnMgd2Ug
aGF2ZW4ndCBtYXJrZWQgYW55dGhpbmcgeWV0LgorICAgIGJsb2NrKCkubV9iaWFzZWRNYXJrQ291
bnQgPSBibG9jaygpLm1fbWFya0NvdW50QmlhcyA9IHN0YXRpY19jYXN0PGludDE2X3Q+KG1hcmtD
b3VudEJpYXMpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZyb21B
bGxvY2F0b3IoKQoreworICAgIEFTU0VSVChtX2luZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CisgICAgCisgICAgbV9p
bmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisgICAgbV9hbGxvY2F0
b3IgPSBudWxscHRyOworfQorCitib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25z
dCBIZWFwQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gaXNMaXZlKHZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOworfQorCitib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKK3sKKyAgICByZXR1cm4gaXNMaXZlQ2VsbCh2bSgp
LT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKIG5hbWVzcGFjZSBXVEYgewogCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTWFya2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxv
Y2tTdGF0ZSkKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBtb2RlKQogewotICAgIHN3aXRjaCAoYmxvY2tTdGF0
ZSkgewotICAgIGNhc2UgTWFya2VkQmxvY2s6Ok5ldzoKLSAgICAgICAgb3V0LnByaW50KCJOZXci
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6OkZyZWVMaXN0ZWQ6Ci0g
ICAgICAgIG91dC5wcmludCgiRnJlZUxpc3RlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBNYXJrZWRCbG9jazo6QWxsb2NhdGVkOgotICAgICAgICBvdXQucHJpbnQoIkFsbG9jYXRlZCIp
OworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
OjpTd2VlcFRvRnJlZUxpc3Q6CisgICAgICAgIG91dC5wcmludCgiU3dlZXBUb0ZyZWVMaXN0Iik7
CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6Ci0gICAgICAg
IG91dC5wcmludCgiTWFya2VkIik7CisgICAgY2FzZSBKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OlN3ZWVwT25seToKKyAgICAgICAgb3V0LnByaW50KCJTd2VlcE9ubHkiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDYwMzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCwyMCArNDQsNiBAQCBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiB0eXBlZGVmIHVpbnRw
dHJfdCBCaXRzOwogdHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKIAotLy8gU2V0IHRvIGxv
ZyBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBibG9ja3MuCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NU
QVRFX1RSQU5TSVRJT05TIDAKLQotI2lmIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05T
Ci0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oaGFuZGxlKSBkbyB7ICAg
ICAgICAgICAgXAotICAgICAgICBkYXRhTG9nRiggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICIlczolZCAlczogYmxvY2sgJXMgPSAl
cCwgJWRcbiIsICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBfX0ZJTEVfXywgX19M
SU5FX18sIF9fRlVOQ1RJT05fXywgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgI2hh
bmRsZSwgJihoYW5kbGUpLT5ibG9jaygpLCAoaGFuZGxlKS0+bV9zdGF0ZSk7ICAgIFwKLSAgICB9
IHdoaWxlIChmYWxzZSkKLSNlbHNlCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT04oaGFuZGxlKSAoKHZvaWQpMCkKLSNlbmRpZgotCiAvLyBBIG1hcmtlZCBibG9jayBpcyBh
IHBhZ2UtYWxpZ25lZCBjb250YWluZXIgZm9yIGhlYXAtYWxsb2NhdGVkIG9iamVjdHMuCiAvLyBP
YmplY3RzIGFyZSBhbGxvY2F0ZWQgd2l0aGluIGNlbGxzIG9mIHRoZSBtYXJrZWQgYmxvY2suIEZv
ciBhIGdpdmVuCiAvLyBtYXJrZWQgYmxvY2ssIGFsbCBjZWxscyBoYXZlIHRoZSBzYW1lIHNpemUu
IE9iamVjdHMgc21hbGxlciB0aGFuIHRoZQpAQCAtNzYsOCArNjIsNiBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIYW5kbGU7CiBwdWJsaWM6Ci0gICAgZW51bSBCbG9ja1N0
YXRlIDogdWludDhfdCB7IE5ldywgRnJlZUxpc3RlZCwgQWxsb2NhdGVkLCBNYXJrZWQgfTsKLSAg
ICAgICAgCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tU2l6ZSA9IDE2OyAvLyBieXRlcwog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0gMTYgKiBLQjsKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGJsb2NrTWFzayA9IH4oYmxvY2tTaXplIC0gMSk7IC8vIGJsb2NrU2l6ZSBt
dXN0IGJlIGEgcG93ZXIgb2YgdHdvLgpAQCAtODYsMTIgKzcwLDEyIEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpY19hc3NlcnQoIShNYXJrZWRCbG9jazo6YXRvbVNpemUgJiAoTWFya2VkQmxvY2s6OmF0
b21TaXplIC0gMSkpLCAiTWFya2VkQmxvY2s6OmF0b21TaXplIG11c3QgYmUgYSBwb3dlciBvZiB0
d28uIik7CiAgICAgc3RhdGljX2Fzc2VydCghKE1hcmtlZEJsb2NrOjpibG9ja1NpemUgJiAoTWFy
a2VkQmxvY2s6OmJsb2NrU2l6ZSAtIDEpKSwgIk1hcmtlZEJsb2NrOjpibG9ja1NpemUgbXVzdCBi
ZSBhIHBvd2VyIG9mIHR3by4iKTsKLQorICAgIAogICAgIHN0cnVjdCBWb2lkRnVuY3RvciB7CiAg
ICAgICAgIHR5cGVkZWYgdm9pZCBSZXR1cm5UeXBlOwogICAgICAgICB2b2lkIHJldHVyblZhbHVl
KCkgeyB9CiAgICAgfTsKLQorICAgIAogICAgIGNsYXNzIENvdW50RnVuY3RvciB7CiAgICAgcHVi
bGljOgogICAgICAgICB0eXBlZGVmIHNpemVfdCBSZXR1cm5UeXBlOwpAQCAtMTA2LDEwICs5MCw5
IEBAIHB1YmxpYzoKICAgICAgICAgbXV0YWJsZSBSZXR1cm5UeXBlIG1fY291bnQ7CiAgICAgfTsK
ICAgICAgICAgCi0gICAgY2xhc3MgSGFuZGxlIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2Rl
PEhhbmRsZT4geworICAgIGNsYXNzIEhhbmRsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEhhbmRsZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBm
cmllbmQgY2xhc3MgRG91Ymx5TGlua2VkTGlzdE5vZGU8SGFuZGxlPjsKICAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtl
ZEJsb2NrOwogICAgICAgICBmcmllbmQgc3RydWN0IFZlcmlmeU1hcmtlZDsKQEAgLTEzMCw2ICsx
MTMsMTUgQEAgcHVibGljOgogICAgICAgICBWTSogdm0oKSBjb25zdDsKICAgICAgICAgV2Vha1Nl
dCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCisgICAgICAgIC8vIFN3ZWVwaW5nIGVuc3VyZXMg
dGhhdCBkZXN0cnVjdG9ycyBnZXQgY2FsbGVkIGFuZCByZW1vdmVzIHRoZSBibG9jayBmcm9tIHRo
ZSB1bnN3ZXB0CisgICAgICAgIC8vIHNldC4gU3dlZXBpbmcgdG8gZnJlZSBsaXN0IGFsc28gcmVt
b3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgZW1wdHkgc2V0LCBpZiBpdCB3YXMgaW4gdGhhdAorICAg
ICAgICAvLyBzZXQuIFN3ZWVwaW5nIHdpdGggU3dlZXBPbmx5IG1heSBhZGQgdGhpcyBibG9jayB0
byB0aGUgZW1wdHkgc2V0LCBpZiB0aGUgYmxvY2sgaXMgZm91bmQKKyAgICAgICAgLy8gdG8gYmUg
ZW1wdHkuCisgICAgICAgIC8vCisgICAgICAgIC8vIE5vdGUgdGhhdCB5b3UgbmVlZCB0byBtYWtl
IHN1cmUgdGhhdCB0aGUgZW1wdHkgYml0IHJlZmxlY3RzIHJlYWxpdHkuIElmIGl0J3Mgbm90IHNl
dAorICAgICAgICAvLyBhbmQgdGhlIGJsb2NrIGlzIGZyZXNobHkgY3JlYXRlZCwgdGhlbiB3ZSds
bCBtYWtlIHRoZSBtaXN0YWtlIG9mIHJ1bm5pbmcgZGVzdHJ1Y3RvcnMgaW4KKyAgICAgICAgLy8g
dGhlIGJsb2NrLiBJZiBpdCdzIG5vdCBzZXQgYW5kIHRoZSBibG9jayBoYXMgbm90aGluZyBtYXJr
ZWQsIHRoZW4gd2UnbGwgbWFrZSB0aGUKKyAgICAgICAgLy8gbWlzdGFrZSBvZiBtYWtpbmcgYSBw
b3AgZnJlZWxpc3QgcmF0aGVyIHRoYW4gYSBidW1wIGZyZWVsaXN0LgogICAgICAgICBlbnVtIFN3
ZWVwTW9kZSB7IFN3ZWVwT25seSwgU3dlZXBUb0ZyZWVMaXN0IH07CiAgICAgICAgIEZyZWVMaXN0
IHN3ZWVwKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAgICAgIApAQCAtMTUzLDggKzE0NSw2
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gYW5kIHdhcyBzdWNjZXNzZnVsbHkgY2xlYXJlZCBhbmQg
ZmFsc2Ugb3RoZXJ3aXNlLgogICAgICAgICBib29sIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAg
ICAgICAgICAgIAotICAgICAgICB2b2lkIGZsaXBGb3JFZGVuQ29sbGVjdGlvbigpOwotICAgICAg
ICAgICAgCiAgICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOwogICAgICAgICBjb25zdCBBbGxvY2F0
b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9k
ZSBkZXN0cnVjdGlvbigpIGNvbnN0OwpAQCAtMTY0LDkgKzE1NCwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHNpemVfdCBtYXJrQ291bnQoKTsKICAgICAgICAgc2l6ZV90IHNpemUoKTsKICAgICAgICAg
ICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmUoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBD
ZWxsKik7CisgICAgICAgIGlubGluZSBib29sIGlzTGl2ZUNlbGwoSGVhcFZlcnNpb24sIGNvbnN0
IHZvaWQqKTsKKwogICAgICAgICBib29sIGlzTGl2ZShjb25zdCBIZWFwQ2VsbCopOwogICAgICAg
ICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCopOworCiAgICAgICAgIGJvb2wgaXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKik7CisgICAgICAgIGJvb2wgaXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNOZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAg
IHZvaWQgc2V0TmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwpAQCAtMTc0LDMxICsxNjksMjUg
QEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgYm9vbCBoYXNBbnlOZXdseUFsbG9jYXRlZCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9uZXdseUFsbG9jYXRlZDsgfQogICAgICAgICAgICAgCi0gICAg
ICAgIGJvb2wgaXNBbGxvY2F0ZWQoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc01hcmtlZCgpIGNv
bnN0OwotICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgpIGNvbnN0OwotICAgICAgICBib29sIG5l
ZWRzU3dlZXBpbmcoKSBjb25zdDsKLSAgICAgICAgdm9pZCB3aWxsUmVtb3ZlQmxvY2soKTsKLQog
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVh
Y2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYpOwotICAg
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hE
ZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9y
Jik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9u
U3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgICAgICAKICAg
ICAgICAgYm9vbCBuZWVkc0ZsaXAoKTsKLSAgICAgICAgICAgIAotICAgICAgICB2b2lkIGZsaXBJ
Zk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24pOwotICAgICAgICB2b2lkIGZsaXBJ
Zk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7
Ci0gICAgICAgICAgICAKKyAgICAgICAgCiAgICAgICAgIHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwog
ICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNPbkJsb2Nrc1RvU3dlZXAoKSBjb25zdCB7IHJl
dHVybiBtX2lzT25CbG9ja3NUb1N3ZWVwOyB9Ci0gICAgICAgIHZvaWQgc2V0SXNPbkJsb2Nrc1Rv
U3dlZXAoYm9vbCB2YWx1ZSkgeyBtX2lzT25CbG9ja3NUb1N3ZWVwID0gdmFsdWU7IH0KKyAgICAg
ICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnJlZUxpc3RlZDsgfQor
ICAgICAgICAKKyAgICAgICAgc2l6ZV90IGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsg
fQorICAgICAgICAKKyAgICAgICAgdm9pZCByZW1vdmVGcm9tQWxsb2NhdG9yKCk7CisgICAgICAg
IAorICAgICAgICB2b2lkIGRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciosIHNpemVf
dCBpbmRleCk7CisgICAgICAgIHZvaWQgZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgICAg
ICAKLSAgICAgICAgQmxvY2tTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0K
LSAgICAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEhhbmRsZShIZWFwJiwgTWFya2Vk
QWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiwg
dm9pZCopOworICAgICAgICBIYW5kbGUoSGVhcCYsIHZvaWQqKTsKICAgICAgICAgICAgIAogICAg
ICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVs
cGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CkBAIC0yMDYsMzUg
KzE5NSw1MCBAQCBwdWJsaWM6CiAgICAgICAgIGVudW0gU2NyaWJibGVNb2RlIHsgRG9udFNjcmli
YmxlLCBTY3JpYmJsZSB9OwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERlc3RydWN0
aW9uTW9kZSwgU2NyaWJibGVNb2RlPgotICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVj
dFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIEZyZWVM
aXN0IHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAg
ICAgICAgICAgICAKKyAgICAgICAgZW51bSBFbXB0eU1vZGUgeyBJc0VtcHR5LCBOb3RFbXB0eSB9
OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUs
IFNjcmliYmxlTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RIYXNOZXds
eUFsbG9jYXRlZChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICAKICAgICAgICAgZW51
bSBOZXdseUFsbG9jYXRlZE1vZGUgeyBIYXNOZXdseUFsbG9jYXRlZCwgRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZCB9OwotICAgICAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUs
IFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVk
TW9kZT4KKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25N
b2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qg
c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAg
ICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1v
ZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICBGcmVlTGlzdCBz
d2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCk7CisgICAgICAgIAorICAgICAgICBlbnVtIEZsaXBN
b2RlIHsgTmVlZHNGbGlwLCBEb2VzTm90TmVlZEZsaXAgfTsKKyAgICAgICAgCisgICAgICAgIHRl
bXBsYXRlPEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9k
ZSwgTmV3bHlBbGxvY2F0ZWRNb2RlLCBGbGlwTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3BlY2lh
bGl6ZWRTd2VlcCgpOwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgICAgIHZvaWQgZm9yRWFjaEZyZWVDZWxsKGNvbnN0IEZyZWVMaXN0JiwgY29uc3Qg
RnVuYyYpOwotICAgICAgICAgICAgCisgICAgICAgIAorICAgICAgICB2b2lkIHNldElzRnJlZUxp
c3RlZCgpOworICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9wcmV2Owog
ICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHQ7CiAgICAgICAgICAgICAKLSAgICAg
ICAgc2l6ZV90IG1fYXRvbXNQZXJDZWxsOwotICAgICAgICBzaXplX3QgbV9lbmRBdG9tOyAvLyBU
aGlzIGlzIGEgZnV6enkgZW5kLiBBbHdheXMgdGVzdCBmb3IgPCBtX2VuZEF0b20uCisgICAgICAg
IHNpemVfdCBtX2F0b21zUGVyQ2VsbCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkgfTsKKyAgICAgICAgc2l6ZV90IG1fZW5kQXRvbSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkgfTsgLy8gVGhpcyBpcyBhIGZ1enp5IGVuZC4gQWx3YXlzIHRlc3QgZm9yIDwg
bV9lbmRBdG9tLgogICAgICAgICAgICAgCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6OkJp
dG1hcDxhdG9tc1BlckJsb2NrPj4gbV9uZXdseUFsbG9jYXRlZDsKICAgICAgICAgICAgIAogICAg
ICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKLSAgICAgICAgQmxvY2tTdGF0
ZSBtX3N0YXRlOwotICAgICAgICBib29sIG1faXNPbkJsb2Nrc1RvU3dlZXAgeyBmYWxzZSB9Owor
ICAgICAgICBib29sIG1faXNGcmVlTGlzdGVkIHsgZmFsc2UgfTsKICAgICAgICAgICAgIAotICAg
ICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAgICAgICBNYXJrZWRBbGxvY2F0
b3IqIG1fYWxsb2NhdG9yIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dl
YWtTZXQ7CiAgICAgICAgICAgICAKLSAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2s7CisgICAg
ICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrIHsgbnVsbHB0ciB9OwogICAgIH07CiAgICAgICAgIAot
ICAgIHN0YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYsIE1hcmtlZEFs
bG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwor
ICAgIHN0YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlDcmVhdGUoSGVhcCYpOwogICAgICAg
ICAKICAgICBIYW5kbGUmIGhhbmRsZSgpOwogICAgICAgICAKQEAgLTI0OCwzNCArMjUyLDM1IEBA
IHB1YmxpYzoKICAgICBzaXplX3QgbWFya0NvdW50KCk7CiAKICAgICBib29sIGlzTWFya2VkKGNv
bnN0IHZvaWQqKTsKKyAgICBib29sIGlzTWFya2VkKEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7
CisgICAgYm9vbCBpc01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCop
OwogICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIAogICAg
IGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKik7CisgICAgYm9v
bCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7
CiAgICAgCi0gICAgYm9vbCBpc01hcmtlZER1cmluZ1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiwg
Y29uc3QgSGVhcENlbGwqKTsKLQogICAgIGJvb2wgaXNBdG9tKGNvbnN0IHZvaWQqKTsKICAgICB2
b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgCisgICAgCiAgICAgc2l6ZV90
IGNlbGxTaXplKCk7CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygp
IGNvbnN0OwotCisgICAgCiAgICAgYm9vbCBoYXNBbnlNYXJrZWQoKSBjb25zdDsKICAgICB2b2lk
IG5vdGVNYXJrZWQoKTsKICAgICAgICAgCiAgICAgV2Vha1NldCYgd2Vha1NldCgpOwotCisgICAg
CiAgICAgYm9vbCBuZWVkc0ZsaXAoSGVhcFZlcnNpb24pOwogICAgIGJvb2wgbmVlZHNGbGlwKCk7
Ci0gICAgICAgIAotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVy
c2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24pOwotICAgIHZvaWQg
ZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgCisgICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lv
bik7CiAgICAgICAgIAogICAgIHZvaWQgYXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAKICAgICBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247
IH0KLSAgICAgICAgCisgICAgCisgICAgaW5saW5lIHZvaWQgcmVzZXRWZXJzaW9uKCk7CisgICAg
CiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBh
dG9tU2l6ZSAtIDE7CiAKQEAgLTI4NCw5ICsyODksOSBAQCBwcml2YXRlOgogICAgIE1hcmtlZEJs
b2NrKFZNJiwgSGFuZGxlJik7CiAgICAgQXRvbSogYXRvbXMoKTsKICAgICAgICAgCi0gICAgdm9p
ZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdygpOwotICAgIHZvaWQgZmxpcElmTmVj
ZXNzYXJ5U2xvdygpOworICAgIHZvaWQgYWJvdXRUb01hcmtTbG93KEhlYXBWZXJzaW9uKTsKICAg
ICB2b2lkIGNsZWFyTWFya3MoKTsKKyAgICB2b2lkIGNsZWFyTWFya3MoSGVhcFZlcnNpb24pOwog
ICAgIHZvaWQgY2xlYXJIYXNBbnlNYXJrZWQoKTsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWRT
bG93KCk7CkBAIC00NjksNDAgKzQ3NCwxMyBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bmVl
ZHNGbGlwKEhlYXBWCiAgICAgcmV0dXJuIGhlYXBWZXJzaW9uICE9IG1fdmVyc2lvbjsKIH0KIAot
aW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFw
VmVyc2lvbikKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFyayhIZWFwVmVyc2lv
biBoZWFwVmVyc2lvbikKIHsKICAgICBpZiAoVU5MSUtFTFkobmVlZHNGbGlwKGhlYXBWZXJzaW9u
KSkpCi0gICAgICAgIGZsaXBJZk5lY2Vzc2FyeVNsb3coKTsKLX0KLQotaW5saW5lIHZvaWQgTWFy
a2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24gaGVhcFZl
cnNpb24pCi17Ci0gICAgaWYgKFVOTElLRUxZKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpKQotICAg
ICAgICBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdygpOworICAgICAgICBhYm91dFRv
TWFya1Nsb3coaGVhcFZlcnNpb24pOwogICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogfQogCi1p
bmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNp
b24gaGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNp
b24pOwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3Nh
cnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQotewotICAgIGJsb2NrKCku
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhoZWFwVmVyc2lvbik7Ci19Ci0KLWlubGluZSB2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBGb3JFZGVuQ29sbGVjdGlvbigpCi17Ci0gICAg
YXNzZXJ0RmxpcHBlZCgpOwotICAgICAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFO
U0lUSU9OKHRoaXMpOwotICAgIAotICAgIEFTU0VSVChtX3N0YXRlICE9IE5ldyAmJiBtX3N0YXRl
ICE9IEZyZWVMaXN0ZWQpOwotICAgIAotICAgIG1fc3RhdGUgPSBNYXJrZWQ7Ci19Ci0KICNpZiBB
U1NFUlRfRElTQUJMRUQKIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjphc3NlcnRGbGlwcGVkKCkK
IHsKQEAgLTUxNCw5ICs0OTIsMTYgQEAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
YXNzZXJ0RgogICAgIGJsb2NrKCkuYXNzZXJ0RmxpcHBlZCgpOwogfQogCi1pbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkKK2lubGluZSBib29sIE1hcmtlZEJs
b2NrOjppc01hcmtlZChIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKIHsK
LSAgICBhc3NlcnRGbGlwcGVkKCk7CisgICAgcmV0dXJuIG5lZWRzRmxpcChoZWFwVmVyc2lvbikg
PyBmYWxzZSA6IG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkpOworfQorCitpbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24s
IGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKICAgICByZXR1cm4g
bV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7CiB9CiAKQEAgLTU1MCw0MyArNTM1LDE0IEBAIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmUKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFs
bG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25z
dCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOwotICAg
IHJldHVybiBtX2Jsb2NrLT5pc01hcmtlZChjZWxsKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBp
c05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKKyAgICByZXR1cm4gbV9ibG9jay0+aXNNYXJrZWQodmVy
c2lvbiwgY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNOZXdseUFsbG9jYXRlZChjZWxs
KSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBj
ZWxsKQogewotICAgIEFTU0VSVChtX2hhbmRsZS5tX3N0YXRlID09IE1hcmtlZCk7Ci0gICAgcmV0
dXJuIGlzTWFya2VkKGNlbGwpIHx8IChtX2hhbmRsZS5tX25ld2x5QWxsb2NhdGVkICYmIG1faGFu
ZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6aXNNYXJrZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24sIGNv
bnN0IEhlYXBDZWxsKiBjZWxsKQotewotICAgIGlmIChuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzTWFya2VkKGNlbGwpOwotfQotCi1p
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENlbGwqIGNl
bGwpCi17Ci0gICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAg
IGNhc2UgQWxsb2NhdGVkOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNhc2UgTWFya2Vk
OgotICAgICAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNlbGwpOwotCi0gICAg
Y2FzZSBOZXc6Ci0gICAgY2FzZSBGcmVlTGlzdGVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlz
TWFya2VkKHZlcnNpb24sIGNlbGwpIHx8IChtX2hhbmRsZS5tX25ld2x5QWxsb2NhdGVkICYmIG1f
aGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQogCiBpbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCkBAIC02MDMsMTMgKzU1OSw2IEBAIGlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBw
KQotewotICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKLX0K
LQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7
CkBAIC02MjIsNjIgKzU3MSw2IEBAIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6
OkhhbmQKICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAg
IGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0
ZXMuY2VsbEtpbmQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRB
dG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVp
bnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7Ci0gICAg
ICAgIGlmICghaXNMaXZlKGNlbGwpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
aWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKLSAgICB9Ci0gICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PgotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoRGVh
ZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsK
LSAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOwotICAgIGZv
ciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVy
Q2VsbCkgewotICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhl
YXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOwotICAgICAgICBpZiAoaXNMaXZlKGNlbGwp
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2lu
ZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6RG9uZTsKLSAgICB9Ci0gICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGlu
dWU7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRzU3dlZXBpbmco
KSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5m
bGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzQWxsb2NhdGVkKCkgY29uc3QKLXsKLSAg
ICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5
KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gQWxsb2NhdGVkOwotfQotCi1pbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxN
YXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVy
biBtX3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNGcmVlTGlzdGVkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpI
YW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0g
RnJlZUxpc3RlZDsKLX0KLQogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omhhc0FueU1hcmtlZCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmlhc2VkTWFya0NvdW50ICE9IG1fbWFya0NvdW50Qmlh
czsKQEAgLTcxMSw3ICs2MDQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6
Ok1hcmtlCiAgICAgdHlwZWRlZiBNYXJrZWRCbG9ja0hhc2ggSGFzaDsKIH07CiAKLXZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6Ok1hcmtlZEJsb2NrOjpCbG9ja1N0YXRl
KTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6Ok1hcmtlZEJsb2Nr
OjpIYW5kbGU6OlN3ZWVwTW9kZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWFya2Vk
QWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lvbiB2
ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKK3sKKyAgICBBU1NFUlQoIWlzRnJlZUxpc3Rl
ZCgpKTsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSkpIHsK
KyAgICAgICAgaWYgKGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgTWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+YmxvY2so
KTsKKyAgICAKKyAgICBpZiAoYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBpZiAoYmxvY2submVlZHNGbGlwKHZlcnNpb24pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQoY2VsbCk7
Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoSGVhcFZl
cnNpb24gdmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKK3sKKyAgICBpZiAoIW1fYmxvY2stPmlzQXRv
bShwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc0xpdmUodmVyc2lvbiwg
c3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPgoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpm
b3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBIZWFwQ2VsbDo6
S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOworICAgIGZvciAoc2l6ZV90IGkgPSBm
aXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgeworICAgICAg
ICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxv
Y2stPmF0b21zKClbaV0pOworICAgICAgICBpZiAoIWlzTGl2ZShjZWxsKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlv
blN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7
CisgICAgfQorICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KK2lubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7Cisg
ICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAgICBmb3Ig
KHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNl
bGwpIHsKKyAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFw
Q2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKKyAgICAgICAgaWYgKGlzTGl2ZShjZWxsKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQp
ID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkRvbmU7CisgICAgfQorICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OworfQorCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6cmVzZXRWZXJzaW9uKCkKK3sKKyAgICBt
X3ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
CShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJJbmNy
ZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdXBl
clNhbXBsZXIuaCIKICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIApAQCAtMTk1LDYgKzE5Niwx
OSBAQCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0p
OworICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogcHJldmlvdXMgPSBudWxscHRyOworICAgIGZv
ckVhY2hTdWJzcGFjZSgKKyAgICAgICAgWyZdIChTdWJzcGFjZSYgc3Vic3BhY2UsIEFsbG9jYXRv
ckF0dHJpYnV0ZXMpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBmb3IgKE1hcmtl
ZEFsbG9jYXRvciogYWxsb2NhdG9yIDogc3Vic3BhY2UuYmFnT2ZBbGxvY2F0b3JzKSB7CisgICAg
ICAgICAgICAgICAgYWxsb2NhdG9yLT5zZXROZXh0QWxsb2NhdG9yKHByZXZpb3VzKTsKKyAgICAg
ICAgICAgICAgICBwcmV2aW91cyA9IGFsbG9jYXRvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAg
ICAgIH0pOworICAgIG1fZmlyc3RBbGxvY2F0b3IgPSBwcmV2aW91czsKKyAgICBtX2FsbG9jYXRv
ckZvckVtcHR5QWxsb2NhdGlvbiA9IHByZXZpb3VzOwogfQogCiBNYXJrZWRTcGFjZTo6fk1hcmtl
ZFNwYWNlKCkKQEAgLTIyMiwxNSArMjM2LDIxIEBAIHZvaWQgTWFya2VkU3BhY2U6Omxhc3RDaGFu
Y2VUb0ZpbmFsaXplKCkKIAogdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlKFN1YnNwYWNlJiBz
dWJzcGFjZSwgc2l6ZV90IGJ5dGVzKQogewotICAgIGlmIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9j
YXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0ZXMpKQotICAgICAgICByZXR1cm4gYWxs
b2NhdG9yLT5hbGxvY2F0ZSgpOworICAgIGlmIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9
IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0ZXMpKSB7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9
IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAgICAgICAgLy9kYXRhTG9nKCJBbGxvY2F0ZWQgIiwg
UmF3UG9pbnRlcihyZXN1bHQpLCAiXG4iKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CiAgICAgcmV0dXJuIGFsbG9jYXRlTGFyZ2Uoc3Vic3BhY2UsIGJ5dGVzKTsKIH0KIAogdm9pZCog
TWFya2VkU3BhY2U6OnRyeUFsbG9jYXRlKFN1YnNwYWNlJiBzdWJzcGFjZSwgc2l6ZV90IGJ5dGVz
KQogewotICAgIGlmIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihz
dWJzcGFjZSwgYnl0ZXMpKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yLT50cnlBbGxvY2F0ZSgp
OworICAgIGlmIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzdWJz
cGFjZSwgYnl0ZXMpKSB7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci0+dHJ5QWxs
b2NhdGUoKTsKKyAgICAgICAgLy9kYXRhTG9nKCJUcnktYWxsb2NhdGVkICIsIFJhd1BvaW50ZXIo
cmVzdWx0KSwgIlxuIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIHJldHVy
biB0cnlBbGxvY2F0ZUxhcmdlKHN1YnNwYWNlLCBieXRlcyk7CiB9CiAKQEAgLTI1OSw5ICsyNzks
MTAgQEAgdm9pZCogTWFya2VkU3BhY2U6OnRyeUFsbG9jYXRlTGFyZ2UoU3Vicwogdm9pZCBNYXJr
ZWRTcGFjZTo6c3dlZXAoKQogewogICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dl
ZXBpbmcoKTsKLSAgICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgIGZvckVhY2hB
bGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0
ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxvY2F0b3Iuc3dlZXAoKTsKKyAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKIH0KIApA
QCAtMjg0LDMzICszMDUsMjMgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXBMYXJnZUFsbG9jYXRp
b25zKAogICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQgPSBtX2xhcmdlQWxsb2Nh
dGlvbnMuc2l6ZSgpOwogfQogCi12b2lkIE1hcmtlZFNwYWNlOjp6b21iaWZ5U3dlZXAoKQotewot
ICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKCJab21iaWZ5aW5nIHN3
ZWVwLi4uIik7Ci0gICAgbV9oZWFwLT5zd2VlcGVyKCktPndpbGxGaW5pc2hTd2VlcGluZygpOwot
ICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykgewotICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkpCi0gICAgICAgICAg
ICAgICAgYmxvY2stPnN3ZWVwKCk7Ci0gICAgICAgIH0pOwotfQotCi12b2lkIE1hcmtlZFNwYWNl
OjpyZXNldEFsbG9jYXRvcnMoKQordm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRp
b24oKQogewogICAgIGZvckVhY2hBbGxvY2F0b3IoCiAgICAgICAgIFsmXSAoTWFya2VkQWxsb2Nh
dG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBhbGxvY2F0
b3IucmVzZXQoKTsKKyAgICAgICAgICAgIGFsbG9jYXRvci5wcmVwYXJlRm9yQWxsb2NhdGlvbigp
OwogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAg
IH0pOwogCi0gICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5jbGVhcigpOwogICAgIG1fYWN0aXZl
V2Vha1NldHMudGFrZUZyb20obV9uZXdBY3RpdmVXZWFrU2V0cyk7CisgICAgCiAgICAgaWYgKG1f
aGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKQogICAgICAgICBt
X2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0Rm9yU3dlZXAgPSBtX2xhcmdlQWxsb2NhdGlv
bnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVy
c2VyeU9mZnNldEZvclN3ZWVwID0gMDsKICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zm
c2V0ID0gbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsKKyAgICAKKyAgICBtX2FsbG9jYXRvckZv
ckVtcHR5QWxsb2NhdGlvbiA9IG1fZmlyc3RBbGxvY2F0b3I7CiB9CiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OnZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCkBAIC00
MTAsMTEgKzQyMSwxMSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpmcmVlT3JTaHJpbmtCbG9jayhNYXJr
CiAKIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiB7Ci0gICAgZm9yRWFjaEJsb2NrKAotICAg
ICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAgICAgICAgICBmcmVl
T3JTaHJpbmtCbG9jayhibG9jayk7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZd
IChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAg
ICAgICAgIGFsbG9jYXRvci5zaHJpbmsoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKLSAgICAvLyBGb3IgTGFyZ2VBbGxvY2F0aW9u
cywgd2UgZG8gdGhlIG1vcmFsIGVxdWl2YWxlbnQgaW4gc3dlZXBMYXJnZUFsbG9jYXRpb25zKCku
CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQpAQCAtNDI5LDU3
ICs0NDAsNjEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rp
b247IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fbGFyZ2VB
bGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaykgewotICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRl
ZCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlv
biA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKLSAgICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT5pc05l
d2x5QWxsb2NhdGVkKCkpOwotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKLX0KLQotI2lmbmRl
ZiBOREVCVUcgCi1zdHJ1Y3QgVmVyaWZ5TWFya2VkIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9y
IHsgCi0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25z
dAotICAgIHsKLSAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgc3dpdGNoIChibG9jay0+bV9zdGF0ZSkgewotICAgICAgICBjYXNlIE1h
cmtlZEJsb2NrOjpNYXJrZWQ6Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Cisg
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAg
ICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgeworICAgICAgICAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYmxvY2ssICFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFs
bG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCisgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwogICAgIH0KLX07
IAotI2VuZGlmIAorfQogCi12b2lkIE1hcmtlZFNwYWNlOjpmbGlwKCkKK3ZvaWQgTWFya2VkU3Bh
Y2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVz
cygpID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9ibG9j
a3NXaXRoTmV3T2JqZWN0c1tpXS0+ZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24gPSBtX3ZlcnNpb24gKyAxOwotICAg
ICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24gPT0gaW5pdGlhbFZlcnNpb24pKSB7Ci0gICAg
ICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkg
ZmxpcHBpbmcgYWxsIGJsb2Nrcy4gVGhpcyBoYXBwZW5zCi0gICAgICAgICAgICAvLyBzdXBlciBy
YXJlbHksIHByb2JhYmx5IG5ldmVyIGZvciBtb3N0IHVzZXJzLgorICAgIGlmIChtX2hlYXAtPm9w
ZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBmb3JFYWNo
QWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikg
LT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3IuYmVnaW5NYXJr
aW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9u
U3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIG1fdmVyc2lvbiA9
IG5leHRWZXJzaW9uKG1fdmVyc2lvbik7CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFko
bV92ZXJzaW9uID09IGluaXRpYWxWZXJzaW9uKSkgeworICAgICAgICAgICAgLy8gT2ggbm8hIFZl
cnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5IHNldHRpbmcgYWxsIGJsb2NrIHZl
cnNpb25zIHRvIG51bGwuCiAgICAgICAgICAgICBmb3JFYWNoQmxvY2soCiAgICAgICAgICAgICAg
ICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlLT5mbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxl
LT5ibG9jaygpLnJlc2V0VmVyc2lvbigpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9
Ci0gICAgICAgIG1fdmVyc2lvbiA9IG5leHRWZXJzaW9uOyAvLyBIZW5jZWZvcnRoLCBmbGlwSWZO
ZWNlc3NhcnkoKSB3aWxsIHRyaWdnZXIgb24gYWxsIGJsb2Nrcy4KKyAgICAgICAgCiAgICAgICAg
IGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQog
ICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAgIH0KIAotI2lmbmRlZiBOREVCVUcK
LSAgICBWZXJpZnlNYXJrZWQgdmVyaWZ5RnVuY3RvcjsKLSAgICBmb3JFYWNoQmxvY2sodmVyaWZ5
RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBm
b3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxp
c3RlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICBtX2lzTWFya2luZyA9
IHRydWU7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmVuZE1hcmtpbmcoKQoreworICAgIGZvckVh
Y2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+
IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxvY2F0b3IuZW5kTWFya2luZygpOwor
ICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0p
OworICAgIAorICAgIG1faXNNYXJraW5nID0gZmFsc2U7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6
OndpbGxTdGFydEl0ZXJhdGluZygpCkBAIC01NDAsMTkgKzU1NSw2NiBAQCB2b2lkIE1hcmtlZFNw
YWNlOjphZGRBY3RpdmVXZWFrU2V0KFdlYWtTCiAKIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFkZEJs
b2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogeworICAgIC8vIFdBUk5JTkc6IFRoaXMg
ZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBibG9jayBpcyBmdWxseSBpbml0aWFsaXplZC4gVGhl
IGJsb2NrIHdpbGwgbm90IGtub3cKKyAgICAvLyBpdHMgY2VsbFNpemUoKSBvciBhdHRyaWJ1dGVz
KCkuIFRoZSBsYXR0ZXIgaW1wbGllcyB0aGF0IHlvdSBjYW4ndCBhc2sgdGhpbmdzIGxpa2UKKyAg
ICAvLyBuZWVkc0Rlc3RydWN0aW9uKCkuCiAgICAgbV9jYXBhY2l0eSArPSBNYXJrZWRCbG9jazo6
YmxvY2tTaXplOwogICAgIG1fYmxvY2tzLmFkZCgmYmxvY2stPmJsb2NrKCkpOwogfQogCiB2b2lk
IE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2spCiB7Ci0gICAgYmxvY2stPmFzc2VydEZsaXBwZWQoKTsKLSAgICBtX2Jsb2Nrc1dpdGhOZXdP
YmplY3RzLmFwcGVuZChibG9jayk7Ci0gICAgCiAgICAgaWYgKGJsb2NrLT53ZWFrU2V0KCkuaXNP
bkxpc3QoKSkgewogICAgICAgICBibG9jay0+d2Vha1NldCgpLnJlbW92ZSgpOwogICAgICAgICBt
X25ld0FjdGl2ZVdlYWtTZXRzLmFwcGVuZCgmYmxvY2stPndlYWtTZXQoKSk7CiAgICAgfQogfQog
CitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFs
KCkKK3sKKyAgICBmb3IgKDsgbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IG1fYWxsb2Nh
dG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPm5l
eHRBbGxvY2F0b3IoKSkgeworICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sg
PSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkp
CisgICAgICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwor
fQorCit2b2lkIE1hcmtlZFNwYWNlOjpzbmFwc2hvdFVuc3dlcHQoKQoreworICAgIGlmIChtX2hl
YXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgeworICAgICAgICBm
b3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9j
YXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25h
cHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0gZWxzZSB7
CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9j
YXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFs
bG9jYXRvci5zbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbigpOworICAgICAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgfSk7Cisg
ICAgfQorfQorCit2b2lkIE1hcmtlZFNwYWNlOjphc3NlcnROb1Vuc3dlcHQoKQoreworICAgIGlm
IChBU1NFUlRfRElTQUJMRUQpCisgICAgICAgIHJldHVybjsKKyAgICBmb3JFYWNoQWxsb2NhdG9y
KAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25T
dGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLmFzc2VydE5vVW5zd2VwdCgpOworICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworfQor
Cit2b2lkIE1hcmtlZFNwYWNlOjpkdW1wQml0cyhQcmludFN0cmVhbSYgb3V0KQoreworICAgIGZv
ckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3Ip
IC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBvdXQucHJpbnQoIkJpdHMgZm9yICIs
IGFsbG9jYXRvciwgIjpcbiIpOworICAgICAgICAgICAgYWxsb2NhdG9yLmR1bXBCaXRzKG91dCk7
CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAg
fSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSwxNiBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG51bVNpemVDbGFzc2VzID0gbGFy
Z2VDdXRvZmYgLyBzaXplU3RlcDsKICAgICAKLSAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24g
aW5pdGlhbFZlcnNpb24gPSA0MjsgIC8vIFRoaXMgY2FuIGJlIGFueSB2YWx1ZSwgaW5jbHVkaW5n
IHJhbmRvbSBnYXJiYWdlLCBzbyBsb25nIGFzIGl0J3MgY29uc2lzdGVudCBmb3IgdGhlIGxpZmV0
aW1lIG9mIHRoZSBwcm9jZXNzLgorICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBudWxsVmVy
c2lvbiA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9mIGZyZXNobHkgYWxsb2NhdGVkIGJsb2Nrcy4KKyAg
ICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAxOyAvLyBUaGUgdmVy
c2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4KKyAgICAKKyAgICBIZWFwVmVyc2lv
biBuZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQorICAgIHsKKyAgICAgICAgdmVyc2lv
bisrOworICAgICAgICBpZiAodmVyc2lvbiA9PSBudWxsVmVyc2lvbikKKyAgICAgICAgICAgIHZl
cnNpb24rKzsKKyAgICAgICAgcmV0dXJuIHZlcnNpb247CisgICAgfQogICAgIAogICAgIHN0YXRp
YyBzaXplX3Qgc2l6ZUNsYXNzVG9JbmRleChzaXplX3Qgc2l6ZSkKICAgICB7CkBAIC0xMTQsNyAr
MTIzLDcgQEAgcHVibGljOgogICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRob3V0
RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbm9ybWFsU3BhY2U7IH0KICAgICBTdWJzcGFjZSYgc3Vi
c3BhY2VGb3JBdXhpbGlhcnlEYXRhKCkgeyByZXR1cm4gbV9hdXhpbGlhcnlTcGFjZTsgfQogICAg
IAotICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CisgICAgdm9pZCBwcmVwYXJlRm9yQWxsb2Nh
dGlvbigpOwogCiAgICAgdm9pZCB2aXNpdFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYpOwogICAg
IHZvaWQgcmVhcFdlYWtTZXRzKCk7CkBAIC0xNDQsMTEgKzE1MywxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIHZvaWQg
ZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKIAotICAgIHZvaWQgZmxp
cCgpOworICAgIHZvaWQgYmVnaW5NYXJraW5nKCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7Cisg
ICAgdm9pZCBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQo
KTsKICAgICB2b2lkIHN3ZWVwKCk7CiAgICAgdm9pZCBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKTsK
LSAgICB2b2lkIHpvbWJpZnlTd2VlcCgpOworICAgIHZvaWQgYXNzZXJ0Tm9VbnN3ZXB0KCk7CiAg
ICAgc2l6ZV90IG9iamVjdENvdW50KCk7CiAgICAgc2l6ZV90IHNpemUoKTsKICAgICBzaXplX3Qg
Y2FwYWNpdHkoKTsKQEAgLTE1Nyw4ICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgSGVhcFZl
cnNpb24gdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogCi0gICAgY29uc3Qg
VmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tzV2l0aE5ld09iamVjdHMoKSBjb25z
dCB7IHJldHVybiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOyB9Ci0gICAgCiAgICAgY29uc3QgVmVj
dG9yPExhcmdlQWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9sYXJnZUFsbG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc051cnNl
cnlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0
OyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rp
b247IH0KQEAgLTE2OSwxMyArMTc4LDE2IEBAIHB1YmxpYzoKICAgICBMYXJnZUFsbG9jYXRpb24q
KiBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBt
X2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZDsgfQogICAgIHVuc2lnbmVkIGxh
cmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUoKSBjb25zdCB7IHJldHVybiBtX2xh
cmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemU7IH0KICAgICAKKyAgICBNYXJrZWRB
bGxvY2F0b3IqIGZpcnN0QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdEFsbG9jYXRv
cjsgfQorICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb247IH0KKyAgICAKKyAg
ICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9ja1RvU3RlYWwoKTsKKyAgICAKICAg
ICAvLyBXaGVuIHRoaXMgaXMgdHJ1ZSBpdCBtZWFucyB0aGF0IHdlIGhhdmUgZmxpcHBlZCBidXQg
dGhlIG1hcmsgYml0cyBoYXZlbid0IGNvbnZlcmdlZCB5ZXQuCiAgICAgYm9vbCBpc01hcmtpbmco
KSBjb25zdCB7IHJldHVybiBtX2lzTWFya2luZzsgfQogICAgIAotICAgIC8vIEZJWE1FOiBBZnRl
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxLCBNYXJrZWRT
cGFjZSB3aWxsIGNvbnRyb2wgdGhpcwotICAgIC8vIGZsYWcgZGlyZWN0bHkuCi0gICAgdm9pZCBz
ZXRJc01hcmtpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzTWFya2luZyA9IHZhbHVlOyB9Ci0KKyAgICB2
b2lkIGR1bXBCaXRzKFByaW50U3RyZWFtJiA9IFdURjo6ZGF0YUZpbGUoKSk7CisgICAgCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKQEAgLTE5MCw4ICsyMDIsOCBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQg
aW5pdGlhbGl6ZVN1YnNwYWNlKFN1YnNwYWNlJik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYpOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaFN1YnNwYWNlKGNvbnN0IEZ1bmN0b3Im
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBmb3JFYWNoQWxs
b2NhdG9yKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYpOwogICAgIAogICAgIHZv
aWQgYWRkQWN0aXZlV2Vha1NldChXZWFrU2V0Kik7CiAKQEAgLTIwNSw3ICsyMTcsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9pc0l0ZXJhdGluZzsKICAgICBib29sIG1faXNNYXJraW5nIHsgZmFs
c2UgfTsKICAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsKLSAgICBWZWN0b3I8TWFya2VkQmxv
Y2s6OkhhbmRsZSo+IG1fYmxvY2tzV2l0aE5ld09iamVjdHM7CiAgICAgVmVjdG9yPExhcmdlQWxs
b2NhdGlvbio+IG1fbGFyZ2VBbGxvY2F0aW9uczsKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2Nh
dGlvbnNOdXJzZXJ5T2Zmc2V0IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9u
c09mZnNldEZvclRoaXNDb2xsZWN0aW9uIHsgMCB9OwpAQCAtMjE1LDQwICsyMjYsMTEgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNp
emUgeyAwIH07CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPFdlYWtTZXQ+PiBtX2FjdGl2ZVdlYWtTZXRzOwogICAgIFNlbnRpbmVsTGlua2VkTGlz
dDxXZWFrU2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9uZXdBY3RpdmVXZWFr
U2V0czsKKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fZmlyc3RBbGxvY2F0b3IgeyBudWxs
cHRyIH07CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlv
biB7IG51bGxwdHIgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2
b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAg
QmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAgICBmb3IgKEJsb2Nr
SXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoTGl2ZUNlbGwoZnVuY3RvcikgPT0g
SXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBm
b3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewot
ICAgICAgICBpZiAoYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKLSAgICAgICAgICAgIGlmIChmdW5j
dG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5k
KSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9p
ZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwotICAgIEJs
b2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7Ci0gICAgZm9yIChCbG9ja0l0
ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaERlYWRDZWxsKGZ1bmN0b3IpID09IEl0
ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9y
IChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKLSAg
ICAgICAgaWYgKCFhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewotICAgICAgICAgICAgaWYgKGZ1bmN0
b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQp
ID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KIGlubGluZSBNYXJrZWRBbGxvY2F0b3IqIE1hcmtlZFNwYWNlOjph
bGxvY2F0b3JGb3IoU3Vic3BhY2UmIHNwYWNlLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQVNTRVJU
KGJ5dGVzKTsKQEAgLTMwNCwxNSArMjg2LDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PiBpbmxpbmUgdm9pZCAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBNYXJrZWRT
cGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGZv
ckVhY2hTdWJzcGFjZSgKLSAgICAgICAgWyZdIChTdWJzcGFjZSYgc3Vic3BhY2UsIEFsbG9jYXRv
ckF0dHJpYnV0ZXMpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBmb3IgKE1hcmtl
ZEFsbG9jYXRvciogYWxsb2NhdG9yIDogc3Vic3BhY2UuYmFnT2ZBbGxvY2F0b3JzKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGZ1bmN0b3IoKmFsbG9jYXRvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpE
b25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9u
U3RhdHVzOjpDb250aW51ZTsKLSAgICAgICAgfSk7CisgICAgZm9yIChNYXJrZWRBbGxvY2F0b3Iq
IGFsbG9jYXRvciA9IG1fZmlyc3RBbGxvY2F0b3I7IGFsbG9jYXRvcjsgYWxsb2NhdG9yID0gYWxs
b2NhdG9yLT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAgaWYgKGZ1bmN0b3IoKmFsbG9jYXRv
cikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMu
aCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZl
Q2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAg
IEFTU0VSVChpc0l0ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tz
LnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgp
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgp
LmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0
aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7CisgICAgICAgIGlmIChhbGxvY2F0aW9uLT5pc0xp
dmUoKSkgeworICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxv
Y2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENl
bGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBB
U1NFUlQoaXNJdGVyYXRpbmcoKSk7CisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5z
ZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5m
b3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlv
biA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgeworICAgICAgICBpZiAoIWFsbG9jYXRpb24tPmlzTGl2
ZSgpKSB7CisgICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9j
YXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRv
ci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Ns
b3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSw4IEBAIHZvaWQgU2xv
dFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWEKICAgICB2YWxpZGF0ZShjZWxsKTsKICNl
bmRpZgogICAgIAorICAgIC8vZGF0YUxvZygiICAgIE1hcmtpbmcgIiwgUmF3UG9pbnRlcihjZWxs
KSwgIlxuIik7CisgICAgCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAg
ICAgIHNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKGNlbGwtPmxhcmdlQWxsb2NhdGlvbigp
LCBjZWxsKTsKICAgICBlbHNlCkBAIC0xOTgsNyArMjAwLDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6
c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogdGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyVHlwZT4K
IEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYXJr
U3RhY2soQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBKU0NlbGwqIGNlbGwpCiB7Ci0gICAgY29u
dGFpbmVyLmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcobV92ZXJzaW9uKTsKKyAgICBjb250
YWluZXIuYWJvdXRUb01hcmsobV92ZXJzaW9uKTsKICAgICAKICAgICBpZiAoY29udGFpbmVyLnRl
c3RBbmRTZXRNYXJrZWQoY2VsbCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0NiwxMCArMjQ4LDgg
QEAgdm9pZCBTbG90VmlzaXRvcjo6bWFya0F1eGlsaWFyeShjb25zdCB2bwogICAgIAogICAgIEFT
U0VSVChjZWxsLT5oZWFwKCkgPT0gaGVhcCgpKTsKICAgICAKLSAgICBpZiAoSGVhcDo6dGVzdEFu
ZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKEhl
YXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwpKTsKKyAgICBpZiAoSGVhcDo6dGVzdEFuZFNl
dE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIAog
ICAgIG5vdGVMaXZlQXV4aWxpYXJ5Q2VsbChjZWxsKTsKIH0KQEAgLTI5NCw2ICsyOTQsOCBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OnZpc2l0Q2hpCiB7CiAgICAgQVNTRVJUKEhl
YXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwpKTsKICAgICAKKyAgICAvL2RhdGFMb2coIlZp
c2l0aW5nICIsIFJhd1BvaW50ZXIoY2VsbCksICJcbiIpOworCiAgICAgU2V0Q3VycmVudENlbGxT
Y29wZSBjdXJyZW50Q2VsbFNjb3BlKCp0aGlzLCBjZWxsKTsKICAgICAKICAgICBtX2N1cnJlbnRP
YmplY3RDZWxsU3RhdGVCZWZvcmVWaXNpdGluZyA9IGNlbGwtPmNlbGxTdGF0ZSgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpbmNsdWRlICJKU0V4cG9ydE1hY3Jvcy5oIgogI2lu
Y2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC01MSwzMyArNTMsMzMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOwor
ICAgIGlubGluZSBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9
IDApOwogCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNoVGFibGVEZWxl
dGVkVmFsdWUgfTsKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7Ci0g
ICAgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOworICAgIGlubGluZSBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CisgICAgaW5saW5lIFdlYWsoSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVGFnKTsKIAotICAgIFdlYWsoV2VhayYmKTsKKyAgICBpbmxpbmUgV2VhayhXZWFr
JiYpOwogCiAgICAgfldlYWsoKQogICAgIHsKICAgICAgICAgY2xlYXIoKTsKICAgICB9CiAKLSAg
ICB2b2lkIHN3YXAoV2VhayYpOworICAgIGlubGluZSB2b2lkIHN3YXAoV2VhayYpOwogCi0gICAg
V2VhayYgb3BlcmF0b3I9KFdlYWsmJik7CisgICAgaW5saW5lIFdlYWsmIG9wZXJhdG9yPShXZWFr
JiYpOwogCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLSAgICBUKiBvcGVyYXRvci0+KCkg
Y29uc3Q7Ci0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgVCogZ2V0KCkgY29uc3Q7Cisg
ICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7CisgICAgaW5saW5lIFQqIG9wZXJhdG9y
LT4oKSBjb25zdDsKKyAgICBpbmxpbmUgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgaW5saW5l
IFQqIGdldCgpIGNvbnN0OwogCi0gICAgYm9vbCB3YXMoVCopIGNvbnN0OworICAgIGlubGluZSBi
b29sIHdhcyhUKikgY29uc3Q7CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7
CisgICAgaW5saW5lIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKIAotICAgIFdlYWtJ
bXBsKiBsZWFrSW1wbCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBpbmxpbmUgV2Vha0ltcGwq
IGxlYWtJbXBsKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZvaWQgY2xlYXIoKQogICAgIHsK
ICAgICAgICAgaWYgKCFtX2ltcGwpCkBAIC04NiwxMSArODgsMzAgQEAgcHVibGljOgogICAgIH0K
ICAgICAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFdlYWtJbXBsKiBoYXNoVGFibGVEZWxldGVkVmFs
dWUoKTsKKyAgICBzdGF0aWMgaW5saW5lIFdlYWtJbXBsKiBoYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsKIAogICAgIFdlYWtJbXBsKiBtX2ltcGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAor
bmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFp
dHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsKKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNz
SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IHsKKyAgICB0eXBlZGVmIEpTQzo6V2VhazxUPiBTdG9y
YWdlVHlwZTsKKworICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7Cisg
ICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9
CisKKyAgICB0eXBlZGVmIFQqIFBlZWtUeXBlOworICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNv
bnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KKyAgICBzdGF0
aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5cGUoKTsgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBXZWFrX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2Vha0Jsb2NrOjpzcGVjaWFsaXplZFZpc2l0KENvbnRh
aW4KICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGNvbnN0IEpTVmFsdWUmIGpzVmFs
dWUgPSB3ZWFrSW1wbC0+anNWYWx1ZSgpOwotICAgICAgICBpZiAoY29udGFpbmVyLmlzTWFya2Vk
RHVyaW5nV2Vha1Zpc2l0aW5nKHZlcnNpb24sIGpzVmFsdWUuYXNDZWxsKCkpKQorICAgICAgICBp
ZiAoY29udGFpbmVyLmlzTWFya2VkQ29uY3VycmVudGx5KHZlcnNpb24sIGpzVmFsdWUuYXNDZWxs
KCkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICBpZiAoIXdlYWtI
YW5kbGVPd25lci0+aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+Ojp3
cmFwU2xvdCgmY29uc3RfY2FzdDxKU1ZhbHVlJj4oanNWYWx1ZSkpLCB3ZWFrSW1wbC0+Y29udGV4
dCgpLCB2aXNpdG9yKSkKQEAgLTE0NywxNyArMTQ3LDE0IEBAIHZvaWQgV2Vha0Jsb2NrOjpyZWFw
KCkKICAgICAvLyBJZiB0aGlzIFdlYWtCbG9jayBkb2Vzbid0IGJlbG9uZyB0byBhIENlbGxDb250
YWluZXIsIHdlIHdvbid0IGV2ZW4gYmUgaGVyZS4KICAgICBBU1NFUlQobV9jb250YWluZXIpOwog
ICAgIAotICAgIG1fY29udGFpbmVyLmZsaXBJZk5lY2Vzc2FyeSgpOwotCi0gICAgLy8gV2Ugb25s
eSByZWFwIGFmdGVyIG1hcmtpbmcuCi0gICAgQVNTRVJUKG1fY29udGFpbmVyLmlzTWFya2VkKCkp
OworICAgIEhlYXBWZXJzaW9uIHZlcnNpb24gPSBtX2NvbnRhaW5lci5oZWFwKCktPm9iamVjdFNw
YWNlKCkudmVyc2lvbigpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWFrSW1wbENv
dW50KCk7ICsraSkgewogICAgICAgICBXZWFrSW1wbCogd2Vha0ltcGwgPSAmd2Vha0ltcGxzKClb
aV07CiAgICAgICAgIGlmICh3ZWFrSW1wbC0+c3RhdGUoKSA+IFdlYWtJbXBsOjpEZWFkKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKG1fY29udGFpbmVyLmlzTWFya2VkKHdl
YWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpKSB7CisgICAgICAgIGlmIChtX2NvbnRhaW5lci5p
c01hcmtlZCh2ZXJzaW9uLCB3ZWFrSW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKSkgewogICAgICAg
ICAgICAgQVNTRVJUKHdlYWtJbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dlYWtJbmxpbmVzLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMywgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJXZWFr
U2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE0OSwyMyArMTQ4LDQgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBW
ZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsKLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNp
bXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IHsKLSAgICB0eXBlZGVmIEpTQzo6V2Vh
azxUPiBTdG9yYWdlVHlwZTsKLQotICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1
ZVR5cGU7Ci0gICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0KLSAgICB0eXBlZGVmIFQqIFBlZWtUeXBlOwotICAgIHN0YXRpYyBQZWVrVHlw
ZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0K
LSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5
cGUoKTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KICNlbmRpZiAvLyBXZWFrSW5saW5l
c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJldmlzaW9uIDIw
NjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgotI2luY2x1ZGUg
IldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDIw
NjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSAiTWFwQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJNYXBJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1h
cFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUg
Ik1hdGhPYmplY3QuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKICNpbmNsdWRlICJNb2R1bGVM
b2FkZXJQcm90b3R5cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2lu
Y2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCisjaW5jbHVkZSAiUHJvdG90eXBlTWFw
SW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVqZWN0Lmgi
CiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIlByb3RvdHlwZU1hcElubGluZXMuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlz
aW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4Nyw3IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0
aW9uU3RyaW5nOwogICAgIHYodW5zaWduZWQsIGxhcmdlQWxsb2NhdGlvbkN1dG9mZiwgMTAwMDAw
LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGR1bXBTaXplQ2xhc3NlcywgZmFsc2Us
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlQnVtcEFsbG9jYXRvciwgdHJ1ZSwg
Tm9ybWFsLCBudWxscHRyKSBcCisgICAgdihib29sLCBzdGVhbEVtcHR5QmxvY2tzRnJvbU90aGVy
QWxsb2NhdG9ycywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCBlYWdlcmx5
VXBkYXRlVG9wQ2FsbEZyYW1lLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAg
IHYoYm9vbCwgdXNlT1NSRW50cnlUb0RGRywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCkBAIC0z
MDIsNyArMzAzLDYgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1
bnNpZ25lZCwgbnVtYmVyT2ZHQ01hcmtlcnMsIGNvbXB1dGVOdW1iZXJPZkdDTWFya2Vycyg3KSwg
Tm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwgb3BhcXVlUm9vdE1lcmdlVGhyZXNo
b2xkLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGRvdWJsZSwgbWluSGVhcFV0aWxp
emF0aW9uLCAwLjgsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYoZG91YmxlLCBtaW5Db3BpZWRC
bG9ja1V0aWxpemF0aW9uLCAwLjksIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoZG91YmxlLCBt
aW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uLCAwLjksIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
dW5zaWduZWQsIHNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcywgMCwgTm9ybWFsLCAiZm9yY2UgYSBH
QyBvbiBldmVyeSBOdGggc2xvdyBwYXRoIGFsbG9jLCB3aGVyZSBOIGlzIHNwZWNpZmllZCBieSB0
aGlzIG9wdGlvbiIpIFwKICAgICB2KGJvb2wsIGRlZmVyR0NTaG91bGRDb2xsZWN0V2l0aFByb2Jh
YmlsaXR5LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2UgcGVyZm9ybSBhIGNvbGxlY3Rpb24g
YmFzZWQgb24gZmxpcHBpbmcgYSBjb2luIGFjY29yZGluZyB0aGUgcHJvYmFiaWxpdHkgaW4gdGhl
ICdkZWZlckdDUHJvYmFiaWxpdHknIG9wdGlvbiB3aGVuIERlZmVyR0MgaXMgZGVzdHJ1Y3RlZC4i
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1h
cC5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3RvdHlwZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJQcm90b3R5cGVNYXBJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90
b3R5cGVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90b3R5cGVNYXAuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvdG90eXBlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAK
ICNpZm5kZWYgUHJvdG90eXBlTWFwX2gKICNkZWZpbmUgUHJvdG90eXBlTWFwX2gKIAorI2luY2x1
ZGUgIkluZGV4aW5nVHlwZS5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJX
ZWFrR0NNYXAuaCIKICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtNDgsNyArNTAsNyBA
QCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBlbXB0eVN0cnVjdHVy
ZUZvclByb3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKEpTT2JqZWN0KiwgU3RydWN0dXJlKik7CiAg
ICAgdm9pZCBjbGVhckVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0Kiwg
dW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRk
UHJvdG90eXBlKEpTT2JqZWN0Kik7Ci0gICAgVHJpU3RhdGUgaXNQcm90b3R5cGUoSlNPYmplY3Qq
KSBjb25zdDsgLy8gUmV0dXJucyBhIGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZS4KKyAgICBpbmxpbmUg
VHJpU3RhdGUgaXNQcm90b3R5cGUoSlNPYmplY3QqKSBjb25zdDsgLy8gUmV0dXJucyBhIGNvbnNl
cnZhdGl2ZSBlc3RpbWF0ZS4KIAogcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUVtcHR5
U3RydWN0dXJlKEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xh
c3NJbmZvKiwgSW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CkBAIC01OCwx
OCArNjAsNiBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZU1hcCBtX3N0cnVjdHVyZXM7CiB9Owog
Ci1pbmxpbmUgVHJpU3RhdGUgUHJvdG90eXBlTWFwOjppc1Byb3RvdHlwZShKU09iamVjdCogb2Jq
ZWN0KSBjb25zdAotewotICAgIGlmICghbV9wcm90b3R5cGVzLmNvbnRhaW5zKG9iamVjdCkpCi0g
ICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOwotCi0gICAgLy8gV2Uga25vdyB0aGF0ICdvYmpl
Y3QnIHdhcyB1c2VkIGFzIGEgcHJvdG90eXBlIGF0IG9uZSB0aW1lLCBzbyBiZQotICAgIC8vIGNv
bnNlcnZhdGl2ZSBhbmQgc2F5IHRoYXQgaXQgbWlnaHQgc3RpbGwgYmUgc28uIChJdCB3b3VsZCBi
ZSBleHBlbnNpdmUKLSAgICAvLyB0byBmaW5kIG91dCBmb3Igc3VyZSwgYW5kIHdlIGRvbid0IGtu
b3cgb2YgYW55IGNhc2VzIHdoZXJlIGJlaW5nIHByZWNpc2UKLSAgICAvLyB3b3VsZCBpbXByb3Zl
IHBlcmZvcm1hbmNlLikKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBQcm90b3R5cGVNYXBfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcElubGluZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXBJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBy
b3RvdHlwZU1hcC5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2lubGluZSBUcmlTdGF0ZSBQcm90b3R5cGVNYXA6OmlzUHJvdG90eXBlKEpTT2Jq
ZWN0KiBvYmplY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Byb3RvdHlwZXMuY29udGFpbnMob2Jq
ZWN0KSkKKyAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisKKyAgICAvLyBXZSBrbm93IHRo
YXQgJ29iamVjdCcgd2FzIHVzZWQgYXMgYSBwcm90b3R5cGUgYXQgb25lIHRpbWUsIHNvIGJlCisg
ICAgLy8gY29uc2VydmF0aXZlIGFuZCBzYXkgdGhhdCBpdCBtaWdodCBzdGlsbCBiZSBzby4gKEl0
IHdvdWxkIGJlIGV4cGVuc2l2ZQorICAgIC8vIHRvIGZpbmQgb3V0IGZvciBzdXJlLCBhbmQgd2Ug
ZG9uJ3Qga25vdyBvZiBhbnkgY2FzZXMgd2hlcmUgYmVpbmcgcHJlY2lzZQorICAgIC8vIHdvdWxk
IGltcHJvdmUgcGVyZm9ybWFuY2UuKQorICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDYWNoZS5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiUmVnRXhwS2V5LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAi
V2Vhay5oIgotI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgogI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQuaCIKKyNpbmNs
dWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5o
IgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVz
LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkocmV2
aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWFr
R0NNYXBfaAogCiAjaW5jbHVkZSAiV2Vhay5oIgotI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04MSwxOSArODAs
OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpdGVyYXRv
ciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkKLSAgICB7Ci0gICAgICAgIGl0ZXJhdG9yIGl0ID0g
bV9tYXAuZmluZChrZXkpOwotICAgICAgICBpdGVyYXRvciBlbmQgPSBtX21hcC5lbmQoKTsKLSAg
ICAgICAgaWYgKGl0ICE9IGVuZCAmJiAhaXQtPnZhbHVlKSAvLyBGb3VuZCBhIHpvbWJpZSB2YWx1
ZS4KLSAgICAgICAgICAgIHJldHVybiBlbmQ7Ci0gICAgICAgIHJldHVybiBpdDsKLSAgICB9Cisg
ICAgaW5saW5lIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KTsKIAotICAgIGNvbnN0
X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8V2Vha0dDTWFwKj4odGhpcyktPmZpbmQoa2V5KTsKLSAgICB9Cisg
ICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdDsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBmb3JFYWNoKEZ1bmN0
b3IgZnVuY3RvcikKQEAgLTEwNCwxMiArOTMsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9tYXAuZW5kKCk7Ci0gICAgfQorICAgIGlubGlu
ZSBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3Q7CiAKLSAgICB2b2lkIHBy
dW5lU3RhbGVFbnRyaWVzKCk7CisgICAgaW5saW5lIHZvaWQgcHJ1bmVTdGFsZUVudHJpZXMoKTsK
IAogcHJpdmF0ZToKICAgICBIYXNoTWFwVHlwZSBtX21hcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXBJbmxpbmVzLmgJKHJldmlzaW9uIDIwNjAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgog
I2luY2x1ZGUgIldlYWtHQ01hcC5oIgorI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC00Nyw2ICs0OCwyOCBAQCBpbmxpbmUgV2Vha0dDTWFwPEtleUFyZywg
VmFsdWVBcmcsIEhhc2hBCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUg
VmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KK2lubGlu
ZSB0eXBlbmFtZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRz
QXJnPjo6aXRlcmF0b3IgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRy
YWl0c0FyZz46OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQoreworICAgIGl0ZXJhdG9yIGl0ID0g
bV9tYXAuZmluZChrZXkpOworICAgIGl0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOworICAgIGlm
IChpdCAhPSBlbmQgJiYgIWl0LT52YWx1ZSkgLy8gRm91bmQgYSB6b21iaWUgdmFsdWUuCisgICAg
ICAgIHJldHVybiBlbmQ7CisgICAgcmV0dXJuIGl0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmc+CitpbmxpbmUgdHlwZW5hbWUgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhh
c2hBcmcsIEtleVRyYWl0c0FyZz46OmNvbnN0X2l0ZXJhdG9yIFdlYWtHQ01hcDxLZXlBcmcsIFZh
bHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxXZWFrR0NNYXAqPih0aGlzKS0+ZmluZChr
ZXkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0
eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+CitpbmxpbmUgYm9vbCBXZWFr
R0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6Y29udGFpbnMo
Y29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAoreworICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9t
YXAuZW5kKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFsdWVB
cmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KIE5FVkVSX0lOTElO
RSB2b2lkIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+
OjpwcnVuZVN0YWxlRW50cmllcygpCiB7CiAgICAgbV9tYXAucmVtb3ZlSWYoW10odHlwZW5hbWUg
SGFzaE1hcFR5cGU6OktleVZhbHVlUGFpclR5cGUmIGVudHJ5KSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJI
ZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUg
IlN0YWNrVmlzaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmg+CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNl
L1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxNi0wOS0x
NiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTWFya2Vk
QmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9jYXRpb24gYW5kIG1h
cmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgVGhlIG1haW4gY2hhbmdlIGhlcmUgaXMgdG8gYnJpbmcgYmFjayBGYXN0Qml0
VmVjdG9yLmNwcCwgc28gdGhhdCBJIGNvdWxkIG91dGxpbmUgc29tZQorICAgICAgICBsYXJnZSBz
bG93IHBhdGggZnVuY3Rpb25zLiBUaGlzIGFsc28gYWRkcyBzb21lIHV0aWxpdGllcywgbGlrZSBh
dG9taWNTZXRBbmRDaGVjaygpIGFuZAorICAgICAgICBpc0VtcHR5KCkuIFRoZSBHQyB1c2VzIHRo
ZXNlLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmNwcDog
QWRkZWQuCisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnNldEVxdWFsc1Ns
b3cpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpyZXNpemVTbG93KToK
KyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVj
dG9yV29yZE93bmVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yV29y
ZE93bmVyOjpyZXNpemUpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9ySW1wbDo6aXNFbXB0
eSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OmF0b21pY1NldEFuZENoZWNrKToKKyAg
ICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6b3BlcmF0b3JbXSk6IERlbGV0ZWQuCisKIDIwMTYt
MDktMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBG
aXggaXNWYWxpZEVudW0gdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIEdDQwpJbmRleDog
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDYwMzEp
CisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAJCTBGNDU3MDQzMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21p
bmF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovOyB9OwogCQkwRjQ1NzA0
NTFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJs
ZVNvcnQuaCAqLzsgfTsKIAkJMEY3MjVDQUMxQzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcyNUNBQjFD
NTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLzsgfTsKKwkJMEY3QzVGQjYxRDg4NUNGMjAw
NDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0
b3IuY3BwICovOyB9OwogCQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2
NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi87IH07CiAJCTBGODI0QTY5MUI3
NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xv
dC5oICovOyB9OwogCQkwRjg3MTA1QTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NzEwNTkxNjY0
M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLzsgfTsKQEAgLTM2Niw2ICszNjcsNyBAQAog
CQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEb21pbmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1YmJsZVNvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmdlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQg
LyogUGFya2luZ0xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
YXJraW5nTG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjUxQjc0
NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFya2luZ0xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg3MTA1
OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSYXdQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
ODAsNiArODgyLDcgQEAKIAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5oICov
LAogCQkJCTFBRUE4OEUxMUQ2QkJDRjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJ
QThBNDcyOUYxNTFBODI1QTAwNDEyM0ZGIC8qIEV4cG9ydE1hY3Jvcy5oICovLAorCQkJCTBGN0M1
RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLywKIAkJCQkwRkQ4MUFD
NDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovLAogCQkJCUE4QTQ3MkExMTUx
QTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLywKIAkJCQlBOEE0NzJBMjE1MUE4MjVB
MDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovLApAQCAtMTU5NCw2ICsxNTk3LDcgQEAKIAkJCQlD
RDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3M0VDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QTQ3M0Y0MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0
VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAv
KiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgy
NUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDcgQEAgc2V0KFdU
Rl9TT1VSQ0VTCiAgICAgRGF0YUxvZy5jcHAKICAgICBEYXRlTWF0aC5jcHAKICAgICBEZWNpbWFs
TnVtYmVyLmNwcAorICAgIEZhc3RCaXRWZWN0b3IuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKICAg
ICBGaWxlUHJpbnRTdHJlYW0uY3BwCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVyLmNwcApJbmRleDog
U291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYv
RmFzdEJpdFZlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRmFzdEJpdFZlY3Rvci5oIgorCituYW1lc3BhY2UgV1RGIHsKKwordm9p
ZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpzZXRFcXVhbHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0
b3JXb3JkT3duZXImIG90aGVyKQoreworICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Kj4oCisgICAgICAgIGZhc3RDYWxsb2Mob3RoZXIuYXJyYXlMZW5ndGgoKSwg
c2l6ZW9mKHVpbnQzMl90KSkpOworICAgIG1lbWNweShuZXdBcnJheSwgb3RoZXIubV93b3Jkcywg
b3RoZXIuYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRz
KQorICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKKyAgICBtX3dvcmRzID0gbmV3QXJyYXk7Cisg
ICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOworfQorCit2b2lkIEZhc3RCaXRWZWN0b3JX
b3JkT3duZXI6OnJlc2l6ZVNsb3coc2l6ZV90IG51bUJpdHMpCit7CisgICAgc2l6ZV90IG5ld0xl
bmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsKKyAgICAKKyAgICAvLyBV
c2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRo
ZSBjb21tb24KKyAgICAvLyB1c2UgY2FzZSBmb3IgdGhpcyBtZXRob2QgdG8gYmUgaW5pdGlhbGl6
aW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3IuCisgICAgCisgICAgdWludDMyX3QqIG5ld0Fy
cmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9m
KHVpbnQzMl90KSkpOworICAgIG1lbWNweShuZXdBcnJheSwgbV93b3JkcywgYXJyYXlMZW5ndGgo
KSAqIHNpemVvZih1aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRzKQorICAgICAgICBmYXN0RnJl
ZShtX3dvcmRzKTsKKyAgICBtX3dvcmRzID0gbmV3QXJyYXk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBT
b3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTkxLDE3ICs5
MiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3BlcmF0
b3I9KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKQogICAgIHsKLSAgICAgICAg
c2l6ZV90IGxlbmd0aCA9IG90aGVyLmFycmF5TGVuZ3RoKCk7Ci0gICAgICAgIGlmIChsZW5ndGgg
PT0gYXJyYXlMZW5ndGgoKSkgewotICAgICAgICAgICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1f
d29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICAgICAgcmV0dXJuICp0
aGlzOworICAgICAgICBpZiAoYXJyYXlMZW5ndGgoKSAhPSBvdGhlci5hcnJheUxlbmd0aCgpKQor
ICAgICAgICAgICAgc2V0RXF1YWxzU2xvdyhvdGhlcik7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXpl
b2YodWludDMyX3QpKTsKKyAgICAgICAgICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsK
ICAgICAgICAgfQotICAgICAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdCo+KGZhc3RDYWxsb2MobGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7Ci0gICAgICAgIG1l
bWNweShuZXdBcnJheSwgb3RoZXIubV93b3JkcywgbGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90KSk7
Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAgICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7Ci0g
ICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsKLSAgICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9u
dW1CaXRzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIApAQCAtMTQwLDE4ICsx
MzYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXNpemUoc2l6ZV90IG51bUJpdHMpCiAg
ICAgewotICAgICAgICBpZiAobnVtQml0cyA9PSBtX251bUJpdHMpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIAotICAgICAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RS
ZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KLSAgICAgICAgLy8gdXNlIGNhc2Ug
Zm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0aGUgYml0dmVj
dG9yLgotICAgICAgICAKLSAgICAgICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JB
cnJheUxlbmd0aChudW1CaXRzKTsKLSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkp
OwotICAgICAgICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXpl
b2YodWludDMyX3QpKTsKLSAgICAgICAgaWYgKG1fd29yZHMpCi0gICAgICAgICAgICBmYXN0RnJl
ZShtX3dvcmRzKTsKLSAgICAgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAgICAgICBpZiAoYXJy
YXlMZW5ndGgoKSAhPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cykpCisgICAgICAg
ICAgICByZXNpemVTbG93KG51bUJpdHMpOwogICAgICAgICBtX251bUJpdHMgPSBudW1CaXRzOwog
ICAgIH0KICAgICAKQEAgLTE3MSw2ICsxNTcsOSBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QqIHdv
cmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQogCiBwcml2YXRlOgorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHNldEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3Ro
ZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2l6ZVNsb3coc2l6ZV90IG51bUJp
dHMpOworICAgIAogICAgIHVpbnQzMl90KiBtX3dvcmRzIHsgbnVsbHB0ciB9OwogICAgIHNpemVf
dCBtX251bUJpdHMgeyAwIH07CiB9OwpAQCAtMzIwLDYgKzMwOSwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
CisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IGFycmF5TGVuZ3RoKCk7IGluZGV4
LS07KSB7CisgICAgICAgICAgICBpZiAobV93b3Jkcy53b3JkKGluZGV4KSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CiAgICAgRmFzdEJpdFZl
Y3RvckltcGw8RmFzdEJpdFZlY3RvckFuZFdvcmRzPHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSwg
dHlwZW5hbWUgT3RoZXJXb3Jkczo6Vmlld1R5cGU+PiBvcGVyYXRvciYoY29uc3QgRmFzdEJpdFZl
Y3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTM4MCw3ICszNzgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHdyaXR0ZW4gdGhpcyB3YXkgc28gdGhhdCBpdCBwZXJm
b3JtcyB3ZWxsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB2YWx1ZSBpcyBhIGNvbnN0YW50LgogICAg
ICAgICB1aW50MzJfdCBza2lwVmFsdWUgPSAtKHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkg
XiAxKTsKICAgICAgICAgCi0gICAgICAgIHNpemVfdCBudW1Xb3JkcyA9IG1fd29yZHMuYXJyYXlM
ZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90IG51bVdvcmRzID0gZmFzdEJpdFZlY3RvckFycmF5TGVu
Z3RoKG1fd29yZHMubnVtQml0cygpKTsKICAgICAgICAgCiAgICAgICAgIHNpemVfdCB3b3JkSW5k
ZXggPSBzdGFydEluZGV4IC8gMzI7CiAgICAgICAgIHNpemVfdCBzdGFydEluZGV4SW5Xb3JkID0g
c3RhcnRJbmRleCAtIHdvcmRJbmRleCAqIDMyOwpAQCAtNDcxLDYgKzQ2OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgbV93b3Jkcy5jbGVhckFsbCgpOwogICAgIH0KIAorICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgY29udGVudHMgb2YgdGhpcyBiaXR2ZWN0b3IgY2hhbmdlZC4KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIGJvb2wgc2V0QW5kQ2hlY2soY29uc3QgRmFzdEJp
dFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQogICAgIHsKQEAgLTU1MCw2ICs1NDksMjgg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKICAgICB9CisgICAg
CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBjaGFuZ2VkLgorICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBhdG9taWNTZXRBbmRDaGVjayhzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUp
CisgICAgeworICAgICAgICB1aW50MzJfdCogcG9pbnRlciA9ICZtX3dvcmRzLndvcmQoaW5kZXgg
Pj4gNSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChpbmRleCAmIDMxKTsKKyAgICAg
ICAgZm9yICg7OykgeworICAgICAgICAgICAgdWludDMyX3Qgb2xkVmFsdWUgPSAqcG9pbnRlcjsK
KyAgICAgICAgICAgIHVpbnQzMl90IG5ld1ZhbHVlOworICAgICAgICAgICAgaWYgKHZhbHVlKSB7
CisgICAgICAgICAgICAgICAgaWYgKG9sZFZhbHVlICYgbWFzaykKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUgfCBt
YXNrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIShvbGRWYWx1
ZSAmIG1hc2spKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSAmIH5tYXNrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKHdlYWtDb21wYXJlQW5kU3dhcChwb2ludGVyLCBvbGRWYWx1ZSwgbmV3VmFsdWUp
KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZh
dGlvbi5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NP
YnNlcnZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJHQ09ic2VydmF0aW9uLmgiCiAKICNpbmNsdWRlIDxoZWFwL0hlYXBJbmxpbmVzLmg+CisjaW5j
bHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIwNjEwMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDE2LTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAg
ICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBwb3J0IG92ZXJsYXBwZWQgYWxs
b2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBSZW1vdmUgdGhlIGFsd2F5cy10cmlnZ2VyLWNvcHkt
cGhhc2UgY29uZmlndXJhdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHM6CisKIDIwMTYtMDktMTggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBuYXZlcmNv
cnAuY29tPgogCiAgICAgICAgIFtFRkxdIEJ1bXAgZWZsIGxpYnJhcnkgdG8gMS4xOC4xCkluZGV4
OiBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHJldmlzaW9uIDIwNjAzMSkKKysrIFRvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTg2OSwxMCAr
ODY5LDYgQEAgZGVmIHJ1bkZUTEVhZ2VyTm9DSklUT1NSVmFsaWRhdGlvbgogICAgIHJ1bigiZnRs
LWVhZ2VyLW5vLWNqaXQtb3NyLXZhbGlkYXRpb24iLCAiLS12YWxpZGF0ZUZUTE9TUkV4aXRMaXZl
bmVzcz10cnVlIiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIEVBR0VSX09QVElP
TlMpKQogZW5kCiAKLWRlZiBydW5BbHdheXNUcmlnZ2VyQ29weVBoYXNlCi0gICAgcnVuKCJhbHdh
eXMtdHJpZ2dlci1jb3B5LXBoYXNlIiwgIi0tbWluSGVhcFV0aWxpemF0aW9uPTIuMCIsICItLW1p
bkNvcGllZEJsb2NrVXRpbGl6YXRpb249Mi4wIikKLWVuZAotCiBkZWYgcnVuTm9DSklUTm9BU08K
ICAgICBydW4oIm5vLWNqaXQtbm8tYXNvIiwgIi0tdXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRp
bWl6YXRpb25zPWZhbHNlIiwgKk5PX0NKSVRfT1BUSU9OUykKIGVuZApAQCAtOTEwLDcgKzkwNiw2
IEBAIGRlZiBkZWZhdWx0UnVuCiAgICAgICAgIGRlZmF1bHRRdWlja1J1bgogICAgIGVsc2UKICAg
ICAgICAgcnVuRGVmYXVsdAotICAgICAgICBydW5BbHdheXNUcmlnZ2VyQ29weVBoYXNlCiAgICAg
ICAgIGlmICRqaXRUZXN0cwogICAgICAgICAgICAgcnVuTm9MTEludAogICAgICAgICAgICAgcnVu
Tm9DSklUVmFsaWRhdGVQaGFzZXMKQEAgLTkzNiw3ICs5MzEsNiBAQCBkZWYgZGVmYXVsdE5vTm9M
TEludFJ1bgogICAgICAgICBkZWZhdWx0UXVpY2tSdW4KICAgICBlbHNlCiAgICAgICAgIHJ1bkRl
ZmF1bHQKLSAgICAgICAgcnVuQWx3YXlzVHJpZ2dlckNvcHlQaGFzZQogICAgICAgICBpZiAkaml0
VGVzdHMKICAgICAgICAgICAgIHJ1bk5vQ0pJVFZhbGlkYXRlUGhhc2VzCiAgICAgICAgICAgICBy
dW5ERkdFYWdlcgpAQCAtOTg4LDcgKzk4Miw2IEBAIGVuZAogIyBieSBjb3VudGluZyByZWNvbXBp
bGF0aW9ucy4KIGRlZiBkZWZhdWx0Tm9FYWdlclJ1bgogICAgIHJ1bkRlZmF1bHQKLSAgICBydW5B
bHdheXNUcmlnZ2VyQ29weVBoYXNlCiAgICAgaWYgJGppdFRlc3RzCiAgICAgICAgIHJ1bk5vTExJ
bnQKICAgICAgICAgcnVuTm9DSklUVmFsaWRhdGVQaGFzZXMKQEAgLTEwMDMsNyArOTk2LDYgQEAg
ZW5kCiAKIGRlZiBkZWZhdWx0Tm9TYW1wbGluZ1Byb2ZpbGVyUnVuCiAgICAgcnVuRGVmYXVsdAot
ICAgIHJ1bkFsd2F5c1RyaWdnZXJDb3B5UGhhc2UKICAgICBpZiAkaml0VGVzdHMKICAgICAgICAg
cnVuTm9MTEludAogICAgICAgICBydW5Ob0NKSVRWYWxpZGF0ZVBoYXNlcwpAQCAtMTE0MSw3ICsx
MTMzLDYgQEAgZW5kCiAKIGRlZiBydW5Nb2R1bGVzCiAgICAgcnVuKCJkZWZhdWx0LW1vZHVsZXMi
LCAiLW0iKQotICAgIHJ1bigiYWx3YXlzLXRyaWdnZXItY29weS1waGFzZS1tb2R1bGVzIiwgIi1t
IiwgIi0tbWluSGVhcFV0aWxpemF0aW9uPTIuMCIsICItLW1pbkNvcGllZEJsb2NrVXRpbGl6YXRp
b249Mi4wIikKIAogICAgIGlmICEkaml0VGVzdHMKICAgICAgICAgcmV0dXJuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>289306</attachid>
            <date>2016-09-19 20:45:17 -0700</date>
            <delta_ts>2016-09-19 20:45:17 -0700</delta_ts>
            <desc>performance</desc>
            <filename>report.txt</filename>
            <type>text/plain</type>
            <size>85565</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBMb25nU3BpZGVyLCBWOFNwaWRlciwgT2N0
YW5lLCBLcmFrZW4sIE1pY3JvYmVuY2htYXJrcywgQXNtQmVuY2gsIGFuZCBDb21wcmVzc2lvbkJl
bmNoIG9uIG11cmRlcmZhY2UgKE1hY0Jvb2tQcm8xMSw1KS4KClZNcyB0ZXN0ZWQ6CiJUaXBPZlRy
ZWUiIGF0IC9Wb2x1bWVzL0RhdGEvc2Vjb25kYXJ5L09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQvUmVs
ZWFzZS9qc2MgKHIyMDYwMzEpCiJUaGluZ3MiIGF0IC9Wb2x1bWVzL0RhdGEvcHJpbWFyeS9PcGVu
U291cmNlL1dlYktpdEJ1aWxkL1JlbGVhc2UvanNjIChyMjA2MDMxKQoKQ29sbGVjdGVkIDYgc2Ft
cGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDYgVk0gaW52b2NhdGlvbnMgcGVyIGJlbmNobWFy
ay4gRW1pdHRlZCBhIGNhbGwgdG8gZ2MoKSBiZXR3ZWVuIHNhbXBsZSBtZWFzdXJlbWVudHMuClVz
ZWQgMSBiZW5jaG1hcmsgaXRlcmF0aW9uIHBlciBWTSBpbnZvY2F0aW9uIGZvciB3YXJtLXVwLiBV
c2VkIHRoZSBqc2Mtc3BlY2lmaWMgcHJlY2lzZVRpbWUoKSBmdW5jdGlvbiB0byBnZXQgbWljcm9z
ZWNvbmQtbGV2ZWwKdGltaW5nLiBSZXBvcnRpbmcgYmVuY2htYXJrIGV4ZWN1dGlvbiB0aW1lcyB3
aXRoIDk1JSBjb25maWRlbmNlIGludGVydmFscyBpbiBtaWxsaXNlY29uZHMuCgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAg
ICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIApTdW5TcGlkZXI6CiAgIDNkLWN1YmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuOTI0OCstMC4zNTM2ICAgICAgICAgICAgNC44MzU5Ky0wLjI4NDkgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTg0eCBmYXN0ZXIKICAgM2QtbW9ycGggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42NTg5Ky0wLjA3NDEgICAgID8gICAgICA0LjY3
NTErLTAuMDQzNCAgICAgICAgPwogICAzZC1yYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Ljc2NjQrLTAuMzQ1OSAgICAgICAgICAgIDQuNzAxMystMC4wOTcw
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHggZmFzdGVyCiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTEwNCstMC4wMjk4ICAgICAgICAgICAg
MS45MDMwKy0wLjAyOTYgICAgICAgIAogICBhY2Nlc3MtZmFubmt1Y2ggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1LjEyMjYrLTAuNDQ2NSAgICAgICAgICAgIDUuMDM2OSstMC4z
ODI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3MHggZmFzdGVyCiAgIGFjY2Vzcy1uYm9keSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMzc5NSstMC4yMzUxICAgICAgICAg
ICAgMi4yNzIxKy0wLjA2MTYgICAgICAgICAgbWlnaHQgYmUgMS4wNDczeCBmYXN0ZXIKICAgYWNj
ZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4yNzQ4Ky0w
LjIyNzEgICAgICAgICAgICAzLjExODIrLTAuMDkyNiAgICAgICAgICBtaWdodCBiZSAxLjA1MDJ4
IGZhc3RlcgogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxLjA5MDErLTAuMDc5MSAgICAgICAgICAgIDEuMDUzOSstMC4wMjAxICAgICAgICAgIG1p
Z2h0IGJlIDEuMDM0NHggZmFzdGVyCiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuNjI2NSstMC4xNjM1ICAgICAgICAgICAgMi41OTAzKy0wLjEx
ODIgICAgICAgICAgbWlnaHQgYmUgMS4wMTQweCBmYXN0ZXIKICAgYml0b3BzLWJpdHdpc2UtYW5k
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44NzQ0Ky0wLjAwNDAgICAgID8gICAg
ICAxLjkzODErLTAuMTI4NSAgICAgICAgPyBtaWdodCBiZSAxLjAzNDB4IHNsb3dlcgogICBiaXRv
cHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk3NjUrLTAu
MDQzNCAgICAgPyAgICAgIDIuOTkxNCstMC4wMzgxICAgICAgICA/CiAgIGNvbnRyb2xmbG93LXJl
Y3Vyc2l2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjcwOCstMC4xNTAzICAgICA/
ICAgICAgMi4zMTIzKy0wLjE5MTcgICAgICAgID8gbWlnaHQgYmUgMS4wMTgyeCBzbG93ZXIKICAg
Y3J5cHRvLWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yNjM1
Ky0wLjM2MjIgICAgICAgICAgICA0LjEwMjMrLTAuMTA2MCAgICAgICAgICBtaWdodCBiZSAxLjAz
OTN4IGZhc3RlcgogICBjcnlwdG8tbWQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjU2OTcrLTAuMDMxNSAgICAgXiAgICAgIDIuNDg0MCstMC4wNDI3ICAgICAgICBe
IGRlZmluaXRlbHkgMS4wMzQ1eCBmYXN0ZXIKICAgY3J5cHRvLXNoYTEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi42MDkxKy0wLjA0NTggICAgID8gICAgICAyLjY2NjMr
LTAuMTEyOSAgICAgICAgPyBtaWdodCBiZSAxLjAyMTl4IHNsb3dlcgogICBkYXRlLWZvcm1hdC10
b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjQ1OTErLTAuMTczNSAgICAg
PyAgICAgIDYuNTUyMCstMC40MDMyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0NHggc2xvd2VyCiAg
IGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjc5
OSstMC4wOTk4ICAgICA/ICAgICAgNC4zNzI1Ky0wLjE3NDkgICAgICAgID8gbWlnaHQgYmUgMS4w
MjE2eCBzbG93ZXIKICAgbWF0aC1jb3JkaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi41OTA1Ky0wLjAzMTAgICAgID8gICAgICAyLjY0MzErLTAuMDg2NSAgICAgICAg
PyBtaWdodCBiZSAxLjAyMDN4IHNsb3dlcgogICBtYXRoLXBhcnRpYWwtc3VtcyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjc3MDYrLTAuMDQ3MSAgICAgICAgICAgIDMuNzU5Mist
MC4wNDcwICAgICAgICAKICAgbWF0aC1zcGVjdHJhbC1ub3JtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMS45MzQzKy0wLjA2MjcgICAgICAgICAgICAxLjkyOTErLTAuMDI0NSAgICAg
ICAgCiAgIHJlZ2V4cC1kbmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDYuMzU2MystMC40OTYyICAgICA/ICAgICAgNi4zOTM0Ky0wLjUyNTMgICAgICAgID8KICAgc3Ry
aW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yMTQ2Ky0w
LjEwNTMgICAgID8gICAgICA0LjIyMDQrLTAuMDczNyAgICAgICAgPwogICBzdHJpbmctZmFzdGEg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjE3MzkrLTAuMTEwMCAgICAg
PyAgICAgIDUuNDA0NystMC40MDIwICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ0Nnggc2xvd2VyCiAg
IHN0cmluZy10YWdjbG91ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMDE3
NistMC41MDk4ICAgICA/ICAgICAgOC4xNzI0Ky0wLjUwMTMgICAgICAgID8gbWlnaHQgYmUgMS4w
MTkzeCBzbG93ZXIKICAgc3RyaW5nLXVucGFjay1jb2RlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNy44OTc5Ky0wLjUyODYgICAgICAgICAgIDE3LjYyNTgrLTAuOTg0MiAgICAgICAg
ICBtaWdodCBiZSAxLjAxNTR4IGZhc3RlcgogICBzdHJpbmctdmFsaWRhdGUtaW5wdXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LjEwMDQrLTAuMTA1MiAgICAgPyAgICAgIDQuMTMzNyst
MC4yMTM4ICAgICAgICA/CgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0LjMxMjArLTAuMDY0OCAgICAgICAgICAgIDQuMzAzNCstMC4wNzQ4ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDAyMHggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAgICAg
ICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApMb25nU3BpZGVy
OgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzcy
LjQzMTMrLTExLjMyNzkgICAgPyAgICA3ODMuNzgxNSstNi43MDk5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE0N3ggc2xvd2VyCiAgIDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1NjAuNzI2MistOC4wNTQ5ICAgICAgICAgIDU1Ny43MDMwKy0yLjAwMjQgICAg
ICAgIAogICAzZC1yYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDUwLjQwODcrLTQuNTA2MiAgICAgICAgICA0NDQuODc4MCstNy4wNzAwICAgICAgICAgIG1pZ2h0
IGJlIDEuMDEyNHggZmFzdGVyCiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3MzQuMjQ0NCstOC45NDc4ICAgICAhICAgIDc3OS44MDgxKy04LjMxMTUg
ICAgICAgICEgZGVmaW5pdGVseSAxLjA2MjF4IHNsb3dlcgogICBhY2Nlc3MtZmFubmt1Y2ggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMwLjk5NDIrLTIuOTUzMyAgICAgPyAgICAy
MzEuOTM3NSstMi44MTM1ICAgICAgICA/CiAgIGFjY2Vzcy1uYm9keSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0OTYuODA0OSstMi4yMDE5ICAgICA/ICAgIDUwMC4wMzQ0Ky0x
NC41NzIyICAgICAgID8KICAgYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDI4NS45NzI2Ky03LjMzMTQgICAgICAgICAgMjg0Ljg3NDgrLTcuNDM0NiAgICAg
ICAgCiAgIGJpdG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
MzEuMDUzNystMC4zNDUyICAgICA/ICAgICAzMS4zOTU1Ky0wLjg4MzIgICAgICAgID8gbWlnaHQg
YmUgMS4wMTEweCBzbG93ZXIKICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA5MS42NTUxKy0yLjk3OTYgICAgID8gICAgIDkyLjI2MDMrLTEuNTA3MyAg
ICAgICAgPwogICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzY1LjY1MTQrLTIuODE4MCAgICAgICAgICAzNjQuMjcwMCstNC4wNzA0ICAgICAgICAKICAg
Y29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzMC4wNDQ2
Ky01LjAzODEgICAgID8gICAgNDM0Ljk0NDgrLTIuNTU2OCAgICAgICAgPyBtaWdodCBiZSAxLjAx
MTR4IHNsb3dlcgogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTI1LjU3MTQrLTQuMDEzMSAgICAgICAgICA1MjUuNTE3MCstMy41MzkzICAgICAgICAK
ICAgY3J5cHRvLW1kNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1My45
MTYxKy01LjM5NDEgICAgID8gICAgNDYwLjg4MjcrLTkuNDcxNyAgICAgICAgPyBtaWdodCBiZSAx
LjAxNTN4IHNsb3dlcgogICBjcnlwdG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNjI5LjI5NDIrLTkuMDY2MCAgICAgICAgICA2MTQuMzA4MCstMTAuNDc0NiAgICAg
ICAgIG1pZ2h0IGJlIDEuMDI0NHggZmFzdGVyCiAgIGRhdGUtZm9ybWF0LXRvZnRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzMjUuNjUyOCstNC45NzMzICAgICA/ICAgIDMzMC45OTU2
Ky0yLjE3OTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTY0eCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQt
eHBhcmIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU5Ni4yMTc5Ky0yLjY0ODggICAg
ICEgICAgNjAyLjM5NTArLTIuMzkzOSAgICAgICAgISBkZWZpbml0ZWx5IDEuMDEwNHggc2xvd2Vy
CiAgIGhhc2gtbWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzUu
NDk3NCstMS45MDI5ICAgICAgICAgIDEzNS40NzQ5Ky01LjI1MDMgICAgICAgIAogICBtYXRoLWNv
cmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQ4LjY0MTIrLTkuMzU5
MyAgICAgICAgICA0NDUuMzE4NSstNy4yMDM4ICAgICAgICAKICAgbWF0aC1wYXJ0aWFsLXN1bXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4Mi42MTE0Ky0zLjU5NjYgICAgID8gICAg
MjgyLjg5NTIrLTEuODM0NCAgICAgICAgPwogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNTE3Ljk1MjgrLTMuOTI4NiAgICAgICAgICA1MTYuODIyNCst
NC40NzE2ICAgICAgICAKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQxOC4wMTg1Ky0xNy4yMTQ3ICAgID8gICAgNDQwLjUyNDArLTcuNjAzOCAgICAg
ICAgPyBtaWdodCBiZSAxLjA1Mzh4IHNsb3dlcgogICBzdHJpbmctZmFzdGEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzMwLjM1MjkrLTQuNjE5NyAgICAgPyAgICAzMzAuOTM3
OSstNC4zMTcxICAgICAgICA/CiAgIHN0cmluZy10YWdjbG91ZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNjQuNzA0MCstNC4yNzI3ICAgICAgICAgIDE2NC4yMzkwKy0xLjM1NDYg
ICAgICAgIAoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMzNS41NjAxKy0wLjY2NzYgICAgICEgICAgMzM3Ljc0MjkrLTAuNTk4NyAgICAgICAgISBk
ZWZpbml0ZWx5IDEuMDA2NXggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAgICAgICBUaGlu
Z3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApWOFNwaWRlcjoKICAgY3J5
cHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNC42Mzk2Ky0x
LjQ5ODggICAgICAgICAgIDM0LjE0NzcrLTAuMzY2NiAgICAgICAgICBtaWdodCBiZSAxLjAxNDR4
IGZhc3RlcgogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQ2Ljk3MjcrLTAuNTAyOSAgICAgPyAgICAgNDcuMTQ4NSstMS40NjE0ICAgICAgICA/CiAg
IGVhcmxleS1ib3llciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQuMzY4
MCstMC4zNjM5ICAgICAgICAgICAzNC4xMDgyKy0wLjM2NTIgICAgICAgIAogICByYXl0cmFjZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjcwNTIrLTAuNDIyMyAg
ICAgPyAgICAgMTkuOTg0OSstNC4zMTYxICAgICAgICA/IG1pZ2h0IGJlIDEuMDY4NHggc2xvd2Vy
CiAgIHJlZ2V4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgu
OTU0MSstMC40Nzg1ICAgICA/ICAgICA0OS42MjAwKy0xLjU4OTAgICAgICAgID8gbWlnaHQgYmUg
MS4wMTM2eCBzbG93ZXIKICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzOC45NTE4Ky0xLjc0NTggICAgICAgICAgIDM3LjQwNjUrLTAuMjcwNCAgICAg
ICAgICBtaWdodCBiZSAxLjA0MTN4IGZhc3RlcgogICBzcGxheSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDI3LjM2OTkrLTAuNTkxOCAgICAgPyAgICAgMjcuNDI4
NCstMC40Njk2ICAgICAgICA/CgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDM0LjE3OTgrLTAuMzA5NCAgICAgPyAgICAgMzQuMjM2MSstMS4wMjQ2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAxNnggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAg
ICAgICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApPY3RhbmU6
CiAgIGVuY3J5cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4x
NDY1MSstMC4wMDQwMCAgICA/ICAgICAwLjE0NjkwKy0wLjAwMjI4ICAgICAgID8KICAgZGVjcnlw
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjY5MTA2Ky0wLjAy
MDMyICAgICAgICAgIDIuNjg2NjMrLTAuMDIzNzcgICAgICAgCiAgIGRlbHRhYmx1ZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4xMTgyNSstMC4wMDEzNiAgICAgICAg
ICAwLjExODAyKy0wLjAwMjE4ICAgICAgIAogICBlYXJsZXkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjM1MDQrLTAuMDAwNjAgICAgPyAgICAgMC4yMzgxMyst
MC4wMDI2OSAgICAgICA/IG1pZ2h0IGJlIDEuMDEzMnggc2xvd2VyCiAgIGJveWVyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yMzU0OCstMC4wMjc0MiAgICAh
ICAgICA0LjQwMjI0Ky0wLjA3MjcyICAgICAgICEgZGVmaW5pdGVseSAxLjAzOTR4IHNsb3dlcgog
ICBuYXZpZXItc3Rva2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDQuNjIy
NDErLTAuMDQ1NDEgICAgPyAgICAgNC42MzY1MCstMC4wMzU5MyAgICAgICA/CiAgIHJheXRyYWNl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC42NTI4MystMC4wMDI4
MCAgICA/ICAgICAwLjY1NDU2Ky0wLjAwNTgxICAgICAgID8KICAgcmljaGFyZHMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgICAwLjA3NzUyKy0wLjAwMTU5ICAgID8gICAg
IDAuMDc4NTUrLTAuMDAxNjkgICAgICAgPyBtaWdodCBiZSAxLjAxMzJ4IHNsb3dlcgogICBzcGxh
eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuMzE1NzErLTAu
MDA4MTYgICAgICAgICAgMC4zMTA5NystMC4wMDI0OCAgICAgICAgIG1pZ2h0IGJlIDEuMDE1Mngg
ZmFzdGVyCiAgIHJlZ2V4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAg
ICAxNi40MjU5MCstMC45MjA3MiAgICA/ICAgIDE3LjM4MTAwKy0wLjUxMjUwICAgICAgID8gbWln
aHQgYmUgMS4wNTgxeCBzbG93ZXIKICAgcGRmanMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiAgICAgIDM5LjA2NjU4Ky0wLjU2Mzg4ICAgICAgICAgMzguODY3MDArLTAuMjM3
NTcgICAgICAgCiAgIG1hbmRyZWVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIg
ICAgICAzOS40ODMyNystMC4xOTEzNCAgICAgICAgIDM5LjM1ODc5Ky0wLjIxNjg5ICAgICAgIAog
ICBnYmVtdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMjguNjcx
MjUrLTAuNDgxODggICAgPyAgICAyOC42ODkwNystMC4zNDExNSAgICAgICA/CiAgIGNsb3N1cmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40NjA2NistMC4wMDM5
MSAgICAgICAgICAwLjQ1OTExKy0wLjAwMTM0ICAgICAgIAogICBqcXVlcnkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzI5MzMrLTAuMDM3NTIgICAgICAgICAg
Ni4zMTQ1MSstMC4wNDI4NyAgICAgICAKICAgYm94MmQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MiAgICAgICA4LjY5MDE2Ky0wLjA5MzM5ICAgICAgICAgIDguNjQ2MjArLTAu
MDc2NTMgICAgICAgCiAgIHpsaWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eDIgICAgIDMzNi4yMTg1NystMy4xNjk4NyAgICAgICAgMzMxLjgxODIxKy0xMC41MjA5NSAgICAg
ICAgbWlnaHQgYmUgMS4wMTMzeCBmYXN0ZXIKICAgdHlwZXNjcmlwdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MiAgICAgNjE0LjAzMjcxKy0xMi41MjkxMSAgICAgICA2MTAuOTI2MzUr
LTEwLjk4NTQ4ICAgICAgCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNzAyMjYrLTAuMDI4NjYgICAgPyAgICAgNC43MTg0MCstMC4wMDk0NCAg
ICAgICA/IG1pZ2h0IGJlIDEuMDAzNHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAgICAg
ICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApLcmFrZW46CiAg
IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4Ljgy
NystMi43NzMgICAgICA/ICAgICAgOTAuNDk1Ky0zLjYzMSAgICAgICAgID8gbWlnaHQgYmUgMS4w
MTg4eCBzbG93ZXIKICAgYXVkaW8tYmVhdC1kZXRlY3Rpb24gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzUuNDY5Ky0wLjM4OSAgICAgICAgICAgICAzNS4yMDErLTAuMDQ4ICAgICAgICAg
CiAgIGF1ZGlvLWRmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk1
LjYzMCstMi40OTUgICAgICAgICAgICAgOTQuNjIyKy0zLjAyMyAgICAgICAgICAgbWlnaHQgYmUg
MS4wMTA2eCBmYXN0ZXIKICAgYXVkaW8tZmZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjkuODI3Ky02LjI0NSAgICAgICAgICAgICAyNy44MzIrLTEuMzE3ICAgICAg
ICAgICBtaWdodCBiZSAxLjA3MTd4IGZhc3RlcgogICBhdWRpby1vc2NpbGxhdG9yICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0NC4wMDUrLTEuODczICAgICAgICAgICAgIDQzLjE2
MystMC4zMTUgICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5NXggZmFzdGVyCiAgIGltYWdpbmctZGFy
a3Jvb20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU2LjU0OSstMC4xMDIgICAg
ICA/ICAgICAgNTguNjY1Ky0zLjU2NyAgICAgICAgID8gbWlnaHQgYmUgMS4wMzc0eCBzbG93ZXIK
ICAgaW1hZ2luZy1kZXNhdHVyYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDAu
ODAzKy0wLjQyNCAgICAgID8gICAgICA0Mi4wMzQrLTIuNzAxICAgICAgICAgPyBtaWdodCBiZSAx
LjAzMDJ4IHNsb3dlcgogICBpbWFnaW5nLWdhdXNzaWFuLWJsdXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1Ni41NTArLTAuMzAzICAgICAgPyAgICAgIDU3LjE4MystMC40MTkgICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDExMnggc2xvd2VyCiAgIGpzb24tcGFyc2UtZmluYW5jaWFsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMxLjEyNSstMC43NTQgICAgICAgICAgICAgMzAuNzMy
Ky0wLjUyOSAgICAgICAgICAgbWlnaHQgYmUgMS4wMTI4eCBmYXN0ZXIKICAganNvbi1zdHJpbmdp
ZnktdGluZGVyYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuMjgzKy0xLjY1MSAgICAg
ID8gICAgICAyMS41NTArLTEuMjE2ICAgICAgICAgPyBtaWdodCBiZSAxLjAxMjZ4IHNsb3dlcgog
ICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNC45
NDArLTEuMTQyICAgICAgICAgICAgIDM0LjUxOCstMC4yNzAgICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEyMnggZmFzdGVyCiAgIHN0YW5mb3JkLWNyeXB0by1jY20gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMzLjI5OCstMi44MTcgICAgICAgICAgICAgMzEuNzQzKy0zLjAwMiAgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDkweCBmYXN0ZXIKICAgc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOTAuMzQwKy0yLjg0MiAgICAgICAgICAgICA4OS4zMjAr
LTEuNDE2ICAgICAgICAgICBtaWdodCBiZSAxLjAxMTR4IGZhc3RlcgogICBzdGFuZm9yZC1jcnlw
dG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAgICAgICAgICAgICAgICAyOS4yMzArLTAuNDUyICAgICAg
PyAgICAgIDI5LjkxNCstMi4xMjggICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzNHggc2xvd2VyCgog
ICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OS4x
MzQrLTAuODQ1ICAgICAgICAgICAgIDQ5LjA3MCstMC40NTMgICAgICAgICAgIG1pZ2h0IGJlIDEu
MDAxM3ggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIApNaWNyb2JlbmNobWFya3M6CiAgIGFiYy1mb3J3
YXJkLWxvb3AtZXF1YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuNjE4MCstMS42Mjgx
ICAgICAgICAgICAyMi41MTAxKy0xLjA3NzIgICAgICAgICAgbWlnaHQgYmUgMS4wNDkyeCBmYXN0
ZXIKICAgYWJjLXBvc3RmaXgtYmFja3dhcmQtbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAy
OS43OTM4Ky0yLjUwMjQgICAgICAgICAgIDI4LjQ2NDQrLTAuNjI0MyAgICAgICAgICBtaWdodCBi
ZSAxLjA0Njd4IGZhc3RlcgogICBhYmMtc2ltcGxlLWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIyLjYxMzIrLTEuMDQ3OSAgICAgICAgICAgMjIuNjAyOSstMS4xMDQ4ICAg
ICAgICAKICAgYWJjLXNpbXBsZS1mb3J3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMy4xMTE3Ky0xLjM1MTMgICAgID8gICAgIDIzLjI4ODkrLTAuNzU1NyAgICAgICAgPwogICBh
YmMtc2tpcHB5LWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5Ljg3MTgr
LTEuMjg1NyAgICAgICAgICAgMTkuNzYwMCstMC41NDQ1ICAgICAgICAKICAgYWJzLWJvb2xlYW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xNzgwKy0wLjA2NTEgICAg
ID8gICAgICAyLjIyNjcrLTAuMTcwNSAgICAgICAgPyBtaWdodCBiZSAxLjAyMjR4IHNsb3dlcgog
ICBhZGFwdC10by1kb3VibGUtZGl2aWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjQ5
ODArLTEuMDYwMSAgICAgICAgICAgMTMuNjUzOSstMC4yNjE3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDYxOHggZmFzdGVyCiAgIGFsaWFzZWQtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuMDMxMCstMC4wOTg0ICAgICA/ICAgICAgMS4wMzIzKy0wLjA0NzcgICAgICAg
ID8KICAgYWxsb2NhdGUtYmlnLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Mi4xMDczKy0wLjA5NjQgICAgID8gICAgICAyLjMxODkrLTAuMzc4MiAgICAgICAgPyBtaWdodCBi
ZSAxLjEwMDR4IHNsb3dlcgogICBhcHBseS1ub3QtYXBwbHkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0LjIxNzQrLTAuMDgwNSAgICAgICAgICAgIDQuMTk0NSstMC4wNTg1ICAg
ICAgICAKICAgYXJndW1lbnRzLW5hbWVkLWFuZC1yZWZsZWN0aXZlICAgICAgICAgICAgICAgICAg
ICAgOC4wMTExKy0wLjMxMTggICAgID8gICAgICA4LjU1MTUrLTEuMDY2NyAgICAgICAgPyBtaWdo
dCBiZSAxLjA2NzV4IHNsb3dlcgogICBhcmd1bWVudHMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA5LjE2MzIrLTAuMjY3NyAgICAgPyAgICAgIDkuMzE4NistMC42NTYw
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2OXggc2xvd2VyCiAgIGFyZ3VtZW50cy1zdHJpY3QtbW9k
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuMTgwNystMC40Mzc1ICAgICA/ICAgICAx
My43NjIwKy0wLjg4OTQgICAgICAgID8gbWlnaHQgYmUgMS4wNDQxeCBzbG93ZXIKICAgYXJndW1l
bnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi44NTUxKy0wLjQ4
MDQgICAgICAgICAgICA2LjQzMTgrLTAuMTEwNCAgICAgICAgICBtaWdodCBiZSAxLjA2NTh4IGZh
c3RlcgogICBhcml0eS1taXNtYXRjaC1pbmxpbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjg1MDErLTAuMDg5NCAgICAgPyAgICAgIDAuODk0MistMC4xMjE1ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDUxOHggc2xvd2VyCiAgIGFycmF5LWFjY2Vzcy1wb2x5bW9ycGhpYy1zdHJ1Y3R1cmUg
ICAgICAgICAgICAgICAgIDMuMTczMistMC4zMTk1ICAgICAgICAgICAgMy4xNDQ1Ky0wLjI3MDUg
ICAgICAgIAogICBhcnJheS1ub25hcnJheS1wb2x5bW9yaHBpYy1hY2Nlc3MgICAgICAgICAgICAg
ICAgIDE5LjcyODUrLTEuMjI0MSAgICAgPyAgICAgMTkuOTk3NystMS4yODgwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDEzNnggc2xvd2VyCiAgIGFycmF5LXByb3RvdHlwZS1ldmVyeSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjYuNjc4NistMC41MDQ3ICAgICAgICAgICA2Ni40MzIwKy0wLjY5
ODQgICAgICAgIAogICBhcnJheS1wcm90b3R5cGUtZm9yRWFjaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDY2LjQ0MzErLTEuMTk4NCAgICAgPyAgICAgNjYuNjcwOCstMS43NTU3ICAgICAgICA/
CiAgIGFycmF5LXByb3RvdHlwZS1tYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjYu
NzQwMSstMC4zNDYxICAgICAgICAgICA2Ni4xNjk3Ky0wLjg0NzEgICAgICAgIAogICBhcnJheS1w
cm90b3R5cGUtcmVkdWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYyLjM0NTMrLTAuMjcx
NCAgICAgPyAgICAgNjIuOTkyOCstMS40MzMzICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwNHggc2xv
d2VyCiAgIGFycmF5LXByb3RvdHlwZS1yZWR1Y2VSaWdodCAgICAgICAgICAgICAgICAgICAgICAg
ODEuNjg5OCstMC42MjU4ICAgICA/ICAgICA4MS45Mzg2Ky0xLjk5MjIgICAgICAgID8KICAgYXJy
YXktcHJvdG90eXBlLXNvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2Ni44NTc1Ky0w
LjYxNzggICAgIF4gICAgIDY1Ljk4MzgrLTAuMjIxNiAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDEz
MnggZmFzdGVyCiAgIGFycmF5LXNwbGljZS1jb250aWd1b3VzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjEuNDI2NCstMS43MTgwICAgICAgICAgICAxOS41NTg2Ky0xLjQxNTIgICAgICAgICAg
bWlnaHQgYmUgMS4wOTU1eCBmYXN0ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtYWRkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi45ODkzKy0wLjA4NDEgICAgID8gICAgICAzLjA4MzUrLTAu
MTg0MSAgICAgICAgPyBtaWdodCBiZSAxLjAzMTV4IHNsb3dlcgogICBhcnJheS13aXRoLWRvdWJs
ZS1pbmNyZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAyLjc1MTErLTAuMjY2MCAgICAgICAg
ICAgIDIuNjI1NystMC4wNzI3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3N3ggZmFzdGVyCiAgIGFy
cmF5LXdpdGgtZG91YmxlLW11bC1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzYyNSst
MC4xMjI1ICAgICA/ICAgICAgMy40MDAxKy0wLjE0OTQgICAgICAgID8gbWlnaHQgYmUgMS4wMTEy
eCBzbG93ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtc3VtICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi42MjY1Ky0wLjA0NzIgICAgID8gICAgICAyLjY1NTArLTAuMTE0NSAgICAgICAgPyBt
aWdodCBiZSAxLjAxMDl4IHNsb3dlcgogICBhcnJheS13aXRoLWludDMyLWFkZC1zdWIgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0LjMzNjkrLTAuMzQxNSAgICAgICAgICAgIDQuMjE0MystMC4x
MDQ3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5MXggZmFzdGVyCiAgIGFycmF5LXdpdGgtaW50MzIt
b3ItZG91YmxlLXN1bSAgICAgICAgICAgICAgICAgICAgIDIuNjI5MystMC4wMjgzICAgICA/ICAg
ICAgMi43MDczKy0wLjA4ODIgICAgICAgID8gbWlnaHQgYmUgMS4wMjk3eCBzbG93ZXIKICAgQXJy
YXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbGFyZ2UtbG9uZy1saXZlZCAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4LjA3NjYrLTAuNzcyMiAg
ICAgICAgICAgMzcuNTU4MystMC41OTQ0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHggZmFzdGVy
CiAgIEFycmF5QnVmZmVyLURhdGFWaWV3LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgMTUu
Mjk0MistMS40Nzg1ICAgICAgICAgICAxNC43OTY4Ky0xLjc1MjYgICAgICAgICAgbWlnaHQgYmUg
MS4wMzM2eCBmYXN0ZXIKICAgQXJyYXlCdWZmZXItSW50MzJBcnJheS1ieXRlT2Zmc2V0ICAgICAg
ICAgICAgICAgICAgMy41MTA1Ky0wLjAyNjcgICAgID8gICAgICAzLjU2MjYrLTAuMTAzNiAgICAg
ICAgPyBtaWdodCBiZSAxLjAxNDh4IHNsb3dlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxs
b2MtbGFyZ2UtbG9uZy1saXZlZCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDM2LjMwMDcrLTAuNDk3NSAgICAgICAgICAgMzYuMjQ4MystMC4z
NDQzICAgICAgICAKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxvbmctbGl2ZWQtYnVm
ZmVyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjAuMDg1NCstMC45NDcxICAgICA/ICAgICAyMC4zNDU4Ky0xLjU1MDggICAgICAgID8gbWln
aHQgYmUgMS4wMTMweCBzbG93ZXIKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxvbmct
bGl2ZWQgICAgICAgICAgICAxNC42MDQ1Ky0xLjMyMTggICAgICAgICAgIDEzLjkyODErLTAuNDUy
NSAgICAgICAgICBtaWdodCBiZSAxLjA0ODZ4IGZhc3RlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJy
YXktYWxsb2MgICAgICAgICAgICAgICAgICAgICAgIDEzLjMyNTIrLTAuOTE1NCAgICAgICAgICAg
MTIuOTIwMistMS4yMzcwICAgICAgICAgIG1pZ2h0IGJlIDEuMDMxM3ggZmFzdGVyCiAgIGFycm93
ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1jb25zdHJ1Y3RvciAgICAgICAgICAgMjIuMzcyOCstMC4z
MTkzICAgICA/ICAgICAyMi40NDQyKy0wLjU2NzggICAgICAgID8KICAgYXJyb3dmdW5jdGlvbi1j
YWxsLWluLWNsYXNzLW1ldGhvZCAgICAgICAgICAgICAgICAxMC4wMTU0Ky0wLjQwMzIgICAgID8g
ICAgIDEwLjI5NTYrLTAuNjE2OCAgICAgICAgPyBtaWdodCBiZSAxLjAyODB4IHNsb3dlcgogICBh
cnJvd2Z1bmN0aW9uLWNhbGwtaW4tZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICA5Ljk0MjYr
LTAuNzg5MSAgICAgICAgICAgIDkuNDU2NystMC4zNjU1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUx
NHggZmFzdGVyCiAgIGFycm93ZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDkuMDU3MistMC41MDI4ICAgICAgICAgICAgOC44MDQ3Ky0wLjExNDkgICAgICAgICAg
bWlnaHQgYmUgMS4wMjg3eCBmYXN0ZXIKICAgYXNtanNfYm9vbF9idWcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy42MjUxKy0wLjUxODcgICAgICAgICAgICA3LjQ1MzkrLTAu
MzIwNCAgICAgICAgICBtaWdodCBiZSAxLjAyMzB4IGZhc3RlcgogICBhc3NpZ24tY3VzdG9tLXNl
dHRlci1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAyLjY3NTIrLTAuMTQ5MyAgICAgICAg
ICAgIDIuNTk5MSstMC4wNjc2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5M3ggZmFzdGVyCiAgIGFz
c2lnbi1jdXN0b20tc2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTM5MCst
MC4xMjYwICAgICAgICAgICAgMy44NzM3Ky0wLjA2MzggICAgICAgICAgbWlnaHQgYmUgMS4wMTY4
eCBmYXN0ZXIKICAgYmFzaWMtc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNi44NTQyKy0wLjU1OTQgICAgID8gICAgICA3LjIwMjgrLTAuODA1OCAgICAgICAgPyBt
aWdodCBiZSAxLjA1MDl4IHNsb3dlcgogICBiaWctaW50LW11bCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjE0ODQrLTAuMjkyNiAgICAgICAgICAgIDMuMTA3OSstMC4z
MTIxICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzMXggZmFzdGVyCiAgIGJpZ3N3aXRjaC1pbmRpcmVj
dC1zeW1ib2wtb3ItdW5kZWZpbmVkICAgICAgICAgICAgNTcuMjMzMistMy4yOTE5ICAgICAgICAg
ICA1Ni45NTM4Ky0yLjI0NTQgICAgICAgIAogICBiaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAg
ICAgICAgICAgICAgICAgICAgICAgIDY0LjUxNzcrLTAuMjMzNCAgICAgPyAgICAgNjUuMTAwMSst
MS41Mzk3ICAgICAgICA/CiAgIGJpZ3N3aXRjaC1pbmRpcmVjdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzguMDk4MystMC40MzAzICAgICA/ICAgICAzOC40NDgwKy0xLjE4MTEgICAg
ICAgID8KICAgYmlnc3dpdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMS4wNTIwKy0wLjk5MzkgICAgICAgICAgIDIwLjkxNzcrLTAuNTEyMSAgICAgICAgCiAgIGJv
b2xlYW4tdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuODAwOSst
MC4xNTcyICAgICAgICAgICAgMi43MzI0Ky0wLjAxNTggICAgICAgICAgbWlnaHQgYmUgMS4wMjUx
eCBmYXN0ZXIKICAgYm91bmQtZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOS4zODk0Ky0wLjEwNjMgICAgID8gICAgICA5LjUwODMrLTAuNTUwNSAgICAgICAgPyBt
aWdodCBiZSAxLjAxMjd4IHNsb3dlcgogICBib3VuZC1mdW5jdGlvbi1jb25zdHJ1Y3Rpb24tcGVy
Zm9ybWFuY2UgICAgICAgICAyMzQwLjQzODMrLTI3Ljg0NTYgICAgPyAgIDIzNjYuOTk2OSstMTku
NjY0NyAgICAgICA/IG1pZ2h0IGJlIDEuMDExM3ggc2xvd2VyCiAgIGJyYW5jaC1mb2xkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjU2NSstMC4yNjkxICAgICAgICAg
ICAgMy41NTQ2Ky0wLjAyNjQgICAgICAgICAgbWlnaHQgYmUgMS4wMjg3eCBmYXN0ZXIKICAgYnJh
bmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgOS43ODMwKy0w
Ljc4NDUgICAgID8gICAgIDEwLjAyMDIrLTAuNTk5MCAgICAgICAgPyBtaWdodCBiZSAxLjAyNDJ4
IHNsb3dlcgogICBidWctMTUzNDMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjAyODIrLTAuMjg0MSAgICAgPyAgICAgIDMuMTgxNSstMC40NTYzICAgICAgICA/IG1p
Z2h0IGJlIDEuMDUwNnggc2xvd2VyCiAgIGJ1aWxkLWxhcmdlLW9iamVjdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjMuMjk5OSstMC4yMDQ4ICAgICA/ICAgICAyMy42NTcxKy0wLjQ1
OTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTUzeCBzbG93ZXIKICAgYnktdmFsLWdlbmVyaWMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45OTMwKy0wLjI3MjkgICAgICAgICAg
ICAzLjk3NzArLTAuNDQ2MyAgICAgICAgCiAgIGNhbGwtb3Itbm90LWNhbGwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjkuMzgwMCstMC4yNTk0ICAgICA/ICAgICAzMC4yMTc5Ky0x
LjMzNDYgICAgICAgID8gbWlnaHQgYmUgMS4wMjg1eCBzbG93ZXIKICAgY2FsbC1zcHJlYWQtYXBw
bHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi4yOTE3Ky0wLjIzMTYgICAgID8g
ICAgIDIyLjc0NDgrLTAuNDM3MSAgICAgICAgPyBtaWdodCBiZSAxLjAyMDN4IHNsb3dlcgogICBj
YWxsLXNwcmVhZC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjk0MTcr
LTEuNDg1MiAgICAgICAgICAgMjMuNjk5MCstMC45MDI4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEw
MnggZmFzdGVyCiAgIGNhcHR1cmVkLWFzc2lnbm1lbnRzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMzYyOCstMC4wMzYzICAgICAgICAgICAgMC4zNDk3Ky0wLjAwODYgICAgICAgICAg
bWlnaHQgYmUgMS4wMzc1eCBmYXN0ZXIKICAgY2FzdC1pbnQtdG8tZG91YmxlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC43MzE4Ky0wLjE5NTkgICAgICAgICAgICA0LjYyNTgrLTAu
MDcwNSAgICAgICAgICBtaWdodCBiZSAxLjAyMjl4IGZhc3RlcgogICBjZWxsLWFyZ3VtZW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjU4NzArLTAuMDQxNiAgICAgPyAg
ICAgIDIuNjUwNystMC4xNzYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0Nnggc2xvd2VyCiAgIGNm
Zy1zaW1wbGlmeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjYxOCst
MC4wNDUwICAgICA/ICAgICAgMi42OTAwKy0wLjA1MTggICAgICAgID8gbWlnaHQgYmUgMS4wMTA2
eCBzbG93ZXIKICAgY2hhaW4tZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMC4xMzA3Ky0wLjIyMTQgICAgID8gICAgIDEwLjE4ODYrLTAuMTkxOSAgICAgICAgPwog
ICBjbXBlcS1vYmotdG8tb2JqLW90aGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjIz
NzgrLTAuMzAyMCAgICAgICAgICAgIDguMTUyNistMC4zNTUzICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEwNHggZmFzdGVyCiAgIGNvbmNhdC1hcHBlbmQtb25lICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYuNTY0NCstMC4zODY4ICAgICAgICAgICAgNi40MTgzKy0wLjA2NTUgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjI4eCBmYXN0ZXIKICAgY29uc3RhbnQtdGVzdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC41NjUxKy0wLjM4ODUgICAgICAgICAgICA0LjUxODAr
LTAuMjUyMSAgICAgICAgICBtaWdodCBiZSAxLjAxMDR4IGZhc3RlcgogICBjcmVhdGUtbG90cy1v
Zi1mdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljk1NTIrLTAuNTg3NiAgICAg
ICAgICAgIDUuOTQwMistMC4zNTU1ICAgICAgICAKICAgY3NlLW5ldy1hcnJheS1idWZmZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44OTMyKy0wLjA0NDAgICAgID8gICAgICAxLjk0
ODYrLTAuMDY3NiAgICAgICAgPyBtaWdodCBiZSAxLjAyOTN4IHNsb3dlcgogICBjc2UtbmV3LWFy
cmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjAzNzMrLTAuMDMzNSAg
ICAgICAgICAgIDEuOTYzNystMC4wNjgyICAgICAgICAgIG1pZ2h0IGJlIDEuMDM3NXggZmFzdGVy
CiAgIGN1c3RvbS1zZXR0ZXItZ2V0dGVyLWFzLXB1dC1nZXQtYnktaWQgICAgICAgICAgICAgIDAu
NDkwNSstMC4wODI3ICAgICA/ICAgICAgMC41MDYwKy0wLjA1NDkgICAgICAgID8gbWlnaHQgYmUg
MS4wMzE2eCBzbG93ZXIKICAgRGF0YVZpZXctY3VzdG9tLXByb3BlcnRpZXMgICAgICAgICAgICAg
ICAgICAgICAgICA0Mi43NTkwKy0xLjA4OTIgICAgICAgICAgIDQyLjU1MTkrLTAuNDUyMSAgICAg
ICAgCiAgIGRlbGF5LXRlYXItb2ZmLWFyZ3VtZW50cy1zdHJpY3Rtb2RlICAgICAgICAgICAgICAg
IDMuOTg5NystMC4zMzQxICAgICA/ICAgICAgNC43NjQ4Ky0wLjU3MjQgICAgICAgID8gbWlnaHQg
YmUgMS4xOTQzeCBzbG93ZXIKICAgZGVsdGFibHVlLWZvci1vZiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyOS41MzI1Ky0wLjYxNzcgICAgICAgICAgIDI4Ljk3ODQrLTAuNzI4MiAg
ICAgICAgICBtaWdodCBiZSAxLjAxOTF4IGZhc3RlcgogICBkZWx0YWJsdWUtdmFyYXJncyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5LjE2MTcrLTAuNjgwMiAgICAgICAgICAgMjgu
MDU3MCstMS4wMjM0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5NHggZmFzdGVyCiAgIGRlbnNlLXNl
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3MDQuNTIxOSstNjIuNTQx
NiAgICAgICAgMTY5MS40NDkxKy0zMC44NDcyICAgICAgIAogICBkZXN0cnVjdHVyaW5nLWFyZ3Vt
ZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2LjI0OTgrLTAuNDA3MiAgICAgICAgICAg
MzUuODAwOSstMC4yMzIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyNXggZmFzdGVyCiAgIGRlc3Ry
dWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDMyMistMC4wMjU0
ICAgICA/ICAgICAgMC40MzcxKy0wLjAzOTUgICAgICAgID8gbWlnaHQgYmUgMS4wMTE0eCBzbG93
ZXIKICAgZGVzdHJ1Y3R1cmluZy1zd2FwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NC4yNDc4Ky0wLjA4MTYgICAgID8gICAgICA0LjM5OTgrLTAuMzE1MSAgICAgICAgPyBtaWdodCBi
ZSAxLjAzNTh4IHNsb3dlcgogICBkaXJlY3QtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjk5MTkrLTAuMDQyNCAgICAgPyAgICAgIDEuMDY4NCstMC4wNzQ1ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDc3MXggc2xvd2VyCiAgIGRpcmVjdC1hcmd1bWVudHMtbGVuZ3Ro
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzI2MistMC40MDc1ICAgICAgICAgICAgNi4y
Mzk0Ky0wLjI5MDIgICAgICAgICAgbWlnaHQgYmUgMS4wMTM5eCBmYXN0ZXIKICAgZGlyZWN0LWFy
Z3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aCAgICAgICAgICAgICAgICAgNi4yNjY4Ky0wLjM0Njkg
ICAgID8gICAgICA2LjQwNjkrLTAuMzM5OCAgICAgICAgPyBtaWdodCBiZSAxLjAyMjR4IHNsb3dl
cgogICBkaXJlY3QtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNTA1Mist
MC4xMDIxICAgICA/ICAgICAgNi42NDI5Ky0wLjI3NjEgICAgICAgID8gbWlnaHQgYmUgMS4wMjEy
eCBzbG93ZXIKICAgZGl2LWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy42OTQyKy0wLjA1NDkgICAgICAgICAgICAzLjY1NTMrLTAuMDUzNSAgICAgICAgICBt
aWdodCBiZSAxLjAxMDZ4IGZhc3RlcgogICBkaXYtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA2LjgzNjUrLTAuMzUzMyAgICAgICAgICAgIDYuNzgyOCstMC4x
NDQ4ICAgICAgICAKICAgZG91YmxlLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAg
ICAgICAgICAgMy43MzEyKy0wLjIwMzYgICAgID8gICAgICAzLjgyOTcrLTAuMjA5NSAgICAgICAg
PyBtaWdodCBiZSAxLjAyNjR4IHNsb3dlcgogICBkb3VibGUtcG9sbHV0aW9uLWdldGJ5dmFsICAg
ICAgICAgICAgICAgICAgICAgICAgICA2LjU2NTQrLTAuMTQ3OCAgICAgPyAgICAgIDYuNTk0Myst
MC4xOTAwICAgICAgICA/CiAgIGRvdWJsZS1wb2xsdXRpb24tcHV0YnlvZmZzZXQgICAgICAgICAg
ICAgICAgICAgICAgIDMuMTk4MistMC4xNTcyICAgICAgICAgICAgMy4xMDMxKy0wLjAzNTQgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzA2eCBmYXN0ZXIKICAgZG91YmxlLXJlYWwtdXNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyNS41MDk4Ky00LjQ5MzQgICAgICAgICAgIDI1LjIw
OTMrLTMuNjg3NSAgICAgICAgICBtaWdodCBiZSAxLjAxMTl4IGZhc3RlcgogICBkb3VibGUtdG8t
aW50MzItdHlwZWQtYXJyYXktbm8taW5saW5lICAgICAgICAgICAgICAyLjE5OTQrLTAuMDc1OCAg
ICAgPyAgICAgIDIuMjE2MSstMC4wNTAxICAgICAgICA/CiAgIGRvdWJsZS10by1pbnQzMi10eXBl
ZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgIDIuMTQ4NistMC4xMzc0ICAgICAgICAgICAg
Mi4wNzc0Ky0wLjA4NDAgICAgICAgICAgbWlnaHQgYmUgMS4wMzQzeCBmYXN0ZXIKICAgZG91Ymxl
LXRvLXVpbnQzMi10eXBlZC1hcnJheS1uby1pbmxpbmUgICAgICAgICAgICAgMi4zMDM3Ky0wLjA5
NTcgICAgID8gICAgICAyLjQxNTkrLTAuMzAwOCAgICAgICAgPyBtaWdodCBiZSAxLjA0ODd4IHNs
b3dlcgogICBkb3VibGUtdG8tdWludDMyLXR5cGVkLWFycmF5ICAgICAgICAgICAgICAgICAgICAg
ICAyLjA5ODkrLTAuMDY0NiAgICAgPyAgICAgIDIuMTI3NystMC4wNjc0ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDEzN3ggc2xvd2VyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtZGFnICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTcuMjM2MistMC40NjYxICAgICAgICAgICAxNi43ODA2Ky0wLjc5OTEg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjcxeCBmYXN0ZXIKICAgZWxpZGFibGUtbmV3LW9iamVjdC1y
b2ZsY29wdGVyICAgICAgICAgICAgICAgICAgICAxNC45MTIyKy0wLjU4NTIgICAgID8gICAgIDE0
LjkzMzgrLTAuMzg3MiAgICAgICAgPwogICBlbGlkYWJsZS1uZXctb2JqZWN0LXRoZW4tY2FsbCAg
ICAgICAgICAgICAgICAgICAgIDE2LjMwNTArLTEuMTc3MCAgICAgPyAgICAgMTYuNTY5NystMS40
NzI4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2Mnggc2xvd2VyCiAgIGVsaWRhYmxlLW5ldy1vYmpl
Y3QtdHJlZSAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuMTE0MystMC44NjkzICAgICA/ICAg
ICAxNi4xMTQ5Ky0xLjA0NDggICAgICAgID8KICAgZW1wdHktc3RyaW5nLXBsdXMtaW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC4zMjQyKy0wLjA4NjYgICAgID8gICAgICA0LjU4NTYr
LTAuMzAwNSAgICAgICAgPyBtaWdodCBiZSAxLjA2MDV4IHNsb3dlcgogICBlbXNjcmlwdGVuLWN1
YmUyaGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjk3ODErLTAuNzQwMCAgICAg
PyAgICAgMjIuMTE4MCstMC40Mjk1ICAgICAgICA/CiAgIGV2YWwtY29tcHV0ZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuMzk1MistMS42ODAwICAgICA/ICAgICAyNS41
MjEyKy0yLjAzOTMgICAgICAgID8KICAgZXZhbC1ub3QtZXZhbC1jb21wdXRlLWFyZ3MgICAgICAg
ICAgICAgICAgICAgICAgICAyNC40NDg3Ky0yLjExNTcgICAgID8gICAgIDI0LjY3NzYrLTIuMjA5
NSAgICAgICAgPwogICBldmFsLW5vdC1ldmFsLWNvbXB1dGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIzLjEzMjYrLTEuNDkyMCAgICAgPyAgICAgMjMuMTYyNSstMS4yNTk0ICAgICAgICA/
CiAgIGV4aXQtbGVuZ3RoLW9uLXBsYWluLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgIDgu
OTE1NSstMC42MjAxICAgICA/ICAgICAgOC45NDAyKy0wLjM2MDYgICAgICAgID8KICAgZXh0ZXJu
YWwtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgMS4wOTAzKy0wLjA3
NjUgICAgICAgICAgICAxLjA3MTUrLTAuMDY4OCAgICAgICAgICBtaWdodCBiZSAxLjAxNzZ4IGZh
c3RlcgogICBleHRlcm5hbC1hcmd1bWVudHMtcHV0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAg
ICAyLjA5MDIrLTAuMTM1MSAgICAgPyAgICAgIDIuMTUxMystMC4yNDY1ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDI5Mnggc2xvd2VyCiAgIGZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UtdmFyLWluZGV4
ICAgICAgICAgICAgICAgIDEuNDg0OCstMC4yMDE1ICAgICAgICAgICAgMS40NTczKy0wLjA2MTkg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTg5eCBmYXN0ZXIKICAgZml4ZWQtdHlwZWQtYXJyYXktc3Rv
cmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNDYxKy0wLjA2NjAgICAgID8gICAgICAx
LjIzMzcrLTAuMTQ4MyAgICAgICAgPyBtaWdodCBiZSAxLjA3NjR4IHNsb3dlcgogICBGbG9hdDMy
QXJyYXktbWF0cml4LW11bHQgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjcwNjgrLTAuMjg1
NiAgICAgPyAgICAgIDQuNzA5NistMC4yMjk1ICAgICAgICA/CiAgIEZsb2F0MzJBcnJheS10by1G
bG9hdDY0QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgMzkuNTU4NystMC43MTc2ICAgICA/ICAg
ICAzOS45MjA2Ky0wLjkyMTcgICAgICAgID8KICAgRmxvYXQ2NEFycmF5LWFsbG9jLWxvbmctbGl2
ZWQgICAgICAgICAgICAgICAgICAgICA1MC4wNzYxKy0yLjQ1MDcgICAgID8gICAgIDUxLjYyMjIr
LTEuMDA4NiAgICAgICAgPyBtaWdodCBiZSAxLjAzMDl4IHNsb3dlcgogICBGbG9hdDY0QXJyYXkt
dG8tSW50MTZBcnJheS1zZXQgICAgICAgICAgICAgICAgICAgIDQ0LjA5NzArLTAuOTI1MCAgICAg
PyAgICAgNDQuMjE3MistMS40NTYxICAgICAgICA/CiAgIGZvbGQtZG91YmxlLXRvLWludCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuMTYwMystMC42ODk0ICAgICA/ICAgICAxMi40
NzAxKy0xLjE5MTQgICAgICAgID8gbWlnaHQgYmUgMS4wMjU1eCBzbG93ZXIKICAgZm9sZC1nZXQt
YnktaWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldC1yYXJlLWludCAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjE4MjUrLTEuODYyNiAgICAg
PyAgICAgIDguMzAyNystMS4wMDcwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0N3ggc2xvd2VyCiAg
IGZvbGQtZ2V0LWJ5LWlkLXRvLW11bHRpLWdldC1ieS1vZmZzZXQgICAgICAgICAgICAgIDUuOTYz
MSstMC4xNDQ4ICAgICA/ICAgICAgNS45Nzk0Ky0wLjA0NzggICAgICAgID8KICAgZm9sZC1tdWx0
aS1nZXQtYnktb2Zmc2V0LXRvLWdldC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4xNzMzKy0wLjIwNzAgICAgID8gICAg
ICA0LjE5NjUrLTAuMTA4NiAgICAgICAgPwogICBmb2xkLW11bHRpLWdldC1ieS1vZmZzZXQtdG8t
cG9seS1nZXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuMjA1MCstMC4yNzE1ICAgICAgICAgICAgNC4wNDQxKy0wLjI1
NDYgICAgICAgICAgbWlnaHQgYmUgMS4wMzk4eCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnkt
b2Zmc2V0LXRvLXBvbHktcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjM4NTYrLTIuMTEyNSAgICAgICAgICAgIDQu
MjE5MistMC4yMzY4ICAgICAgICAgIG1pZ2h0IGJlIDEuMjc2NXggZmFzdGVyCiAgIGZvbGQtbXVs
dGktcHV0LWJ5LW9mZnNldC10by1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDM3NystMC4yNDEwICAgICAgICAg
ICAgMy4yODI1Ky0wLjA0MzUgICAgICAgICAgbWlnaHQgYmUgMS4wNDczeCBmYXN0ZXIKICAgZm9s
ZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRvLXJlcGxhY2Utb3ItdHJhbnNpdGlvbi1wdXQtYnktb2Zm
c2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDYuMjU0MCstMC4yOTk3ICAgICAgICAgICAgNi4yMzM4Ky0wLjIzMjUgICAgICAgIAogICBm
b2xkLXB1dC1ieS1pZC10by1tdWx0aS1wdXQtYnktb2Zmc2V0ICAgICAgICAgICAgICA4Ljk2MDkr
LTIuMjM4NCAgICAgPyAgICAgIDkuODM5NSstMS44NjY3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk4
MHggc2xvd2VyCiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN0cmluZy10by1tdWx0aS1wdXQtYnkt
b2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDcuMzI4MSstMS41Mzg3ICAgICAgICAgICAgNi44MDUzKy0wLjQwNzYgICAgICAgICAg
bWlnaHQgYmUgMS4wNzY4eCBmYXN0ZXIKICAgZm9sZC1wdXQtYnktdmFsLXdpdGgtc3ltYm9sLXRv
LW11bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy41ODExKy0xLjY5MjMgICAgICAgICAgICA2LjY3ODkrLTAu
MDg2MyAgICAgICAgICBtaWdodCBiZSAxLjEzNTF4IGZhc3RlcgogICBmb2xkLXB1dC1zdHJ1Y3R1
cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjAzOTYrLTEuNTc4NyAgICAgICAg
ICAgIDMuMjgyNistMC4yODY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMjMwNnggZmFzdGVyCiAgIGZv
ci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMgICAgICAgICAgICAgICAgICAgICAgIDguNTgxOSst
MC40MTA3ICAgICAgICAgICAgOC4yMDgxKy0wLjQ2MjAgICAgICAgICAgbWlnaHQgYmUgMS4wNDU1
eCBmYXN0ZXIKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXkta2V5cyAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy44MDg4Ky0wLjE3NDcgICAgID8gICAgICAzLjg1NDYrLTAuMjU5OCAgICAgICAgPyBt
aWdodCBiZSAxLjAxMjB4IHNsb3dlcgogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS12YWx1ZXMgICAg
ICAgICAgICAgICAgICAgICAgICAzLjU4OTgrLTAuMTE0NyAgICAgICAgICAgIDMuNTg5NCstMC4y
MTQ3ICAgICAgICAKICAgZnJlZXplLWFuZC1kby13b3JrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMi41ODUwKy0wLjgyNjIgICAgID8gICAgIDEyLjkwMzIrLTAuOTQyNiAgICAgICAg
PyBtaWdodCBiZSAxLjAyNTN4IHNsb3dlcgogICBmcm91bmQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5LjUxNzcrLTAuNDM1OSAgICAgICAgICAgIDkuNTE1MCst
MC41NjE3ICAgICAgICAKICAgZnRsLWxpYnJhcnktaW5saW5pbmctZGF0YXZpZXcgICAgICAgICAg
ICAgICAgICAgICA1Ny4zMjM1Ky0wLjE0MTYgICAgID8gICAgIDU5LjExNjMrLTIuMjUyMyAgICAg
ICAgPyBtaWdodCBiZSAxLjAzMTN4IHNsb3dlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIyLjMyNjgrLTAuOTY1NCAgICAgICAgICAgMjIuMjU4
MystMS42Njc3ICAgICAgICAKICAgZnRsLXBvbHltb3JwaGljLWJpdGFuZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEyNy4yOTk0Ky0xLjI4NjUgICAgIF4gICAgMTI0LjI4MTIrLTEuMDM4OSAg
ICAgICAgXiBkZWZpbml0ZWx5IDEuMDI0M3ggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1iaXRv
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjguNjEzMCstMi41NTU5ICAgICAgICAgIDEy
Ny4wNDUxKy0xLjgyOTUgICAgICAgICAgbWlnaHQgYmUgMS4wMTIzeCBmYXN0ZXIKICAgZnRsLXBv
bHltb3JwaGljLWJpdHhvciAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOS43Mjg2Ky0yLjMw
MzYgICAgICAgICAgMTI2LjM0ODUrLTQuMDQxOCAgICAgICAgICBtaWdodCBiZSAxLjAyNjh4IGZh
c3RlcgogICBmdGwtcG9seW1vcnBoaWMtZGl2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDQxLjc4MTErLTYuNjc1OSAgICAgICAgICA0MzguNTU4MystNi4wMzkzICAgICAgICAKICAgZnRs
LXBvbHltb3JwaGljLWxzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1OC40MjQ1Ky02
LjAwNzQgICAgICAgICAgMTUyLjQxNTArLTEuOTc5MyAgICAgICAgICBtaWdodCBiZSAxLjAzOTR4
IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtbXVsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjI1Ljg4NzUrLTIuODExOSAgICAgICAgICAyMjUuODQyNSstNC4yNjM1ICAgICAgICAKICAg
ZnRsLXBvbHltb3JwaGljLXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1My4zMDU1
Ky0xLjg4MjIgICAgICAgICAgMTUyLjk1MTcrLTQuOTI4NiAgICAgICAgCiAgIGZ0bC1wb2x5bW9y
cGhpYy1TdHJpbmdGcm9tQ2hhckNvZGUgICAgICAgICAgICAgICAgNDEuNjc0MystMi40NDI5ICAg
ICAgICAgICA0MS4xOTAzKy0xLjk3MTYgICAgICAgICAgbWlnaHQgYmUgMS4wMTE3eCBmYXN0ZXIK
ICAgZnRsLXBvbHltb3JwaGljLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0Ny4y
NzEwKy0yLjY5NzkgICAgID8gICAgMTQ5LjMzMzIrLTQuMjIxMyAgICAgICAgPyBtaWdodCBiZSAx
LjAxNDB4IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtdXJzaGlmdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTY3LjUyNzMrLTQuMTk4NCAgICAgICAgICAxNjQuOTcwNSstNC40NTA5ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDE1NXggZmFzdGVyCiAgIGZ1bmN0aW9uLWJpbmQtaW5saW5pbmcgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0MzguNTIxMCstNy4xNzgxICAgICA/ICAgIDQzOS42OTQ5
Ky0yLjYwODUgICAgICAgID8KICAgZnVuY3Rpb24tYmluZC1uby1pbmxpbmluZyAgICAgICAgICAg
ICAgICAgICAgICAgIDQ0MS4yNDAzKy00LjQ1MTAgICAgID8gICAgNDQxLjg4NTMrLTEuOTQzMSAg
ICAgICAgPwogICBmdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA5Ljc3MjcrLTAuMDQ4NCAgICAgPyAgICAgMTAuMDYzNystMC4zMzU1ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDI5OHggc2xvd2VyCiAgIGZ1bmN0aW9uLWRvdC1hcHBseSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuMDE2MCstMC4xMjMxICAgICAgICAgICAgMS45MzI5Ky0wLjA0
NDAgICAgICAgICAgbWlnaHQgYmUgMS4wNDMweCBmYXN0ZXIKICAgZnVuY3Rpb24tdGVzdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40ODA4Ky0wLjA0NzggICAgID8gICAg
ICAyLjU4MjArLTAuMjg2NiAgICAgICAgPyBtaWdodCBiZSAxLjA0MDh4IHNsb3dlcgogICBmdW5j
dGlvbi13aXRoLWV2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3LjA4MzUrLTAu
NjMyMiAgICAgXiAgICAgMzUuNDg3NSstMC4yMDcyICAgICAgICBeIGRlZmluaXRlbHkgMS4wNDUw
eCBmYXN0ZXIKICAgZ2NzZS1wb2x5LWdldC1sZXNzLW9idmlvdXMgICAgICAgICAgICAgICAgICAg
ICAgICAxNC40OTAwKy0wLjQ1NDAgICAgICAgICAgIDE0LjQyMTQrLTAuMzk1OSAgICAgICAgCiAg
IGdjc2UtcG9seS1nZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuMTA2
MCstMC4yNjIzICAgICAgICAgICAxNC4wOTE2Ky0wLjE2NDYgICAgICAgIAogICBnY3NlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjI1OTgrLTAuMDU3MiAg
ICAgICAgICAgIDMuMjI2OCstMC4wNjE1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwMnggZmFzdGVy
CiAgIGdlbmVyYXRvci1jcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
NzQ0MistMC4wNDA2ICAgICA/ICAgICAgMC43NTQzKy0wLjA2NDcgICAgICAgID8gbWlnaHQgYmUg
MS4wMTM2eCBzbG93ZXIKICAgZ2VuZXJhdG9yLWZpYiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzMC4xMjEzKy0wLjQxNjMgICAgID8gICAgIDMwLjg3MzYrLTEuNjkzNyAgICAg
ICAgPyBtaWdodCBiZSAxLjAyNTB4IHNsb3dlcgogICBnZW5lcmF0b3ItZnVuY3Rpb24tY3JlYXRl
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQ4NDkrLTAuNDc5MiAgICAgPyAgICAgIDMuNDkw
NCstMC4xNTM5ICAgICAgICA/CiAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAg
ICAgICAgICAgICAgICAgIDQuMzIxMCstMC4wNDI1ICAgICA/ICAgICAgNC4zOTMzKy0wLjA4NDQg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTY3eCBzbG93ZXIKICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJh
bC10eXBlcyAgICAgICAgICAgICAgICAgICAgIDEwMi44ODc4Ky05LjE1MTYgICAgICAgICAgMTAw
LjIyNTYrLTcuODM0OSAgICAgICAgICBtaWdodCBiZSAxLjAyNjZ4IGZhc3RlcgogICBnZXQtYnkt
aWQtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yNDQ1Ky0w
LjA3MjYgICAgID8gICAgICAyLjMwOTcrLTAuMTk1NiAgICAgICAgPyBtaWdodCBiZSAxLjAyOTB4
IHNsb3dlcgogICBnZXQtYnktaWQtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlv
biAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0LjIwMzgrLTAuMTMwNSAgICAgICAgICAgIDQuMTI4MystMC4wOTIxICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE4M3ggZmFzdGVyCiAgIGdldC1ieS1pZC1jaGFpbi1mcm9tLXRyeS1ibG9jayAgICAg
ICAgICAgICAgICAgICAgIDEuODUxNCstMC4wNjMyICAgICAgICAgICAgMS43OTQ5Ky0wLjA2NzIg
ICAgICAgICAgbWlnaHQgYmUgMS4wMzE1eCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLWNoZWNrLXN0cnVj
dHVyZS1lbGltaW5hdGlvbiAgICAgICAgICAgICAgMi44MTIzKy0wLjEwNzEgICAgICAgICAgICAy
Ljc5NTUrLTAuMDc5OCAgICAgICAgCiAgIGdldC1ieS1pZC1wcm90by1vci1zZWxmICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDkuNDk5NystMC4zMzAzICAgICAgICAgICAgOS4zMjEzKy0wLjMw
MzEgICAgICAgICAgbWlnaHQgYmUgMS4wMTkxeCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLXF1YWRtb3Jw
aGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42NzA5Ky0wLjE4NDcgICAg
ICAgICAgICAyLjYyMzgrLTAuMDQyOSAgICAgICAgICBtaWdodCBiZSAxLjAxNzl4IGZhc3Rlcgog
ICBnZXQtYnktaWQtc2VsZi1vci1wcm90byAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjQx
MTMrLTAuMzkzNyAgICAgPyAgICAgIDkuNDkzMistMC41MTQ1ICAgICAgICA/CiAgIGdldC1ieS12
YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjA1MCstMC4wMjI0
ICAgICA/ICAgICAgMy45NTY3Ky0wLjQ4NTUgICAgICAgID8gbWlnaHQgYmUgMS4wOTc2eCBzbG93
ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVs
aW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjk4OTErLTAuMDU2NSAgICAgPyAgICAgIDMuMDUyMCstMC4xMzg1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxMHggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJp
bmctYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljc4MTArLTAuMTMwOSAg
ICAgPyAgICAgIDUuOTYzOSstMC4zNDg3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxNnggc2xvd2Vy
CiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctY2hhaW4tZnJvbS10cnktYmxvY2sgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45NjkyKy0w
LjI1MTEgICAgICAgICAgICAxLjk0NzYrLTAuMDc1MyAgICAgICAgICBtaWdodCBiZSAxLjAxMTF4
IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5h
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjMzNDkrLTAuMjU3MyAgICAgPyAgICAgIDUuNTIwMSstMC4zNTA1ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDM0N3ggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctcHJvdG8tb3It
c2VsZiAgICAgICAgICAgICAgIDguODM1OCstMC42MjA2ICAgICAgICAgICAgOC42NTkwKy0wLjgx
OTUgICAgICAgICAgbWlnaHQgYmUgMS4wMjA0eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0
cmluZy1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzUx
NistMC4zMTc5ICAgICA/ICAgICAgMy43NjM4Ky0wLjIxNzkgICAgICAgID8KICAgZ2V0LWJ5LXZh
bC13aXRoLXN0cmluZy1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAgOC4zODk1Ky0wLjk0NDgg
ICAgID8gICAgICA4Ljk1ODQrLTAuNzcwMiAgICAgICAgPyBtaWdodCBiZSAxLjA2Nzh4IHNsb3dl
cgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxp
bWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuNjkxNystMC4yNzU1ICAgICAgICAgICAgMi41Nzc2Ky0wLjA3MTgg
ICAgICAgICAgbWlnaHQgYmUgMS4wNDQyeCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJv
bC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNDM2MistMC4yMDI0ICAg
ICA/ICAgICAgNy40Njg4Ky0wLjE1NjkgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJv
bC1jaGFpbi1mcm9tLXRyeS1ibG9jayAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjk0NDArLTAuMDkxNSAgICAgPyAgICAgIDIuMDExOSst
MC4yODkyICAgICAgICA/IG1pZ2h0IGJlIDEuMDM0OXggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0
aC1zeW1ib2wtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODUyMCstMC40MzA0ICAgICAg
ICAgICAgNS42NjMwKy0wLjE3NzAgICAgICAgICAgbWlnaHQgYmUgMS4wMzM0eCBmYXN0ZXIKICAg
Z2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1wcm90by1vci1zZWxmICAgICAgICAgICAgICAgOS4xOTQx
Ky0wLjY5NzEgICAgICAgICAgICA4LjU0MzkrLTEuMDA2NSAgICAgICAgICBtaWdodCBiZSAxLjA3
NjF4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXF1YWRtb3JwaGljLWNoZWNrLXN0
cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wMjgyKy0wLjA0NTcgICAgID8gICAgICAzLjE1
NTkrLTAuMTE5NyAgICAgICAgPyBtaWdodCBiZSAxLjA0MjJ4IHNsb3dlcgogICBnZXQtYnktdmFs
LXdpdGgtc3ltYm9sLXNlbGYtb3ItcHJvdG8gICAgICAgICAgICAgICA4LjU5MDMrLTAuODgzOSAg
ICAgPyAgICAgIDkuMDA4MCstMC43NDQ0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ4Nnggc2xvd2Vy
CiAgIGdldF9ieV92YWwtSW50MzJBcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEu
MjQ3OCstMC4xODgyICAgICAgICAgICAgMS4yNDY1Ky0wLjEyNjAgICAgICAgIAogICBnZXRfY2Fs
bGVlX21vbm9tb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjg2MjkrLTAuMDYx
MSAgICAgPyAgICAgIDEuODg2NystMC4xODM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyOHggc2xv
d2VyCiAgIGdldF9jYWxsZWVfcG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuNDc0MistMC4wODEyICAgICA/ICAgICAgMi42NjIzKy0wLjI3MjMgICAgICAgID8gbWlnaHQg
YmUgMS4wNzYweCBzbG93ZXIKICAgZ2V0dGVyLW5vLWFjdGl2YXRpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi44MDI3Ky0wLjEyNjAgICAgICAgICAgICAyLjgwMDIrLTAuMDM0OCAg
ICAgICAgCiAgIGdldHRlci1wcm90b3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQuNjY3NystMC4yODUyICAgICAgICAgICAgNC41MTQ0Ky0wLjA4NDkgICAgICAgICAgbWln
aHQgYmUgMS4wMzQweCBmYXN0ZXIKICAgZ2V0dGVyLXJpY2hhcmRzLXRyeS1jYXRjaCAgICAgICAg
ICAgICAgICAgICAgICAgIDc3Ny42MTg0Ky0yMS43MDIyICAgICAgICAgNzY4LjUzMDQrLTkuMzE4
OSAgICAgICAgICBtaWdodCBiZSAxLjAxMTh4IGZhc3RlcgogICBnZXR0ZXItcmljaGFyZHMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU3LjY4MjQrLTQuNjgwMyAgICAgPyAgICAg
NjEuMTM4MystMi41MTAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDU5OXggc2xvd2VyCiAgIGdldHRl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTYwNistMC4w
ODk3ICAgICA/ICAgICAgMy4wODc3Ky0wLjE4NDYgICAgICAgID8gbWlnaHQgYmUgMS4wNDMweCBz
bG93ZXIKICAgZ2xvYmFsLWlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOS45NjA3Ky0wLjEzMjggICAgID8gICAgIDEwLjEwNDgrLTAuNTgwMSAgICAgICAgPyBtaWdo
dCBiZSAxLjAxNDV4IHNsb3dlcgogICBnbG9iYWwtb2JqZWN0LWFjY2Vzcy13aXRoLW11dGF0aW5n
LXN0cnVjdHVyZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1LjA4MzArLTAuNDM2MiAgICAgPyAgICAgIDUuMDg2OSstMC41MDk4ICAgICAg
ICA/CiAgIGdsb2JhbC12YXItY29uc3QtaW5mZXItZmlyZS1mcm9tLW9wdCAgICAgICAgICAgICAg
IDAuNzkyMistMC4wNTY3ICAgICAgICAgICAgMC43NTIxKy0wLjAyNjIgICAgICAgICAgbWlnaHQg
YmUgMS4wNTM0eCBmYXN0ZXIKICAgZ2xvYmFsLXZhci1jb25zdC1pbmZlciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC42OTgyKy0wLjA0MDIgICAgID8gICAgICAwLjc1MTUrLTAuMjI5NCAg
ICAgICAgPyBtaWdodCBiZSAxLjA3NjN4IHNsb3dlcgogICBoYXJkLW92ZXJmbG93LWNoZWNrLWVx
dWFsICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjQ3MzArLTEuNTg2NyAgICAgICAgICAgMjIu
NDk1NystMC44ODIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQzNHggZmFzdGVyCiAgIGhhcmQtb3Zl
cmZsb3ctY2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuMjU5MistMS43OTU3
ICAgICAgICAgICAyMS45NTgyKy0wLjUyNDcgICAgICAgICAgbWlnaHQgYmUgMS4wNTkzeCBmYXN0
ZXIKICAgSGFzaE1hcC1wdXQtZ2V0LWl0ZXJhdGUta2V5cyAgICAgICAgICAgICAgICAgICAgICAy
MC44MTc1Ky0wLjM0MjEgICAgID8gICAgIDIyLjEzOTQrLTEuMjU5NyAgICAgICAgPyBtaWdodCBi
ZSAxLjA2MzV4IHNsb3dlcgogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIwLjc3MjQrLTEuMjgzMyAgICAgPyAgICAgMjEuMzg0OCstMS42NDMxICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDI5NXggc2xvd2VyCiAgIEhhc2hNYXAtc3RyaW5nLXB1dC1nZXQt
aXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgMjIuOTE5MSstMS44MjMxICAgICAgICAgICAyMi4z
NDMzKy0wLjE0MTMgICAgICAgICAgbWlnaHQgYmUgMS4wMjU4eCBmYXN0ZXIKICAgaG9pc3QtbWFr
ZS1yb3BlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41NTk5Ky0wLjE0MzAg
ICAgID8gICAgICAzLjU3NzcrLTAuMTgwOCAgICAgICAgPwogICBob2lzdC1wb2x5LWNoZWNrLXN0
cnVjdHVyZS1lZmZlY3RmdWwtbG9vcCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjE0MzMrLTAuNDQ0MiAgICAgICAgICAgIDIuOTcxMyst
MC4wODM0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU3OXggZmFzdGVyCiAgIGhvaXN0LXBvbHktY2hl
Y2stc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTMyNCstMC4xNzAwICAgICA/
ICAgICAgMi4yMjA4Ky0wLjI1OTYgICAgICAgID8gbWlnaHQgYmUgMS4wNDE1eCBzbG93ZXIKICAg
aW1wbGljaXQtYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJvbCAgICAgICAgICAgICAgICA0NS45MTAw
Ky0wLjM2OTggICAgICAgICAgIDQ1LjY3MjArLTAuMjk5MCAgICAgICAgCiAgIGltdWwtZG91Ymxl
LW9ubHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjUyMistMC4zODg5ICAg
ICA/ICAgICAgMy4yNTQ1Ky0wLjMzNDQgICAgICAgID8KICAgaW11bC1pbnQtb25seSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS40OTIzKy0wLjY0MzkgICAgID8gICAgICA1
LjU4MjArLTAuNjk1MiAgICAgICAgPyBtaWdodCBiZSAxLjAxNjN4IHNsb3dlcgogICBpbXVsLW1p
eGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjAzOTErLTAuMjI1
MyAgICAgPyAgICAgIDMuMTkyOCstMC4yMzIwICAgICAgICA/IG1pZ2h0IGJlIDEuMDUwNnggc2xv
d2VyCiAgIGluLWZvdXItY2FzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTUuMDU5OSstMC45MTA0ICAgICA/ICAgICAxNS42NTk3Ky0yLjIzMTIgICAgICAgID8gbWlnaHQg
YmUgMS4wMzk4eCBzbG93ZXIKICAgaW4tb25lLWNhc2UtZmFsc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNy4yNDcwKy0wLjExODUgICAgICAgICAgICA3LjIzNTYrLTAuMTAyNyAg
ICAgICAgCiAgIGluLW9uZS1jYXNlLXRydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDcuNDAzMSstMC4yNDI5ICAgICA/ICAgICAgNy40MjM1Ky0wLjA5MzAgICAgICAgID8KICAg
aW4tdHdvLWNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy40NjU5
Ky0wLjEyNDcgICAgID8gICAgICA3LjUyNzUrLTAuMDM5OCAgICAgICAgPwogICBpbmRleGVkLXBy
b3BlcnRpZXMtaW4tb2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAyLjYyODcrLTAuMDgyNSAg
ICAgPyAgICAgIDIuNjMxOCstMC4wOTI1ICAgICAgICA/CiAgIGluZmVyLWNsb3N1cmUtY29uc3Qt
dGhlbi1tb3Ytbm8taW5saW5lICAgICAgICAgICAgIDMuMDA4NystMC4xNjI4ICAgICA/ICAgICAg
My4wNDY5Ky0wLjIyNDQgICAgICAgID8gbWlnaHQgYmUgMS4wMTI3eCBzbG93ZXIKICAgaW5mZXIt
Y2xvc3VyZS1jb25zdC10aGVuLW1vdiAgICAgICAgICAgICAgICAgICAgICAgNi41NzAwKy0wLjIw
NzYgICAgID8gICAgICA2LjU5OTgrLTAuMzEwNCAgICAgICAgPwogICBpbmZlci1jbG9zdXJlLWNv
bnN0LXRoZW4tcHV0LXRvLXNjb3BlLW5vLWlubGluZSAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjIxOTArLTAuMzIwOSAgICAgPyAgICAg
MTEuNjg4NistMC43MzAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxOXggc2xvd2VyCiAgIGluZmVy
LWNsb3N1cmUtY29uc3QtdGhlbi1wdXQtdG8tc2NvcGUgICAgICAgICAgICAgMTkuNzIwOSstMC43
MDI3ICAgICA/ICAgICAyMC4xMTIwKy0xLjY4MjggICAgICAgID8gbWlnaHQgYmUgMS4wMTk4eCBz
bG93ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXItbm8taW5saW5lICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEuMzMz
MistMC4xNDg1ICAgICA/ICAgICA1Mi42NTU2Ky0yLjE0NDUgICAgICAgID8gbWlnaHQgYmUgMS4w
MjU4eCBzbG93ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXIgICAgICAgICAg
ICAgICAgICAxOS44MjYyKy0wLjMzNTUgICAgID8gICAgIDIwLjM4MDYrLTIuNDI5MCAgICAgICAg
PyBtaWdodCBiZSAxLjAyODB4IHNsb3dlcgogICBpbmZlci1jb25zdGFudC1nbG9iYWwtcHJvcGVy
dHkgICAgICAgICAgICAgICAgICAgICAyLjU3NzIrLTAuMjk2NSAgICAgICAgICAgIDIuNTU0Myst
MC4xMTE0ICAgICAgICAKICAgaW5mZXItY29uc3RhbnQtcHJvcGVydHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi4wNDQ4Ky0wLjE0MzYgICAgICAgICAgICAyLjAzMDYrLTAuMDMxMiAgICAg
ICAgCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUtdGVuLXZhcnMgICAgICAgICAgICAgICAgICAg
IDYuMTIwMystMC4wMjg5ICAgICA/ICAgICAgNi4zMjY1Ky0wLjM4MDUgICAgICAgID8gbWlnaHQg
YmUgMS4wMzM3eCBzbG93ZXIKICAgaW5mZXItb25lLXRpbWUtY2xvc3VyZS10d28tdmFycyAgICAg
ICAgICAgICAgICAgICAgNi4xODQ5Ky0wLjU0OTQgICAgICAgICAgICA1Ljk3MjArLTAuMjkwMiAg
ICAgICAgICBtaWdodCBiZSAxLjAzNTZ4IGZhc3RlcgogICBpbmZlci1vbmUtdGltZS1jbG9zdXJl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljk2ODcrLTAuMjg4NiAgICAgICAgICAgIDUu
NzQzNystMC4wMzU0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5MnggZmFzdGVyCiAgIGluZmVyLW9u
ZS10aW1lLWRlZXAtY2xvc3VyZSAgICAgICAgICAgICAgICAgICAgICAgMTAuNzEwNistMC4xODky
ICAgICA/ICAgICAxMS40OTkyKy0xLjc4NjEgICAgICAgID8gbWlnaHQgYmUgMS4wNzM2eCBzbG93
ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Mi44MjQ3Ky0wLjE1NDAgICAgICAgICAgICAyLjY4MTIrLTAuMTQyOSAgICAgICAgICBtaWdodCBi
ZSAxLjA1MzV4IGZhc3RlcgogICBpbmxpbmUtYXJndW1lbnRzLWFsaWFzZWQtYWNjZXNzICAgICAg
ICAgICAgICAgICAgICAzLjA4MjArLTAuNTM2MSAgICAgICAgICAgIDIuNTk4MystMC4yODM5ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMTg2MnggZmFzdGVyCiAgIGlubGluZS1hcmd1bWVudHMtbG9jYWwt
ZXNjYXBlICAgICAgICAgICAgICAgICAgICAgIDMuMDIzNystMC4xOTg2ICAgICAgICAgICAgMi42
Mjk2Ky0wLjI1MDMgICAgICAgICAgbWlnaHQgYmUgMS4xNDk5eCBmYXN0ZXIKICAgaW5saW5lLWdl
dC1zY29wZWQtdmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xMjgzKy0wLjA1MTEg
ICAgID8gICAgICAyLjQ2NTcrLTAuNzA2NiAgICAgICAgPyBtaWdodCBiZSAxLjE1ODV4IHNsb3dl
cgogICBpbmxpbmVkLXB1dC1ieS1pZC10cmFuc2l0aW9uICAgICAgICAgICAgICAgICAgICAgICA1
LjkxNTErLTAuMTMxMyAgICAgPyAgICAgIDYuMDMwMistMC4zMTIzICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE5NXggc2xvd2VyCiAgIGlubGluZWQtcHV0LWJ5LXZhbC13aXRoLXN0cmluZy10cmFuc2l0
aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzcuNjUxMCstMC41MTEyICAgICA/ICAgICAzOC4xODM1Ky0wLjg5MzcgICAgICAgID8gbWln
aHQgYmUgMS4wMTQxeCBzbG93ZXIKICAgaW5saW5lZC1wdXQtYnktdmFsLXdpdGgtc3ltYm9sLXRy
YW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzOS43ODQ2Ky0yLjYzOTIgICAgICAgICAgIDM3LjQ2MzYrLTAuMzk1MCAgICAgICAg
ICBtaWdodCBiZSAxLjA2MjB4IGZhc3RlcgogICBpbnN0YW5jZW9mLWJvdW5kICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIwLjMwOTIrLTEuMTEzNiAgICAgPyAgICAgMjEuNDQ0NSst
MS41NDc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU1OXggc2xvd2VyCiAgIGludC1vci1vdGhlci1h
YnMtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDcuNzQ4MistMC42NDY3ICAgICA/
ICAgICAgNy44NDU1Ky0xLjA1NTIgICAgICAgID8gbWlnaHQgYmUgMS4wMTI2eCBzbG93ZXIKICAg
aW50LW9yLW90aGVyLWFicy16ZXJvLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAxNC41MzA4
Ky0wLjIxMDggICAgID8gICAgIDE2LjU0ODUrLTIuMDExNiAgICAgICAgPyBtaWdodCBiZSAxLjEz
ODl4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWRkLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAg
ICAgICAgICAzLjg0NjUrLTAuMTgwOCAgICAgICAgICAgIDMuODM3NCstMC4xOTU3ICAgICAgICAK
ICAgaW50LW9yLW90aGVyLWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41
MjEzKy0wLjE3NzMgICAgID8gICAgICA0LjY3NDUrLTAuMTc4NyAgICAgICAgPyBtaWdodCBiZSAx
LjAzMzl4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItZGl2LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAg
ICAgICAgICAgICAzLjE2NjkrLTAuMDI3NiAgICAgPyAgICAgIDMuMjI3NSstMC4wNzk0ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE5MXggc2xvd2VyCiAgIGludC1vci1vdGhlci1tYXgtdGhlbi1nZXQt
YnktdmFsICAgICAgICAgICAgICAgICAgIDMuNDMzNSstMC4wNzU2ICAgICA/ICAgICAgMy40NTAx
Ky0wLjExMjAgICAgICAgID8KICAgaW50LW9yLW90aGVyLW1pbi10aGVuLWdldC1ieS12YWwgICAg
ICAgICAgICAgICAgICAgMy40MDI1Ky0wLjEwMzMgICAgID8gICAgICAzLjU5ODErLTAuNTI3NSAg
ICAgICAgPyBtaWdodCBiZSAxLjA1NzV4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbW9kLXRoZW4t
Z2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICAzLjI0MzgrLTAuMDQ5MSAgICAgPyAgICAgIDMu
MjYzOCstMC4wMzYwICAgICAgICA/CiAgIGludC1vci1vdGhlci1tdWwtdGhlbi1nZXQtYnktdmFs
ICAgICAgICAgICAgICAgICAgIDUuMzc4NSstMC4xMTEzICAgICA/ICAgICAgNS42MzY4Ky0wLjU4
NDkgICAgICAgID8gbWlnaHQgYmUgMS4wNDgweCBzbG93ZXIKICAgaW50LW9yLW90aGVyLW5lZy10
aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgMy44NDc5Ky0wLjI2MzcgICAgID8gICAg
ICAzLjkwMTkrLTAuMzU4MCAgICAgICAgPyBtaWdodCBiZSAxLjAxNDB4IHNsb3dlcgogICBpbnQt
b3Itb3RoZXItbmVnLXplcm8tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgIDE2LjA4NTQrLTEu
NTk5NSAgICAgICAgICAgMTUuNDc2NCstMS4yMDYxICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5NHgg
ZmFzdGVyCiAgIGludC1vci1vdGhlci1zdWItdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAg
ICAgIDQuNzEzNCstMC4xOTczICAgICAgICAgICAgNC42NzA1Ky0wLjExNzUgICAgICAgIAogICBp
bnQtb3Itb3RoZXItc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjgxMjgr
LTAuMDQyNyAgICAgICAgICAgIDMuODEyMSstMC4wMzYwICAgICAgICAKICAgaW50LW92ZXJmbG93
LWxvY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy42NDk1Ky0wLjA1OTEgICAg
ID8gICAgICAzLjY2ODQrLTAuMDcyNiAgICAgICAgPwogICBJbnQxNkFycmF5LWFsbG9jLWxvbmct
bGl2ZWQgICAgICAgICAgICAgICAgICAgICAgIDMzLjMxNDErLTEuMTE3OSAgICAgISAgICAgMzUu
MjIwNistMC40NzQ3ICAgICAgICAhIGRlZmluaXRlbHkgMS4wNTcyeCBzbG93ZXIKICAgSW50MTZB
cnJheS1idWJibGUtc29ydC13aXRoLWJ5dGVMZW5ndGggICAgICAgICAgICAxNi4wNDM0Ky0yLjUx
OTIgICAgID8gICAgIDE3LjE4MDkrLTEuNjEyMiAgICAgICAgPyBtaWdodCBiZSAxLjA3MDl4IHNs
b3dlcgogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE1LjMxNjkrLTEuNDMyMyAgICAgICAgICAgMTUuMTk4MSstMC43MzI1ICAgICAgICAKICAgSW50
MTZBcnJheS1sb2FkLWludC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS42Njc5Ky0w
LjA0ODcgICAgID8gICAgICAxLjcyMzMrLTAuMTA5MyAgICAgICAgPyBtaWdodCBiZSAxLjAzMzJ4
IHNsb3dlcgogICBJbnQxNkFycmF5LXRvLUludDMyQXJyYXktc2V0ICAgICAgICAgICAgICAgICAg
ICAgIDM2LjMyNTArLTAuNDgyMCAgICAgPyAgICAgMzcuMTUwOCstMS44NTk5ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDIyN3ggc2xvd2VyCiAgIEludDMyQXJyYXktYWxsb2MtbGFyZ2UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTEuNDI3MystMC42MDU2ICAgICA/ICAgICAxMS41MjYxKy0wLjUy
NjkgICAgICAgID8KICAgSW50MzJBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAg
ICAgICAgICAzOC41MDIzKy0wLjYwODcgICAgID8gICAgIDM4Ljk4MTkrLTAuMjg0NCAgICAgICAg
PyBtaWdodCBiZSAxLjAxMjV4IHNsb3dlcgogICBJbnQzMkFycmF5LWFsbG9jICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjEzMTMrLTAuMTQ0NiAgICAgICAgICAgIDMuMDg0OSst
MC4yMzExICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1MHggZmFzdGVyCiAgIEludDMyQXJyYXktSW50
OEFycmF5LXZpZXctYWxsb2MgICAgICAgICAgICAgICAgICAgIDYuNTY2NSstMC4xODA3ICAgICA/
ICAgICAgNi41ODg5Ky0wLjE2NTMgICAgICAgID8KICAgaW50NTItc3BpbGwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44ODY0Ky0wLjIwMDkgICAgICAgICAgICA0Ljgz
MzMrLTAuMDU2OCAgICAgICAgICBtaWdodCBiZSAxLjAxMTB4IGZhc3RlcgogICBJbnQ4QXJyYXkt
YWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgICAgIDI5LjcxNTgrLTAuNTAyMCAg
ICAgPyAgICAgMzEuNTI5NistMi4wODU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDYxMHggc2xvd2Vy
CiAgIEludDhBcnJheS1sb2FkLXdpdGgtYnl0ZUxlbmd0aCAgICAgICAgICAgICAgICAgICAgIDMu
NDIzOSstMC4yNTkzICAgICAgICAgICAgMy40MTE4Ky0wLjI1MTAgICAgICAgIAogICBJbnQ4QXJy
YXktbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjUyNjQrLTAuMzQ1
OCAgICAgICAgICAgIDMuMzY4MCstMC4wOTQwICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3MHggZmFz
dGVyCiAgIGludGVnZXItZGl2aWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDkuOTkyNSstMC4zMzI4ICAgICA/ICAgICAxMC42OTI2Ky0xLjU0NTUgICAgICAgID8gbWlnaHQg
YmUgMS4wNzAxeCBzbG93ZXIKICAgaW50ZWdlci1tb2R1bG8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMS45MTkxKy0wLjExNjggICAgICAgICAgICAxLjkwMTcrLTAuMDY0OCAg
ICAgICAgCiAgIGlzLWJvb2xlYW4tZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIuNjM3MistMC4wNzAyICAgICA/ICAgICAgMi43MDE1Ky0wLjIxMDQgICAgICAgID8gbWln
aHQgYmUgMS4wMjQ0eCBzbG93ZXIKICAgaXMtYm9vbGVhbi1mb2xkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi4wNTMwKy0wLjA5NDcgICAgID8gICAgICAyLjExNDcrLTAuMTg5
NiAgICAgICAgPyBtaWdodCBiZSAxLjAzMDF4IHNsb3dlcgogICBpcy1mdW5jdGlvbi1mb2xkLXRy
aWNreS1pbnRlcm5hbC1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5LjIyNjArLTAuMjQ5MSAgICAgPyAgICAgIDkuMzMyOCst
MC41NTM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExNnggc2xvd2VyCiAgIGlzLWZ1bmN0aW9uLWZv
bGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuODE5MistMC4xMTkwICAgICA/
ICAgICAgMi44ODE2Ky0wLjA1MDUgICAgICAgID8gbWlnaHQgYmUgMS4wMjIxeCBzbG93ZXIKICAg
aXMtZnVuY3Rpb24tZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45OTY1
Ky0wLjA1MTkgICAgID8gICAgICAyLjEwNjQrLTAuMTcyNiAgICAgICAgPyBtaWdodCBiZSAxLjA1
NTF4IHNsb3dlcgogICBpcy1udW1iZXItZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjg0MTUrLTAuMjkzOSAgICAgICAgICAgIDIuNzM4MistMC4wNjkxICAgICAgICAg
IG1pZ2h0IGJlIDEuMDM3N3ggZmFzdGVyCiAgIGlzLW51bWJlci1mb2xkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuMDAzOCstMC4wNDc5ICAgICA/ICAgICAgMi4wMTgzKy0w
LjA1NjUgICAgICAgID8KICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC1mdW5jdGlvbnMgICAgICAg
ICAgICAgICAgICAgMi4wODM5Ky0wLjA5NDQgICAgICAgICAgICAyLjAzMDcrLTAuMDQ2NSAgICAg
ICAgICBtaWdodCBiZSAxLjAyNjJ4IGZhc3RlcgogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLWxl
c3MtdHJpY2t5ICAgICAgICAgICAgICAgICAyLjc5MTkrLTAuMTU0OCAgICAgPyAgICAgIDIuODI3
MCstMC4xMzY0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyNnggc2xvd2VyCiAgIGlzLW9iamVjdC1v
ci1udWxsLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgIDMuMTMxOCstMC4yNzQ3ICAg
ICAgICAgICAgMy4wOTU5Ky0wLjEwMzEgICAgICAgICAgbWlnaHQgYmUgMS4wMTE2eCBmYXN0ZXIK
ICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4w
Nzk5Ky0wLjExODQgICAgICAgICAgICAyLjA2MTIrLTAuMTAwMSAgICAgICAgCiAgIGlzLW9iamVj
dC1vci1udWxsLXRyaWNraWVyLWZ1bmN0aW9uICAgICAgICAgICAgICAgIDIuODYxMistMC4wNjgz
ICAgICA/ICAgICAgMi44ODQ2Ky0wLjE2MDIgICAgICAgID8KICAgaXMtb2JqZWN0LW9yLW51bGwt
dHJpY2tpZXItaW50ZXJuYWwtZnVuY3Rpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4xODYyKy0wLjE5ODkgICAgID8gICAgICA5LjIw
MTErLTAuNTA3NCAgICAgICAgPwogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja3ktZnVuY3Rpb24g
ICAgICAgICAgICAgICAgICAyLjgzOTYrLTAuMTg1NyAgICAgICAgICAgIDIuNzg1OSstMC4wNTAy
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5M3ggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRy
aWNreS1pbnRlcm5hbC1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2LjMxNDErLTAuMzUxNCAgICAgICAgICAgIDYuMjY3MSst
MC4xMTc5ICAgICAgICAKICAgaXMtc3RyaW5nLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi43ODQ4Ky0wLjA1NjIgICAgICAgICAgICAyLjcxMzkrLTAuMDgwMiAgICAg
ICAgICBtaWdodCBiZSAxLjAyNjF4IGZhc3RlcgogICBpcy1zdHJpbmctZm9sZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjAwOTcrLTAuMTEwNyAgICAgICAgICAgIDEuOTU1
MystMC4wNjA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3OHggZmFzdGVyCiAgIGlzLXVuZGVmaW5l
ZC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTQ5NSstMC4zNzQwICAg
ICAgICAgICAgMi40MTgwKy0wLjA3NzMgICAgICAgICAgbWlnaHQgYmUgMS4wNTQ0eCBmYXN0ZXIK
ICAgaXMtdW5kZWZpbmVkLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4w
Mzk1Ky0wLjA0ODEgICAgICAgICAgICAyLjAxMTErLTAuMDgyNSAgICAgICAgICBtaWdodCBiZSAx
LjAxNDF4IGZhc3RlcgogICBKU09OUC1uZWdhdGl2ZS0wICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIzODgrLTAuMDEzOCAgICAgICAgICAgIDAuMjI1OCstMC4wMDkyICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDU3NXggZmFzdGVyCiAgIGxhcmdlLWludC1jYXB0dXJlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuODY1NCstMC4zMDMzICAgICA/ICAgICAgMi44OTEw
Ky0wLjQ3NjkgICAgICAgID8KICAgbGFyZ2UtaW50LW5lZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOC4zMTIzKy0wLjMyODAgICAgID8gICAgICA4LjM3NDErLTAuNDM3MyAg
ICAgICAgPwogICBsYXJnZS1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA3LjgyNzUrLTAuMDU1NCAgICAgPyAgICAgIDguMTYwNistMC4zMjk5ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQyNXggc2xvd2VyCiAgIGxhcmdlLW1hcC1pdGVyYXRpb24td2l0aC1hZGRpdGlv
bnMgICAgICAgICAgICAgICAzODcuNjQ2MystMTUuMjE4MSAgICA/ICAgIDM5My40OTczKy00Ljg3
NTEgICAgICAgID8gbWlnaHQgYmUgMS4wMTUxeCBzbG93ZXIKICAgbGFyZ2UtbWFwLWl0ZXJhdGlv
bi13aXRoLW11dGF0aW9uICAgICAgICAgICAgICAgIDE5MC42MzI5Ky01LjA3NzIgICAgICAgICAg
MTg3LjA4MzkrLTQuOTc0NyAgICAgICAgICBtaWdodCBiZSAxLjAxOTB4IGZhc3RlcgogICBsYXJn
ZS1tYXAtaXRlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk2LjIzNjYrLTQu
MjkyMyAgICAgICAgICAgOTMuODE2MystMC43ODE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1OHgg
ZmFzdGVyCiAgIGxhenktYXJyYXktc3BlY2llcy13YXRjaHBvaW50cyAgICAgICAgICAgICAgICAg
ICAgMjIuMDg5NistMC42NzYwICAgICA/ICAgICAyMi41OTgxKy0xLjQ1MzMgICAgICAgID8gbWln
aHQgYmUgMS4wMjMweCBzbG93ZXIKICAgbGljbS1kcmFnb25zLW91dC1vZi1ib3VuZHMgICAgICAg
ICAgICAgICAgICAgICAgICAzMC40NjM3Ky0wLjcwMjAgICAgID8gICAgIDMwLjk4ODMrLTEuMTc3
NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNzJ4IHNsb3dlcgogICBsaWNtLWRyYWdvbnMtb3ZlcmZs
b3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3Ljc0MjYrLTAuOTI0NyAgICAgPyAgICAg
MTguMjU5MystMC45NTk4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5MXggc2xvd2VyCiAgIGxpY20t
ZHJhZ29ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQuNjcxMSstMC40
NzU4ICAgICA/ICAgICAzNS4yODgwKy0xLjM4ODggICAgICAgID8gbWlnaHQgYmUgMS4wMTc4eCBz
bG93ZXIKICAgbG9hZC12YXJhcmdzLWVsaW1pbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAg
ICAxOC4wNDMyKy0wLjY1NDMgICAgID8gICAgIDE5LjE1MjQrLTEuNzk1NiAgICAgICAgPyBtaWdo
dCBiZSAxLjA2MTV4IHNsb3dlcgogICBsb2NhbGUtY29tcGFyZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIxLjYyNzErLTEuMDY4MyAgICAgPyAgICAgMjIuMjI5MistMS4yODY0
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3OHggc2xvd2VyCiAgIGxvZ2ljYWwtbm90LXdlaXJkLXR5
cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjk1OSstMC4wNDk4ICAgICA/ICAgICAg
Mi4zMjk5Ky0wLjA0NjYgICAgICAgID8gbWlnaHQgYmUgMS4wMTQ4eCBzbG93ZXIKICAgbG9naWNh
bC1ub3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy42NzQ0Ky0wLjMw
MjcgICAgICAgICAgICAzLjY1ODQrLTAuMTc5MCAgICAgICAgCiAgIGxvdHMtb2YtZmllbGRzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMjAzNistMC41Mzk2ICAgICAgICAg
ICAgNy45MTkyKy0wLjQ0NTUgICAgICAgICAgbWlnaHQgYmUgMS4wMzU5eCBmYXN0ZXIKICAgbWFr
ZS1pbmRleGVkLXN0b3JhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40NTgwKy0w
LjMzODkgICAgID8gICAgICAyLjU0NTkrLTAuMjkxMiAgICAgICAgPyBtaWdodCBiZSAxLjAzNTh4
IHNsb3dlcgogICBtYWtlLXJvcGUtY3NlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjM5MzcrLTAuMDYzOSAgICAgPyAgICAgIDIuNDgzMCstMC4xMjUxICAgICAgICA/IG1p
Z2h0IGJlIDEuMDM3M3ggc2xvd2VyCiAgIG1hbnktZm9yZWFjaC1jYWxscyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuMzU5NSstMC4wODIwICAgICA/ICAgICAgMi40NjQ5Ky0wLjMx
NzQgICAgICAgID8gbWlnaHQgYmUgMS4wNDQ3eCBzbG93ZXIKICAgbWFueS1yZXBlYXQtc3RvcmVz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC45OTI1Ky0wLjgyNTIgICAgICAgICAg
IDE0Ljc4NTMrLTAuMzAzNSAgICAgICAgICBtaWdodCBiZSAxLjAxNDB4IGZhc3RlcgogICBtYXAt
Y29uc3RhbnQta2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTc4Ljk4ODkrLTMu
Mzk0OSAgICAgICAgICAxNzcuMDQzMSstMy4xMDEyICAgICAgICAgIG1pZ2h0IGJlIDEuMDExMHgg
ZmFzdGVyCiAgIG1hcC1mb3ItZWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQuMjczOSstMC4wNzI5ICAgICA/ICAgICAgNC40NDIzKy0wLjMxODcgICAgICAgID8gbWln
aHQgYmUgMS4wMzk0eCBzbG93ZXIKICAgbWFwLWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxOC4zOTU3Ky0wLjkwNDIgICAgICAgICAgIDE4LjA4ODkrLTAuNjcx
OCAgICAgICAgICBtaWdodCBiZSAxLjAxNzB4IGZhc3RlcgogICBtYXAtZ2V0LWdldC1jc2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMxLjgzMTMrLTUuMTcwMyAgICAgPyAgICA1
MzUuMjkzMystMy42Nzk4ICAgICAgICA/CiAgIG1hcC1oYXMtZ2V0LWNzZS1vcHBvcnR1bml0eSAg
ICAgICAgICAgICAgICAgICAgICAgNzQuMjMyNistMS41NzY0ICAgICAgICAgICA3NC4xNDU1Ky0y
LjMzNzAgICAgICAgIAogICBtYXAtcmVoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2Ljk5ODgrLTAuMjE3OSAgICAgPyAgICAgIDcuMDIxOSstMC40Mzg5ICAgICAg
ICA/CiAgIG1hcnNhZ2xpYS1sYXJnZXItaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NjEuNjU1NistMC4yNTY3ICAgICA/ICAgICA2Mi4xNzU0Ky0xLjc4OTAgICAgICAgID8KICAgbWFy
c2FnbGlhLW9zci1lbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4xOTA2Ky0w
LjczMzIgICAgID8gICAgIDE2Ljc1MzQrLTAuNDgwMCAgICAgICAgPyBtaWdodCBiZSAxLjAzNDh4
IHNsb3dlcgogICBtYXRoLXJhbmRvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEzLjc0NzIrLTAuNTM3NSAgICAgICAgICAgMTMuNjMzMCstMC42NzgyICAgICAgICAKICAg
bWF0aC10cnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS41MzIz
Ky0wLjE4OTEgICAgICAgICAgICA1LjQyNTQrLTAuMTIxOSAgICAgICAgICBtaWdodCBiZSAxLjAx
OTd4IGZhc3RlcgogICBtYXRoLXdpdGgtb3V0LW9mLWJvdW5kcy1hcnJheS12YWx1ZXMgICAgICAg
ICAgICAgIDI4LjI5NDgrLTEuNjk4NiAgICAgPyAgICAgMjguNzIxNSstMi4xNjAzICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE1MXggc2xvd2VyCiAgIG1heC1ib29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuMTc0OCstMC4wNTc2ICAgICA/ICAgICAgMi4yMDgwKy0w
LjAyOTMgICAgICAgID8gbWlnaHQgYmUgMS4wMTUzeCBzbG93ZXIKICAgbWVnYW1vcnBoaWMtbG9h
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC4zMzc0Ky0zLjY4NzIgICAgICAg
ICAgIDI2Ljk0NjArLTUuNDg2OCAgICAgICAgICBtaWdodCBiZSAxLjA1MTZ4IGZhc3RlcgogICBt
ZXRob2Qtb24tbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjEwMTUr
LTAuNTA0NyAgICAgICAgICAgMTcuMDIwOCstMS40NTIyICAgICAgICAKICAgbWluLWJvb2xlYW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yNDM2Ky0wLjA4NjkgICAg
ICAgICAgICAyLjE4NTkrLTAuMTM2MCAgICAgICAgICBtaWdodCBiZSAxLjAyNjR4IGZhc3Rlcgog
ICBtaW51cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjIw
NDYrLTAuMDYxMyAgICAgPyAgICAgIDIuMjU3OCstMC4xMzk1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDI0MXggc2xvd2VyCiAgIG1pbnVzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuODk3MystMC4wNTY3ICAgICA/ICAgICAgMi4wNjY0Ky0wLjEyODQgICAgICAg
ID8gbWlnaHQgYmUgMS4wODkxeCBzbG93ZXIKICAgbWlzYy1idWdzLTg0NzM4OS1qcGVnMjAwMCAg
ICAgICAgICAgICAgICAgICAgICAgMzczMS42ODMxKy0xOC4zMjg4ICAgICAgICAzNzIwLjY3NDYr
LTIzLjI4NDcgICAgICAgCiAgIG1pc2Mtc3RyaWN0LWVxICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjAuMzcxOSstMS4zMjU0ICAgICAgICAgICAxOS4wNjA3Ky0xLjU1NDkgICAg
ICAgICAgbWlnaHQgYmUgMS4wNjg4eCBmYXN0ZXIKICAgbW9kLWJvb2xlYW4tZG91YmxlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOC42Mjk5Ky0wLjAzMzMgICAgID8gICAgICA4Ljc0
MTkrLTAuMzU1MiAgICAgICAgPyBtaWdodCBiZSAxLjAxMzB4IHNsb3dlcgogICBtb2QtYm9vbGVh
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjkzMDIrLTAuNzQ5NiAg
ICAgICAgICAgIDYuNzQ4NCstMC4yNTg5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2OXggZmFzdGVy
CiAgIG11bC1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
NTQ4MystMC4wMzgzICAgICA/ICAgICAgMi41ODI0Ky0wLjA1MDUgICAgICAgID8gbWlnaHQgYmUg
MS4wMTM0eCBzbG93ZXIKICAgbXVsLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi4yMTg3Ky0wLjAzNDMgICAgID8gICAgICAyLjM1MDUrLTAuMjY4NiAgICAg
ICAgPyBtaWdodCBiZSAxLjA1OTR4IHNsb3dlcgogICBuZWctYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjMwODcrLTAuMjMxMCAgICAgICAgICAgIDIuMjc1
MystMC4wMjczICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0N3ggZmFzdGVyCiAgIG5lZ2F0aXZlLXpl
cm8tZGl2aWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzEyNystMC4wMDk4ICAg
ICA/ICAgICAgMC4zNDA5Ky0wLjA0NTkgICAgICAgID8gbWlnaHQgYmUgMS4wOTAweCBzbG93ZXIK
ICAgbmVnYXRpdmUtemVyby1tb2R1bG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4z
NDQ4Ky0wLjAwODkgICAgICAgICAgICAwLjM0NDQrLTAuMDIwMiAgICAgICAgCiAgIG5lZ2F0aXZl
LXplcm8tbmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzMwMSstMC4wMzE5
ICAgICA/ICAgICAgMC4zNDI5Ky0wLjA2NjQgICAgICAgID8gbWlnaHQgYmUgMS4wMzkweCBzbG93
ZXIKICAgbmVzdGVkLWZ1bmN0aW9uLXBhcnNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAz
NS40MzczKy0xLjE2ODAgICAgICAgICAgIDM0LjkzNjIrLTAuMjU3NSAgICAgICAgICBtaWdodCBi
ZSAxLjAxNDN4IGZhc3RlcgogICBuZXctYXJyYXktYnVmZmVyLWRlYWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUyLjAyODErLTAuNDM3OCAgICAgPyAgICAgNTIuNjk1MistMC44NjI3ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEyOHggc2xvd2VyCiAgIG5ldy1hcnJheS1idWZmZXItcHVzaCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTcyOSstMC4xMzA3ICAgICA/ICAgICAgNC4x
NjYxKy0wLjMwODEgICAgICAgID8gbWlnaHQgYmUgMS4wNDg2eCBzbG93ZXIKICAgbmV3LWFycmF5
LWRlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi40MzQ5Ky0wLjA4NDQg
ICAgID8gICAgICA2LjQ3MzQrLTAuMTMyOSAgICAgICAgPwogICBuZXctYXJyYXktcHVzaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk0OTYrLTAuMDg1OSAgICAgPyAgICAg
IDMuMDcxMistMC4yMDIxICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxMnggc2xvd2VyCiAgIG5vLWlu
bGluZS1jb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuNjYwNCstMC4x
OTcyICAgICA/ICAgICAyNC40ODQyKy0xLjYzOTggICAgICAgID8gbWlnaHQgYmUgMS4wMzQ4eCBz
bG93ZXIKICAgTnVtYmVyLWlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMC4xNTU0Ky0wLjcwNTcgICAgID8gICAgIDEwLjE5NDgrLTAuNDkzMCAgICAgICAgPwogICBu
dW1iZXItdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcxOTMr
LTAuMTIxOCAgICAgICAgICAgIDIuNzE1MistMC4wNDE3ICAgICAgICAKICAgb2JqZWN0LWFuZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41OTkyKy0wLjA0MjcgICAg
ID8gICAgICA0Ljc1MDcrLTAuMTk0MCAgICAgICAgPyBtaWdodCBiZSAxLjAzMjl4IHNsb3dlcgog
ICBvYmplY3QtY2xvc3VyZS1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjYw
MTYrLTAuNTc4OSAgICAgICAgICAgIDQuNDE3OCstMC4xOTAyICAgICAgICAgIG1pZ2h0IGJlIDEu
MDQxNnggZmFzdGVyCiAgIG9iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2Ut
YXJyYXkgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS4xODYyKy0wLjIwMjEgICAgICAgICAgICAxLjE1NzQrLTAuMTI1MCAgICAgICAgICBt
aWdodCBiZSAxLjAyNDl4IGZhc3RlcgogICBvYmplY3QtaW50LWFkZC1hcnJheSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEwLjI2NzkrLTAuMjUyMSAgICAgICAgICAgMTAuMjA4MCstMC4w
OTg3ICAgICAgICAKICAgb2JqZWN0LWludC1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMi4zMDM4Ky0wLjI0MDQgICAgID8gICAgIDEyLjY4NTcrLTAuNDg3MiAgICAgICAg
PyBtaWdodCBiZSAxLjAzMTB4IHNsb3dlcgogICBvYmplY3QtaW50LWFuZC1hcnJheSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEwLjIyOTMrLTAuMjE3NSAgICAgICAgICAgMTAuMDg4Nyst
MC4wNjcyICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOXggZmFzdGVyCiAgIG9iamVjdC1pbnQtbXVs
LWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguNzQ2NystMC4xNDU5ICAgICA/
ICAgICAgOC43OTA2Ky0wLjM2ODcgICAgICAgID8KICAgb2JqZWN0LWludC1zdWItYXJyYXkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNy41NjA2Ky0wLjM0OTcgICAgID8gICAgICA3LjYw
NzgrLTAuMzQwNyAgICAgICAgPwogICBvYmplY3QtaW50LXN1YiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEyLjQ5NTQrLTAuODM0MSAgICAgICAgICAgMTIuMzc1MCstMC4zNzc1
ICAgICAgICAKICAgb2JqZWN0LWxzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNC42NzkzKy0wLjI4MTIgICAgICAgICAgICA0LjY1MTIrLTAuMDYwOCAgICAgICAgCiAg
IG9iamVjdC1vciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjQ3
NystMC4xMTg1ICAgICA/ICAgICAgNC43NTE4Ky0wLjMzMDEgICAgICAgID8gbWlnaHQgYmUgMS4w
MjI0eCBzbG93ZXIKICAgb2JqZWN0LXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC42MjU4Ky0wLjA5NjEgICAgICAgICAgICA0LjYwNTMrLTAuMDQxNiAgICAgICAg
CiAgIG9iamVjdC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
NTAzMystMC4wNjI0ICAgICAgICAgICAgMi40ODkwKy0wLjA2OTIgICAgICAgIAogICBvYmplY3Qt
dXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjczNTIrLTAuMjk5
OSAgICAgICAgICAgIDQuNjk3NistMC4xODk5ICAgICAgICAKICAgb2JqZWN0LXhvciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42MjgxKy0wLjA0NDcgICAgID8gICAg
ICA0LjY4ODYrLTAuMjgzMCAgICAgICAgPyBtaWdodCBiZSAxLjAxMzF4IHNsb3dlcgogICBvYnZp
b3VzLXNpbmstcGF0aG9sb2d5LXRha2VuICAgICAgICAgICAgICAgICAgICAgIDY2LjI0NzYrLTAu
NzMyMCAgICAgPyAgICAgNjcuNTI5NystMC45Njk2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5NHgg
c2xvd2VyCiAgIG9idmlvdXMtc2luay1wYXRob2xvZ3kgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTYuMTYyMSstMC42ODExICAgICA/ICAgICAxNi4xOTUwKy0wLjgyMjUgICAgICAgID8KICAg
b2J2aW91c2x5LWVsaWRhYmxlLW5ldy1vYmplY3QgICAgICAgICAgICAgICAgICAgICAxMy44Mjg3
Ky0wLjY0OTAgICAgID8gICAgIDE0Ljg0NTMrLTEuODg2MCAgICAgICAgPyBtaWdodCBiZSAxLjA3
MzV4IHNsb3dlcgogICBwbHVzLWJvb2xlYW4tYXJpdGggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjAwNDkrLTAuMDkwNyAgICAgICAgICAgIDEuOTk3MCstMC4wNjE0ICAgICAgICAK
ICAgcGx1cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4y
NzEzKy0wLjEyMjYgICAgICAgICAgICAyLjI2MjQrLTAuMDU0MiAgICAgICAgCiAgIHBsdXMtYm9v
bGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuODkyNSstMC4wNDg5
ICAgICA/ICAgICAgMS45NDIxKy0wLjA4NTEgICAgICAgID8gbWlnaHQgYmUgMS4wMjYyeCBzbG93
ZXIKICAgcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjk0
NSstMC4wNTMxICAgICA/ICAgICAgMi4yOTUzKy0wLjAxNTkgICAgICAgID8KICAgcG9seS1jaGFp
bi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMgICAgICAgICAgICAgMi4yODYzKy0wLjA0OTUg
ICAgID8gICAgICAyLjQyNTMrLTAuMzQ3OCAgICAgICAgPyBtaWdodCBiZSAxLjA2MDh4IHNsb3dl
cgogICBwb2x5LWNoYWluLWFjY2Vzcy1zaW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjM2MjUrLTAuMDk5MiAgICAgICAgICAgIDIuMjk3MSstMC4wMzYzICAgICAgICAgIG1pZ2h0IGJl
IDEuMDI4NXggZmFzdGVyCiAgIHBvbHktY2hhaW4tYWNjZXNzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNDU4NystMC4zNDU5ICAgICAgICAgICAgMi4zMzg5Ky0wLjE0MTQgICAg
ICAgICAgbWlnaHQgYmUgMS4wNTEyeCBmYXN0ZXIKICAgcG9seS1zdHJpY3RlcSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0Ni44Nzc2Ky0yLjEzOTEgICAgICAgICAgIDQ2LjQ2
NjMrLTEuNDEwMSAgICAgICAgCiAgIHBvbHltb3JwaGljLWFycmF5LWNhbGwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEuMjcxNCstMC4wOTEzICAgICA/ICAgICAgMS4zNzY0Ky0wLjE2Njgg
ICAgICAgID8gbWlnaHQgYmUgMS4wODI2eCBzbG93ZXIKICAgcG9seW1vcnBoaWMtZ2V0LWJ5LWlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45NDI1Ky0wLjExNjUgICAgID8gICAgICAx
Ljk2NTQrLTAuMTU2NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTh4IHNsb3dlcgogICBwb2x5bW9y
cGhpYy1wdXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjYzODUrLTEuMzY0
MSAgICAgPyAgICAgMjQuMzc4OCstMS44Mzc4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxM3ggc2xv
d2VyCiAgIHBvbHltb3JwaGljLXB1dC1ieS12YWwtd2l0aC1zdHJpbmcgICAgICAgICAgICAgICAg
MjQuMDgyNistMC43NTcyICAgICA/ICAgICAyNC45MjY0Ky0xLjk0MDUgICAgICAgID8gbWlnaHQg
YmUgMS4wMzUweCBzbG93ZXIKICAgcG9seW1vcnBoaWMtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbCAg
ICAgICAgICAgICAgICAyNC41Mzc4Ky0wLjk2NjUgICAgICAgICAgIDIzLjgyMTIrLTAuOTc2MyAg
ICAgICAgICBtaWdodCBiZSAxLjAzMDF4IGZhc3RlcgogICBwb2x5bW9ycGhpYy1zdHJ1Y3R1cmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjk2NTIrLTAuMjUxMSAgICAgPyAgICAgMTIu
NzIzNistMS4xMTA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDYzNHggc2xvd2VyCiAgIHBvbHl2YXJp
YW50LW1vbm9tb3JwaGljLWdldC1ieS1pZCAgICAgICAgICAgICAgICAgIDMuMzg2MystMC4xNzA3
ICAgICAgICAgICAgMy4yOTI0Ky0wLjA3NTUgICAgICAgICAgbWlnaHQgYmUgMS4wMjg1eCBmYXN0
ZXIKICAgcHJldmVudC1leHRlbnNpb25zLWFuZC1kby13b3JrICAgICAgICAgICAgICAgICAgICAx
Mi40MjE5Ky0wLjcyNjYgICAgID8gICAgIDEyLjg5ODIrLTEuMDY5MyAgICAgICAgPyBtaWdodCBi
ZSAxLjAzODN4IHNsb3dlcgogICBwcm90by1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEwLjQ1MjUrLTAuNzc4NiAgICAgPyAgICAgMTAuNDc0MCstMC43NDU0ICAg
ICAgICA/CiAgIHByb3RvdHlwZS1hY2Nlc3Mtd2l0aC1tdXRhdGluZy1wcm90b3R5cGUgICAgICAg
ICAgIDQuMzM0NistMC4wODQ3ICAgICA/ICAgICAgNC40MTg5Ky0wLjEwMDQgICAgICAgID8gbWln
aHQgYmUgMS4wMTk1eCBzbG93ZXIKICAgcHV0LWJ5LWlkLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24g
ICAgICAgICAgICAgICAgICAgNC43OTU4Ky0wLjM0NzAgICAgICAgICAgICA0LjY1NTMrLTAuMjE2
NCAgICAgICAgICBtaWdodCBiZSAxLjAzMDJ4IGZhc3RlcgogICBwdXQtYnktaWQtc2xpZ2h0bHkt
cG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAgICAyLjI2MTYrLTAuMDMyOCAgICAgPyAgICAg
IDIuNDI3OCstMC4yODU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDczNXggc2xvd2VyCiAgIHB1dC1i
eS1pZC10cmFuc2l0aW9uLXdpdGgtaW5kZXhpbmctaGVhZGVyICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMTU2MSstMC40MjI1ICAgICAg
ICAgICAxMS4xMjY1Ky0wLjQ5NDMgICAgICAgIAogICBwdXQtYnktaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA3LjEwMjgrLTAuMjA2MCAgICAgICAgICAgIDYuOTg3
MistMC4xOTMxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2NXggZmFzdGVyCiAgIHB1dC1ieS12YWwt
ZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjkwMCstMC4wMjg4ICAg
ICA/ICAgICAgMC4zMDcxKy0wLjAzMTIgICAgICAgID8gbWlnaHQgYmUgMS4wNTg5eCBzbG93ZXIK
ICAgcHV0LWJ5LXZhbC1sYXJnZS1pbmRleC1ibGFuay1pbmRleGluZy10eXBlICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODM1OSstMC4z
NjQ5ICAgICAgICAgICAgNC42NDc3Ky0wLjA4NTEgICAgICAgICAgbWlnaHQgYmUgMS4wNDA1eCBm
YXN0ZXIKICAgcHV0LWJ5LXZhbC1tYWNoaW5lLWludCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMi41NDMzKy0wLjE4NTcgICAgICAgICAgICAyLjQ4OTkrLTAuMDg2MCAgICAgICAgICBtaWdo
dCBiZSAxLjAyMTV4IGZhc3RlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXJlcGxhY2UtYW5k
LXRyYW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi45OTkzKy0wLjM3NzcgICAgID8gICAgICA3LjM0NTQrLTAuNTUzMyAgICAg
ICAgPyBtaWdodCBiZSAxLjA0OTR4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXNs
aWdodGx5LXBvbHltb3JwaGljICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMzAzOCstMC4xNTk2ICAgICAgICAgICAgMy4yMDI1Ky0wLjAx
ODkgICAgICAgICAgbWlnaHQgYmUgMS4wMzE2eCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC13aXRoLXN0
cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi45NDk0Ky0wLjEwNjYgICAgICAgICAg
ICA2Ljg2NTMrLTAuMjYyNyAgICAgICAgICBtaWdodCBiZSAxLjAxMjN4IGZhc3RlcgogICBwdXQt
YnktdmFsLXdpdGgtc3ltYm9sLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24gICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi42NzgwKy0wLjQxMTcg
ICAgICAgICAgICA2LjU5NzErLTAuNDM3MiAgICAgICAgICBtaWdodCBiZSAxLjAxMjN4IGZhc3Rl
cgogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sLXNsaWdodGx5LXBvbHltb3JwaGljICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNDY4OCst
MC4wNDUxICAgICAgICAgICAgMi40NjgyKy0wLjA0MzAgICAgICAgIAogICBwdXQtYnktdmFsLXdp
dGgtc3ltYm9sICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjU5MjYrLTAuMzI0NiAgICAg
ICAgICAgIDcuMjc5NSstMC4yMzQ2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQzMHggZmFzdGVyCiAg
IHJhcmUtb3NyLWV4aXQtb24tbG9jYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuNTA2
NSstMC40ODc2ICAgICA/ICAgICAxMS43MzQ3Ky0wLjcxNjQgICAgICAgID8gbWlnaHQgYmUgMS4w
MTk4eCBzbG93ZXIKICAgcmF5dHJhY2Utd2l0aC1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAg
ICAgICAgICAgNC44NzQwKy0wLjA3MDAgICAgICAgICAgICA0Ljg1NzkrLTAuMDc2MyAgICAgICAg
CiAgIHJheXRyYWNlLXdpdGgtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcu
NjQ5NSstMC4yMzM2ICAgICA/ICAgICAgNy42ODk1Ky0wLjMwNjcgICAgICAgID8KICAgcmVnZXhw
LWV4ZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy40MTU1Ky0wLjgy
NTUgICAgID8gICAgIDI4LjYxMjArLTEuNDAxNyAgICAgICAgPyBtaWdodCBiZSAxLjA0MzZ4IHNs
b3dlcgogICByZWdleHAtbGFzdC1pbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA4LjcyNzgrLTEuMDU0NiAgICAgICAgICAgIDguMzYzMystMC4yNTc4ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDQzNnggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtaXMtbm90LWluc3RhbmNlICAg
ICAgICAgICAgICAgICAgIDAuNDAwNistMC4wMzU0ICAgICAgICAgICAgMC4zOTA3Ky0wLjAzNjIg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjU0eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFy
Y2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC43ODU5Ky0wLjA0OTIgICAgID8gICAgICAwLjg3
ODArLTAuMTYyOCAgICAgICAgPyBtaWdodCBiZSAxLjExNzF4IHNsb3dlcgogICByZWdleHAtcHJv
dG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yODc0Ky0wLjAzODAgICAg
ID8gICAgICAwLjMxNzQrLTAuMDQzMyAgICAgICAgPyBtaWdodCBiZSAxLjEwNDZ4IHNsb3dlcgog
ICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMzA2OCst
MC4xODc5ICAgICAgICAgICAgMS4yMDgxKy0wLjA2OTIgICAgICAgICAgbWlnaHQgYmUgMS4wODE3
eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4zMTM1Ky0wLjAyNDcgICAgID8gICAgICAwLjQzMjMrLTAuMTg5NyAgICAgICAgPyBtaWdo
dCBiZSAxLjM3ODh4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjMyMDYrLTAuMDM0NyAgICAgICAgICAgIDAuMzA2MistMC4w
MDc1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3MnggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMyNzcrLTAuMDQxMyAgICAg
ICAgICAgIDAuMzE1NistMC4wMTY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4M3ggZmFzdGVyCiAg
IHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNh
c2UgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4zMjcyKy0wLjAyNTYgICAgICAgICAgICAwLjMxNTYrLTAuMDM3OCAgICAgICAgICBtaWdo
dCBiZSAxLjAzNjd4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4zMDY1Ky0wLjAwNzIgICAgID8gICAgICAxLjA3MDkr
LTEuOTEyNCAgICAgICAgPyBtaWdodCBiZSAzLjQ5Mzh4IHNsb3dlcgogICByZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMTk1Ky0wLjAzMDMg
ICAgID8gICAgICAwLjMyMjYrLTAuMDQwMyAgICAgICAgPwogICByZWdleHAtcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzU4OCstMC4wMzMxICAgICBe
ICAgICAgMC4zMTAxKy0wLjAxMjIgICAgICAgIF4gZGVmaW5pdGVseSAxLjE1NzJ4IGZhc3Rlcgog
ICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNCAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMzMDIr
LTAuMDQ1NCAgICAgPyAgICAgIDAuMzM4OCstMC4wMzUxICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2
MHggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtdGVzdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjY1ODcrLTAuMDU5NCAgICAgPyAgICAgIDAuNjk5MistMC4xODg3ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDYxNHggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtdGVzdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yODA5Ky0wLjAxNTggICAgID8gICAgICAwLjMxOTcrLTAuMDY3MCAgICAg
ICAgPyBtaWdodCBiZSAxLjEzODJ4IHNsb3dlcgogICByZWdleHAtc2V0LWxhc3QtaW5kZXggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA5LjIwNTQrLTEuMDA3NiAgICAgPyAgICAgIDkuOTQ5
MCstMS40MDA4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDgwOHggc2xvd2VyCiAgIHJlZ2lzdGVyLXBy
ZXNzdXJlLWZyb20tb3NyICAgICAgICAgICAgICAgICAgICAgICAgMTUuMDg2NistMS41MjI3ICAg
ICAgICAgICAxNS4wNDI1Ky0xLjQ1NjUgICAgICAgIAogICByZXBlYXQtbXVsdGktZ2V0LWJ5LW9m
ZnNldCAgICAgICAgICAgICAgICAgICAgICAgIDE5LjY0NDIrLTAuODA5NSAgICAgPyAgICAgMTku
OTQyMystMi4xNzU3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1Mnggc2xvd2VyCiAgIHJlc3QtcGFy
YW1ldGVyLWNvbnN0cnVjdGlvbi1wZXJmb3JtYW5jZSAgICAgICAgICAgMjYuMDQ1MSstMC42MTUx
ICAgICAgICAgICAyNi4wMjM0Ky0wLjI4OTggICAgICAgIAogICByaWNoYXJkcy1lbXB0eS10cnkt
Y2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIDQ4LjkyNDMrLTAuOTQ2MCAgICAgPyAgICAg
NDkuNjgzMystMi4xMjExICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1NXggc2xvd2VyCiAgIHJpY2hh
cmRzLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDQuNTYzMystMy4y
NzYyICAgICAgICAgIDIwNC4yOTA2Ky01LjQxOTAgICAgICAgIAogICBzY29wZWQtYXJndW1lbnRz
LWxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjA1NzcrLTAuMDUzOCAgICAgPyAg
ICAgIDYuMDU5MystMC4xNjczICAgICAgICA/CiAgIHNjb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRl
bi1sZW5ndGggICAgICAgICAgICAgICAgIDYuMTUxNystMC41MjEyICAgICA/ICAgICAgNi4yNTE1
Ky0wLjc3OTcgICAgICAgID8gbWlnaHQgYmUgMS4wMTYyeCBzbG93ZXIKICAgc2NvcGVkLWFyZ3Vt
ZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aCAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjgwNjQrLTAuMzcwOSAgICAgICAgICAg
IDYuNzEzMistMC4xNTUwICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOXggZmFzdGVyCiAgIHNlYWwt
YW5kLWRvLXdvcmsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuMjYwNystMC4z
MjU2ICAgICA/ICAgICAxMi42Nzg3Ky0wLjY0NzAgICAgICAgID8gbWlnaHQgYmUgMS4wMzQxeCBz
bG93ZXIKICAgc2V0LWZvci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy40ODg4Ky0wLjAyMzkgICAgID8gICAgICAzLjcyMTcrLTAuMjk3MiAgICAgICAgPyBtaWdo
dCBiZSAxLjA2Njh4IHNsb3dlcgogICBzZXQtZm9yLW9mICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjQ4MjIrLTAuNTI3OSAgICAgICAgICAgIDYuMjc1NystMC4wOTc2
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyOXggZmFzdGVyCiAgIHNldHRlci1wcm90b3R5cGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzE0NystMC4wNTExICAgICA/ICAgICAg
NC4zNjYyKy0wLjA2NzMgICAgICAgID8gbWlnaHQgYmUgMS4wMTE5eCBzbG93ZXIKICAgc2V0dGVy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44NzcwKy0wLjA4
MDAgICAgID8gICAgICAyLjkyOTQrLTAuMDk5OSAgICAgICAgPyBtaWdodCBiZSAxLjAxODJ4IHNs
b3dlcgogICBzaW1wbGUtYWN0aXZhdGlvbi1kZW1vICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIyLjExMzkrLTEuODE4NyAgICAgICAgICAgMjAuOTUwOSstMC4zNzQ1ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDU1NXggZmFzdGVyCiAgIHNpbXBsZS1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTYuNjA4NCstMS40MzIwICAgICA/ICAgICAxNy41NzM4Ky0xLjY0Njgg
ICAgICAgID8gbWlnaHQgYmUgMS4wNTgxeCBzbG93ZXIKICAgc2ltcGxlLXBvbHktY2FsbC1uZXN0
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43NjAxKy0wLjExMTggICAgICAgICAgICAz
LjcxNzYrLTAuMTE0OSAgICAgICAgICBtaWdodCBiZSAxLjAxMTR4IGZhc3RlcgogICBzaW1wbGUt
cG9seS1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjMwODErLTAuMjI3
NSAgICAgICAgICAgIDEuMjQxOCstMC4wNjA3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUzNHggZmFz
dGVyCiAgIHNpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwgICAgICAgICAgICAgICAgICAg
IDIuNzY1NCstMC4xMDYwICAgICAgICAgICAgMi43MDQwKy0wLjA4NTMgICAgICAgICAgbWlnaHQg
YmUgMS4wMjI3eCBmYXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcgICAgICAgICAg
ICAgICAgICAgICAgICAxNS43NTU5Ky0wLjQwMDEgICAgICAgICAgIDE0Ljk0NTgrLTAuODQ3MyAg
ICAgICAgICBtaWdodCBiZSAxLjA1NDJ4IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy1mYWlsLXdpdGgtaG9pc3RlZC1yZWdleHAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4wODAyKy0wLjE2NzMgICAgID8gICAgICA4
LjA5MDIrLTAuMTE2NCAgICAgICAgPwogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWls
ICAgICAgICAgICAgICAgICAgIDEzLjI4NTcrLTAuNzQ1NSAgICAgPyAgICAgMTMuMzkyMSstMS4y
MTgyICAgICAgICA/CiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLXdpdGgtaG9pc3RlZC1y
ZWdleHAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOS4yNDgzKy0wLjM1MzMgICAgIF4gICAgICA4Ljc5MTkrLTAuMDcwMiAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuMDUxOXggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nICAg
ICAgICAgICAgICAgICAgICAgICAgMTQuMjg4NCstMC42NTEwICAgICAgICAgICAxNC4wMDY5Ky0w
LjQ3NDYgICAgICAgICAgbWlnaHQgYmUgMS4wMjAxeCBmYXN0ZXIKICAgc2luLWJvb2xlYW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4zNzI2Ky0wLjUzNjYgICAgICAg
ICAgICA2LjA2MTArLTAuMTQzNyAgICAgICAgICBtaWdodCBiZSAxLjA1MTR4IGZhc3RlcgogICBz
aW5nbGV0b24tc2NvcGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU5LjIxMjYr
LTAuOTEyOCAgICAgICAgICAgNTguODU1MCstMC40MTM3ICAgICAgICAKICAgc2luay1mdW5jdGlv
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42MzU4Ky0wLjE1MzAgICAg
ID8gICAgICA1LjE5NTcrLTAuNzkwMCAgICAgICAgPyBtaWdodCBiZSAxLjEyMDh4IHNsb3dlcgog
ICBzaW5rLWh1Z2UtYWN0aXZhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjIy
ODUrLTAuODUwMyAgICAgICAgICAgMTEuNzUzMCstMC42Mjg3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDQwNXggZmFzdGVyCiAgIHNpbmthYmxlLW5ldy1vYmplY3QtZGFnICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzMuMDQwOSstMC4wODc0ICAgICA/ICAgICAzMy4yMDgwKy0wLjIxMTAgICAgICAg
ID8KICAgc2lua2FibGUtbmV3LW9iamVjdC10YWtlbiAgICAgICAgICAgICAgICAgICAgICAgICAy
OS4wNzIzKy0wLjM3MTcgICAgID8gICAgIDI5Ljc1OTcrLTEuNjUwMCAgICAgICAgPyBtaWdodCBi
ZSAxLjAyMzZ4IHNsb3dlcgogICBzaW5rYWJsZS1uZXctb2JqZWN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE1LjYzODErLTAuOTg1NiAgICAgPyAgICAgMTYuOTM1OSstMi4wNTMxICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDgzMHggc2xvd2VyCiAgIHNsb3ctYXJyYXktcHJvZmlsZS1jb252
ZXJnZW5jZSAgICAgICAgICAgICAgICAgICAgIDIuMDg5MystMC4wNzIwICAgICA/ICAgICAgMi4y
MzY3Ky0wLjM5MDQgICAgICAgID8gbWlnaHQgYmUgMS4wNzA2eCBzbG93ZXIKICAgc2xvdy1jb252
ZXJnZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zNzk4Ky0wLjExOTYg
ICAgICAgICAgICAyLjMxODArLTAuMDQ0OCAgICAgICAgICBtaWdodCBiZSAxLjAyNjd4IGZhc3Rl
cgogICBzbG93LXRlcm5hcmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEx
LjkwMzcrLTAuNTM1NSAgICAgPyAgICAgMTIuMDM2MistMC42NjY1ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDExMXggc2xvd2VyCiAgIHNvcnRpbmctYmVuY2htYXJrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTcuMDYzOCstMC44NDcyICAgICAgICAgICAxNi41MTc2Ky0wLjUzNDAgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzMxeCBmYXN0ZXIKICAgc3BhcnNlLWNvbmRpdGlvbmFsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNDQwKy0wLjA4NjEgICAgICAgICAgICAxLjE0
MTYrLTAuMTA5MSAgICAgICAgCiAgIHNwYXJzZS1zZXQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTguMTU2OCstMS4zNzI2ICAgICAgICAgICA1OC4wNTc0Ky0xLjkzNDkg
ICAgICAgIAogICBzcGxpY2UtdG8tcmVtb3ZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE0LjgwODArLTEuNDkwMCAgICAgICAgICAgMTMuNjUwNystMC4yMjE4ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDg0OHggZmFzdGVyCiAgIHN0cmNhdC1jb25zdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuMzExNistMC40NjUxICAgICAgICAgICAgNS4wNTI5Ky0wLjA0
NzggICAgICAgICAgbWlnaHQgYmUgMS4wNTEyeCBmYXN0ZXIKICAgc3RyY2F0LWxlbmd0aC1jb25z
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS42MzMyKy0wLjI5MDEgICAgICAgICAg
ICA1LjU0ODErLTAuMzI4OCAgICAgICAgICBtaWdodCBiZSAxLjAxNTN4IGZhc3RlcgogICBzdHJp
Y3Qtb3NyLWVudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjI0NjArLTAu
MTQ4OSAgICAgICAgICAgIDguMjA5MistMC4xNDcxICAgICAgICAKICAgc3RyaW5nLWNoYXItY29k
ZS1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS43NTY5Ky0wLjE3ODMgICAgID8g
ICAgIDEyLjAwOTUrLTAuNDQwMCAgICAgICAgPyBtaWdodCBiZSAxLjAyMTV4IHNsb3dlcgogICBz
dHJpbmctY29uY2F0LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjczMzEr
LTAuMTE0MiAgICAgPyAgICAgIDEuNzM2MCstMC4wODM1ICAgICAgICA/CiAgIHN0cmluZy1jb25j
YXQtcGFpci1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNjg4NCstMC4wNzUwICAg
ICA/ICAgICAgMS43OTg4Ky0wLjA4MDkgICAgICAgID8gbWlnaHQgYmUgMS4wNjU0eCBzbG93ZXIK
ICAgc3RyaW5nLWNvbmNhdC1wYWlyLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgMi42
NjYxKy0wLjAzNzEgICAgID8gICAgICAyLjcxMjgrLTAuMDY2NSAgICAgICAgPyBtaWdodCBiZSAx
LjAxNzV4IHNsb3dlcgogICBzdHJpbmctY29uY2F0LXNpbXBsZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA3LjkxOTYrLTAuMTExNiAgICAgXiAgICAgIDcuNjkyNystMC4xMDY0ICAgICAg
ICBeIGRlZmluaXRlbHkgMS4wMjk1eCBmYXN0ZXIKICAgc3RyaW5nLWNvbnMtcmVwZWF0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNS40Mjk2Ky0wLjI1MTAgICAgID8gICAgICA1LjU5
NzMrLTAuMjcyNyAgICAgICAgPyBtaWdodCBiZSAxLjAzMDl4IHNsb3dlcgogICBzdHJpbmctY29u
cy10b3dlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjIzNTgrLTAuNTE1NCAg
ICAgPyAgICAgIDQuMjQwMCstMC40NzA2ICAgICAgICA/CiAgIHN0cmluZy1lcXVhbGl0eSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuOTU1NystMS4wNDc1ICAgICA/ICAgICAx
NC45NzgwKy0xLjM4MTcgICAgICAgID8KICAgc3RyaW5nLWZyb20tY2hhci1jb2RlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNS42MDIxKy0wLjA2NjYgICAgID8gICAgICA1LjY2MjcrLTAu
MDg1NyAgICAgICAgPyBtaWdodCBiZSAxLjAxMDh4IHNsb3dlcgogICBzdHJpbmctZ2V0LWJ5LXZh
bC1iaWctY2hhciAgICAgICAgICAgICAgICAgICAgICAgICA0LjA3NDkrLTAuMjExMSAgICAgICAg
ICAgIDQuMDcxMSstMC4xMDcyICAgICAgICAKICAgc3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJv
dW5kcy1pbnNhbmUgICAgICAgICAgICAgMy41NzgyKy0wLjA0OTEgICAgICAgICAgICAzLjUxMjIr
LTAuMDk1OSAgICAgICAgICBtaWdodCBiZSAxLjAxODh4IGZhc3RlcgogICBzdHJpbmctZ2V0LWJ5
LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAzLjk1MDMrLTAuMDU0MiAgICAg
ICAgICAgIDMuOTE4MSstMC4wNjU1ICAgICAgICAKICAgc3RyaW5nLWdldC1ieS12YWwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44NjkwKy0wLjA1MTUgICAgID8gICAgICAxLjky
MjMrLTAuMDYwNyAgICAgICAgPyBtaWdodCBiZSAxLjAyODV4IHNsb3dlcgogICBzdHJpbmctaGFz
aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjgxOTcrLTAuMDMyNSAg
ICAgPyAgICAgIDEuOTEzNystMC4xNzQ4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUxN3ggc2xvd2Vy
CiAgIHN0cmluZy1sb25nLWlkZW50LWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgMTIu
MTEwMSstMC41NjcyICAgICA/ICAgICAxMi42NjgxKy0xLjAzOTIgICAgICAgID8gbWlnaHQgYmUg
MS4wNDYxeCBzbG93ZXIKICAgc3RyaW5nLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOS4yOTk3Ky0wLjM5NjggICAgID8gICAgICA5LjMwMTQrLTAuMzM3NCAgICAg
ICAgPwogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
Ljg5NzcrLTAuMDQ1MCAgICAgICAgICAgIDAuODkzNistMC4wMzgzICAgICAgICAKICAgc3RyaW5n
LXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzQzOCstMC4wMTI2
ICAgICA/ICAgICAgMC4zOTI1Ky0wLjA2ODQgICAgICAgID8gbWlnaHQgYmUgMS4xNDE4eCBzbG93
ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MzYxMistMC4wNDg3ICAgICA/ICAgICAgMC4zNjMxKy0wLjA0MDcgICAgICAgID8KICAgc3RyaW5n
LXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzM4MystMC4wMTUy
ICAgICA/ICAgICAgMC4zNDM4Ky0wLjAyNDAgICAgICAgID8gbWlnaHQgYmUgMS4wMTYxeCBzbG93
ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjM0
ODIrLTAuMDY5OCAgICAgICAgICAgIDEuMzA4OCstMC4wMjQzICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMwMXggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMzY2MCstMC4wMzIwICAgICAgICAgICAgMC4zNjEyKy0wLjAwOTcgICAgICAgICAg
bWlnaHQgYmUgMS4wMTM0eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4zNjYzKy0wLjAxNDQgICAgID8gICAgICAwLjM3MTUr
LTAuMDIwNCAgICAgICAgPyBtaWdodCBiZSAxLjAxNDR4IHNsb3dlcgogICBzdHJpbmctcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40MTY3Ky0wLjA3NzUg
ICAgICAgICAgICAwLjM3MDArLTAuMDE4OCAgICAgICAgICBtaWdodCBiZSAxLjEyNjV4IGZhc3Rl
cgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25v
cmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuNDMwNistMC4xMjk0ICAgICAgICAgICAgMC4zOTE0Ky0wLjA3MTUgICAgICAgICAg
bWlnaHQgYmUgMS4xMDAyeCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzc5MystMC4wNDA5ICAgICA/ICAgICAgMC40
MDUzKy0wLjAzODMgICAgICAgID8gbWlnaHQgYmUgMS4wNjg2eCBzbG93ZXIKICAgc3RyaW5nLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5ICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzc1NSstMC4w
MzAyICAgICAgICAgICAgMC4zNzMwKy0wLjAzMDUgICAgICAgIAogICBzdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzY0NSstMC4wMTYzICAg
ICA/ICAgICAgMC4zNzU2Ky0wLjAzNzUgICAgICAgID8gbWlnaHQgYmUgMS4wMzA0eCBzbG93ZXIK
ICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zODMy
Ky0wLjA0OTcgICAgID8gICAgICAwLjM5MTArLTAuMDU4NCAgICAgICAgPyBtaWdodCBiZSAxLjAy
MDJ4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIwLjY0OTcrLTEuODU4OCAgICAgICAgICAgMjAuNDA0OCstMS43Nzc4ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDEyMHggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1m
aXhlZCAgICAgICAgICAgICAgICAgIDIuNDUwMCstMC4xMjY0ICAgICA/ICAgICAgMi40Njg4Ky0w
LjEwNzIgICAgICAgID8KICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLW5vLWlubGluZSAg
ICAgICAgICAgICAgMy4xMTIzKy0wLjExNDkgICAgID8gICAgICAzLjIzNTcrLTAuMzIzNSAgICAg
ICAgPyBtaWdodCBiZSAxLjAzOTZ4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZp
bmcgICAgICAgICAgICAgICAgICAgICAgICAzLjE5MjMrLTAuMjU5OSAgICAgICAgICAgIDMuMTM5
NistMC4xODUxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2OHggZmFzdGVyCiAgIHN0cmluZy1yZXBl
YXQtcmVzb2x2aW5nLWZpeGVkICAgICAgICAgICAgICAgICAgICAgMjEuNzkwMistMS44NjMzICAg
ICAgICAgICAyMS4wNDM1Ky0wLjM2ODIgICAgICAgICAgbWlnaHQgYmUgMS4wMzU1eCBmYXN0ZXIK
ICAgc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctbm8taW5saW5lICAgICAgICAgICAgICAgICAyOC4z
NDM4Ky0wLjgwNDAgICAgICAgICAgIDI4LjMyNjcrLTAuMjk2NiAgICAgICAgCiAgIHN0cmluZy1y
ZXBlYXQtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgMjguNTE2MistMC42OTcy
ICAgICA/ICAgICAyOC43NzA2Ky0yLjAwNzUgICAgICAgID8KICAgc3RyaW5nLXJlcGVhdC1zaW5n
bGUtbm90LXJlc29sdmluZyAgICAgICAgICAgICAgICAgNy40MDkxKy0xLjA1NzEgICAgICAgICAg
ICA2Ljg2MDMrLTEuMjg3OSAgICAgICAgICBtaWdodCBiZSAxLjA4MDB4IGZhc3RlcgogICBzdHJp
bmctcmVwZWF0LXNpbmdsZS1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICA2LjgzMDIrLTAu
ODE2MyAgICAgPyAgICAgIDcuMzM5NSstMC45ODkyICAgICAgICA/IG1pZ2h0IGJlIDEuMDc0Nngg
c2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtc21hbGwtbm90LXJlc29sdmluZyAgICAgICAgICAgICAg
ICAgIDIuNTI1NistMC4xNDQyICAgICAgICAgICAgMi41MDA1Ky0wLjEyNDcgICAgICAgICAgbWln
aHQgYmUgMS4wMTAweCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1zbWFsbC1yZXNvbHZpbmcgICAg
ICAgICAgICAgICAgICAgICAyOC45MzAyKy0wLjY0ODcgICAgID8gICAgIDI5LjE2NTIrLTIuMDA4
MSAgICAgICAgPwogICBzdHJpbmctcmVwbGFjZS1lbXB0eSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjYzNTUrLTAuMTk0NCAgICAgICAgICAgIDcuMjg5MystMC4zMTA3ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDQ3NXggZmFzdGVyCiAgIHN0cmluZy1yZXBsYWNlLWdlbmVyaWMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDguOTg5MSstMS43Nzc4ICAgICAgICAgICA0Ny45MTgwKy0w
LjU3ODUgICAgICAgICAgbWlnaHQgYmUgMS4wMjI0eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGxhY2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy45MTAyKy0wLjU0NjUgICAgICAg
ICAgICA3LjM2MzIrLTAuMjAyNyAgICAgICAgICBtaWdodCBiZSAxLjA3NDN4IGZhc3RlcgogICBz
dHJpbmctcm9wZS13aXRoLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjAyMTkr
LTAuOTA1MCAgICAgICAgICAgMTUuNTA4NystMC41OTMxICAgICAgICAgIG1pZ2h0IGJlIDEuMDMz
MXggZmFzdGVyCiAgIHN0cmluZy1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzMuNDg3NCstMS4zMDgwICAgICAgICAgICAzMi4wMDM3Ky0wLjc1MTYgICAgICAgICAg
bWlnaHQgYmUgMS4wNDY0eCBmYXN0ZXIKICAgc3RyaW5nLXRlc3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi42NzU4Ky0wLjEwOTUgICAgICAgICAgICAyLjYwMTYrLTAu
MDQzMSAgICAgICAgICBtaWdodCBiZSAxLjAyODV4IGZhc3RlcgogICBzdHJpbmctdHJhbnNjb2Rp
bmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjY3MjgrLTAuNzY0MyAgICAgPyAg
ICAgMTMuODY1NystMC43MTE4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0MXggc2xvd2VyCiAgIHN0
cmluZy12YXItZXF1YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuNjg5OSst
MC43NTQ5ICAgICA/ICAgICAyNC41OTIwKy0xLjk3NzMgICAgICAgID8gbWlnaHQgYmUgMS4wMzgx
eCBzbG93ZXIKICAgc3RydWN0dXJlLWhvaXN0LW92ZXItdHJhbnNpdGlvbnMgICAgICAgICAgICAg
ICAgICAgMi4wNTYzKy0wLjE2ODMgICAgICAgICAgICAyLjA1NjErLTAuMDc3OSAgICAgICAgCiAg
IHN1YnN0cmluZy1jb25jYXQtd2VpcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEuMzEz
OSstMC4xMTM5ICAgICAhICAgICAzMS42MjM1Ky0wLjE4MTUgICAgICAgICEgZGVmaW5pdGVseSAx
LjAwOTl4IHNsb3dlcgogICBzdWJzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDM1LjIxMDQrLTAuNDc4NCAgICAgPyAgICAgMzYuMTQwNystMi4yNTYxICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDI2NHggc2xvd2VyCiAgIHN1YnN0cmluZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzkuNTI2MystMC4wODMxICAgICAhICAgICA0MC4xMzM0
Ky0wLjQ2ODMgICAgICAgICEgZGVmaW5pdGVseSAxLjAxNTR4IHNsb3dlcgogICBzdXBlci1nZXQt
YnktaWQtd2l0aC10aGlzLW1vbm9tb3JwaGljICAgICAgICAgICAgIDI2LjA1ODErLTEuNzMwNCAg
ICAgICAgICAgMjUuNzUwOSstMS40OTcxICAgICAgICAgIG1pZ2h0IGJlIDEuMDExOXggZmFzdGVy
CiAgIHN1cGVyLWdldC1ieS1pZC13aXRoLXRoaXMtcG9seW1vcnBoaWMgICAgICAgICAgICAgMjMu
NTQyNistMS4wNzA0ICAgICAgICAgICAyMi45MjQ5Ky0wLjQ5MDkgICAgICAgICAgbWlnaHQgYmUg
MS4wMjY5eCBmYXN0ZXIKICAgc3VwZXItZ2V0LWJ5LXZhbC13aXRoLXRoaXMtbW9ub21vcnBoaWMg
ICAgICAgICAgICAyNi4wMzc0Ky0xLjg0MTQgICAgID8gICAgIDI2LjAzODArLTAuOTAyMiAgICAg
ICAgPwogICBzdXBlci1nZXQtYnktdmFsLXdpdGgtdGhpcy1wb2x5bW9ycGhpYyAgICAgICAgICAg
IDI0LjAyMzcrLTAuODk5MiAgICAgPyAgICAgMjQuMzc1MystMC43MTYzICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE0Nnggc2xvd2VyCiAgIHN3aXRjaC1jaGFyLWNvbnN0YW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEuODQ4MistMC4wNjM4ICAgICA/ICAgICAgMS44OTAyKy0wLjA2ODAg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjI3eCBzbG93ZXIKICAgc3dpdGNoLWNoYXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yNjEwKy0wLjAzNDAgICAgID8gICAgICA0
LjQwMDMrLTAuMTczOSAgICAgICAgPyBtaWdodCBiZSAxLjAzMjd4IHNsb3dlcgogICBzd2l0Y2gt
Y29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjA2MzArLTAuMjIy
NiAgICAgICAgICAgIDMuOTM3NSstMC4xNjE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMxOXggZmFz
dGVyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhciAgICAgICAgICAgICAgICAgICAgICAg
MTMuMjcyMSstMC4xNTkyICAgICA/ICAgICAxNC4yNzIxKy0xLjI5MDIgICAgICAgID8gbWlnaHQg
YmUgMS4wNzU0eCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYy1iaWcgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMS45NTUzKy0wLjgzNzkgICAgICAgICAgIDExLjg0MDUrLTAuNjAwMSAg
ICAgICAgCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtdmFyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTQuNDE4MistMS4yNzMwICAgICAgICAgICAxNC4yOTc0Ky0xLjQzNDkgICAgICAgIAogICBz
d2l0Y2gtc3RyaW5nLWJhc2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjA5MjMr
LTAuODMzMCAgICAgICAgICAgMTAuNzIxOCstMC41MjI0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0
NnggZmFzdGVyCiAgIHN3aXRjaC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12YXIgICAgICAgICAg
ICAgICAgMTkuMjM5MCstMS42MjMwICAgICA/ICAgICAxOS42NjUxKy0xLjUyMTUgICAgICAgID8g
bWlnaHQgYmUgMS4wMjIyeCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFy
ICAgICAgICAgICAgICAgICAgICAxNC4wMjE3Ky0xLjI0ODUgICAgID8gICAgIDE0LjExMzQrLTEu
NjY2MyAgICAgICAgPwogICBzd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlciAgICAgICAgICAgICAg
ICAgICAgICAgIDEwLjUzMTgrLTAuNDM5MiAgICAgICAgICAgMTAuMzkyNystMC4xNjI1ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDEzNHggZmFzdGVyCiAgIHN3aXRjaC1zdHJpbmctc2hvcnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTEuMjY0OSstMS43NzA4ICAgICAgICAgICAxMC40MTI4
Ky0wLjMzMTMgICAgICAgICAgbWlnaHQgYmUgMS4wODE4eCBmYXN0ZXIKICAgc3dpdGNoICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS40NzAzKy0wLjE1ODAgICAg
ID8gICAgICA1LjUwMTkrLTAuMjU2OSAgICAgICAgPwogICBzd2l0Y2hpbmctc2l6ZS1jbGFzc2Vz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzLjU1MDYrLTEuMDUyNCAgICAgXiAgICAgMzcu
ODQ0OCstMC41MzIwICAgICAgICBeIGRlZmluaXRlbHkgMS4xNTA4eCBmYXN0ZXIKICAgc3ltYm9s
LXRvc3RyaW5ndGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xMDYyKy0wLjMw
ODUgICAgICAgICAgICAyLjg1NzMrLTAuMDU3NyAgICAgICAgICBtaWdodCBiZSAxLjA4NzF4IGZh
c3RlcgogICB0YW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDY4LjA4MTkrLTIuOTkwNyAgICAgICAgICAgNjUuOTQwNystMC4yNDkxICAgICAgICAgIG1pZ2h0
IGJlIDEuMDMyNXggZmFzdGVyCiAgIHRlYXItb2ZmLWFyZ3VtZW50cy1zaW1wbGUgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuMTY5NCstMC4xMDI0ICAgICAgICAgICAgMi4xNjQ1Ky0wLjQwNzgg
ICAgICAgIAogICB0ZWFyLW9mZi1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjg1NjQrLTAuMTU3OCAgICAgPyAgICAgIDIuOTc2NistMC4zNDQwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQyMXggc2xvd2VyCiAgIHRlbXBvcmFsLXN0cnVjdHVyZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTAuOTY2MistMC4xOTU0ICAgICA/ICAgICAxMS43MTA0Ky0wLjc0
OTggICAgICAgID8gbWlnaHQgYmUgMS4wNjc5eCBzbG93ZXIKICAgdG8taW50MzItYm9vbGVhbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi41OTY1Ky0xLjA0NDAgICAgID8gICAg
IDEyLjk2NzQrLTEuMDY2MyAgICAgICAgPyBtaWdodCBiZSAxLjAyOTR4IHNsb3dlcgogICB0by1u
dW1iZXItY29uc3RydWN0b3ItbnVtYmVyLXN0cmluZy1udW1iZXItc3RyaW5nICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDc2MistMC4z
MjEwICAgICA/ICAgICAgMy41Mzg5Ky0wLjQxNzggICAgICAgID8gbWlnaHQgYmUgMS4wMTgweCBz
bG93ZXIKICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLW9ubHktbnVtYmVyICAgICAgICAgICAgICAg
ICAgMC42OTYwKy0wLjA3MjggICAgID8gICAgICAwLjY5NzMrLTAuMDcyMSAgICAgICAgPwogICB0
by1udW1iZXItY29uc3RydWN0b3Itb25seS1zdHJpbmcgICAgICAgICAgICAgICAgICAxLjU5NDEr
LTAuMTExNyAgICAgPyAgICAgIDEuNTk5MistMC4xMTQ0ICAgICAgICA/CiAgIHRvLW51bWJlci1j
b25zdHJ1Y3Rvci1zdHJpbmctbnVtYmVyLXN0cmluZy1udW1iZXIgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44MzAwKy0wLjEzMjUgICAg
ID8gICAgICAyLjg4ODYrLTAuMTc2NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMDd4IHNsb3dlcgog
ICB0by1udW1iZXItbnVtYmVyLXN0cmluZy1udW1iZXItc3RyaW5nICAgICAgICAgICAgICAzLjAx
MjkrLTAuMTEzMiAgICAgPyAgICAgIDMuMDk0MistMC4wMzIzICAgICAgICA/IG1pZ2h0IGJlIDEu
MDI3MHggc2xvd2VyCiAgIHRvLW51bWJlci1vbmx5LW51bWJlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuNjIwNistMC4xMjI2ICAgICA/ICAgICAgMC42Mjg5Ky0wLjA4NzcgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTM1eCBzbG93ZXIKICAgdG8tbnVtYmVyLW9ubHktc3RyaW5nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMS41MTM2Ky0wLjAzMjMgICAgID8gICAgICAxLjU0NTcr
LTAuMDIzMSAgICAgICAgPyBtaWdodCBiZSAxLjAyMTJ4IHNsb3dlcgogICB0by1udW1iZXItc3Ry
aW5nLW51bWJlci1zdHJpbmctbnVtYmVyICAgICAgICAgICAgICAyLjc4NjYrLTAuMDQzOCAgICAg
PyAgICAgIDIuOTIxMystMC4xMTM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ4M3ggc2xvd2VyCiAg
IHRyeS1jYXRjaC1nZXQtYnktdmFsLWNsb25lZC1hcmd1bWVudHMgICAgICAgICAgICAgIDMuMDA3
MistMC4xOTE3ICAgICA/ICAgICAgMy4wMjAyKy0wLjMyNDUgICAgICAgID8KICAgdHJ5LWNhdGNo
LWdldC1ieS12YWwtZGlyZWN0LWFyZ3VtZW50cyAgICAgICAgICAgICAgMS42Njg3Ky0wLjExNDkg
ICAgICAgICAgICAxLjY1MjUrLTAuMDkzMSAgICAgICAgCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFs
LXNjb3BlZC1hcmd1bWVudHMgICAgICAgICAgICAgIDMuNzMxMSstMC4yMzUzICAgICAgICAgICAg
My40NjM4Ky0wLjE1MjkgICAgICAgICAgbWlnaHQgYmUgMS4wNzcyeCBmYXN0ZXIKICAgdHJ5LWdl
dC1ieS1pZC1iYXNpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS43MDYwKy0wLjE4
NzEgICAgICAgICAgICA1LjQ5NjUrLTAuMTIzMCAgICAgICAgICBtaWdodCBiZSAxLjAzODF4IGZh
c3RlcgogICB0cnktZ2V0LWJ5LWlkLXBvbHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAg
ICA2LjIxNjIrLTAuMTY1NCAgICAgPyAgICAgIDYuMjQyNystMC4xMjYyICAgICAgICA/CiAgIHR5
cGVkLWFycmF5LWdldC1zZXQtYnktdmFsLXByb2ZpbGluZyAgICAgICAgICAgICAgMTkuOTAzMist
MS43MzE2ICAgICAgICAgICAxOS40ODE0Ky0wLjgwODYgICAgICAgICAgbWlnaHQgYmUgMS4wMjE2
eCBmYXN0ZXIKICAgdHlwZWQtYXJyYXktc3ViYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzMS43MzY1Ky0wLjQ1NzUgICAgID8gICAgIDMyLjM1MjArLTAuNTAwMSAgICAgICAgPyBt
aWdodCBiZSAxLjAxOTR4IHNsb3dlcgogICB1bmRlZmluZWQtcHJvcGVydHktYWNjZXNzICAgICAg
ICAgICAgICAgICAgICAgICAgMjA5LjEzMzIrLTIuNzI2NCAgICAgICAgICAyMDguMzAzMistMy4x
Njg2ICAgICAgICAKICAgdW5kZWZpbmVkLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi43MTA5Ky0wLjAxNDEgICAgICAgICAgICAyLjcwNzcrLTAuMDU0MyAgICAgICAg
CiAgIHVucHJvZmlsZWQtbGljbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUu
NTg2NystMC4xODIxICAgICA/ICAgICAgNS43NDU3Ky0wLjMyMzMgICAgICAgID8gbWlnaHQgYmUg
MS4wMjg1eCBzbG93ZXIKICAgdW50eXBlZC1zdHJpbmctZnJvbS1jaGFyLWNvZGUgICAgICAgICAg
ICAgICAgICAgICAgOS4yMDk0Ky0wLjE2MTYgICAgICAgICAgICA5LjA0OTgrLTAuMTQxOSAgICAg
ICAgICBtaWdodCBiZSAxLjAxNzZ4IGZhc3RlcgogICB2OC1yYXl0cmFjZS13aXRoLWVtcHR5LXRy
eS1jYXRjaCAgICAgICAgICAgICAgICAgIDI0LjA3NjIrLTAuNjc0NiAgICAgICAgICAgMjQuMDQ0
NystMC42NDM4ICAgICAgICAKICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0Y2gtaGlnaC1mcmVx
dWVuY3ktdGhyb3dzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyODIuNjIzNSstNS41MDA4ICAgICAgICAgIDI3OS4yNTU1Ky0zLjE5OTUgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTIxeCBmYXN0ZXIKICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0
Y2ggICAgICAgICAgICAgICAgICAgICAgICA1Mi44MDgyKy0wLjUyNzIgICAgID8gICAgIDU0LjE1
MzQrLTAuOTg3NSAgICAgICAgPyBtaWdodCBiZSAxLjAyNTV4IHNsb3dlcgogICB2OC1yZWdleHAt
c2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3LjA5ODgrLTAuNTQyNCAg
ICAgPyAgICAgNDcuMzIxNSstMC41MDE4ICAgICAgICA/CiAgIHZhcmFyZ3MtY2FsbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNjIxNistMC4yMzMxICAgICA/ICAgICAx
Mi44MzA3Ky0xLjEzMzkgICAgICAgID8gbWlnaHQgYmUgMS4wMTY2eCBzbG93ZXIKICAgdmFyYXJn
cy1jb25zdHJ1Y3QtaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAxNC41OTUwKy0wLjcz
NzIgICAgID8gICAgIDE0LjYwODgrLTAuNTQ4NyAgICAgICAgPwogICB2YXJhcmdzLWNvbnN0cnVj
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjA3NzcrLTAuNDc5OSAgICAgPyAg
ICAgMTIuMTA2NCstMC40ODM4ICAgICAgICA/CiAgIHZhcmFyZ3MtaW5saW5lICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDcuOTM2NSstMC4yMTMyICAgICAgICAgICAgNy44Njcw
Ky0wLjI5MDggICAgICAgIAogICB2YXJhcmdzLXN0cmljdC1tb2RlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA5LjExNDQrLTAuNDA3NCAgICAgPyAgICAgIDkuNTY5MistMS4yNTkxICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDQ5OXggc2xvd2VyCiAgIHZhcmFyZ3MgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMjIwMCstMC42MjAwICAgICAgICAgICAgOS4w
MDEwKy0wLjE2MjAgICAgICAgICAgbWlnaHQgYmUgMS4wMjQzeCBmYXN0ZXIKICAgd2VpcmQtaW5s
aW5pbmctY29uc3QtcHJvcCAgICAgICAgICAgICAgICAgICAgICAgICAgMS45NTA0Ky0wLjE4MTMg
ICAgICAgICAgICAxLjkzMDIrLTAuMTcyMiAgICAgICAgICBtaWdodCBiZSAxLjAxMDV4IGZhc3Rl
cgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ny4wNjA3Ky0wLjAwNzkgICAgICEgICAgICA3LjA4NzArLTAuMDE0MyAgICAgICAgISBkZWZpbml0
ZWx5IDEuMDAzN3ggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAgICAgICBUaGluZ3MgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApBc21CZW5jaDoKICAgYmlnZmliLmNw
cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxMC4xMzIyKy02LjI1NDEg
ICAgICAgICAgNDAzLjc5MzIrLTMuNTUyMCAgICAgICAgICBtaWdodCBiZSAxLjAxNTd4IGZhc3Rl
cgogICBjcmF5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYw
LjAzMzArLTMuODUzNiAgICAgICAgICAzNTguNzczNSstMy4xNjgyICAgICAgICAKICAgZHJ5LmMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyNi40NTc2Ky03My4z
NzY5ICAgID8gICAgNDI5LjY2NDUrLTcwLjUwNTggICAgICAgPwogICBGbG9hdE1NLmMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzEyLjc4NjgrLTQ1LjE2NDggICAgICAg
ICA2OTkuNDI0MSstNDYuNzY2OSAgICAgICAgIG1pZ2h0IGJlIDEuMDE5MXggZmFzdGVyCiAgIGdj
Yy1sb29wcy5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzODIuODE0MCst
MTIuMDcxNSAgICAgICAgMzM3Ny41NTA5Ky0yMC42MTk1ICAgICAgIAogICBuLWJvZHkuYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzUwLjY5ODcrLTcuNzk2OSAgICAg
PyAgICA3NTUuNjUyNistNi4yMzQ5ICAgICAgICA/CiAgIFF1aWNrc29ydC5jICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNzAuNzA2NystNC4wNTgzICAgICAgICAgIDM2Ni4y
NzY5Ky0zLjg1NzcgICAgICAgICAgbWlnaHQgYmUgMS4wMTIxeCBmYXN0ZXIKICAgc3RlcGFub3Zf
Y29udGFpbmVyLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgMzE0My41MjI4Ky0zNS42NjU5
ICAgICAgICAzMTIxLjQ1NjQrLTMxLjY1NjggICAgICAgCiAgIFRvd2Vycy5jICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDguNTM3MCstMi44NjQ5ICAgICAgICAgIDI0
Ny4zODY2Ky0zLjEzOTkgICAgICAgIAoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDY4My43OTcxKy0xNC40NjU1ICAgICAgICAgNjgwLjA3NTcrLTEw
LjY4ODIgICAgICAgICBtaWdodCBiZSAxLjAwNTV4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBPZlRyZWUgICAgICAgICAg
ICAgICAgICAgVGhpbmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQ29t
cHJlc3Npb25CZW5jaDoKICAgaHVmZm1hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxOC41OTkzKy0xLjU3OTIgICAgICAgICAgIDE3LjIzMjMrLTAuODk5NiAgICAg
ICAgICBtaWdodCBiZSAxLjA3OTN4IGZhc3RlcgogICBhcml0aG1ldGljLXNpbXBsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjQ2LjcxMDMrLTEuNjc4OCAgICAgPyAgICAyNDcuNTE5
NSstMi41Njg3ICAgICAgICA/CiAgIGFyaXRobWV0aWMtcHJlY2lzZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyMzguMjA2NSstMy42NTIwICAgICA/ICAgIDIzOS42NTQ0Ky0zLjA5ODcg
ICAgICAgID8KICAgYXJpdGhtZXRpYy1jb21wbGV4LXByZWNpc2UgICAgICAgICAgICAgICAgICAg
ICAgIDIzNy44MjA3Ky01LjA0MjEgICAgICAgICAgMjM1LjUyOTUrLTQuODIyNSAgICAgICAgCiAg
IGFyaXRobWV0aWMtcHJlY2lzZS1vcmRlci0wICAgICAgICAgICAgICAgICAgICAgICAyNTQuMTU2
MystMi4wODI4ICAgICA/ICAgIDI1NC42NDU2Ky0yLjE2MDkgICAgICAgID8KICAgYXJpdGhtZXRp
Yy1wcmVjaXNlLW9yZGVyLTEgICAgICAgICAgICAgICAgICAgICAgIDI4Ni42NTY3Ky00LjQzODIg
ICAgICAgICAgMjg1LjAzNDMrLTEuNDA4NSAgICAgICAgCiAgIGFyaXRobWV0aWMtcHJlY2lzZS1v
cmRlci0yICAgICAgICAgICAgICAgICAgICAgICAzMjkuNDIyNistNC4xMjA2ICAgICA/ICAgIDMz
MC4wNzg0Ky0zLjIwNDcgICAgICAgID8KICAgYXJpdGhtZXRpYy1zaW1wbGUtb3JkZXItMSAgICAg
ICAgICAgICAgICAgICAgICAgIDI5Ni44NTM5Ky0yLjE2MjggICAgICAgICAgMjkzLjk0NTgrLTQu
ODk2OCAgICAgICAgCiAgIGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTIgICAgICAgICAgICAgICAg
ICAgICAgICAzNDUuMTIyMCstNy44MTEyICAgICAgICAgIDM0Mi4wOTE4Ky03LjQ1NDkgICAgICAg
IAogICBsei1zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcw
LjkxNjYrLTkuNDQ1MCAgICAgICAgICAyNjkuNzgzNCstNS43MDMzICAgICAgICAKCiAgIDxnZW9t
ZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTAuNzExNCstMS4z
NDM4ICAgICAgICAgIDIwOC42MjgzKy0xLjE5MTIgICAgICAgICAgbWlnaHQgYmUgMS4wMTAweCBm
YXN0ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGlwT2ZUcmVlICAgICAgICAgICAgICAgICAgIFRoaW5ncyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCkdlb21lYW4gb2YgcHJlZmVycmVkIG1lYW5zOgogICA8c2Nh
bGVkLXJlc3VsdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLjk2ODkrLTAu
MjUzOCAgICAgICAgICAgNDIuOTQ5MystMC4xNjkwICAgICAgICAgIG1pZ2h0IGJlIDEuMDAwNXgg
ZmFzdGVyCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289307</attachid>
            <date>2016-09-19 20:51:00 -0700</date>
            <delta_ts>2016-09-20 09:55:46 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>174114</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDYxMDApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE2LTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBwb3J0IG92
ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgYSBtaWNyb2JlbmNobWFy
ayBmb3Igd2h5IHdlIHdhbnQgdG8gcmVjbGFpbSBlbXB0eSBibG9ja3MgZnJvbSBvdGhlciBhbGxv
Y2F0b3JzLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNz
ZXMuanM6IEFkZGVkLgorCiAyMDE2LTA5LTE4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIERvIG5vdCBuZWVkIHRvIHVzZSBkZWZpbmVQcm9w
ZXJ0eSB0byBkZWZpbmUgbWV0aG9kcyBmb3Igb2JqZWN0IGxpdGVyYWxzCkluZGV4OiBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9zd2l0Y2hpbmctc2l6ZS1jbGFzc2VzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNzZXMuanMJKG5vbmV4
aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3dpdGNoaW5nLXNpemUtY2xhc3Nl
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTA7ICsraSkgeworICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTAwMDAwOyArK2opCisgICAgICAg
IG5ldyBBcnJheSgxMCAqIGkpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjg1IEBACisyMDE2LTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBz
dXBwb3J0IG92ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDb25jdXJyZW50
IEdDcyBtdXN0IGFsbG93IGZvciBtdXRhdGlvbiBhbmQgYWxsb2NhdGlvbiBkdXJpbmcgY29sbGVj
dGlvbi4gV2UgYWxyZWFkeSBrbm93CisgICAgICAgIGhvdyB0byBtdXRhdGUgZHVyaW5nIGNvbGxl
Y3Rpb24uIFdlIGhhdmUgYSB3cml0ZSBiYXJyaWVyIGZvciB0aGF0LiBBbGxvY2F0aW9uIGR1cmlu
ZworICAgICAgICBjb2xsZWN0aW9uIGlzIG1vcmUgaW52b2x2ZWQ6IHRoZSBjb2xsZWN0b3IgbW9k
aWZpZXMgdGhlIHRoZSBtYXJrIGJpdHMsIGFzIHdlbGwgYXMgb3RoZXIKKyAgICAgICAga2luZHMg
b2YgTWFya2VkQmxvY2sgc3RhdGUsIGluLXBsYWNlIGR1cmluZyBhIGNvbGxlY3Rpb24uIFRoZSBh
bGxvY2F0b3IgdXNlcyB0aGF0IHNhbWUKKyAgICAgICAgTWFya2VkQmxvY2sgc3RhdGUgdG8gZGVj
aWRlIHdoaWNoIHJlZ2lvbnMgb2YgbWVtb3J5IGFyZSBmcmVlLiBUaGlzIHdvcmtzIGlmIHRoZSBh
bGxvY2F0b3IKKyAgICAgICAgbmV2ZXIgcnVucyB3aGlsZSB0aGUgY29sbGVjdG9yIGlzIHJ1bm5p
bmcsIGJ1dCBpZiB3ZSB3YW50IHRvIGFsbG93IHRoZW0gdG8gcnVuIGF0IHRoZSBzYW1lCisgICAg
ICAgIHRpbWUsIHRoZW4gd2UgbmVlZCB0byBoYXZlIHR3byB2ZXJzaW9ucyBvZiB0aGUgc3RhdGU6
IG9uZSB2ZXJzaW9uIGJ1aWx0IHVwIGJ5IHRoZQorICAgICAgICBjb2xsZWN0b3IgYW5kIGFub3Ro
ZXIgY29uc3VtZWQgYnkgdGhlIGFsbG9jYXRvci4gV2UgY2xlYXIgdGhlIGNvbGxlY3RvciBzdGF0
ZSBhdCB0aGUKKyAgICAgICAgYmVnaW5uaW5nIG9mIGNvbGxlY3Rpb24sIGFuZCBzcGxhdCB0aGUg
Y29sbGVjdG9yIHN0YXRlIG9udG8gdGhlIGFsbG9jYXRvciBzdGF0ZSBhZnRlcgorICAgICAgICBj
b2xsZWN0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjb3VsZCBiZSBzdXBlciBleHBlbnNp
dmUsIGJ1dCB3ZSBjYW4gbWFrZSBpdCBjaGVhcCB3aXRoIHNvbWUgY2xldmVybmVzcy4gVGhlIGJp
Z2dlc3QKKyAgICAgICAgb2JzZXJ2YXRpb24gaXMganVzdCB0aGF0IG1vc3Qgb2YgdGhlIHN0YXRl
IGlzIGEgaGFuZGZ1bCBvZiBiaXRzIHBlciBibG9jazogaXMgdGhlIGJsb2NrCisgICAgICAgIGZy
ZWUtbGlzdGVkPyBpcyBpdCBjb21wbGV0ZWx5IGZ1bGw/IGNvbXBsZXRlbHkgZW1wdHk/IGluIHRo
ZSBpbmNyZW1lbnRhbCBzd2VlcGVyJ3MKKyAgICAgICAgc25hcHNob3Q/IGlzIGl0IHJldGlyZWQ/
IGlzIGl0IGluIGVkZW4/IFRoZXJlIGlzIGFsc28gc3RhdGUgaW5zaWRlIGJsb2NrcywgbGlrZSB0
aGUgbWFyaworICAgICAgICBiaXRzLCBidXQgSSBoYXZlIGEgc29saWQgcGxhbiB0aGVyZSBhbmQg
SSdsbCBzYXZlIGl0IGZvciBhbm90aGVyIHBhdGNoLiBPbmNlIHdlIHZpZXcgdGhlCisgICAgICAg
IHN0YXRlIG9mIGJsb2NrcyBhcyBiaXRzLCB3ZSBjYW4gcHV0IHRoYXQgc3RhdGUgaW50byBiaXR2
ZWN0b3JzLCBzbyB0aGF0IGlmIHRoZSBjb2xsZWN0b3IKKyAgICAgICAgbmVlZHMgdG8gdHJhbnNm
b3JtIHRoZSBzdGF0ZSBvZiBzb21lIGJsb2NrcywgaXQgY2FuIGRvIGl0IHdpdGggYSBzaW5nbGUg
b3BlcmF0aW9uIG92ZXIKKyAgICAgICAgYml0dmVjdG9ycy4gSSBsaWtlIHRvIHRoaW5rIG9mIHRo
aXMgYXMgMzItd2F5IHBhcmFsbGVsaXppbmcgYmxvY2sgb3BlcmF0aW9ucywgc2luY2UKKyAgICAg
ICAgZG9pbmcgb25lIG9wZXJhdGlvbiBvbiBhIDMyLWJpdCB3b3JkIGluIG9uZSBvZiB0aG9zZSBi
aXR2ZWN0b3JzIGluc3RhbnRseSBhZmZlY3RzIDMyCisgICAgICAgIGJsb2Nrcy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgY2hhbmdlIGNvbnZlcnRzIGFsbCBwcmV2aW91cyBjb2xsZWN0aW9ucyBv
ZiBNYXJrZWRCbG9ja3MsIGFsb25nIHdpdGggdGhlIE1hcmtlZEJsb2NrCisgICAgICAgIHN0YXRl
LCBpbnRvIDggYml0dmVjdG9ycyAobGl2ZSwgZW1wdHksIGFsbG9jYXRlZCwgY2FuQWxsb2NhdGVC
dXROb3RFbXB0eSwgZWRlbiwgdW5zd2VwdCwKKyAgICAgICAgbWFya2luZ05vdEVtcHR5LCBhbmQg
bWFya2luZ1JldGlyZWQpLiBUaGUgYml0dmVjdG9ycyBzZXBhcmF0ZSBhbGxvY2F0b3Igc3RhdGUg
KGVtcHR5LAorICAgICAgICBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIGZyb20g
bWFya2luZyBzdGF0ZSAobWFya2luZ05vdEVtcHR5LCBtYXJraW5nUmV0aXJlZCkuCisgICAgICAg
IAorICAgICAgICBBcyBhIG5pY2Ugc2lkZS1lZmZlY3Qgb2Ygc3dpdGNoaW5nIHRvIGJpdHZlY3Rv
cnMsIHdlIGdldCBzaXplIGNsYXNzIHJlYmFsYW5jaW5nIGZvciBmcmVlLgorICAgICAgICBJdCB1
c2VkIHRvIGJlIHRoYXQgaWYgYSBNYXJrZWRBbGxvY2F0b3IgaGFkIGFuIGVtcHR5IGJsb2NrLCB3
ZSB3b3VsZCBvbmx5IGFsbG93IHRoYXQKKyAgICAgICAgbWVtb3J5IHRvIGJlIHJldXNlZCBieSBh
IGRpZmZlcmVudCBNYXJrZWRBbGxvY2F0b3IgaWYgd2UgZGlkIGFuIGluY3JlbWVudGFsIHN3ZWVw
IG9yIGEKKyAgICAgICAgZnVsbCBlYWdlciBzd2VlcC4gTm93IHdlIGh1bnQgZG93biBhbGwgZGVz
dHJ1Y3Rvcmxlc3MgZW1wdHkgYmxvY2tzIGJlZm9yZSBhbGxvY2F0aW5nIG5ldworICAgICAgICBN
YXJrZWRCbG9ja3MuIEl0IHdvdWxkIGJlIHJlbGF0aXZlbHkgZWFzeSB0byBhbHNvIGh1bnQgZG93
biBkZXN0cnVjdG9yIGVtcHR5IGJsb2NrcywgYnV0CisgICAgICAgIHRoZSB0aGVvcnkgaXMgdGhh
dCB0aG9zZSBtaWdodCBiZSBleHBlbnNpdmUgdG8gc3dlZXAsIHNvIGl0IG1pZ2h0IHN0aWxsIGJl
IGJldHRlciB0byBsZWF2ZQorICAgICAgICB0aG9zZSB0byB0aGUgaW5jcmVtZW50YWwgc3dlZXBl
ci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIHBlcmYtbmV1dHJhbCBhbGwgYXJv
dW5kLiBJIGRpZCBzb21lIHRlc3RzIHdpdGggdHdvIGRpZmZlcmVudCBraW5kcyBvZgorICAgICAg
ICBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgLSBzb21ldGhpbmcgdGhhdCBpcyBzb21ld2hhdCBlYXNp
ZXIgdG8gZG8gbm93IHRoYXQgeW91IGNhbiBsb29rIGZvcgorICAgICAgICBibG9ja3MgdGhhdCBh
cmUgY2FuZGlkYXRlcyBmb3IgYWxsb2NhdGlvbiBieSBqdXN0IHNjYW5uaW5nIHNvbWUgYml0dmVj
dG9ycy4gSSB0cmllZCB0d28KKyAgICAgICAgdmFyaWFudHM6CisgICAgICAgIAorICAgICAgICAt
IEFsbG9jYXRlIG91dCBvZiBub24tZW1wdHkgYmxvY2tzIGZpcnN0LCBsZWF2aW5nIGVtcHR5IGJs
b2NrcyBmb3IgbGFzdCBpbiBjYXNlIGEKKyAgICAgICAgICBkaWZmZXJlbnQgYWxsb2NhdG9yIG5l
ZWRlZCB0aGVtLiBUaGlzIGlzIHNvcnQgb2YgYSBiZXN0LWZpdCBzdHJhdGVneS4gSSB0cmllZCB0
aGlzCisgICAgICAgICAgZmlyc3QsIGFuZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFzOgorICAgICAg
ICAgIAorICAgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IG1fY2FuQWxsb2NhdGVCdXROb3RF
bXB0eS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSkKKyAgICAgICAgCisgICAgICAg
IC0gQWxsb2NhdGUgb3V0IG9mIGxvd2VyLWluZGV4ZWQgYmxvY2tzIGZpcnN0LCB0cmVhdGluZyBl
bXB0eSBhbmQgY2FuQWxsb2NhdGVCdXROb3RFbXB0eQorICAgICAgICAgIGJsb2NrcyBlcXVhbGx5
LiBUaGlzIGlzIHNvcnQgb2YgYSBmaXJzdC1maXQgc3RyYXRlZ3kuIFRoaXMgaXMgd2hhdCBJIGVu
ZGVkIHVwIHNldHRsaW5nCisgICAgICAgICAgb24sIGFuZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFz
OgorICAgICAgICAgIAorICAgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9j
YXRlQnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1
ZSkKKyAgICAgICAgCisgICAgICAgIFRoZSBiZXN0LWZpdCBzdHJhdGVneSBtZWFudCAxJSByZWdy
ZXNzaW9ucyBpbiBMb25nU3BpZGVyIGFuZCBPY3RhbmUgb3ZlcmFsbCwgYW5kIGEgMTElCisgICAg
ICAgIHJlZ3Jlc3Npb24gb24gT2N0YW5lL2VhcmxleS4gRmlyc3QtZml0IG1lYW5zIHBlcmYtbmV1
dHJhbGl0eS4gTW9zdCBncmVhdCBhbGxvY2F0b3JzIHNrZXcKKyAgICAgICAgdG93YXJkcyBmaXJz
dC1maXQgYmVjYXVzZSBpdCdzIGVtcGlyaWNhbGx5IGJldHRlciwgc28gdGhpcyByZXN1bHQgaXMg
bm90IHN1cnByaXNpbmcuCisgICAgICAgIAorICAgICAgICBPdmVyYWxsLCB0aGUgcGVyZm9ybWFu
Y2Ugb2YgdGhpcyBwYXRjaCBvbiBteSBtYWNoaW5lIGlzIGFzIGZvbGxvd3MsIHdoZXJlICJuZXV0
cmFsIiBtZWFucworICAgICAgICBsZXNzIHRoYW4gMSUgYW5kIG5vdCBzdGF0aXN0aWNhbGx5IHNp
Z25pZmljYW50LgorICAgICAgICAKKyAgICAgICAgcnVuLWpzYy1iZW5jaG1hcmtzOgorICAgICAg
ICAgICAgU3VuU3BpZGVyOiBuZXV0cmFsCisgICAgICAgICAgICBMb25nU3BpZGVyOiAwLjYlIHNs
b3dlcgorICAgICAgICAgICAgVjhTcGlkZXI6IG5ldXRyYWwKKyAgICAgICAgICAgIE9jdGFuZTog
bmV1dHJhbAorICAgICAgICAgICAgS3Jha2VuOiBuZXV0cmFsCisgICAgICAgICAgICBNaWNyb2Jl
bmNobWFya3M6IDAuMzclIHNsb3dlcgorICAgICAgICAgICAgQXNtQmVuY2g6IG5ldXRyYWwKKyAg
ICAgICAgICAgIENvbXByZXNzaW9uQmVuY2g6IG1heWJlIDElIGZhc3RlcgorICAgICAgICAKKyAg
ICAgICAgQnJvd3NlciBiZW5jaG1hcmtzOgorICAgICAgICAgICAgUExUMzogMC4zJSBmYXN0ZXIg
d2l0aCA2NyUgY29uZmlkZW5jZQorICAgICAgICAgICAgPHN0aWxsIHJ1bm5pbmcgYmVuY2htYXJr
cy4uLj4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAqIGhlYXAvQ2Vs
bENvbnRhaW5lci5oOgorICAgICAgICAqIGhlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6dm0pOgorICAgICAgICAoSlNDOjpDZWxsQ29udGFp
bmVyOjpoZWFwKToKKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6aXNNYXJrZWRPck5ld2x5
QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6YWJvdXRUb01hcmspOgor
ICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjppc01hcmtlZCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkNlbGxDb250YWluZXI6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAg
ICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHA6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcDo6YmVnaW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEltcGwpOgorICAgICAgICAoSlNDOjpIZWFwOjpzbmFw
c2hvdE1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJlcGFyZUZvckFsbG9jYXRp
b24pOgorICAgICAgICAoSlNDOjpIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMpOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcjo6TWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0
b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcjo6
b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OnJlc2V0QWxsb2NhdG9y
cyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9IZWFw
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6
OkhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6SGVhcDo6dGVzdEFu
ZFNldE1hcmtlZCk6CisgICAgICAgICogaGVhcC9IZWFwU3RhdGlzdGljcy5jcHA6CisgICAgICAg
ICogaGVhcC9IZWFwVXRpbC5oOgorICAgICAgICAoSlNDOjpIZWFwVXRpbDo6ZmluZEdDT2JqZWN0
UG9pbnRlcnNGb3JNYXJraW5nKToKKyAgICAgICAgKEpTQzo6SGVhcFV0aWw6OmlzUG9pbnRlckdD
T2JqZWN0SlNDZWxsKToKKyAgICAgICAgKiBoZWFwL0hlYXBWZXJpZmllci5jcHA6CisgICAgICAg
ICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRh
bFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFs
U3dlZXBlcjo6ZG9Td2VlcCk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3dl
ZXBOZXh0QmxvY2spOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dl
ZXBpbmcpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2Vl
cGluZyk6CisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaDoKKyAgICAgICAgKiBo
ZWFwL0xhcmdlQWxsb2NhdGlvbi5oOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246Omlz
TWFya2VkKToKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjppc01hcmtlZENvbmN1cnJl
bnRseSk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJrZWRPck5ld2x5QWxs
b2NhdGVkKToKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjphYm91dFRvTWFyayk6Cisg
ICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJrZWREdXJpbmdXZWFrVmlzaXRpbmcp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmZsaXBJZk5lY2Vzc2Fy
eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6ZmxpcElmTmVjZXNz
YXJ5RHVyaW5nTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0
b3IuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcik6
CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dCk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6ZmluZEVtcHR5QmxvY2spOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUluKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9y
OjphbGxvY2F0ZVNsb3dDYXNlSW1wbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6
dHJ5QWxsb2NhdGVCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWRkQmxv
Y2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJlbW92ZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEFsbG9jYXRvcjo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjpiZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6c25hcHNob3RGb3JFZGVuQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9j
YXRvcjo6c25hcHNob3RGb3JGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFs
bG9jYXRvcjo6ZmluZEJsb2NrVG9Td2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnNocmluayk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YXNzZXJ0U25hcHNob3RFbXB0eSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6ZHVtcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9j
YXRvcjo6ZHVtcEJpdHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJldGlyZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6ZmlsdGVyTmV4dEJsb2Nr
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzZXROZXh0QmxvY2tU
b1N3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZXNldCk6
IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpT
Qzo6TWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQml0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQWxsb2NhdG9yOjpmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUpOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6Om5leHRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxv
Y2F0b3I6OnNldE5leHRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OmZvckVhY2hCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxs
b2NhdGluZyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpIYW5kbGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
Ojp+SGFuZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGUpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZSk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0SGFz
TmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2Vl
cEhlbHBlclNlbGVjdFN3ZWVwTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OnN3ZWVwSGVscGVyU2VsZWN0RmxpcE1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6SGFuZGxlOjp1bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjpzZXRJc0ZyZWVMaXN0ZWQpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjphYm91dFRvTWFya1Nsb3cpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2xlYXJN
YXJrcyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZCk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6bWFya0NvdW50KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNFbXB0eSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpub3RlTWFy
a2VkU2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21B
bGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0Fs
bG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZy
b21BbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3
ZWVwTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpmbGlwSWZOZWNl
c3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlw
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6ZmxpcElm
TmVjZXNzYXJ5U2xvdyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpmbGlw
SWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OndpbGxSZW1vdmVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OnByaW50SW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNGcmVlTGlzdGVkKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aW5kZXgpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6YWJvdXRUb01hcmspOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNN
YXJrZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50bHkp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxv
Y2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2Nh
dGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNPbkJsb2Nrc1RvU3dl
ZXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzZXRJc09u
QmxvY2tzVG9Td2VlcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OnN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5l
Y2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpmbGlwSWZOZWNl
c3NhcnlEdXJpbmdNYXJraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBGb3JFZGVuQ29sbGVjdGlvbik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZER1cmluZ1dlYWtW
aXNpdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Omlz
TGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2
ZUNlbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JF
YWNoTGl2ZUNlbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
Ojpmb3JFYWNoRGVhZENlbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjpuZWVkc1N3ZWVwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNBbGxvY2F0ZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjppc01hcmtlZCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRC
bG9ja0lubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTGl2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoRGVhZENlbGwpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6cmVzZXRWZXJzaW9uKToKKyAgICAgICAgKiBoZWFwL01h
cmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkU3BhY2U6OnRyeUFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnN3ZWVw
KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0aW9uKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNocmluayk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmJl
Z2luTWFya2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjplbmRNYXJraW5nKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbG9jayk6CisgICAgICAgIChK
U0M6Ok1hcmtlZFNwYWNlOjpmaW5kRW1wdHlCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjpzbmFwc2hvdCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphc3NlcnRTbmFwc2hv
dEVtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmR1bXBCaXRzKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpW
ZXJpZnlNYXJrZWQ6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6ZmxpcCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6bmV4dFZlcnNpb24pOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Zmlyc3RBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxs
b2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZv
ckVhY2hBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmxvY2tzV2l0aE5l
d09iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c2V0SXNNYXJr
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2Vs
bCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwp
OiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbCk6CisgICAgICAgICogaGVhcC9TbG90Vmlz
aXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpzZXRNYXJrZWRBbmRBcHBlbmRU
b01hcmtTdGFjayk6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjptYXJrQXV4aWxpYXJ5KToK
KyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGhl
YXAvV2Vhay5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj46OmVtcHR5
VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj46OnBlZWspOgor
ICAgICAgICAqIGhlYXAvV2Vha0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha0Jsb2NrOjpz
cGVjaWFsaXplZFZpc2l0KToKKyAgICAgICAgKEpTQzo6V2Vha0Jsb2NrOjpyZWFwKToKKyAgICAg
ICAgKiBoZWFwL1dlYWtJbmxpbmVzLmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8SlNDOjpX
ZWFrPFQ+Pjo6ZW1wdHlWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8
SlNDOjpXZWFrPFQ+Pjo6cGVlayk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVFRodW5rcy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvUHJvdG90eXBlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorICAgICAgICAqIHRvb2xzL0pTRG9s
bGFyVk1Qcm90b3R5cGUuY3BwOgorCiAyMDE2LTA5LTE2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgdGVzdDI2MjogVmFyaW91cyBDb25zdHJ1Y3RvcnMg
bGVuZ3RoIHByb3BlcnRpZXMgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC00OTgsNiArNDk4LDggQEAKIAkJMEY3QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJl
Z0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJ
CTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1
MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovOyB9OwogCQkwRjdDMzlGRjFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmgg
Ki87IH07CisJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0M1RkI3
MUQ4ODhBMDEwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCAqLzsgfTsKKwkJMEY3QzVG
QkExRDg4OTUwNzAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjkxRDg4OTUwNTAwNDRGNUUy
IC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovOyB9OwogCQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJB
NDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MzM1QjcxNjM5QzFF
NjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8q
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9OwogCQkwRjgzMzVCODE2MzlDMUVBMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNTc2LDYgKzU3OCw3IEBACiAJCTBGOUZCNEY0MTdGQ0I5MTcwMENCNjdG
OCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZCNEYyMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xh
eW91dFBoYXNlLmNwcCAqLzsgfTsKIAkJMEY5RkI0RjUxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0
YWNrTGF5b3V0UGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmgg
Ki87IH07CiAJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQzhDMTE0RTFCNUZCMDBE
NTJBRTAgLyogUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGQTEzMTcxMUQ4REQ3MkIwMEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEx
MzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5oICovOyB9OwogCQkw
RkEyQzE3QjE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTJDMTc5MTdEN0NGODQwMDlE
MDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwICovOyB9OwogCQkwRkEyQzE3QzE3RDdDRjg0MDA5
RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkEyQzE3QTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0
aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZBNTgxQkExNTBFOTUyQzAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE1ODFCNzE1MEU5NTJBMDBCOUEy
RDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLzsgfTsKQEAgLTYxMCw2ICs2MTMsNyBAQAogCQkwRkI0
RkI3MzFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1
QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovOyB9OwogCQkwRkI0RkI3NDFCQzg0MzE0MDAyNUNB
NUEgLyogRlRMTGF6eVNsb3dQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRo
LmggKi87IH07CiAJCTBGQjRGQjc1MUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGhD
YWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0
RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoQ2FsbC5oICovOyB9OworCQkw
RkI1MzAzOTFEOTA0MDRDMDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1MzAzODFEOTA0MDQ2MDBGMjhB
RTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi87IH07CiAJCTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4
OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAg
Ki87IH07CiAJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0y
NzMxLDYgKzI3MzUsOCBAQAogCQkwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAv
KiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZ0V4cE9iamVjdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3
QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdPcEluZm8uaDsgcGF0aCA9IGRmZy9ERkdPcEluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtl
ZEJsb2NrSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRC
bG9ja0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzVGQjkxRDg4
OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNYXJrZWRTcGFjZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeVZhbEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1
MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDgsNiArMjgxNCw3IEBACiAJCTBGOUZCNEYyMTdGQ0I5
MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOyBwYXRoID0gZGZnL0RG
R1N0YWNrTGF5b3V0UGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlG
QjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdGFja0xheW91dFBoYXNlLmg7IHBhdGggPSBkZmcv
REZHU3RhY2tMYXlvdXRQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlG
QzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTEz
MTcwMUQ4REQ3MjkwMEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3RvdHlwZU1hcElubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMkMxNzkxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJV
dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0UnVubmVy
VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyQzE3QTE3RDdDRjg0
MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRlc3RSdW5uZXJVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGVGbGFncy5jcHA7IHBhdGggPSBkZmcvREZH
Tm9kZUZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NTIsNiArMjg1
OSw3IEBACiAJCTBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoLmNw
cDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTExhenlTbG93UGF0aC5oOyBwYXRoID0g
ZnRsL0ZUTExhenlTbG93UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0
RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoQ2FsbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGhDYWxsLmg7IHBhdGggPSBmdGwv
RlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI1
MzAzODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkI1NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2NzgxNEY1QzQ2
ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTI1NSw2ICs1MjYzLDcgQEAKIAkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8q
IGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBG
QjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAvKiBBbGxvY2F0aW9uU2NvcGUuaCAqLywKIAkJCQkwRjk2
MzAzNTFENDE5MkMzMDA1NjA5RDkgLyogQWxsb2NhdG9yQXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJ
MEY5NjMwMzYxRDQxOTJDMzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuaCAqLywKIAkJ
CQkwRjA3MEE0MjFENTQzQTg5MDA2RTcyMzIgLyogQ2VsbENvbnRhaW5lci5oICovLApAQCAtNTMz
OCw5ICs1MzQ3LDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFs
bG9jYXRvci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9j
ay5jcHAgKi8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmgg
Ki8sCisJCQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5o
ICovLAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICov
LAogCQkJCTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJ
CQkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMEY3
QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0
MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBG
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlBRERCMUY2MjE4RDc3REI3
MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNjA3Niw2ICs2MDg3LDcgQEAKIAkJ
CQk2NUMwMkZCQjA2Mzc0NjJBMDAzRTdFRTYgLyogUHJvdGVjdC5oICovLAogCQkJCTE0RDg0NEEy
MTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuY3BwICovLAogCQkJCTE0RDg0NEEzMTZB
QTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuaCAqLywKKwkJCQkwRkExMzE3MDFEOERENzI5
MDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5oICovLAogCQkJCTc5QjAwQ0I4MUM2QUIw
N0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQk3OUIwMENCOTFDNkFC
MDdFMDA4OEM2NUQgLyogUHJveHlDb25zdHJ1Y3Rvci5oICovLAogCQkJCTc5QjAwQ0JBMUM2QUIw
N0UwMDg4QzY1RCAvKiBQcm94eU9iamVjdC5jcHAgKi8sCkBAIC03MzEyLDYgKzczMjQsNyBAQAog
CQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RDNTAwODVGM0M2IC8qIENhbGxMaW5r
U3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI1MzAzOTFEOTA0MDRDMDBGMjhBRTMgLyog
QWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Mjc2NzMyNDFCNjgwQzFFMDBG
RDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYw
MDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTczOTQsNiArNzQwNyw3IEBACiAJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdC
MkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjE4MTZE
MDJFQjIwMDU1QTVEQiAvKiBERkdBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUz
QTQ2MTUzNENCQUYwMDBGOTQ1NiAvKiBERkdBcmd1bWVudFBvc2l0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgxMjFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1l
bnRzRWxpbWluYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTQxQUIzRDhC
RTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY0ODUzMjIxODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9kZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC03ODg3LDYgKzc5MDEsNyBAQAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBK
U0V4cG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8q
IEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFRjE3QjZCNUFCMDBB
N0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTEzMTcxMUQ4
REQ3MkIwMEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDFGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGlu
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzkxMSw2ICs3OTI2LDcgQEAKIAkJCQlBNTAzRkEyQTE4
OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzlBMjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1QzAxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDNUZCQTFEODg5NTA3MDA0NEY1
RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDMjE4
NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUM0NDJDQjI1MUE2Q0RCOEMwMDVEM0Q3QyAvKiBKU0lucHV0cy5qc29uIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRp
bnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5CShyZXZpc2lvbiAyMDYwMzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5l
cmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkg
KzYxLDggQEAgY2xhc3MgQnVpbHRpbnNJbnRlcm5hbHNXcmFwcGVySGVhZGVyR2VuZQogCiAgICAg
ZGVmIGdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CiAgICAgICAgIGhl
YWRlcl9pbmNsdWRlcyA9IFsKLSAgICAgICAgICAgIChbIldlYkNvcmUiXSwKLSAgICAgICAgICAg
ICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvVk0uaCIpLAotICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIChbIldlYkNvcmUiXSwgKCJKYXZhU2NyaXB0Q29yZSIsICJoZWFwL1dlYWtJ
bmxpbmVzLmgiKSksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sICgiSmF2YVNjcmlwdENvcmUi
LCAicnVudGltZS9WTS5oIikpCiAgICAgICAgIF0KICAgICAgICAgZm9yIG9iamVjdCBpbiBzZWxm
LmludGVybmFsczoKICAgICAgICAgICAgIGhlYWRlcl9pbmNsdWRlcy5hcHBlbmQoKFsiV2ViQ29y
ZSJdLCAoIldlYkNvcmUiLCBvYmplY3Qub2JqZWN0X25hbWUgKyAiQnVpbHRpbnMuaCIpKSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNp
b24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNp
bmNsdWRlICJQcm90ZWN0LmgiCiAjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSGVhcC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgQWxsb2NhdGlvblNjb3BlIHsKK3B1YmxpYzoKKyAgICBBbGxv
Y2F0aW9uU2NvcGUoSGVhcCYgaGVhcCkKKyAgICAgICAgOiBtX2hlYXAoaGVhcCkKKyAgICAgICAg
LCBtX2xhc3RPcGVyYXRpb24obV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVzcykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX2xhc3RPcGVyYXRpb24gPT0gTm9PcGVyYXRpb24gfHwgbV9sYXN0T3Bl
cmF0aW9uID09IEFsbG9jYXRpb24pOworICAgICAgICBtX2hlYXAubV9vcGVyYXRpb25JblByb2dy
ZXNzID0gQWxsb2NhdGlvbjsKKyAgICB9CisgICAgCisgICAgfkFsbG9jYXRpb25TY29wZSgpCisg
ICAgeworICAgICAgICBBU1NFUlQobV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBBbGxv
Y2F0aW9uKTsKKyAgICAgICAgbV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IG1fbGFzdE9w
ZXJhdGlvbjsKKyAgICB9Citwcml2YXRlOgorICAgIEhlYXAmIG1faGVhcDsKKyAgICBIZWFwT3Bl
cmF0aW9uIG1fbGFzdE9wZXJhdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lci5oCShyZXZpc2lvbiAy
MDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xh
c3MgSGVhcDsKIGNsYXNzIEhlYXBDZWxsOwogY2xhc3MgTGFyZ2VBbGxvY2F0aW9uOwogY2xhc3Mg
TWFya2VkQmxvY2s7CiBjbGFzcyBXZWFrU2V0OworY2xhc3MgVk07CiAKIHR5cGVkZWYgdWludDMy
X3QgSGVhcFZlcnNpb247CiAKQEAgLTU2LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAgICAgCisgICAgVk0qIHZtKCkgY29uc3Q7CisgICAgSGVhcCogaGVhcCgpIGNvbnN0OworICAg
IAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fZW5jb2Rl
ZFBvaW50ZXI7IH0KICAgICAKICAgICBib29sIGlzTWFya2VkQmxvY2soKSBjb25zdCB7IHJldHVy
biBtX2VuY29kZWRQb2ludGVyICYmICEobV9lbmNvZGVkUG9pbnRlciAmIGlzTGFyZ2VBbGxvY2F0
aW9uQml0KTsgfQpAQCAtNzMsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpi
aXR3aXNlX2Nhc3Q8TGFyZ2VBbGxvY2F0aW9uKj4obV9lbmNvZGVkUG9pbnRlciAtIGlzTGFyZ2VB
bGxvY2F0aW9uQml0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoSGVh
cFZlcnNpb24pOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBhYm91dFRv
TWFyayhIZWFwVmVyc2lvbik7CiAgICAgYm9vbCBuZWVkc0ZsaXAoKSBjb25zdDsKICAgICAKLSAg
ICBib29sIGlzTWFya2VkKCkgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZChIZWFwQ2VsbCopIGNv
bnN0OworICAgIGJvb2wgaXNNYXJrZWQoSGVhcFZlcnNpb24sIEhlYXBDZWxsKikgY29uc3Q7CiAg
ICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENlbGwqKSBjb25zdDsKKyAgICBi
b29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSBjb25z
dDsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkocmV2aXNpb24g
MjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQgKzI5LDIwIEBACiAjaW5jbHVkZSAiSlNDZWxs
LmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2su
aCIKKyNpbmNsdWRlICJWTS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIGJvb2wgQ2Vs
bENvbnRhaW5lcjo6aXNNYXJrZWQoKSBjb25zdAoraW5saW5lIFZNKiBDZWxsQ29udGFpbmVyOjp2
bSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmhhbmRsZSgpLmlzTWFya2VkKCk7Cisg
ICAgICAgIHJldHVybiBsYXJnZUFsbG9jYXRpb24oKS52bSgpOworICAgIHJldHVybiBtYXJrZWRC
bG9jaygpLnZtKCk7Cit9CisKK2lubGluZSBIZWFwKiBDZWxsQ29udGFpbmVyOjpoZWFwKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gJnZtKCktPmhlYXA7CiB9CiAKIGlubGluZSBib29sIENlbGxDb250
YWluZXI6OmlzTWFya2VkKEhlYXBDZWxsKiBjZWxsKSBjb25zdApAQCAtNDYsNiArNTIsMTMgQEAg
aW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoSGVhcAogICAgIHJldHVybiBtYXJr
ZWRCbG9jaygpLmlzTWFya2VkKGNlbGwpOwogfQogCitpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVy
Ojppc01hcmtlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBIZWFwQ2VsbCogY2VsbCkgY29uc3QKK3sK
KyAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2Nh
dGlvbigpLmlzTWFya2VkKCk7CisgICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJrZWQodmVy
c2lvbiwgY2VsbCk7Cit9CisKIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChIZWFwQ2VsbCogY2VsbCkgY29uc3QKIHsKICAgICBpZiAoaXNMYXJnZUFs
bG9jYXRpb24oKSkKQEAgLTUzLDYgKzY2LDEzIEBAIGlubGluZSBib29sIENlbGxDb250YWluZXI6
OmlzTWFya2VkT3JOZXcKICAgICByZXR1cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZE9yTmV3bHlB
bGxvY2F0ZWQoY2VsbCk7CiB9CiAKK2lubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBIZWFwQ2VsbCogY2VsbCkgY29u
c3QKK3sKKyAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGxhcmdl
QWxsb2NhdGlvbigpLmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOworICAgIHJldHVybiBtYXJr
ZWRCbG9jaygpLmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh2ZXJzaW9uLCBjZWxsKTsKK30KKwog
aW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6bm90ZU1hcmtlZCgpCiB7CiAgICAgaWYgKCFpc0xh
cmdlQWxsb2NhdGlvbigpKQpAQCAtNzMsMTYgKzkzLDEwIEBAIGlubGluZSBXZWFrU2V0JiBDZWxs
Q29udGFpbmVyOjp3ZWFrU2V0KCkKICAgICByZXR1cm4gbWFya2VkQmxvY2soKS53ZWFrU2V0KCk7
CiB9CiAKLWlubGluZSB2b2lkIENlbGxDb250YWluZXI6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVy
c2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBpZiAoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAg
ICAgIG1hcmtlZEJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLX0KLQotaW5s
aW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6ZmxpcElmTmVjZXNzYXJ5KCkKK2lubGluZSB2b2lkIENl
bGxDb250YWluZXI6OmFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAg
IGlmICghaXNMYXJnZUFsbG9jYXRpb24oKSkKLSAgICAgICAgbWFya2VkQmxvY2soKS5mbGlwSWZO
ZWNlc3NhcnkoKTsKKyAgICAgICAgbWFya2VkQmxvY2soKS5hYm91dFRvTWFyayhoZWFwVmVyc2lv
bik7CiB9CiAKIGlubGluZSBib29sIENlbGxDb250YWluZXI6Om5lZWRzRmxpcCgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMu
Y3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25z
ZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmUuaCIKICNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJK
U1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMu
aCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tl
bi5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgpAQCAtNTI2LDExICs1MjcsOSBAQCB2b2lk
IEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgfQogICAgIAogICAgIHsKLSAgICAgICAgVGltaW5n
U2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5jbGVhck1h
cmtzIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZmxpcCgpOworICAgICAgICBUaW1pbmdTY29w
ZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2lu
ZyIpOworICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZygpOwogICAgIH0KLSAgICAK
LSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyh0cnVlKTsKIH0KIAogdm9pZCBIZWFwOjp2
aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCkBAIC03NzksNyArNzc4LDcgQEAgdm9pZCBIZWFw
OjplbmRNYXJraW5nKCkKICAgICBBU1NFUlQobV9zaGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKTsK
ICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLnJlbW92ZUFsbCgpOwogICAgIAotICAgIG1f
b2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKGZhbHNlKTsKKyAgICBtX29iamVjdFNwYWNlLmVuZE1h
cmtpbmcoKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVjdENvdW50KCkKQEAgLTkzNiwxMCArOTM1
LDE5IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjp1c2VJbW1vcnRhbE9iamVjdHMoKSkpCiAgICAgICAgIHN3ZWVwZXIoKS0+d2lsbEZp
bmlzaFN3ZWVwaW5nKCk7CiAgICAgZWxzZSB7CisgICAgICAgIGRvdWJsZSBiZWZvcmUgPSAwOwor
ICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkgeworICAgICAgICAgICAgZGF0YUxvZygiW0Z1
bGwgc3dlZXA6ICIsIGNhcGFjaXR5KCkgLyAxMDI0LCAiIGtiICIpOworICAgICAgICAgICAgYmVm
b3JlID0gY3VycmVudFRpbWVNUygpOworICAgICAgICB9CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uu
c3dlZXAoKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5zaHJpbmsoKTsKKyAgICAgICAgaWYgKE9w
dGlvbnM6OmxvZ0dDKCkpIHsKKyAgICAgICAgICAgIGRvdWJsZSBhZnRlciA9IGN1cnJlbnRUaW1l
TVMoKTsKKyAgICAgICAgICAgIGRhdGFMb2coIj0+ICIsIGNhcGFjaXR5KCkgLyAxMDI0LCAiIGti
LCAiLCBhZnRlciAtIGJlZm9yZSwgIiBtc11cbiIpOworICAgICAgICB9CiAgICAgfQotICAgIEFT
U0VSVChtX2Jsb2NrU25hcHNob3QuaXNFbXB0eSgpKTsKKyAgICBtX29iamVjdFNwYWNlLmFzc2Vy
dE5vVW5zd2VwdCgpOwogCiAgICAgc3dlZXBBbGxMb2dpY2FsbHlFbXB0eVdlYWtCbG9ja3MoKTsK
IH0KQEAgLTEwMzksNyArMTA0Nyw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJ
bXBsKEhlYXAKICAgICByZWFwV2Vha0hhbmRsZXMoKTsKICAgICBwcnVuZVN0YWxlRW50cmllc0Zy
b21XZWFrR0NNYXBzKCk7CiAgICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsKLSAgICBzbmFwc2hvdE1h
cmtlZFNwYWNlKCk7CisgICAgc25hcHNob3RVbnN3ZXB0KCk7CiAgICAgZmluYWxpemVVbmNvbmRp
dGlvbmFsRmluYWxpemVycygpOwogICAgIHJlbW92ZURlYWRDb21waWxlcldvcmtsaXN0RW50cmll
cygpOwogICAgIGRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCk7CkBAIC0xMDQ4LDcgKzEwNTYs
NyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAgbm90aWZ5
SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5n
Q29kZUJsb2NrcygpOwogCi0gICAgcmVzZXRBbGxvY2F0b3JzKCk7CisgICAgcHJlcGFyZUZvckFs
bG9jYXRpb24oKTsKICAgICB1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCk7CiAgICAgZGlkRmluaXNo
Q29sbGVjdGlvbihnY1N0YXJ0VGltZSk7CiAgICAgcmVzdW1lQ29tcGlsZXJUaHJlYWRzKCk7CkBA
IC0xMDYzLDYgKzEwNzEsMTEgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwo
SGVhcAogICAgICAgICBkb3VibGUgYWZ0ZXIgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgICAgIGRh
dGFMb2coYWZ0ZXIgLSBiZWZvcmUsICIgbXNdXG4iKTsKICAgICB9CisgICAgCisgICAgaWYgKGZh
bHNlKSB7CisgICAgICAgIGRhdGFMb2coIkhlYXAgc3RhdGUgYWZ0ZXIgR0M6XG4iKTsKKyAgICAg
ICAgbV9vYmplY3RTcGFjZS5kdW1wQml0cygpOworICAgIH0KIH0KIAogdm9pZCBIZWFwOjpzd2Vl
cExhcmdlQWxsb2NhdGlvbnMoKQpAQCAtMTE2Miw0NCArMTE3NSwxMCBAQCB2b2lkIEhlYXA6OnN3
ZWVwQXJyYXlCdWZmZXJzKCkKICAgICBtX2FycmF5QnVmZmVycy5zd2VlcCgpOwogfQogCi1zdHJ1
Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRG
dW5jdG9yIHsKLSAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvcihWZWN0b3I8TWFya2VkQmxv
Y2s6OkhhbmRsZSo+JiBibG9ja3MpIAotICAgICAgICA6IG1faW5kZXgoMCkgCi0gICAgICAgICwg
bV9ibG9ja3MoYmxvY2tzKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFy
a2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0gICAgewotICAgICAgICBibG9jay0+c2V0
SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAgIG1fYmxvY2tzW21faW5kZXgrK10gPSBi
bG9jazsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG11dGFibGUgZmllbGQgYmVj
YXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKLSAgICBtdXRhYmxlIHNpemVfdCBtX2luZGV4Owot
ICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIG1fYmxvY2tzOwotfTsKLQotdm9pZCBI
ZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlKCkKK3ZvaWQgSGVhcDo6c25hcHNob3RVbnN3ZXB0KCkK
IHsKLSAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhpcywgIkhlYXA6OnNuYXBzaG90TWFy
a2VkU3BhY2UiKTsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcmVuYW1l
ZC4gSXQncyBub3QgYWN0dWFsbHkgc25hcHNob3R0aW5nIGFsbCBvZiBNYXJrZWRTcGFjZS4KLSAg
ICAvLyBUaGlzIGlzIHVzZWQgYnkgSW5jcmVtZW50YWxTd2VlcGVyLCBzbyBpdCBvbmx5IG5lZWRz
IHRvIHNuYXBzaG90IGJsb2Nrcy4gSG93ZXZlciwgaWYgd2UgZXZlcgotICAgIC8vIHdhbnRlZCB0
byBhZGQgb3RoZXIgc25hcHNob3R0aW5nIGxvZ2luLCB3ZSdkIHByb2JhYmx5IHB1dCBpdCBoZXJl
LgotICAgIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24p
IHsKLSAgICAgICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgOiBtX29iamVjdFNw
YWNlLmJsb2Nrc1dpdGhOZXdPYmplY3RzKCkpIHsKLSAgICAgICAgICAgIGlmIChoYW5kbGUtPmlz
T25CbG9ja3NUb1N3ZWVwKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBtX2Jsb2NrU25hcHNob3QuYXBwZW5kKGhhbmRsZSk7Ci0gICAgICAgICAgICBoYW5kbGUtPnNl
dElzT25CbG9ja3NUb1N3ZWVwKHRydWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgbV9ibG9ja1NuYXBzaG90LnJlc2l6ZVRvRml0KG1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0
KCkuc2l6ZSgpKTsKLSAgICAgICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgZnVuY3Rvciht
X2Jsb2NrU25hcHNob3QpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hCbG9jayhmdW5j
dG9yKTsKLSAgICB9CisgICAgVGltaW5nU2NvcGUgdGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjpz
bmFwc2hvdFVuc3dlcHQiKTsKKyAgICBtX29iamVjdFNwYWNlLnNuYXBzaG90VW5zd2VwdCgpOwog
fQogCiB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKQEAgLTEyMjIsOSAr
MTIwMSw5IEBAIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW4KICAgICBt
X2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhp
cyk7CiB9CiAKLXZvaWQgSGVhcDo6cmVzZXRBbGxvY2F0b3JzKCkKK3ZvaWQgSGVhcDo6cHJlcGFy
ZUZvckFsbG9jYXRpb24oKQogewotICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3JzKCk7
CisgICAgbV9vYmplY3RTcGFjZS5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogfQogCiB2b2lkIEhl
YXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQpAQCAtMTQ3Myw3ICsxNDUyLDcgQEAgcHVibGlj
Ogogdm9pZCBIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMoKQogewogICAgIC8vIFN3ZWVwIG5vdyBi
ZWNhdXNlIGRlc3RydWN0b3JzIHdpbGwgY3Jhc2ggb25jZSB3ZSdyZSB6b21iaWZpZWQuCi0gICAg
bV9vYmplY3RTcGFjZS56b21iaWZ5U3dlZXAoKTsKKyAgICBtX29iamVjdFNwYWNlLnN3ZWVwKCk7
CiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICBtX29i
amVjdFNwYWNlLmZvckVhY2hEZWFkQ2VsbChpdGVyYXRpb25TY29wZSwgWm9tYmlmeSgpKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQWxsb2NhdGlvblNjb3BlOwogY2xh
c3MgQ29kZUJsb2NrOwogY2xhc3MgQ29kZUJsb2NrU2V0OwogY2xhc3MgRWRlbkdDQWN0aXZpdHlD
YWxsYmFjazsKQEAgLTI1NSw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGcmVlQmxv
Y2soc2l6ZV90IGNhcGFjaXR5KTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQWxsb2Nh
dGlvblNjb3BlOwogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIGNsYXNz
IERlZmVyR0M7CiAgICAgZnJpZW5kIGNsYXNzIERlZmVyR0NGb3JBV2hpbGU7CkBAIC0zMjcsMTEg
KzMyOSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhcFdlYWtIYW5kbGVzKCk7CiAgICAgdm9p
ZCBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCk7CiAgICAgdm9pZCBzd2VlcEFycmF5
QnVmZmVycygpOwotICAgIHZvaWQgc25hcHNob3RNYXJrZWRTcGFjZSgpOworICAgIHZvaWQgc25h
cHNob3RVbnN3ZXB0KCk7CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpOwog
ICAgIHZvaWQgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAgdm9pZCB3cml0ZUJhcnJp
ZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7Ci0gICAgdm9pZCByZXNldEFsbG9jYXRv
cnMoKTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBoYXJ2ZXN0
V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXpl
cnMoKTsKICAgICB2b2lkIGNsZWFyVW5tYXJrZWRFeGVjdXRhYmxlcygpOwpAQCAtNDIyLDcgKzQy
NCw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZnVs
bEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9lZGVu
QWN0aXZpdHlDYWxsYmFjazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5jcmVtZW50YWxTd2VlcGVy
PiBtX3N3ZWVwZXI7Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2NrU25h
cHNob3Q7CiAKICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkocmV2aXNpb24gMjA2MDMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtODEsOSArODEsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWQo
Y29uc3QgCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVy
biBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwogICAgIE1hcmtlZEJsb2NrJiBi
bG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgaWYgKGJsb2NrLm5lZWRzRmxpcChibG9j
ay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKKyAgICByZXR1cm4gYmxvY2su
aXNNYXJrZWQoCisgICAgICAgIGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9u
KCksIGNlbGwpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWRDb25jdXJy
ZW50bHkoY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTkyLDEwICs5MSw4IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBIZWFwOjppc01hcmtlZENvbmN1cnIKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9j
YXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2Vk
KCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAgICBp
ZiAoYmxvY2submVlZHNGbGlwKGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9u
KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7Ci0g
ICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5pc01hcmtl
ZENvbmN1cnJlbnRseSgKKyAgICAgICAgYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKSwgY2VsbCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjp0ZXN0QW5kU2V0
TWFya2VkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IHZvaWQqIHJhd0NlbGwpCkBAIC0xMDQs
NyArMTAxLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJrZQogICAg
IGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gY2VsbC0+bGFy
Z2VBbGxvY2F0aW9uKCkudGVzdEFuZFNldE1hcmtlZCgpOwogICAgIE1hcmtlZEJsb2NrJiBibG9j
ayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgYmxvY2suZmxpcElmTmVjZXNzYXJ5RHVyaW5n
TWFya2luZyh2ZXJzaW9uKTsKKyAgICBibG9jay5hYm91dFRvTWFyayh2ZXJzaW9uKTsKICAgICBy
ZXR1cm4gYmxvY2sudGVzdEFuZFNldE1hcmtlZChjZWxsKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMjA2MDMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3Bl
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5j
bHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1
ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw5ICs4
NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghZmlsdGVyLnJ1bGVPdXQoYml0d2lzZV9j
YXN0PEJpdHM+KHByZXZpb3VzQ2FuZGlkYXRlKSkKICAgICAgICAgICAgICAgICAmJiBzZXQuY29u
dGFpbnMocHJldmlvdXNDYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgJiYgcHJldmlvdXNDYW5k
aWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgPT0gSGVhcENlbGw6OkF1eGlsaWFyeSkgewotICAg
ICAgICAgICAgICAgIHByZXZpb3VzQ2FuZGlkYXRlLT5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNp
b24pOwogICAgICAgICAgICAgICAgIHByZXZpb3VzUG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIq
PihwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEFsaWduKHByZXZpb3VzUG9pbnRlcikp
OwotICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZl
Q2VsbChwcmV2aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRp
ZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcHJldmlvdXNQb2ludGVyKSkK
ICAgICAgICAgICAgICAgICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC05OSwxMCArOTgsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghc2V0
LmNvbnRhaW5zKGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAg
ICAgICBjYW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7Ci0KICAgICAgICAg
YXV0byB0cnlQb2ludGVyID0gWyZdICh2b2lkKiBwb2ludGVyKSB7Ci0gICAgICAgICAgICBpZiAo
Y2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQorICAgICAgICAgICAgaWYg
KGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcG9pbnRlcikpCiAg
ICAgICAgICAgICAgICAgZnVuYyhwb2ludGVyKTsKICAgICAgICAgfTsKICAgICAKQEAgLTE3MCw3
ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxL
aW5kKCkgIT0gSGVhcENlbGw6OkpTQ2VsbCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgCi0gICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5KCk7CiAgICAgICAgIGlm
ICghY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBWZXJpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFZlcmlmaWVyLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SW5jcmVtZW50YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgc3dlZXBUaW1lTXVsdGlw
bGllciAKICNpZiBVU0UoQ0YpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBl
cihIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICA6IEhlYXBUaW1lcihoZWFw
LT52bSgpLCBydW5Mb29wKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFw
c2hvdCkKKyAgICAsIG1fY3VycmVudEFsbG9jYXRvcihudWxscHRyKQogewogfQogCkBAIC02Niw3
ICs2Niw3IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxUaW1lcigpCiAjZWxpZiBQ
TEFURk9STShFRkwpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFw
KiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAgLCBtX2Jsb2Nrc1RvU3dl
ZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQorICAgICwgbV9jdXJyZW50QWxsb2NhdG9yKG51bGxw
dHIpCiB7CiB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNh
bmNlbFRpbWVyKCkKICNlbGlmIFVTRShHTElCKQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1l
bnRhbFN3ZWVwZXIoSGVhcCogaGVhcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpKQotICAg
ICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKKyAgICAsIG1fY3VycmVu
dEFsbG9jYXRvcihudWxscHRyKQogewogfQogCkBAIC0xMjEsMTkgKzEyMSwyMCBAQCB2b2lkIElu
Y3JlbWVudGFsU3dlZXBlcjo6ZG9Td2VlcChkb3VibGUgCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsKICAgICBjYW5jZWxUaW1lcigpOwogfQog
CiBib29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soKQogewotICAgIHdoaWxl
ICghbV9ibG9ja3NUb1N3ZWVwLmlzRW1wdHkoKSkgewotICAgICAgICBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcC50YWtlTGFzdCgpOwotICAgICAgICBibG9jay0+
c2V0SXNPbkJsb2Nrc1RvU3dlZXAoZmFsc2UpOwotCi0gICAgICAgIGlmICghYmxvY2stPm5lZWRz
U3dlZXBpbmcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAoOyBtX2N1cnJlbnRBbGxvY2F0
b3I7IG1fY3VycmVudEFsbG9jYXRvciA9IG1fY3VycmVudEFsbG9jYXRvci0+bmV4dEFsbG9jYXRv
cigpKSB7CisgICAgICAgIGJsb2NrID0gbV9jdXJyZW50QWxsb2NhdG9yLT5maW5kQmxvY2tUb1N3
ZWVwKCk7CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAKKyAgICBpZiAoYmxvY2spIHsKICAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKG1f
dm0tPmhlYXApOwogICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgICAgICAgbV92bS0+aGVhcC5v
YmplY3RTcGFjZSgpLmZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKQEAgLTE0NiwxMSArMTQ3LDEy
IEBAIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygKIHZvaWQgSW5jcmVt
ZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKCkKIHsKICAgICBzY2hlZHVsZVRpbWVyKCk7Cisg
ICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZpcnN0QWxs
b2NhdG9yKCk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dlZXBp
bmcoKQogewotICAgIG1fYmxvY2tzVG9Td2VlcC5jbGVhcigpOworICAgIG1fY3VycmVudEFsbG9j
YXRvciA9IG51bGxwdHI7CiAgICAgaWYgKG1fdm0pCiAgICAgICAgIGNhbmNlbFRpbWVyKCk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVw
ZXIuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5j
cmVtZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMiBAQAogI2Rl
ZmluZSBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogCiAjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCi0jaW5j
bHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBIZWFwOwotY2xhc3MgTWFya2VkQmxvY2s7CitjbGFzcyBNYXJrZWRB
bGxvY2F0b3I7CiAKIGNsYXNzIEluY3JlbWVudGFsU3dlZXBlciA6IHB1YmxpYyBIZWFwVGltZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2NoZWR1bGVUaW1lcigpOwogICAgIHZvaWQgY2FuY2VsVGltZXIoKTsKICAg
ICAKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBtX2Jsb2Nrc1RvU3dlZXA7Cisg
ICAgTWFya2VkQWxsb2NhdG9yKiBtX2N1cnJlbnRBbGxvY2F0b3I7CiAjZW5kaWYKIH07CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCShyZXZp
c2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsOSArNzAsMTAgQEAgcHVibGljOgogICAgIAogICAg
IGJvb2wgaXNOZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOZXdseUFsbG9jYXRl
ZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc01hcmtlZCgpIHsgcmV0dXJuIG1faXNNYXJr
ZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc01hcmtlZChIZWFwQ2VsbCopIHsgcmV0dXJuIG1faXNNYXJrZWQubG9hZChzdGQ6Om1l
bW9yeV9vcmRlcl9yZWxheGVkKTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc01hcmtlZENv
bmN1cnJlbnRseShIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVybiBtX2lzTWFya2VkLmxv
YWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7IH0KICAgICBib29sIGlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZCgpIHsgcmV0dXJuIGlzTWFya2VkKCkgfHwgaXNOZXdseUFsbG9jYXRlZCgpOyB9
CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENlbGwqKSB7IHJldHVybiBp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsgfQotICAgIGJvb2wgaXNNYXJrZWREdXJpbmdXZWFr
VmlzaXRpbmcoSGVhcFZlcnNpb24sIEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJrZWQoKTsgfQog
ICAgIGJvb2wgaXNMaXZlKCkgeyByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7IH0K
ICAgICAKICAgICBib29sIGhhc1ZhbGlkQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzVmFsaWRD
ZWxsOyB9CkBAIC0xMDYsOCArMTA3LDcgQEAgcHVibGljOgogICAgIAogICAgIGNvbnN0IEFsbG9j
YXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7
IH0KICAgICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSh1aW50NjRfdCkgeyB9Ci0gICAgdm9p
ZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKHVpbnQ2NF90KSB7IH0KKyAgICB2b2lkIGFi
b3V0VG9NYXJrKEhlYXBWZXJzaW9uKSB7IH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
dGVzdEFuZFNldE1hcmtlZCgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMCArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYXJrZWRB
bGxvY2F0b3IuaCIKIAorI2luY2x1ZGUgIkFsbG9jYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkdD
QWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmNyZW1l
bnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2Vk
QmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0u
aCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTM5LDcgKzQxLDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcihIZWFwKiBoZWFwLCBN
YXJrZWRTcGFjZSogbWFya2VkU3BhY2UsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9y
QXR0cmlidXRlcyYgYXR0cmlidXRlcykKICAgICA6IG1fY3VycmVudEJsb2NrKDApCiAgICAgLCBt
X2xhc3RBY3RpdmVCbG9jaygwKQotICAgICwgbV9uZXh0QmxvY2tUb1N3ZWVwKG51bGxwdHIpCiAg
ICAgLCBtX2NlbGxTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjZWxsU2l6ZSkpCiAgICAgLCBt
X2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKICAgICAsIG1faGVhcChoZWFwKQpAQCAtNTAsMTEgKzUx
LDEzIEBAIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKEhlYXAqIGgKIGJvb2wgTWFy
a2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSkKIHsKICAgICB1bnNpZ25l
ZCBpdGVyc1NpbmNlTGFzdFRpbWVDaGVjayA9IDA7Ci0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2sgPSBtX2Jsb2NrTGlzdC5iZWdpbigpOwotICAgIHdoaWxlIChibG9jaykgewotICAgICAg
ICBibG9jayA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLSAgICAgICAgaWYgKGJs
b2NrKQotICAgICAgICAgICAgYmxvY2stPmZsaXBJZk5lY2Vzc2FyeSgpOyAvLyBGb3JjZXMgdXMg
dG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50aWMgZWZm
ZWN0LgorICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2Jsb2Nrcy5zaXplKCk7
ICsraW5kZXgpIHsKKyAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nr
c1tpbmRleF07CisgICAgICAgIGlmIChibG9jaykgeworICAgICAgICAgICAgLy8gRm9yY2VzIHVz
IHRvIHRvdWNoIHRoZSBtZW1vcnkgb2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVm
ZmVjdC4KKyAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCisgICAgICAgICAgICAg
ICAgYmxvY2stPmJsb2NrKCkucmVzZXRWZXJzaW9uKCk7CisgICAgICAgIH0KICAgICAgICAgKytp
dGVyc1NpbmNlTGFzdFRpbWVDaGVjazsKICAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNo
ZWNrID49IEhlYXA6OnNfdGltZUNoZWNrUmVzb2x1dGlvbikgewogICAgICAgICAgICAgZG91Ymxl
IGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAgLTY2
LDg0ICs2OSw5NiBAQCBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3VibGUgCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmV0aXJlKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQorYm9vbCBNYXJrZWRBbGxvY2F0b3I6OnNob3VsZFN0ZWFs
RW1wdHlCbG9ja3NGcm9tT3RoZXJBbGxvY2F0b3JzKCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOyAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIGluIHBhcmFsbGVsIGR1cmlu
ZyBHQy4KLSAgICBpZiAoYmxvY2sgPT0gbV9jdXJyZW50QmxvY2spIHsKLSAgICAgICAgLy8gVGhp
cyBoYXBwZW5zIHdoZW4gdGhlIG11dGF0b3IgaXMgcnVubmluZy4gV2UgZmluaXNoZWQgYSBmdWxs
IEdDIGFuZCBtYXJrZWQgdG9vIGZldyB0aGluZ3MKLSAgICAgICAgLy8gdG8gcmV0aXJlLiBUaGVu
IHdlIHN0YXJ0ZWQgYWxsb2NhdGluZyBpbiB0aGlzIGJsb2NrLiBUaGVuIGEgYmFycmllciByYW4s
IHdoaWNoIG1hcmtlZCBhbgotICAgICAgICAvLyBvYmplY3QgaW4gdGhpcyBibG9jaywgd2hpY2gg
cHV0IGl0IG92ZXIgdGhlIHJldGlyZW1lbnQgdGhyZXNob2xkLiBJdCdzIE9LIHRvIHNpbXBseSBk
bwotICAgICAgICAvLyBub3RoaW5nIGluIHRoYXQgY2FzZS4KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBpZiAoYmxvY2sgPT0gbV9sYXN0QWN0aXZlQmxvY2spIHsKLSAgICAgICAgLy8gVGhp
cyBjYW4gZWFzaWx5IGhhcHBlbiBkdXJpbmcgbWFya2luZy4gSXQgd291bGQgYmUgZWFzeSB0byBo
YW5kbGUgdGhpcyBjYXNlLCBidXQgaXQncwotICAgICAgICAvLyBqdXN0IGFzIGVhc3kgdG8gaWdu
b3JlIGl0LgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUKGJsb2Nr
LT5pc09uTGlzdCgpKTsKLSAgICBpZiAoYmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVwKQotICAg
ICAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5leHQoKSk7
Ci0gICAgYmxvY2stPnJlbW92ZSgpOwotICAgIG1fcmV0aXJlZEJsb2Nrcy5wdXNoKGJsb2NrKTsK
KyAgICByZXR1cm4gIW5lZWRzRGVzdHJ1Y3Rpb24oKTsKIH0KIAotTWFya2VkQmxvY2s6OkhhbmRs
ZSogTWFya2VkQWxsb2NhdG9yOjpmaWx0ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2spCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJs
b2NrVG9TdGVhbCgpCiB7Ci0gICAgaWYgKGJsb2NrID09IG1fYmxvY2tMaXN0LmVuZCgpKQorICAg
IC8vIERvbid0IGFsbG93IG90aGVycyB0byBzdGVhbCBmcm9tIHVzLCBpZiB3ZSB3b3VsZG4ndCBz
dGVhbCBmcm9tIG90aGVycy4KKyAgICBpZiAoIXNob3VsZFN0ZWFsRW1wdHlCbG9ja3NGcm9tT3Ro
ZXJBbGxvY2F0b3JzKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fZW1w
dHlDdXJzb3IgPSBtX2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1cnNvciwgdHJ1ZSk7CisgICAgaWYg
KG1fZW1wdHlDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gYmxvY2s7CisgICAgcmV0dXJuIG1fYmxvY2tzW21fZW1wdHlDdXJzb3Jd
OwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEJsb2NrVG9Td2VlcChNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jaykKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpkaWRDb25zdW1lRnJl
ZUxpc3QoKQogewotICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IGZpbHRlck5leHRCbG9jayhibG9j
ayk7CisgICAgaWYgKG1fY3VycmVudEJsb2NrKQorICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlk
Q29uc3VtZUZyZWVMaXN0KCk7CisgICAgCisgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Cisg
ICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogfQogCi12b2lkKiBNYXJrZWRBbGxvY2F0b3I6
OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCkKK3ZvaWQqIE1hcmtlZEFsbG9jYXRv
cjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlmIChtX2N1cnJlbnRCbG9j
aykgewotICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gbV9uZXh0QmxvY2tUb1N3ZWVw
KTsKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmRpZENvbnN1bWVGcmVlTGlzdCgpOwotICAgICAg
ICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fY3VycmVudEJsb2NrLT5uZXh0KCkpOwotICAgIH0KKyAg
ICBBU1NFUlQoIW1fY3VycmVudEJsb2NrKTsKKyAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOwogICAg
IAotICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQobV9u
ZXh0QmxvY2tUb1N3ZWVwICE9IG1fYmxvY2tMaXN0LmVuZCgpKTsKLQotICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiYgYmxvY2sgPSBt
X25leHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgbmV4dCA9
IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAgICAvLyBJdCB3b3VsZCBi
ZSBzdXBlciB3ZWlyZCBpZiB0aGUgYmxvY2tzIHdlIGFyZSBzd2VlcGluZyBoYXZlIGFueXRoaW5n
IGFsbG9jYXRlZCBkdXJpbmcgdGhpcwotICAgICAgICAvLyBjeWNsZS4KLSAgICAgICAgQVNTRVJU
KCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAgIAotICAgICAgICBGcmVl
TGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRv
RnJlZUxpc3QpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgbV9hbGxvY2F0aW9uQ3Vyc29yID0g
KG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSB8IG1fZW1wdHkpLmZpbmRCaXQobV9hbGxvY2F0aW9u
Q3Vyc29yLCB0cnVlKTsKKyAgICAgICAgaWYgKG1fYWxsb2NhdGlvbkN1cnNvciA+PSBtX2Jsb2Nr
cy5zaXplKCkpCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIC8vIEl0J3Mg
cG9zc2libGUgdG8gc3R1bWJsZSBvbiBhIGNvbXBsZXRlLWZ1bGwgYmxvY2suIE1hcmtpbmcgdHJp
ZXMgdG8gcmV0aXJlIHRoZXNlLCBidXQKLSAgICAgICAgLy8gdGhhdCBhbGdvcml0aG0gaXMgcmFj
eSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCi0gICAgICAgIGlmIChmcmVlTGlz
dC5hbGxvY2F0aW9uV2lsbEZhaWwoKSkgewotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc0Zy
ZWVMaXN0ZWQoKSk7Ci0gICAgICAgICAgICBibG9jay0+dW5zd2VlcFdpdGhOb05ld2x5QWxsb2Nh
dGVkKCk7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzTWFya2VkKCkpOwotICAgICAgICAg
ICAgcmV0aXJlKGJsb2NrKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAg
ICAgIHNldElzQ2FuQWxsb2NhdGVCdXROb3RFbXB0eShtX2FsbG9jYXRpb25DdXJzb3IsIGZhbHNl
KTsKIAotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOwotICAgICAgICBzZXRGcmVlTGlz
dChmcmVlTGlzdCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBpZiAodm9pZCogcmVzdWx0ID0g
dHJ5QWxsb2NhdGVJbihtX2Jsb2Nrc1ttX2FsbG9jYXRpb25DdXJzb3JdKSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmICghbV9mcmVlTGlzdCkgewotICAg
ICAgICBtX2N1cnJlbnRCbG9jayA9IDA7Ci0gICAgICAgIHJldHVybiAwOworICAgIGlmIChPcHRp
b25zOjpzdGVhbEVtcHR5QmxvY2tzRnJvbU90aGVyQWxsb2NhdG9ycygpCisgICAgICAgICYmIHNo
b3VsZFN0ZWFsRW1wdHlCbG9ja3NGcm9tT3RoZXJBbGxvY2F0b3JzKCkpIHsKKyAgICAgICAgaWYg
KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9tYXJrZWRTcGFjZS0+ZmluZEVtcHR5Qmxv
Y2tUb1N0ZWFsKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBJdCdzIGdvb2QgdGhhdCB0aGlzIGNsZWFycyBjYW5BbGxvY2F0ZUJ1
dE5vdEVtcHR5IGFzIHdlbGwgYXMgYWxsIG90aGVyIGJpdHMsCisgICAgICAgICAgICAvLyBiZWNh
dXNlIHRoZXJlIGlzIGEgcmVtb3RlIGNoYW5jZSB0aGF0IGEgYmxvY2sgbWF5IGhhdmUgYm90aCBj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5CisgICAgICAgICAgICAvLyBhbmQgZW1wdHkgc2V0IGF0IHRo
ZSBzYW1lIHRpbWUuCisgICAgICAgICAgICBibG9jay0+cmVtb3ZlRnJvbUFsbG9jYXRvcigpOwor
ICAgICAgICAgICAgYWRkQmxvY2soYmxvY2spOworICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRl
SW4oYmxvY2spOworICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHJldHVybiBudWxscHRyOwor
fQogCit2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2spCit7CisgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVJbihibG9jayk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lk
KiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2spCit7CisgICAgQVNTRVJUKGJsb2NrKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5oYXNBbnlOZXds
eUFsbG9jYXRlZCgpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAg
CisgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OkhhbmRs
ZTo6U3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAKKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIHN0dW1i
bGUgb24gYSBjb21wbGV0ZWx5IGZ1bGwgYmxvY2suIE1hcmtpbmcgdHJpZXMgdG8gcmV0aXJlIHRo
ZXNlLCBidXQKKyAgICAvLyB0aGF0IGFsZ29yaXRobSBpcyByYWN5IGFuZCBtYXkgZm9yZ2V0IHRv
IGRvIGl0IHNvbWV0aW1lcy4KKyAgICBpZiAoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkp
IHsKKyAgICAgICAgQVNTRVJUKGJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgICAgIGJsb2Nr
LT51bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+
aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBBU1NFUlQoIWlzRW1wdHkoYmxvY2spKTsKKyAgICAg
ICAgQVNTRVJUKCFpc0NhbkFsbG9jYXRlQnV0Tm90RW1wdHkoYmxvY2spKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIAorICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7Cisg
ICAgc2V0RnJlZUxpc3QoZnJlZUxpc3QpOworICAgIAogICAgIHZvaWQqIHJlc3VsdDsKICAgICBp
ZiAobV9mcmVlTGlzdC5yZW1haW5pbmcpIHsKICAgICAgICAgdW5zaWduZWQgY2VsbFNpemUgPSBt
X2NlbGxTaXplOwpAQCAtMTU1LDIxICsxNzAsMTEgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0
cnlBbGxvY2F0ZVdpdGhvdQogICAgICAgICByZXN1bHQgPSBoZWFkOwogICAgIH0KICAgICBSRUxF
QVNFX0FTU0VSVChyZXN1bHQpOworICAgIHNldElzRWRlbihtX2N1cnJlbnRCbG9jaywgdHJ1ZSk7
CiAgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWxsb2NhdGVJbkJsb2NrKG1fY3VycmVudEJsb2NrKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0
cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCkKLXsKLSAgICBBU1NFUlQoIW1faGVhcC0+aXNC
dXN5KCkpOwotICAgIG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsK
LSAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpOwot
Ci0gICAgbV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKLSAgICBB
U1NFUlQocmVzdWx0IHx8ICFtX2N1cnJlbnRCbG9jayk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQogQUxXQVlTX0lOTElORSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZG9UZXN0Q29sbGVjdGlvbnNJ
Zk5lZWRlZCgpCiB7CiAgICAgaWYgKCFPcHRpb25zOjpzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3Mo
KSkKQEAgLTIwNiwxOSArMjExLDE3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVT
bG93Q2FzZUkKICAgICBBU1NFUlQoIW1fbWFya2VkU3BhY2UtPmlzSXRlcmF0aW5nKCkpOwogICAg
IG1faGVhcC0+ZGlkQWxsb2NhdGUobV9mcmVlTGlzdC5vcmlnaW5hbFNpemUpOwogICAgIAorICAg
IGRpZENvbnN1bWVGcmVlTGlzdCgpOworICAgIAorICAgIG1faGVhcC0+Y29sbGVjdElmTmVjZXNz
YXJ5T3JEZWZlcigpOworICAgIAorICAgIEFsbG9jYXRpb25TY29wZSBhbGxvY2F0aW9uU2NvcGUo
Km1faGVhcCk7CisKICAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0
aW5nKCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShyZXN1bHQgIT0gMCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZl
cigpKSB7Ci0gICAgICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsK
LSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
Ci0gICAgQVNTRVJUKCFtX2hlYXAtPnNob3VsZENvbGxlY3QoKSk7Ci0gICAgCiAgICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2sgPSB0cnlBbGxvY2F0ZUJsb2NrKCk7CiAgICAgaWYgKCFibG9j
aykgewogICAgICAgICBpZiAoY3Jhc2hPbkZhaWx1cmUpCkBAIC0yMjcsOCArMjMwLDcgQEAgdm9p
ZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlSQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIGFkZEJsb2NrKGJsb2NrKTsKLSAgICAgICAgCi0gICAgcmVz
dWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOworICAgIHJlc3VsdCA9IGFsbG9j
YXRlSW4oYmxvY2spOwogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0yNDksMzcgKzI1MSw3NSBAQCBzaXplX3QgTWFya2VkQWxsb2NhdG9yOjpibG9ja1NpemVG
b3JCeXRlCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRl
QmxvY2soKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9oZWFwLCB0aGlzLCBtX2Nl
bGxTaXplLCBtX2F0dHJpYnV0ZXMpOworICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhh
bmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCk7CisgICAgaWYgKCFoYW5kbGUp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPmRpZEFk
ZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAg
IEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CisgICAg
c2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAgIHNpemVfdCBvbGRDYXBh
Y2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxvY2tzLmFwcGVuZChibG9j
ayk7CisgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9sZENhcGFjaXR5KSB7Cisg
ICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJp
dFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodmVj
dG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkg
PiBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0
b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGluZGV4ID0g
bV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7CisgICAgICAgIEFTU0VSVCghbV9ibG9ja3Nb
aW5kZXhdKTsKKyAgICAgICAgbV9ibG9ja3NbaW5kZXhdID0gYmxvY2s7CisgICAgfQogICAgIAot
ICAgIG1fYmxvY2tMaXN0LmFwcGVuZChibG9jayk7Ci0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChi
bG9jayk7Ci0gICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soYmxvY2spOworICAgIGZvckVh
Y2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvciwgIXZlY3RvcltpbmRleF0pOworICAgICAgICB9
KTsKKworICAgIC8vIFRoaXMgaXMgdGhlIHBvaW50IGF0IHdoaWNoIHRoZSBibG9jayBsZWFybnMg
b2YgaXRzIGNlbGxTaXplKCkgYW5kIGF0dHJpYnV0ZXMoKS4KKyAgICBibG9jay0+ZGlkQWRkVG9B
bGxvY2F0b3IodGhpcywgaW5kZXgpOworICAgIAorICAgIHNldElzTGl2ZShpbmRleCwgdHJ1ZSk7
CisgICAgc2V0SXNFbXB0eShpbmRleCwgdHJ1ZSk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9y
OjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIHsKLSAgICBpZiAobV9j
dXJyZW50QmxvY2sgPT0gYmxvY2spIHsKLSAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBmaWx0ZXJO
ZXh0QmxvY2sobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAgICAgIHNldEZyZWVMaXN0KEZy
ZWVMaXN0KCkpOwotICAgIH0KLSAgICBpZiAobV9uZXh0QmxvY2tUb1N3ZWVwID09IGJsb2NrKQot
ICAgICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fbmV4dEJsb2NrVG9Td2VlcC0+bmV4dCgpKTsK
KyAgICBBU1NFUlQoYmxvY2stPmFsbG9jYXRvcigpID09IHRoaXMpOworICAgIEFTU0VSVChtX2Js
b2Nrc1tibG9jay0+aW5kZXgoKV0gPT0gYmxvY2spOwogCi0gICAgYmxvY2stPndpbGxSZW1vdmVC
bG9jaygpOwotICAgIG1fYmxvY2tMaXN0LnJlbW92ZShibG9jayk7CisgICAgbV9ibG9ja3NbYmxv
Y2stPmluZGV4KCldID0gbnVsbHB0cjsKKyAgICBtX2ZyZWVCbG9ja0luZGljZXMuYXBwZW5kKGJs
b2NrLT5pbmRleCgpKTsKKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICBbJl0g
KEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgdmVjdG9yW2Jsb2NrLT5pbmRl
eCgpXSA9IGZhbHNlOworICAgICAgICB9KTsKKyAgICAKKyAgICBibG9jay0+ZGlkUmVtb3ZlRnJv
bUFsbG9jYXRvcigpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmco
KQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVj
dGlvbikKLSAgICAgICAgbV9ibG9ja0xpc3QudGFrZUZyb20obV9yZXRpcmVkQmxvY2tzKTsKLQor
ICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJr
ZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nIVxuIik7CiAgICAgQVNTRVJUKCFtX2xhc3RBY3Rp
dmVCbG9jayk7CiAgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykgewogICAgICAgICBBU1NFUlQoIW1f
ZnJlZUxpc3QpOwpAQCAtMjkyLDI5ICszMzIsMjUgQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN0
b3BBbGxvY2F0aW5nKCkKICAgICBtX2ZyZWVMaXN0ID0gRnJlZUxpc3QoKTsKIH0KIAotdm9pZCBN
YXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpwcmVwYXJlRm9y
QWxsb2NhdGlvbigpCiB7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotICAgIG1fY3VycmVu
dEJsb2NrID0gMDsKKyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxwdHI7CisgICAgbV9jdXJy
ZW50QmxvY2sgPSBudWxscHRyOwogICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwogCi0gICAg
c2V0TmV4dEJsb2NrVG9Td2VlcChtX2Jsb2NrTGlzdC5iZWdpbigpKTsKKyAgICBtX2FsbG9jYXRp
b25DdXJzb3IgPSAwOworICAgIG1fZW1wdHlDdXJzb3IgPSAwOworICAgIG1fdW5zd2VwdEN1cnNv
ciA9IDA7CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFko
T3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6OkhhbmRsZSomIGJsb2NrID0g
bV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgICAgICBu
ZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgICAgICBGcmVl
TGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRv
RnJlZUxpc3QpOwotICAgICAgICAgICAgYmxvY2stPnphcChmcmVlTGlzdCk7Ci0gICAgICAgICAg
ICByZXRpcmUoYmxvY2spOwotICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBUaGluZ3M/CiAg
ICAgfQogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxpemUoKQog
ewotICAgIG1fYmxvY2tMaXN0LnRha2VGcm9tKG1fcmV0aXJlZEJsb2Nrcyk7CiAgICAgZm9yRWFj
aEJsb2NrKAogICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CiAgICAg
ICAgICAgICBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTMyNiw0ICszNjIsMTIx
IEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzZXRGcmVlTGlzdChjb25zdCAKICAgICBtX2ZyZWVM
aXN0ID0gZnJlZUxpc3Q7CiB9CiAKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0
aW5nKCkKK3sKKyAgICBpZiAoIW1fbGFzdEFjdGl2ZUJsb2NrKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2ZyZWVMaXN0ID0gbV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsK
KyAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2NrOworICAgIG1fbGFzdEFjdGl2
ZUJsb2NrID0gbnVsbHB0cjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmJlZ2luTWFya2lu
Z0ZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNreSBhbmQg
c28gaXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmlu
ZyBmdWxsCisgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBj
b2xsZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKKyAgICAvLyBh
cyB0aGUgbmV4dCBvbmUgaXMgZWRlbi4KKyAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVhckFsbCgp
OworICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKK30KKwordm9pZCBNYXJrZWRBbGxv
Y2F0b3I6OmVuZE1hcmtpbmcoKQoreworICAgIG1fYWxsb2NhdGVkLmNsZWFyQWxsKCk7CisgICAg
CisgICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBjb21wcmVoZW5kLCBi
dXQgdGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bworICAgIC8vIGtub3cg
d2hhdCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdlIGlzIGFscmVhZHkg
ZW5jb2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCisgICAgLy8gdmVjdG9ycy4KKyAgICAKKyAgICBp
ZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CisgICAgICAgIC8vIElmIGJsb2NrcyBuZWVkIGRlc3Ry
dWN0aW9uIHRoZW4gbm90aGluZyBpcyBlbXB0eSEgVGhpcyBpcyBhIGNvcnJlY3QgYXNzZXJ0aW9u
IGJ1dCBtYXkKKyAgICAgICAgLy8gYmVjb21lIHdyb25nIG9uY2Ugd2UgZ28gZnVsbCBjb25jdXJy
ZW50OiB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBibG9jaywgaXQgd2lsbCBmbGlja2VyCisgICAgICAg
IC8vIGludG8gdGhlIGVtcHR5IHNldCBmb3IgYSB0aW55IG1vbWVudC4gT24gdGhlIG90aGVyIGhh
bmQsIHRoaXMgY29kZSBpcyBsaWtlbHkgdG8gYmUgcnVuCisgICAgICAgIC8vIGluIHN0b3BUaGVX
b3JsZC4KKyAgICAgICAgQVNTRVJUKG1fZW1wdHkuaXNFbXB0eSgpKTsKKyAgICAgICAgbV9jYW5B
bGxvY2F0ZUJ1dE5vdEVtcHR5ID0gbV9saXZlICYgfm1fbWFya2luZ1JldGlyZWQ7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9lbXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdO
b3RFbXB0eTsKKyAgICBtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgPSBtX2xpdmUgJiBtX21hcmtp
bmdOb3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgIAorICAgIGlmIChmYWxzZSkgewor
ICAgICAgICBkYXRhTG9nKCJCaXRzIGZvciAiLCBtX2NlbGxTaXplLCAiLCAiLCBtX2F0dHJpYnV0
ZXMsICIgYWZ0ZXIgZW5kTWFya2luZzpcbiIpOworICAgICAgICBkdW1wQml0cyhXVEY6OmRhdGFG
aWxlKCkpOworICAgIH0KK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90VW5zd2Vw
dEZvckVkZW5Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3Vuc3dlcHQgfD0gbV9lZGVuOworfQorCit2
b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24oKQor
eworICAgIG1fdW5zd2VwdCA9IG1fbGl2ZTsKK30KKworTWFya2VkQmxvY2s6OkhhbmRsZSogTWFy
a2VkQWxsb2NhdG9yOjpmaW5kQmxvY2tUb1N3ZWVwKCkKK3sKKyAgICBtX3Vuc3dlcHRDdXJzb3Ig
PSBtX3Vuc3dlcHQuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUpOworICAgIGlmIChtX3Vu
c3dlcHRDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gbV9ibG9ja3NbbV91bnN3ZXB0Q3Vyc29yXTsKK30KKwordm9pZCBNYXJrZWRB
bGxvY2F0b3I6OnN3ZWVwKCkKK3sKKyAgICBtX3Vuc3dlcHQuZm9yRWFjaFNldEJpdCgKKyAgICAg
ICAgWyZdIChzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIG1fYmxvY2tzW2luZGV4XS0+c3dl
ZXAoKTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzaHJpbmsoKQor
eworICAgIG1fZW1wdHkuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgp
IHsKKyAgICAgICAgICAgIG1fbWFya2VkU3BhY2UtPmZyZWVCbG9jayhtX2Jsb2Nrc1tpbmRleF0p
OworICAgICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFzc2VydE5vVW5zd2Vw
dCgpCit7CisgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIGlmIChtX3Vuc3dlcHQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
ZGF0YUxvZygiQXNzZXJ0aW9uIGZhaWxlZDogdW5zd2VwdCBub3QgZW1wdHkgaW4gIiwgKnRoaXMs
ICIuXG4iKTsKKyAgICBkdW1wQml0cygpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorewor
ICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOiIsIG1fY2VsbFNpemUsICIvIiwgbV9h
dHRyaWJ1dGVzKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmR1bXBCaXRzKFByaW50U3Ry
ZWFtJiBvdXQpCit7CisgICAgdW5zaWduZWQgbWF4TmFtZUxlbmd0aCA9IDA7CisgICAgZm9yRWFj
aEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImLCBjb25zdCBj
aGFyKiBuYW1lKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4obmFtZSk7
CisgICAgICAgICAgICBtYXhOYW1lTGVuZ3RoID0gc3RkOjptYXgobWF4TmFtZUxlbmd0aCwgbGVu
Z3RoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAor
ICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvciwgY29uc3QgY2hhciogbmFtZSkgewor
ICAgICAgICAgICAgb3V0LnByaW50KCIgICAgIiwgbmFtZSwgIjogIik7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtYXhOYW1lTGVuZ3RoIC0gc3RybGVuKG5hbWUpOyBpLS07KQorICAg
ICAgICAgICAgICAgIG91dC5wcmludCgiICIpOworICAgICAgICAgICAgb3V0LnByaW50KHZlY3Rv
ciwgIlxuIik7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHJldmlzaW9u
IDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiQWxsb2NhdG9yQXR0
cmlidXRlcy5oIgogI2luY2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2su
aCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TZW50aW5l
bExpbmtlZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC0zNyw2ICszOSwxNDkgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIE1hcmtlZFNwYWNlOwog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisjZGVmaW5lIEZPUl9FQUNIX01BUktFRF9B
TExPQ0FUT1JfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBv
ZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKKyAgICBtYWNybyhl
bXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBv
YmplY3RzIGFuZCBub3RoaW5nIHRvIGRlc3Ryb3kuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQs
IEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGxibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZl
IG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9j
YXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0
eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRp
b24gZnVsbCkuICovIFwKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKKyAgICBt
YWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjb3Vs
ZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9cCisgICAgXAorICAgIC8q
IFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCisgICAgbWFjcm8obWFya2lu
Z05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0
IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2luZ1Jl
dGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLworCisv
LyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGFuZCBlbXB0eSB0byBi
ZSBleGNsdXNpdmU6CisvLworLy8gICAgIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgJiBlbXB0eSA9
PSAwCisvLworLy8gSW5zdGVhZCBvZiBjYWxsaW5nIGl0IGNhbkFsbG9jYXRlIGFuZCBtYWtpbmcg
aXQgaW5jbHVzaXZlOgorLy8KKy8vICAgICBjYW5BbGxvY2F0ZSAmIGVtcHR5ID09IGVtcHR5Cisv
LworLy8gVGhlIGxhdHRlciBpcyBwcm9iYWJseSBiZXR0ZXIuIEknbGwgbGVhdmUgaXQgdG8gYSBm
dXR1cmUgYnVnIHRvIGZpeCB0aGF0LCBzaW5jZSBicmVhdGhpbmcgb24KKy8vIHRoaXMgY29kZSBs
ZWFkcyB0byByZWdyZXNzaW9ucyBmb3IgZGF5cywgYW5kIGl0J3Mgbm90IGNsZWFyIHRoYXQgbWFr
aW5nIHRoaXMgY2hhbmdlIHdvdWxkCisvLyBpbXByb3ZlIHBlcmYgc2luY2UgaXQgd291bGQgbm90
IGNoYW5nZSB0aGUgY29sbGVjdG9yJ3MgYmVoYXZpb3IsIGFuZCBlaXRoZXIgd2F5IHRoZSBhbGxv
Y2F0b3IKKy8vIGhhcyB0byBsb29rIGF0IGJvdGggYml0dmVjdG9ycy4KKy8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMjEKKworLy8gTm90ZSB0aGF0IHRoaXMg
Y29sbGVjdG9yIHN1cHBvcnRzIG92ZXJsYXBwaW5nIGFsbG9jYXRvciBzdGF0ZSB3aXRoIG1hcmtp
bmcgc3RhdGUsIHNpbmNlIGluIGEKKy8vIGNvbmN1cnJlbnQgY29sbGVjdG9yIHlvdSBhbGxvdyBh
bGxvY2F0aW9uIHdoaWxlIG1hcmtpbmcgaXMgcnVubmluZy4gU28gaXQncyBiZXN0IHRvIHZpc3Vh
bGl6ZSBhCisvLyBmdWxsIG11dGFibGUtPmVkZW4gY29sbGVjdC0+bXV0YXRlLT5mdWxsIGNvbGxl
Y3QgY3ljbGUgYW5kIHNlZSBob3cgdGhlIGJpdHMgYWJvdmUgZ2V0IGFmZmVjdGVkLgorLy8gVGhl
IGV4YW1wbGUgYmVsb3cgdHJpZXMgdG8gYmUgZXhoYXVzdGl2ZSBhYm91dCB3aGF0IGhhcHBlbnMg
dG8gdGhlIGJpdHMsIGJ1dCBvbWl0cyBhIGxvdCBvZgorLy8gdGhpbmdzIHRoYXQgaGFwcGVuIHRv
IG90aGVyIHN0YXRlLgorLy8KKy8vIENyZWF0ZSBhbGxvY2F0b3IKKy8vIC0gYWxsIGJpdHMgYXJl
IGVtcHR5CisvLyBTdGFydCBhbGxvY2F0aW5nIGluIHNvbWUgYmxvY2sKKy8vIC0gYWxsb2NhdGUg
dGhlIGJsb2NrIGFuZCBzZXQgdGhlIGxpdmUgYml0LgorLy8gLSB0aGUgZW1wdHkgYml0IGZvciB0
aGUgYmxvY2sgZmxpY2tlcnMgb24gYW5kIHRoZW4gZ2V0cyBpbW1lZGlhdGVseSBjbGVhcmVkIGJ5
IHN3ZWVwaW5nLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcg
aW4gdGhhdCBibG9jaworLy8gLSBzZXQgdGhlIGFsbG9jYXRlZCBiaXQuCisvLyBEbyB0aGF0IHRv
IGEgbG90IG9mIGJsb2NrcyBhbmQgdGhlbiBzdGFydCBhbiBlZGVuIGNvbGxlY3Rpb24uCisvLyAt
IGJlZ2luTWFya2luZygpIGhhcyBub3RoaW5nIHRvIGRvLgorLy8gLSBieSBkZWZhdWx0IHdlIGhh
dmUgY2xlYXIgbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIGJpdHMuCisvLyAtIG1hcmtp
bmcgYnVpbGRzIHVwIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJlZCBiaXRzLgorLy8gV2Ug
ZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gZm9y
IGRlc3RydWN0b3IgYmxvY2tzOiBmcmFnbWVudGVkID0gbGl2ZSAmIH5tYXJraW5nUmV0aXJlZAor
Ly8gLSBmb3Igbm9uLWRlc3RydWN0b3IgYmxvY2tzOgorLy8gICAgICAgZW1wdHkgPSBsaXZlICYg
fm1hcmtpbmdOb3RFbXB0eQorLy8gICAgICAgZnJhZ21lbnRlZCA9IGxpdmUgJiBtYXJraW5nTm90
RW1wdHkgJiB+bWFya2luZ1JldGlyZWQKKy8vIFNuYXBzaG90dGluZy4KKy8vIC0gdW5zd2VwdCB8
PSBlZGVuCisvLyBQcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBjbGVhciBlZGVuCisvLyBG
aW5pc2ggY29sbGVjdGlvbi4KKy8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCBoYWQgc29t
ZSBmcmVlIGFuZCBzb21lIGxpdmUgb2JqZWN0cy4KKy8vIC0gY2xlYXIgdGhlIGNhbkFsbG9jYXRl
QnV0Tm90RW1wdHkgYml0CisvLyAtIGNsZWFyIHRoZSB1bnN3ZXB0IGJpdAorLy8gLSBzZXQgdGhl
IGVkZW4gYml0CisvLyBGaW5pc2ggYWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4K
Ky8vIEFsbG9jYXRlIGluIHNvbWUgYmxvY2sgdGhhdCB3YXMgY29tcGxldGVseSBlbXB0eS4KKy8v
IC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8gLSBjbGVhciB0aGUgdW5zd2VwdCBiaXQKKy8vIC0g
c2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRl
ZCBiaXQpLgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9jayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVt
cHR5IGluIGFub3RoZXIgYWxsb2NhdG9yLgorLy8gLSBjbGVhciB0aGUgZW1wdHkgYml0CisvLyAt
IGNsZWFyIGFsbCBiaXRzIGluIHRoYXQgYWxsb2NhdG9yCisvLyAtIHNldCB0aGUgbGl2ZSBiaXQg
aW4gYW5vdGhlciBhbGxvY2F0b3IgYW5kIHRoZSBlbXB0eSBiaXQuCisvLyAtIGNsZWFyIHRoZSBl
bXB0eSwgdW5zd2VwdCBiaXRzLgorLy8gLSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFs
bG9jYXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBTdGFydCBhIGZ1bGwgY29sbGVj
dGlvbi4KKy8vIC0gYmVnaW5NYXJraW5nKCkgY2xlYXJzIG1hcmtpbmdOb3RFbXB0eSwgbWFya2lu
Z1JldGlyZWQKKy8vIC0gdGhlIGhlYXAgdmVyc2lvbiBpcyBpbmNyZW1lbnRlZAorLy8gLSBtYXJr
aW5nIHJlYnVpbGRzIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5ncmV0aXJlZCBiaXRzLgorLy8gV2Ug
ZG8gZW5kTWFya2luZygpCisvLyAtIGNsZWFyIGFsbCBhbGxvY2F0ZWQgYml0cy4KKy8vIC0gc2V0
IGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkvZW1wdHkgdGhlIHNhbWUgd2F5IGFzIGluIGVkZW4gY29s
bGVjdGlvbi4KKy8vIFNuYXBzaG90dGluZy4KKy8vIC0gdW5zd2VwdCA9IGxpdmUKKy8vIHByZXBh
cmUgZm9yIGFsbG9jYXRpb24uCisvLyAtIGNsZWFyIGVkZW4uCisvLyBGaW5pc2ggY29sbGVjdGlv
bi4KKy8vCisvLyBOb3RpY2UgaG93IGluIHRoaXMgc2NoZW1lLCB0aGUgZW1wdHkvY2FuQWxsb2Nh
dGVCdXROb3RFbXB0eSBzdGF0ZSBzdGF5cyBzZXBhcmF0ZSBmcm9tIHRoZQorLy8gbWFya2luZ05v
dEVtcHR5L21hcmtpbmdSZXRpcmVkIHN0YXRlLiBUaGlzIGlzIG9uZSBzdGVwIHRvd2FyZHMgaGF2
aW5nIHNlcGFyYXRlZCBhbGxvY2F0aW9uIGFuZAorLy8gbWFya2luZyBzdGF0ZS4KKy8vCisvLyBB
ZnRlciB0aGlzLCB3ZSBqdXN0IG5lZWQgdG8gYW5zd2VyIHRoZSBxdWVzdGlvbjogd2hhdCBkb2Vz
IGFuIG9iamVjdCBhbGxvY2F0ZWQgZHVyaW5nIGVkZW4gR0MKKy8vIGxvb2sgbGlrZSB0byB0aGUg
R0M/CisvLworLy8gSSd2ZSBjb21lIHVwIHdpdGggdHdvIGNvbXBlbGxpbmcgYW5zd2Vycy4KKy8v
CisvLyAxLiBBTExPQ0FURSBCTEFDSworLy8KKy8vIEkgdGhpbmsgdGhhdCB0aGUgZWFzaWVzdCBh
bnN3ZXIgaXMgdG8gYWxsb2NhdGUgdGhlIG9iamVjdCB3aGl0ZSBhbmQgdGhlbgorLy8gaW1tZWRp
YXRlbHkgbWFyayBpdC4gVGhpcyBtYWtlcyB0aGUgb2JqZWN0IGJlaGF2ZSBhcyBpZiBpdCB3YXMg
YWxsb2NhdGVkIGp1c3QgYmVmb3JlIHRoZSBzdGFydAorLy8gb2YgR0MgYW5kIGl0IHdhcyBvbiB0
aGUgc3RhY2sgYXQgdGhlIGJlZ2lubmluZyBvZiBHQy4gV2Ugd291bGRuJ3QgaGF2ZSB0byBkbyBh
bnl0aGluZyBkaWZmZXJlbnQKKy8vIHdpdGggdGhlIHZhcmlvdXMgYmxvY2sgYml0cyB3aGVuIGFs
bG9jYXRpbmcgZHVyaW5nIEdDOiB3ZSBjb3VsZCBzdGlsbCBzZXQgZWRlbiBhbmQgYWxsb2NhdGVk
CisvLyBzaW5jZSB0aGV5IHdpbGwgYmUgY2xlYXJlZCBhbnl3YXkuCisvLworLy8gQnV0IHRoaXMg
bWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdvbid0IGJlIGVsaWdpYmxlIGZvciBmcmVlaW5nIHVudGls
IHRoZSBuZXh0IGZ1bGwgR0MuIElkZWFsbHkKKy8vIHdlJ2QgbWFrZSB0aGUgb2JqZWN0IGlzIGVs
aWdpYmxlIGZvciBmcmVlaW5nIGF0IHRoZSBuZXh0IGVkZW4gR0MuIFRoZXJlJ3MgYSBidW5jaCBv
ZiB0aGluZ3Mgd2UKKy8vIGNvdWxkIGRvIHRvIG1ha2UgdGhpcyBoYXBwZW4uIEhlcmUgYXJlIHNv
bWUgaWRlYXM6CisvLworLy8gLSBJbnRyb2R1Y2UgYSBuZXcgQ2VsbFN0YXRlLCBjYWxsZWQgRmxv
YXQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG9iamVjdCB3YXMgYWxsb2NhdGVkIGR1cmluZyB0aGUK
Ky8vICAgR0MuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IG1hcmtpbmcgZG9lcyBub3RoaW5nIGZv
ciBGbG9hdHMuIFRoaXMgd291bGQgbWFrZSBtYXJraW5nIGEgdGlueQorLy8gICBiaXQgbW9yZSBl
eHBlbnNpdmUuIFdlIHdvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBiYXJyaWVyIHJlY29nbml6ZXMg
c3RvcmVzIHRvIGEgRmxvYXQgdGhlIHNhbWUKKy8vICAgd2F5IHRoYXQgaXQgc2VlcyBhIHN0b3Jl
IHRvIE9sZEJsYWNrOiBpdCBwdXRzIHRoZSBvYmplY3Qgb24gdGhlIG1hcmsgc3RhY2suIEZsb2F0
cyB3b3VsZCBiZQorLy8gICBwdXQgb24gdGhlIG1hcmsgc3RhY2sgYXMgRmxvYXRHcmV5IHRvIGlu
ZGljYXRlIHRoYXQgdGhleSB3aWxsIGJlIHNjYW5uZWQgYnkgdGhlIEdDIGJ1dCB0aGF0CisvLyAg
IHRoZXkgYXJlbid0IGFjdHVhbGx5IG1hcmtlZC4KKy8vCisvLyAgIE5vdGUgdGhhdCB0aGlzIGlt
cGxpZXMgaGF2aW5nIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhvc2UgY2VsbHMgZnJvbSBGbG9h
dCB0byBzb21ldGhpbmcgZWxzZQorLy8gICBhdCB0aGUgZW5kIG9mIEdDLiAgSSdtIG5vdCBzdXJl
IHRoYXQgdGhpcyBpcyBzbyBncmVhdC4KKy8vCisvLyAtIE1hcmsgdGhlIG9iamVjdHMgYWZ0ZXIg
YWxsb2NhdGlvbiwgYnV0IGFsc28gc2V0IHNvbWUgb3RoZXIgYml0cyB0byBpbmRpY2F0ZSB0aGF0
IHRoZSB0aG9zZQorLy8gICBvYmplY3RzIHNob3VsZCBiZSB1bm1hcmtlZCBhdCB0aGUgZW5kIG9m
IHRoZSBHQy4KKy8vCisvLyBFaXRoZXIgb2YgdGhlc2UgYXBwcm9hY2hlcyB3b3VsZCBtYWtlIGNv
bGxlY3Rpb25zIG1vcmUgZXhwZW5zaXZlLCBidXQgaXQgZmVlbHMgbGlrZSB0aGUgbGF0dGVyCisv
LyBhcHByb2FjaCB3b3VsZCBiZSBhIHByb2ZpdGFibGUgb3B0aW1pemF0aW9uLiBJJ20gYWxzbyBy
ZWFsbHkgZ2V0dGluZyB3b3JyaWVkIGFib3V0IGhvdyB0aGlzIEdDCisvLyBleHBlcmllbmNlcyBi
YWNrd2FyZHMgdGltZSB0cmF2ZWwsIHdpdGggYWxsIHRoZSByZW1hcmtpbmcgb2YgdGhpbmdzIGxp
a2UgbmV3IG9iamVjdHMgYW5kCisvLyB3aGF0bm90LgorLy8KKy8vIDIuIEFMTE9DQVRFIFdISVRF
CisvLworLy8gSSBkb24ndCBrbm93IGlmIHRoaXMgaXMgc291bmQsIGJ1dCBpZiBpdCB3YXMgdGhl
biBpdCB3b3VsZCBiZSB0aGUgb3B0aW1hbCBzb2x1dGlvbi4gQWxsb2NhdGlvbgorLy8gd291bGQg
d29yayBhcyBub3cgYW5kIGNvbnNlcXVlbnRseSwgZXZlcnl0aGluZyB3ZSBrbm93IGFib3V0IHdo
YXQgd2FzIGFsbG9jYXRlZCBkdXJpbmcgYSBHQyBpcworLy8gZm9yZ290dGVuIGF0IHRoZSBlbmQg
b2YgR0MuIEJ1dCB0aGF0J3MgZmluZS4gRW5kIG9mIEdDIG11c3QgcmVzY2FuIGFueSBoZWFwIGxv
Y2F0aW9ucyB0aGF0IGdvdAorLy8gc3RvcmVkIGludG8gYW5kIGl0IG11c3QgcmVzY2FuIHRoZSBz
dGFjay4gU28sIHdoaXRlIG9iamVjdHMgYWxsb2NhdGVkIGR1cmluZyBHQyB3b3VsZCBnZXQKKy8v
IG1hcmtlZCBpZiB0aGV5IHNvbWVob3cgc3Vydml2ZWQuCisvLworLy8gVGhpcyBtZWFucyB0aGF0
IGZvciBleGFtcGxlIGlmIHRoZXJlIGlzIGEgZmllbGQgdGhhdCBvZnRlbiBnZXRzIHN0b3JlZCB0
byB3aXRoIG5ldyBvYmplY3RzLCB0aGUKKy8vIEdDIHdpbGwgbm90IHNlZSBhbGwgb2YgdGhlIHZh
bHVlcyBpbiB0aGF0IGZpZWxkIGJ1dCBpbnN0ZWFkIGl0IHdvdWxkIHBvbGwgdGhhdCBmaWVsZCwg
aG9wZWZ1bGx5CisvLyBzb21ld2hhdCByYXJlbHkuIFdlIGNhbiBtYWtlIGl0IHZlcnkgcmFyZSBi
eSBvbmx5IGluZnJlcXVlbnRseSBkb25hdGluZyBmcm9tIHRoZSBtYWluIHRocmVhZCdzCisvLyBz
bG90IHZpc2l0b3IgdG8gYW55IG9mIHRoZSBvdGhlcnMuIFNvLCB3ZSB3b3VsZCBvbmx5IG1hcmsg
c29tZSBvZiB0aGUgbmV3IG9iamVjdHMgdGhhdCBnb3QKKy8vIHN0b3JlZCBpbnRvIHRoYXQgZmll
bGQuIEl0IGFsc28gbWVhbnMgdGhhdCBhbnkgb2JqZWN0IGFsbG9jYXRlZCBkdXJpbmcgdGhlIEdD
IHRoYXQgZGlkbid0IGdldAorLy8gc3RvcmVkIGludG8gYW55IG9iamVjdCB0aGF0IHdhcyBsaXZl
IHNpbmNlIGJlZm9yZSB0aGUgc3RhcnQgb2YgR0Mgd291bGQgc2ltcGx5IGRpc2FwcGVhci4gVGhp
cworLy8gbWVhbnMgbXVjaCBsZXNzIHJlc2Nhbm5pbmcgdGhhbiBhbnkgb2YgdGhlIG90aGVyIHBy
b3Bvc2Fscy4KKy8vCisvLyBJIHJlYWxseSB3YW50IHRvIGdvIHdpdGggdGhlIGFsbG9jYXRlLXdo
aXRlIGFwcHJvYWNoLCBidXQgSSBuZWVkIHRvIHRoaW5rIG1vcmUgZGVlcGx5IGFib3V0IGl0Cisv
LyBiZWZvcmUgSSBjb21taXQgdG8gaXQuCisKIGNsYXNzIE1hcmtlZEFsbG9jYXRvciB7CiAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApAQCAtNDYsOSArMTkxLDE2IEBA
IHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvcihIZWFwKiwgTWFya2VkU3BhY2UqLCBzaXpl
X3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIGxhc3RD
aGFuY2VUb0ZpbmFsaXplKCk7Ci0gICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgcHJlcGFyZUZv
ckFsbG9jYXRpb24oKTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKCk7CiAgICAgdm9pZCByZXN1
bWVBbGxvY2F0aW5nKCk7CisgICAgdm9pZCBiZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigp
OworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQgc25hcHNob3RVbnN3ZXB0Rm9yRWRl
bkNvbGxlY3Rpb24oKTsKKyAgICB2b2lkIHNuYXBzaG90VW5zd2VwdEZvckZ1bGxDb2xsZWN0aW9u
KCk7CisgICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc2hyaW5rKCk7CisgICAgdm9pZCBhc3Nl
cnROb1Vuc3dlcHQoKTsKICAgICBzaXplX3QgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2Nl
bGxTaXplOyB9CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0
aW9uOyB9CkBAIC03MiwzNSArMjI0LDg5IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQo
ZG91YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJsb2NrU2l6ZUZvckJ5
dGVzKHNpemVfdCk7CisgICAgCisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09S
Uyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5h
bWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShibG9j
ay0+aW5kZXgoKSk7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90
IGluZGV4LCBib29sIHZhbHVlKSB7IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1ZTsg
fSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShibG9jay0+aW5k
ZXgoKSwgdmFsdWUpOyB9IFwKKyAgICBib29sIGF0b21pY1NldEFuZENoZWNrSXMgIyMgY2FwaXRh
bEJpdE5hbWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IHJldHVybiBtXyAjIyBsb3dlckJp
dE5hbWUuYXRvbWljU2V0QW5kQ2hlY2soaW5kZXgsIHZhbHVlKTsgfSBcCisgICAgYm9vbCBhdG9t
aWNTZXRBbmRDaGVja0lzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrLCBib29sIHZhbHVlKSB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWUuYXRvbWljU2V0QW5k
Q2hlY2soYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQorICAgIEZPUl9FQUNIX01BUktFRF9BTExP
Q0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUykKKyN1bmRlZiBNQVJLRURf
QUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Cisg
ICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworI2RlZmlu
ZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXRO
YW1lKSBcCisgICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAgICAgRk9SX0VB
Q0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0spOwor
I3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUo
Y29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVmaW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0NB
TExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgZnVuYyhtXyAj
IyBsb3dlckJpdE5hbWUsICNjYXBpdGFsQml0TmFtZSk7CisgICAgICAgIEZPUl9FQUNIX01BUktF
RF9BTExPQ0FUT1JfQklUKE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKTsKKyN1bmRlZiBN
QVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAgICBNYXJrZWRBbGxv
Y2F0b3IqIG5leHRBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25leHRBbGxvY2F0b3I7IH0K
KyAgICAKKyAgICAvLyBNYXJrZWRTcGFjZSBjYWxscyB0aGlzIGR1cmluZyBpbml0LgorICAgIHZv
aWQgc2V0TmV4dEFsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcikgeyBtX25leHRB
bGxvY2F0b3IgPSBhbGxvY2F0b3I7IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBm
aW5kRW1wdHlCbG9ja1RvU3RlYWwoKTsKKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBm
aW5kQmxvY2tUb1N3ZWVwKCk7CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CisgICAgdm9pZCBkdW1wQml0cyhQcmludFN0cmVhbSYgPSBXVEY6OmRhdGFGaWxlKCkpOwog
ICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAKKyAgICBi
b29sIHNob3VsZFN0ZWFsRW1wdHlCbG9ja3NGcm9tT3RoZXJBbGxvY2F0b3JzKCkgY29uc3Q7Cisg
ICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2FzZSgpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIHRyeUFsbG9jYXRlU2xvd0Nhc2UoKTsKICAgICB2b2lk
KiBhbGxvY2F0ZVNsb3dDYXNlSW1wbChib29sIGNyYXNoT25GYWlsdXJlKTsKKyAgICB2b2lkIGRp
ZENvbnN1bWVGcmVlTGlzdCgpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3Rp
bmcoKTsKLSAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCgpOwogICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICB2b2lkKiB0cnlB
bGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2b2lkKiBhbGxvY2F0ZUluKE1h
cmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVj
dGlvbnNJZk5lZWRlZCgpOwotICAgIHZvaWQgcmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsK
ICAgICAKICAgICB2b2lkIHNldEZyZWVMaXN0KGNvbnN0IEZyZWVMaXN0Jik7CiAgICAgCi0gICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogZmlsdGVyTmV4dEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUq
KTsKLSAgICB2b2lkIHNldE5leHRCbG9ja1RvU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSopOwot
ICAgIAogICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7CisgICAgCisgICAgVmVjdG9yPE1hcmtlZEJs
b2NrOjpIYW5kbGUqPiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2Nr
SW5kaWNlczsKKyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04o
bG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMg
bG93ZXJCaXROYW1lOworICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1BUktFRF9B
TExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKQorI3VuZGVmIE1BUktFRF9BTExPQ0FUT1JfQklUX0RF
Q0xBUkFUSU9OCisgICAgCisgICAgLy8gQWZ0ZXIgeW91IGRvIHNvbWV0aGluZyB0byBhIGJsb2Nr
IGJhc2VkIG9uIG9uZSBvZiB0aGVzZSBjdXJzb3JzLCB5b3UgY2xlYXIgdGhlIGJpdCBpbiB0aGUK
KyAgICAvLyBjb3JyZXNwb25kaW5nIGJpdHZlY3RvciBhbmQgbGVhdmUgdGhlIGN1cnNvciB3aGVy
ZSBpdCB3YXMuCisgICAgc2l6ZV90IG1fYWxsb2NhdGlvbkN1cnNvciB7IDAgfTsgLy8gUG9pbnRz
IHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGFsbG9jYXRpb24uCisg
ICAgc2l6ZV90IG1fZW1wdHlDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9j
ayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBlbXB0eSBhbGxvY2F0aW9uIChhbGxvY2F0aW5nIGlu
IGVtcHR5IGJsb2NrcykuCisgICAgc2l6ZV90IG1fdW5zd2VwdEN1cnNvciB7IDAgfTsgLy8gUG9p
bnRzIHRvIHRoZSBuZXh0IGJsb2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGluY3JlbWVudGFs
IHN3ZWVwaW5nLgorICAgIAogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fY3VycmVudEJsb2Nr
OwogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fbGFzdEFjdGl2ZUJsb2NrOwotICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIG1fbmV4dEJsb2NrVG9Td2VlcDsKLSAgICBTZW50aW5lbExpbmtlZExp
c3Q8TWFya2VkQmxvY2s6OkhhbmRsZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TWFya2VkQmxvY2s6
OkhhbmRsZT4+IG1fYmxvY2tMaXN0OwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxNYXJrZWRCbG9j
azo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRCbG9jazo6SGFuZGxlPj4gbV9y
ZXRpcmVkQmxvY2tzOworCiAgICAgTG9jayBtX2xvY2s7CiAgICAgdW5zaWduZWQgbV9jZWxsU2l6
ZTsKICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKICAgICBIZWFwKiBtX2hl
YXA7CiAgICAgTWFya2VkU3BhY2UqIG1fbWFya2VkU3BhY2U7CisgICAgTWFya2VkQWxsb2NhdG9y
KiBtX25leHRBbGxvY2F0b3I7CiB9OwogCiBpbmxpbmUgcHRyZGlmZl90IE1hcmtlZEFsbG9jYXRv
cjo6b2Zmc2V0T2ZGcmVlTGlzdCgpCkBAIC0xNDksMjAgKzM1NSwxMiBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsCiAgICAgcmV0dXJuIGhlYWQ7CiB9CiAKLWlubGlu
ZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZygpCi17Ci0gICAgaWYgKCFt
X2xhc3RBY3RpdmVCbG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9mcmVlTGlzdCA9IG1f
bGFzdEFjdGl2ZUJsb2NrLT5yZXN1bWVBbGxvY2F0aW5nKCk7Ci0gICAgbV9jdXJyZW50QmxvY2sg
PSBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBtX2xhc3RBY3RpdmVCbG9jayA9IDA7Ci19Ci0KIHRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmZv
ckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIG1fYmxvY2tMaXN0LmZv
ckVhY2goZnVuY3Rvcik7Ci0gICAgbV9yZXRpcmVkQmxvY2tzLmZvckVhY2goZnVuY3Rvcik7Cisg
ICAgbV9saXZlLmZvckVhY2hTZXRCaXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7Cisg
ICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7CisgICAgICAgIH0pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9vbCBjb21wdXRlQmFsYW5jZSA9IGZh
bHNlOwogc3RhdGljIHNpemVfdCBiYWxhbmNlOwogCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJr
ZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
LCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMp
CitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAp
CiB7CiAgICAgaWYgKGNvbXB1dGVCYWxhbmNlKSB7CiAgICAgICAgIGJhbGFuY2UrKzsKQEAgLTQ4
LDI2ICs0OSwxNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQogICAg
ICAgICBzY3JpYmJsZShibG9ja1NwYWNlLCBibG9ja1NpemUpOwotICAgIHJldHVybiBuZXcgSGFu
ZGxlKGhlYXAsIGFsbG9jYXRvciwgY2VsbFNpemUsIGF0dHJpYnV0ZXMsIGJsb2NrU3BhY2UpOwor
ICAgIHJldHVybiBuZXcgSGFuZGxlKGhlYXAsIGJsb2NrU3BhY2UpOwogfQogCi1NYXJrZWRCbG9j
azo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
dm9pZCogYmxvY2tTcGFjZSkKLSAgICA6IG1fYXRvbXNQZXJDZWxsKChjZWxsU2l6ZSArIGF0b21T
aXplIC0gMSkgLyBhdG9tU2l6ZSkKLSAgICAsIG1fZW5kQXRvbShhdG9tc1BlckJsb2NrIC0gbV9h
dG9tc1BlckNlbGwgKyAxKQotICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgLCBt
X3N0YXRlKE5ldykgLy8gQWxsIGNlbGxzIHN0YXJ0IG91dCB1bm1hcmtlZC4KLSAgICAsIG1fYWxs
b2NhdG9yKGFsbG9jYXRvcikKLSAgICAsIG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+dm0o
KSwgQ2VsbENvbnRhaW5lcigpKQorTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhl
YXAsIHZvaWQqIGJsb2NrU3BhY2UpCisgICAgOiBtX3dlYWtTZXQoaGVhcC52bSgpLCBDZWxsQ29u
dGFpbmVyKCkpCiB7CiAgICAgbV9ibG9jayA9IG5ldyAoTm90TnVsbCwgYmxvY2tTcGFjZSkgTWFy
a2VkQmxvY2soKmhlYXAudm0oKSwgKnRoaXMpOwogICAgIAogICAgIG1fd2Vha1NldC5zZXRDb250
YWluZXIoKm1fYmxvY2spOwogICAgIAogICAgIGhlYXAuZGlkQWxsb2NhdGVCbG9jayhibG9ja1Np
emUpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgQVNT
RVJUKGFsbG9jYXRvcik7Ci0gICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFwQ2Vs
bDo6SlNDZWxsKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rp
b24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CiB9CiAKIE1hcmtlZEJsb2NrOjpIYW5kbGU6
On5IYW5kbGUoKQpAQCAtNzgsNDUgKzcwLDM1IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5k
bGUoKQogICAgICAgICBpZiAoIShiYWxhbmNlICUgMTApKQogICAgICAgICAgICAgZGF0YUxvZygi
TWFya2VkQmxvY2sgQmFsYW5jZTogIiwgYmFsYW5jZSwgIlxuIik7CiAgICAgfQorICAgIHJlbW92
ZUZyb21BbGxvY2F0b3IoKTsKICAgICBtX2Jsb2NrLT5+TWFya2VkQmxvY2soKTsKICAgICBmYXN0
QWxpZ25lZEZyZWUobV9ibG9jayk7CiAgICAgaGVhcC5kaWRGcmVlQmxvY2soYmxvY2tTaXplKTsK
IH0KIAogTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKFZNJiB2bSwgSGFuZGxlJiBoYW5kbGUpCi0g
ICAgOiBtX25lZWRzRGVzdHJ1Y3Rpb24oaGFuZGxlLm5lZWRzRGVzdHJ1Y3Rpb24oKSkKLSAgICAs
IG1fdmVyc2lvbih2bS5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKQorICAgIDogbV92ZXJz
aW9uKE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbikKICAgICAsIG1faGFuZGxlKGhhbmRsZSkKICAg
ICAsIG1fdm0oJnZtKQogewotICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFj
ZTo6YmxvY2tQYXlsb2FkIC8gaGFuZGxlLmNlbGxTaXplKCk7Ci0gICAgZG91YmxlIG1hcmtDb3Vu
dEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxzUGVy
QmxvY2spOwotICAgIAotICAgIC8vIFRoZSBtYXJrIGNvdW50IGJpYXMgc2hvdWxkIGJlIGNvbWZv
cnRhYmx5IHdpdGhpbiB0aGlzIHJhbmdlLgotICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtDb3VudEJp
YXMgPiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MTZfdD46Om1p
bigpKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA8IDApOwotICAgIAotICAg
IG1fbWFya0NvdW50QmlhcyA9IHN0YXRpY19jYXN0PGludDE2X3Q+KG1hcmtDb3VudEJpYXMpOwot
ICAgIAotICAgIG1fYmlhc2VkTWFya0NvdW50ID0gbV9tYXJrQ291bnRCaWFzOyAvLyBUaGlzIG1l
YW5zIHdlIGhhdmVuJ3QgbWFya2VkIGFueXRoaW5nIHlldC4KIH0KIAotdGVtcGxhdGU8TWFya2Vk
QmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBN
b2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZT4KK3RlbXBsYXRlPE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OkZsaXBNb2RlIGZsaXBNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3BlY2lhbGl6ZWRTd2VlcCgpCiB7Ci0gICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIEFTU0VSVChibG9ja1N0YXRlID09IE5ldyB8fCBibG9j
a1N0YXRlID09IE1hcmtlZCk7Ci0gICAgQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSkpOworICAgIFJFTEVB
U0VfQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYg
c3dlZXBNb2RlID09IFN3ZWVwT25seSkpOwogICAgIAotICAgIGFzc2VydEZsaXBwZWQoKTsKKyAg
ICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKICAgICBNYXJr
ZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOwogICAgIAotICAgIGJvb2wgaXNOZXdCbG9j
ayA9IGJsb2NrU3RhdGUgPT0gTmV3OwotICAgIGJvb2wgaXNFbXB0eUJsb2NrID0gIWJsb2NrLmhh
c0FueU1hcmtlZCgpCi0gICAgICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2
ZU5ld2x5QWxsb2NhdGVkCi0gICAgICAgICYmIGRlc3RydWN0aW9uTW9kZSA9PSBEb2VzTm90TmVl
ZERlc3RydWN0aW9uOwotICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2NhdG9yKCkgJiYgKGlz
TmV3QmxvY2sgfHwgaXNFbXB0eUJsb2NrKSkgewotICAgICAgICBBU1NFUlQoYmxvY2subV9tYXJr
cy5pc0VtcHR5KCkpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVy
KHRoaXMpLCAiOiBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVxuIik7Cisg
ICAgCisgICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQorICAgICAgICAmJiBlbXB0
eU1vZGUgPT0gSXNFbXB0eQorICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05v
dEhhdmVOZXdseUFsbG9jYXRlZCkgeworICAgICAgICBBU1NFUlQoZmxpcE1vZGUgPT0gTmVlZHNG
bGlwKTsKICAgICAgICAgCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZMYXN0Q2VsbCA9IHN0YXRpY19j
YXN0PGNoYXIqPihjZWxsQWxpZ24oYmxvY2suYXRvbXMoKSArIG1fZW5kQXRvbSAtIDEpKTsKICAg
ICAgICAgY2hhciogcGF5bG9hZEVuZCA9IHN0YXJ0T2ZMYXN0Q2VsbCArIGNlbGxTaXplKCk7CkBA
IC0xMjQsNyArMTA2LDEwIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxp
emUKICAgICAgICAgY2hhciogcGF5bG9hZEJlZ2luID0gYml0d2lzZV9jYXN0PGNoYXIqPihibG9j
ay5hdG9tcygpICsgZmlyc3RBdG9tKCkpOwogICAgICAgICBpZiAoc2NyaWJibGVNb2RlID09IFNj
cmliYmxlKQogICAgICAgICAgICAgc2NyaWJibGUocGF5bG9hZEJlZ2luLCBwYXlsb2FkRW5kIC0g
cGF5bG9hZEJlZ2luKTsKLSAgICAgICAgbV9zdGF0ZSA9ICgoc3dlZXBNb2RlID09IFN3ZWVwVG9G
cmVlTGlzdCkgPyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICAgICAgaWYgKHN3ZWVwTW9kZSA9
PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgdHJ1ZSk7
CiAgICAgICAgIEZyZWVMaXN0IHJlc3VsdCA9IEZyZWVMaXN0OjpidW1wKHBheWxvYWRFbmQsIHBh
eWxvYWRFbmQgLSBwYXlsb2FkQmVnaW4pOwogICAgICAgICBpZiAoZmFsc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJRdWlja2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIodGhpcyksICIgd2l0
aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0
ZXMsICI6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xMzYsMTUgKzEyMSwxOCBAQCBGcmVlTGlzdCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgLy8gb3JkZXIgb2YgdGhlIGZyZWUg
bGlzdC4KICAgICBGcmVlQ2VsbCogaGVhZCA9IDA7CiAgICAgc2l6ZV90IGNvdW50ID0gMDsKKyAg
ICBib29sIGlzRW1wdHkgPSB0cnVlOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsg
aSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBpZiAoYmxvY2tT
dGF0ZSA9PSBNYXJrZWQKLSAgICAgICAgICAgICYmIChibG9jay5tX21hcmtzLmdldChpKQotICAg
ICAgICAgICAgICAgIHx8IChuZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQg
JiYgbV9uZXdseUFsbG9jYXRlZC0+Z2V0KGkpKSkpCisgICAgICAgIGlmIChlbXB0eU1vZGUgPT0g
Tm90RW1wdHkKKyAgICAgICAgICAgICYmICgoZmxpcE1vZGUgPT0gRG9lc05vdE5lZWRGbGlwICYm
IGJsb2NrLm1fbWFya3MuZ2V0KGkpKQorICAgICAgICAgICAgICAgIHx8IChuZXdseUFsbG9jYXRl
ZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYgbV9uZXdseUFsbG9jYXRlZC0+Z2V0KGkpKSkp
IHsKKyAgICAgICAgICAgIGlzRW1wdHkgPSBmYWxzZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwot
CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYmxvY2suYXRvbXMoKVtpXSk7CiAKLSAgICAgICAgaWYg
KGRlc3RydWN0aW9uTW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGJsb2NrU3RhdGUgIT0gTmV3
KQorICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVzdHJ1Y3Rpb24gJiYgZW1w
dHlNb2RlID09IE5vdEVtcHR5KQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2Vs
bCktPmNhbGxEZXN0cnVjdG9yKCp2bSgpKTsKIAogICAgICAgICBpZiAoc3dlZXBNb2RlID09IFN3
ZWVwVG9GcmVlTGlzdCkgewpAQCAtMTYzLDcgKzE1MSwxMCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRy
OwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6Omxpc3QoaGVhZCwgY291bnQgKiBj
ZWxsU2l6ZSgpKTsKLSAgICBtX3N0YXRlID0gKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3Qg
PyBGcmVlTGlzdGVkIDogTWFya2VkKTsKKyAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVl
TGlzdCkKKyAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgZWxzZSBpZiAoaXNFbXB0eSkK
KyAgICAgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgdHJ1ZSk7CiAgICAgaWYgKGZh
bHNlKQogICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcigm
YmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMg
IiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwogICAgIHJldHVybiByZXN1bHQ7
CkBAIC0xNzEsMTUgKzE2MiwyMCBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVj
aWFsaXplCiAKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKFN3ZWVwTW9kZSBz
d2VlcE1vZGUpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgbV9hbGxvY2F0b3ItPnNl
dElzVW5zd2VwdCh0aGlzLCBmYWxzZSk7CiAgICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVf
VFJBTlNJVElPTih0aGlzKTsKLQogICAgIG1fd2Vha1NldC5zd2VlcCgpOwogCiAgICAgaWYgKHN3
ZWVwTW9kZSA9PSBTd2VlcE9ubHkgJiYgbV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24pCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogCisgICAgaWYg
KFVOTElLRUxZKG1faXNGcmVlTGlzdGVkKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChzd2Vl
cE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7Cisg
ICAgfQorICAgIAorICAgIEFTU0VSVCghbV9hbGxvY2F0b3ItPmlzQWxsb2NhdGVkKHRoaXMpKTsK
KyAgICAKICAgICBpZiAobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rp
b24pCiAgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZTxOZWVkc0Rl
c3RydWN0aW9uPihzd2VlcE1vZGUpOwogICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFNjcmli
YmxlTW9kZTxEb2VzTm90TmVlZERlc3RydWN0aW9uPihzd2VlcE1vZGUpOwpAQCAtMTg5LDQ3ICsx
ODUsNTkgQEAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZQogRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGUoU3dl
ZXBNb2RlIHN3ZWVwTW9kZSkKIHsKICAgICBpZiAoc2NyaWJibGVGcmVlQ2VsbHMoKSkKLSAgICAg
ICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rpb25N
b2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsKLSAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RT
dGF0ZUFuZFN3ZWVwTW9kZTxkZXN0cnVjdGlvbk1vZGUsIERvbnRTY3JpYmJsZT4oc3dlZXBNb2Rl
KTsKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlPGRlc3RydWN0aW9u
TW9kZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0
RW1wdHlNb2RlPGRlc3RydWN0aW9uTW9kZSwgRG9udFNjcmliYmxlPihzd2VlcE1vZGUpOwogfQog
CiB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgotRnJlZUxpc3QgTWFya2VkQmxvY2s6
OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZShTd2VlcE1vZGUgc3dl
ZXBNb2RlKQorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RF
bXB0eU1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsK
LSAgICBjYXNlIE5ldzoKLSAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxp
c3QpOwotICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxOZXcsIFN3ZWVwVG9GcmVlTGlz
dCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0
ZWQ+KCk7Ci0gICAgY2FzZSBGcmVlTGlzdGVkOgotICAgICAgICAvLyBIYXBwZW5zIHdoZW4gYSBi
bG9jayB0cmFuc2l0aW9ucyB0byBmdWxseSBhbGxvY2F0ZWQuCi0gICAgICAgIEFTU0VSVChzd2Vl
cE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7Ci0g
ICAgY2FzZSBBbGxvY2F0ZWQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAgIGNhc2UgTWFya2VkOgotICAgICAgICBp
ZiAobV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAgICAgcmV0dXJuIHN3ZWVwTW9kZSA9PSBT
d2VlcFRvRnJlZUxpc3QKLSAgICAgICAgICAgICAgICA/IHNwZWNpYWxpemVkU3dlZXA8TWFya2Vk
LCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXds
eUFsbG9jYXRlZD4oKQotICAgICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQs
IFN3ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2Nh
dGVkPigpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHN3ZWVwTW9kZSA9
PSBTd2VlcFRvRnJlZUxpc3QKLSAgICAgICAgICAgICAgICA/IHNwZWNpYWxpemVkU3dlZXA8TWFy
a2VkLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3
ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9l
c05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBGcmVlTGlzdCgpOworICAgIC8vIEl0
J3Mgbm90IG9idmlvdXMsIGJ1dCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBrbm93IGlmIHRoZSBi
bG9jayBpcyBlbXB0eS4gSXQncyB0aGUgb25seQorICAgIC8vIGJpdCB0aGF0IGNhcHR1cmVzIHRo
ZXNlIGNhdmVhdHM6CisgICAgLy8gLSBJdCdzIHRydWUgd2hlbiB0aGUgYmxvY2sgaXMgZnJlc2hs
eSBhbGxvY2F0ZWQuCisgICAgLy8gLSBJdCdzIHRydWUgaWYgdGhlIGJsb2NrIGhhZCBiZWVuIHN3
ZXB0IGluIHRoZSBwYXN0LCBhbGwgZGVzdHJ1Y3RvcnMgd2VyZSBjYWxsZWQsIGFuZCB0aGF0Cisg
ICAgLy8gICBzd2VlcCBwcm92ZWQgdGhhdCB0aGUgYmxvY2sgaXMgZW1wdHkuCisgICAgLy8gLSBJ
dCdzIGZhbHNlIGlmIHRoZXJlIGFyZSBhbnkgZGVzdHJ1Y3RvcnMgdGhhdCBuZWVkIHRvIGJlIGNh
bGxlZCwgZXZlbiBpZiB0aGUgYmxvY2sgaGFzIG5vCisgICAgLy8gICBsaXZlIG9iamVjdHMuCisg
ICAgaWYgKG1fYWxsb2NhdG9yLT5pc0VtcHR5KHRoaXMpKQorICAgICAgICByZXR1cm4gc3dlZXBI
ZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZDxJc0VtcHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNj
cmliYmxlTW9kZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RIYXNO
ZXdseUFsbG9jYXRlZDxOb3RFbXB0eSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGU+KHN3
ZWVwTW9kZSk7Cit9CisKK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBl
bXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+CitGcmVlTGlzdCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSBzd2Vl
cE1vZGUpCit7CisgICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQpCisgICAgICAgIHJldHVybiBzd2Vl
cEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBI
ZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxl
TW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKK30KKwordGVtcGxh
dGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25N
b2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNj
cmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5
QWxsb2NhdGVkTW9kZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVy
U2VsZWN0U3dlZXBNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCit7CisgICAgaWYgKHN3ZWVwTW9k
ZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEZs
aXBNb2RlPGVtcHR5TW9kZSwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmli
YmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlPigpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNl
bGVjdEZsaXBNb2RlPGVtcHR5TW9kZSwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmli
YmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlPigpOworfQorCit0ZW1wbGF0ZTxNYXJrZWRCbG9j
azo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2Vl
cE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZSgpCit7CisgICAgaWYg
KG5lZWRzRmxpcCgpKQorICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxlbXB0eU1vZGUs
IHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVk
TW9kZSwgTmVlZHNGbGlwPigpOworICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPGVtcHR5TW9k
ZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0
ZWRNb2RlLCBEb2VzTm90TmVlZEZsaXA+KCk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKCkKIHsKLSAgICBmbGlwSWZOZWNlc3Nhcnko
KTsKLSAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAg
IAotICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0gICAgbV9zdGF0
ZSA9IE1hcmtlZDsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lzRnJlZUxpc3RlZCk7CisgICAgbV9p
c0ZyZWVMaXN0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzZXRJ
c0ZyZWVMaXN0ZWQoKQoreworICAgIG1fYWxsb2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIGZhbHNl
KTsKKyAgICBtX2lzRnJlZUxpc3RlZCA9IHRydWU7CiB9CiAKIGNsYXNzIFNldE5ld2x5QWxsb2Nh
dGVkRnVuY3RvciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewpAQCAtMjUyLDI2
ICsyNjAsMTcgQEAgcHJpdmF0ZToKIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxs
b2NhdGluZyhjb25zdCBGcmVlTGlzdCYgZnJlZUxpc3QpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5
KCk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKKyAgICBpZiAo
ZmFsc2UpCisgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2VkQmxvY2s6
OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmchXG4iKTsKKyAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5p
c0FsbG9jYXRlZCh0aGlzKSk7CiAKLSAgICBpZiAobV9zdGF0ZSA9PSBNYXJrZWQpIHsKLSAgICAg
ICAgLy8gSWYgdGhlIGJsb2NrIGlzIGluIHRoZSBNYXJrZWQgc3RhdGUgdGhlbiB3ZSBrbm93IHRo
YXQgb25lIG9mIHRoZXNlCi0gICAgICAgIC8vIGNvbmRpdGlvbnMgaG9sZHM6Ci0gICAgICAgIC8v
Ci0gICAgICAgIC8vIC0gSXQgd2FzIG5vdCB1c2VkIGZvciBhbGxvY2F0aW9uIGR1cmluZyB0aGUg
cHJldmlvdXMgYWxsb2NhdGlvbiBjeWNsZS4KLSAgICAgICAgLy8gICBJdCBtYXkgaGF2ZSBkZWFk
IG9iamVjdHMsIGFuZCB3ZSBvbmx5IGtub3cgdGhlbSB0byBiZSBkZWFkIGJ5IHRoZQotICAgICAg
ICAvLyAgIGZhY3QgdGhhdCB0aGVpciBtYXJrIGJpdHMgYXJlIHVuc2V0LgotICAgICAgICAvLwot
ICAgICAgICAvLyAtIFNvbWVvbmUgaGFkIGFscmVhZHkgZG9uZSBzdG9wQWxsb2NhdGluZygpLCBm
b3IgZXhhbXBsZSBiZWNhdXNlIG9mCi0gICAgICAgIC8vICAgaGVhcCBpdGVyYXRpb24sIGFuZCB0
aGV5IGhhZCBhbHJlYWR5IAotICAgICAgICAvLyBIZW5jZSBpZiB0aGUgYmxvY2sgaXMgTWFya2Vk
IHdlIG5lZWQgdG8gbGVhdmUgaXQgTWFya2VkLgorICAgIGlmICghaXNGcmVlTGlzdGVkKCkpIHsK
KyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIGVpdGhlciBkaWRuJ3QgdXNlIHRoaXMgYmxv
Y2sgYXQgYWxsIGZvciBhbGxvY2F0aW9uIHNpbmNlIGxhc3QgR0MsCisgICAgICAgIC8vIG9yIHNv
bWVvbmUgaGFkIGFscmVhZHkgZG9uZSBzdG9wQWxsb2NhdGluZygpIGJlZm9yZS4KICAgICAgICAg
QVNTRVJUKGZyZWVMaXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAgICAKICAg
ICAvLyBSb2xsIGJhY2sgdG8gYSBjb2hlcmVudCBzdGF0ZSBmb3IgSGVhcCBpbnRyb3NwZWN0aW9u
LiBDZWxscyBuZXdseQogICAgIC8vIGFsbG9jYXRlZCBmcm9tIG91ciBmcmVlIGxpc3QgYXJlIG5v
dCBjdXJyZW50bHkgbWFya2VkLCBzbyB3ZSBuZWVkIGFub3RoZXIKICAgICAvLyB3YXkgdG8gdGVs
bCB3aGF0J3MgbGl2ZSB2cyBkZWFkLiAKQEAgLTI5MCwxMSArMjg5LDEyIEBAIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAgICAgICAgIGNsZWFyTmV3bHlBbGxv
Y2F0ZWQoY2VsbCk7CiAgICAgICAgIH0pOwogICAgIAotICAgIG1fc3RhdGUgPSBNYXJrZWQ7Cisg
ICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7CisgICAgYWxsb2NhdG9yKCktPnNldElzQWxsb2Nh
dGVkKHRoaXMsIGZhbHNlKTsKICAgICBtX2Jsb2NrLT5jbGVhck1hcmtzKCk7CiAgICAgbV93ZWFr
U2V0Lmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CiAKQEAgLTMwNCwxNCArMzA0LDExIEBAIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmkKIAogRnJlZUxpc3QgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6cmVzdW1lQWxsb2NhdGluZygpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7
Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLQotICAgIEFTU0VS
VChtX3N0YXRlID09IE1hcmtlZCk7CisgICAgQVNTRVJUKCFhbGxvY2F0b3IoKS0+aXNBbGxvY2F0
ZWQodGhpcykpOworICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwogCiAgICAgaWYgKCFtX25l
d2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgIC8vIFdlIGRpZG4ndCBoYXZlIHRvIGNyZWF0ZSBhICJu
ZXdseSBhbGxvY2F0ZWQiIGJpdG1hcC4gVGhhdCBtZWFucyB3ZSB3ZXJlIGFscmVhZHkgTWFya2Vk
Ci0gICAgICAgIC8vIHdoZW4gd2UgbGFzdCBzdG9wcGVkIGFsbG9jYXRpb24sIHNvIHJldHVybiBh
biBlbXB0eSBmcmVlIGxpc3QgYW5kIHN0YXkgaW4gdGhlIE1hcmtlZCBzdGF0ZS4KKyAgICAgICAg
Ly8gVGhpcyBtZWFucyB3ZSBoYWQgYWxyZWFkeSBleGhhdXN0ZWQgdGhlIGJsb2NrIHdoZW4gd2Ug
c3RvcHBlZCBhbGxvY2F0aW9uLgogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKICAgICB9CiAK
QEAgLTM0NSw0MCArMzQyLDI4IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaEZy
ZWVDZWwKICAgICB9CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeSgpCi17
Ci0gICAgZmxpcElmTmVjZXNzYXJ5KHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkp
OwotfQotCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSgpCi17Ci0g
ICAgYmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6Zmxp
cElmTmVjZXNzYXJ5U2xvdygpCi17Ci0gICAgQVNTRVJUKG5lZWRzRmxpcCgpKTsKLSAgICBBU1NF
UlQoIXZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7Ci0gICAgY2xlYXJNYXJr
cygpOwotfQotCi12b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5n
U2xvdygpCit2b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24gaGVh
cFZlcnNpb24pCiB7CiAgICAgQVNTRVJUKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtp
bmcoKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKLSAgICBpZiAobmVlZHNGbGlw
KCkpCi0gICAgICAgIGNsZWFyTWFya3MoKTsKKyAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9u
KSkgeworICAgICAgICBjbGVhck1hcmtzKGhlYXBWZXJzaW9uKTsKKyAgICAgICAgLy8gVGhpcyBt
ZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3QgaW4gdGhpcyBibG9j
ay4KKyAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJr
aW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICB9CiB9CiAKIHZvaWQgTWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MoKQogeworICAgIGNsZWFyTWFya3Modm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLnZlcnNpb24oKSk7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoSGVhcFZl
cnNpb24gaGVhcFZlcnNpb24pCit7CiAgICAgbV9tYXJrcy5jbGVhckFsbCgpOwogICAgIGNsZWFy
SGFzQW55TWFya2VkKCk7Ci0gICAgLy8gVGhpcyB3aWxsIGJlY29tZSB0cnVlIGF0IHRoZSBlbmQg
b2YgdGhlIG1hcmsgcGhhc2UuIFdlIHNldCBpdCBub3cgdG8KLSAgICAvLyBhdm9pZCBhbiBleHRy
YSBwYXNzIHRvIGRvIHNvIGxhdGVyLgotICAgIGhhbmRsZSgpLm1fc3RhdGUgPSBNYXJrZWQ7CiAg
ICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBtX3ZlcnNpb24gPSB2bSgpLT5oZWFwLm9i
amVjdFNwYWNlKCkudmVyc2lvbigpOworICAgIG1fdmVyc2lvbiA9IGhlYXBWZXJzaW9uOwogfQog
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMzk4LDMxICszODMsMzggQEAgYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpuZWVkc0ZsaXAoKQogICAgIHJldHVybiBtX2Jsb2NrLT5uZWVkc0ZsaXAo
KTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxsUmVtb3ZlQmxvY2soKQorYm9v
bCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkKIHsKLSAgICBmbGlwSWZOZWNl
c3NhcnkoKTsKKyAgICByZXR1cm4gaXNNYXJrZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKSwgcCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZy
ZWVMaXN0KCkKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2Nh
dGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAg
IEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0gICAgCi0gICAgQVNTRVJU
KG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7CisgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKK30KKworYm9v
bCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBj
ZWxsKQoreworICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQodm0oKS0+aGVhcC5v
YmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7Cit9CiAKLSAgICBtX3N0YXRlID0gQWxsb2Nh
dGVkOwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QoKQorewor
ICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QhXG4iKTsKKyAgICBBU1NFUlQoaXNG
cmVlTGlzdGVkKCkpOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7CisgICAgYWxsb2NhdG9y
KCktPnNldElzQWxsb2NhdGVkKHRoaXMsIHRydWUpOwogfQogCiBzaXplX3QgTWFya2VkQmxvY2s6
Om1hcmtDb3VudCgpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fbWFy
a3MuY291bnQoKTsKKyAgICByZXR1cm4gbmVlZHNGbGlwKCkgPyAwIDogbV9tYXJrcy5jb3VudCgp
OwogfQogCiBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkoKQogewotICAgIGZsaXBJ
Zk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZCAmJiAhYmxvY2soKS5o
YXNBbnlNYXJrZWQoKSAmJiBtX3dlYWtTZXQuaXNFbXB0eSgpICYmICghbV9uZXdseUFsbG9jYXRl
ZCB8fCBtX25ld2x5QWxsb2NhdGVkLT5pc0VtcHR5KCkpOworICAgIHJldHVybiBtX2FsbG9jYXRv
ci0+aXNFbXB0eSh0aGlzKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJIYXNBbnlNYXJr
ZWQoKQpAQCAtNDMyLDI5ICs0MjQsNzggQEAgdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJIYXNBbnlN
YXJrZWQoKQogCiB2b2lkIE1hcmtlZEJsb2NrOjpub3RlTWFya2VkU2xvdygpCiB7Ci0gICAgaGFu
ZGxlKCkubV9hbGxvY2F0b3ItPnJldGlyZSgmaGFuZGxlKCkpOworICAgIGhhbmRsZSgpLmFsbG9j
YXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ1JldGlyZWQoJmhhbmRsZSgpLCB0cnVl
KTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZW1vdmVGcm9tQWxsb2NhdG9yKCkK
K3sKKyAgICBpZiAoIW1fYWxsb2NhdG9yKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9h
bGxvY2F0b3ItPnJlbW92ZUJsb2NrKHRoaXMpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3Qg
aW5kZXgpCit7CisgICAgQVNTRVJUKG1faW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKCFtX2FsbG9jYXRvcik7CisgICAgCisgICAgbV9pbmRl
eCA9IGluZGV4OworICAgIG1fYWxsb2NhdG9yID0gYWxsb2NhdG9yOworICAgIAorICAgIHNpemVf
dCBjZWxsU2l6ZSA9IGFsbG9jYXRvci0+Y2VsbFNpemUoKTsKKyAgICBtX2F0b21zUGVyQ2VsbCA9
IChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZTsKKyAgICBtX2VuZEF0b20gPSBh
dG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxOworICAgIAorICAgIG1fYXR0cmlidXRl
cyA9IGFsbG9jYXRvci0+YXR0cmlidXRlcygpOworCisgICAgaWYgKG1fYXR0cmlidXRlcy5jZWxs
S2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJp
YnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CisgICAgCisgICAg
YmxvY2soKS5tX25lZWRzRGVzdHJ1Y3Rpb24gPSBuZWVkc0Rlc3RydWN0aW9uKCk7CisgICAgCisg
ICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBj
ZWxsU2l6ZTsKKyAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFya2Vk
QmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jayk7CisgICAgCisgICAgLy8gVGhlIG1h
cmsgY291bnQgYmlhcyBzaG91bGQgYmUgY29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2UuCisg
ICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQxNl90Pjo6bWluKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCht
YXJrQ291bnRCaWFzIDwgMCk7CisgICAgCisgICAgLy8gVGhpcyBtZWFucyB3ZSBoYXZlbid0IG1h
cmtlZCBhbnl0aGluZyB5ZXQuCisgICAgYmxvY2soKS5tX2JpYXNlZE1hcmtDb3VudCA9IGJsb2Nr
KCkubV9tYXJrQ291bnRCaWFzID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFya0NvdW50Qmlhcyk7
Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigp
Cit7CisgICAgQVNTRVJUKG1faW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKSk7CisgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2luZGV4ID0gc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKyAgICBtX2FsbG9jYXRvciA9IG51bGxw
dHI7Cit9CisKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxs
KiBjZWxsKQoreworICAgIHJldHVybiBpc0xpdmUodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKSwgY2VsbCk7Cit9CisKK2Jvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2Vs
bChjb25zdCB2b2lkKiBwKQoreworICAgIHJldHVybiBpc0xpdmVDZWxsKHZtKCktPmhlYXAub2Jq
ZWN0U3BhY2UoKS52ZXJzaW9uKCksIHApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFt
ZXNwYWNlIFdURiB7CiAKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRlKQor
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6U3dlZXBNb2RlIG1vZGUpCiB7Ci0gICAgc3dpdGNoIChibG9ja1N0YXRlKSB7Ci0gICAg
Y2FzZSBNYXJrZWRCbG9jazo6TmV3OgotICAgICAgICBvdXQucHJpbnQoIk5ldyIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6RnJlZUxpc3RlZDoKLSAgICAgICAgb3V0
LnByaW50KCJGcmVlTGlzdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJs
b2NrOjpBbGxvY2F0ZWQ6Ci0gICAgICAgIG91dC5wcmludCgiQWxsb2NhdGVkIik7CisgICAgc3dp
dGNoIChtb2RlKSB7CisgICAgY2FzZSBKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwVG9G
cmVlTGlzdDoKKyAgICAgICAgb3V0LnByaW50KCJTd2VlcFRvRnJlZUxpc3QiKTsKICAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgTWFya2VkQmxvY2s6Ok1hcmtlZDoKLSAgICAgICAgb3V0LnByaW50
KCJNYXJrZWQiKTsKKyAgICBjYXNlIEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBPbmx5
OgorICAgICAgICBvdXQucHJpbnQoIlN3ZWVwT25seSIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIw
ICs0NCw2IEBAIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKIHR5cGVkZWYgdWludHB0cl90IEJpdHM7
CiB0eXBlZGVmIHVpbnQzMl90IEhlYXBWZXJzaW9uOwogCi0vLyBTZXQgdG8gbG9nIHN0YXRlIHRy
YW5zaXRpb25zIG9mIGJsb2Nrcy4KLSNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJ
VElPTlMgMAotCi0jaWYgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTlMKLSNkZWZpbmUg
SEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTihoYW5kbGUpIGRvIHsgICAgICAgICAgICBc
Ci0gICAgICAgIGRhdGFMb2dGKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgIiVzOiVkICVzOiBibG9jayAlcyA9ICVwLCAlZFxuIiwg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgX19G
VU5DVElPTl9fLCAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAjaGFuZGxlLCAmKGhh
bmRsZSktPmJsb2NrKCksIChoYW5kbGUpLT5tX3N0YXRlKTsgICAgXAotICAgIH0gd2hpbGUgKGZh
bHNlKQotI2Vsc2UKLSNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTihoYW5k
bGUpICgodm9pZCkwKQotI2VuZGlmCi0KIC8vIEEgbWFya2VkIGJsb2NrIGlzIGEgcGFnZS1hbGln
bmVkIGNvbnRhaW5lciBmb3IgaGVhcC1hbGxvY2F0ZWQgb2JqZWN0cy4KIC8vIE9iamVjdHMgYXJl
IGFsbG9jYXRlZCB3aXRoaW4gY2VsbHMgb2YgdGhlIG1hcmtlZCBibG9jay4gRm9yIGEgZ2l2ZW4K
IC8vIG1hcmtlZCBibG9jaywgYWxsIGNlbGxzIGhhdmUgdGhlIHNhbWUgc2l6ZS4gT2JqZWN0cyBz
bWFsbGVyIHRoYW4gdGhlCkBAIC03Niw4ICs2Miw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIEhhbmRsZTsKIHB1YmxpYzoKLSAgICBlbnVtIEJsb2NrU3RhdGUgOiB1aW50
OF90IHsgTmV3LCBGcmVlTGlzdGVkLCBBbGxvY2F0ZWQsIE1hcmtlZCB9OwotICAgICAgICAKICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21TaXplID0gMTY7IC8vIGJ5dGVzCiAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBibG9ja1NpemUgPSAxNiAqIEtCOwogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgYmxvY2tNYXNrID0gfihibG9ja1NpemUgLSAxKTsgLy8gYmxvY2tTaXplIG11c3QgYmUgYSBw
b3dlciBvZiB0d28uCkBAIC04NiwxMiArNzAsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljX2Fz
c2VydCghKE1hcmtlZEJsb2NrOjphdG9tU2l6ZSAmIChNYXJrZWRCbG9jazo6YXRvbVNpemUgLSAx
KSksICJNYXJrZWRCbG9jazo6YXRvbVNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4iKTsKICAg
ICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSAmIChNYXJrZWRCbG9jazo6
YmxvY2tTaXplIC0gMSkpLCAiTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93ZXIg
b2YgdHdvLiIpOwotCisgICAgCiAgICAgc3RydWN0IFZvaWRGdW5jdG9yIHsKICAgICAgICAgdHlw
ZWRlZiB2b2lkIFJldHVyblR5cGU7CiAgICAgICAgIHZvaWQgcmV0dXJuVmFsdWUoKSB7IH0KICAg
ICB9OwotCisgICAgCiAgICAgY2xhc3MgQ291bnRGdW5jdG9yIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgc2l6ZV90IFJldHVyblR5cGU7CkBAIC0xMDYsMTAgKzkwLDkgQEAgcHVibGlj
OgogICAgICAgICBtdXRhYmxlIFJldHVyblR5cGUgbV9jb3VudDsKICAgICB9OwogICAgICAgICAK
LSAgICBjbGFzcyBIYW5kbGUgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8SGFuZGxlPiB7
CisgICAgY2xhc3MgSGFuZGxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxl
KTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxIYW5kbGU+OwogICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAg
ICAgICAgIGZyaWVuZCBzdHJ1Y3QgVmVyaWZ5TWFya2VkOwpAQCAtMTMwLDYgKzExMywxNSBAQCBw
dWJsaWM6CiAgICAgICAgIFZNKiB2bSgpIGNvbnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0
KCk7CiAgICAgICAgICAgICAKKyAgICAgICAgLy8gU3dlZXBpbmcgZW5zdXJlcyB0aGF0IGRlc3Ry
dWN0b3JzIGdldCBjYWxsZWQgYW5kIHJlbW92ZXMgdGhlIGJsb2NrIGZyb20gdGhlIHVuc3dlcHQK
KyAgICAgICAgLy8gc2V0LiBTd2VlcGluZyB0byBmcmVlIGxpc3QgYWxzbyByZW1vdmVzIHRoZSBi
bG9jayBmcm9tIHRoZSBlbXB0eSBzZXQsIGlmIGl0IHdhcyBpbiB0aGF0CisgICAgICAgIC8vIHNl
dC4gU3dlZXBpbmcgd2l0aCBTd2VlcE9ubHkgbWF5IGFkZCB0aGlzIGJsb2NrIHRvIHRoZSBlbXB0
eSBzZXQsIGlmIHRoZSBibG9jayBpcyBmb3VuZAorICAgICAgICAvLyB0byBiZSBlbXB0eS4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gTm90ZSB0aGF0IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0
IHRoZSBlbXB0eSBiaXQgcmVmbGVjdHMgcmVhbGl0eS4gSWYgaXQncyBub3Qgc2V0CisgICAgICAg
IC8vIGFuZCB0aGUgYmxvY2sgaXMgZnJlc2hseSBjcmVhdGVkLCB0aGVuIHdlJ2xsIG1ha2UgdGhl
IG1pc3Rha2Ugb2YgcnVubmluZyBkZXN0cnVjdG9ycyBpbgorICAgICAgICAvLyB0aGUgYmxvY2su
IElmIGl0J3Mgbm90IHNldCBhbmQgdGhlIGJsb2NrIGhhcyBub3RoaW5nIG1hcmtlZCwgdGhlbiB3
ZSdsbCBtYWtlIHRoZQorICAgICAgICAvLyBtaXN0YWtlIG9mIG1ha2luZyBhIHBvcCBmcmVlbGlz
dCByYXRoZXIgdGhhbiBhIGJ1bXAgZnJlZWxpc3QuCiAgICAgICAgIGVudW0gU3dlZXBNb2RlIHsg
U3dlZXBPbmx5LCBTd2VlcFRvRnJlZUxpc3QgfTsKICAgICAgICAgRnJlZUxpc3Qgc3dlZXAoU3dl
ZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgCkBAIC0xNTMsOCArMTQ1LDYgQEAgcHVibGlj
OgogICAgICAgICAvLyBhbmQgd2FzIHN1Y2Nlc3NmdWxseSBjbGVhcmVkIGFuZCBmYWxzZSBvdGhl
cndpc2UuCiAgICAgICAgIGJvb2wgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwogICAgICAgICAgICAg
Ci0gICAgICAgIHZvaWQgZmxpcEZvckVkZW5Db2xsZWN0aW9uKCk7Ci0gICAgICAgICAgICAKICAg
ICAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0
aW9uKCkgY29uc3Q7CkBAIC0xNjQsOSArMTU0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90
IG1hcmtDb3VudCgpOwogICAgICAgICBzaXplX3Qgc2l6ZSgpOwogICAgICAgICAgICAgCisgICAg
ICAgIGlubGluZSBib29sIGlzTGl2ZShIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKKyAg
ICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOwor
CiAgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgIGJvb2wgaXNM
aXZlQ2VsbChjb25zdCB2b2lkKik7CisKICAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxv
Y2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxv
Y2F0ZWQoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgICAgICAKICAgICAg
ICAgYm9vbCBpc05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBzZXRO
ZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CkBAIC0xNzQsMzEgKzE2OSwyNSBAQCBwdWJsaWM6
CiAgICAgICAgIAogICAgICAgICBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyBy
ZXR1cm4gISFtX25ld2x5QWxsb2NhdGVkOyB9CiAgICAgICAgICAgICAKLSAgICAgICAgYm9vbCBp
c0FsbG9jYXRlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7Ci0gICAg
ICAgIGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgbmVlZHNTd2VlcGlu
ZygpIGNvbnN0OwotICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwotCiAgICAgICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoY29u
c3QgRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0
aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNv
bnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGlu
ZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9y
RWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgICAgIAogICAgICAgICBib29s
IG5lZWRzRmxpcCgpOwotICAgICAgICAgICAgCi0gICAgICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5
RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbik7Ci0gICAgICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5
KEhlYXBWZXJzaW9uKTsKLSAgICAgICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICAgICAg
ICAgIAorICAgICAgICAKICAgICAgICAgdm9pZCBhc3NlcnRGbGlwcGVkKCk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgYm9vbCBpc09uQmxvY2tzVG9Td2VlcCgpIGNvbnN0IHsgcmV0dXJuIG1faXNP
bkJsb2Nrc1RvU3dlZXA7IH0KLSAgICAgICAgdm9pZCBzZXRJc09uQmxvY2tzVG9Td2VlcChib29s
IHZhbHVlKSB7IG1faXNPbkJsb2Nrc1RvU3dlZXAgPSB2YWx1ZTsgfQorICAgICAgICBib29sIGlz
RnJlZUxpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGcmVlTGlzdGVkOyB9CisgICAgICAgIAor
ICAgICAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgICAg
IAorICAgICAgICB2b2lkIHJlbW92ZUZyb21BbGxvY2F0b3IoKTsKKyAgICAgICAgCisgICAgICAg
IHZvaWQgZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGluZGV4KTsK
KyAgICAgICAgdm9pZCBkaWRSZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAgICAgICAgIAotICAgICAg
ICBCbG9ja1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQotICAgICAgICAg
ICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSGFuZGxlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3Iq
LCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmLCB2b2lkKik7Cisg
ICAgICAgIEhhbmRsZShIZWFwJiwgdm9pZCopOwogICAgICAgICAgICAgCiAgICAgICAgIHRlbXBs
YXRlPERlc3RydWN0aW9uTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RT
Y3JpYmJsZU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKQEAgLTIwNiwzNSArMTk1LDUwIEBA
IHB1YmxpYzoKICAgICAgICAgZW51bSBTY3JpYmJsZU1vZGUgeyBEb250U2NyaWJibGUsIFNjcmli
YmxlIH07CiAgICAgICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlLCBT
Y3JpYmJsZU1vZGU+Ci0gICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRT
d2VlcE1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBI
ZWxwZXJTZWxlY3RFbXB0eU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgICAg
IAorICAgICAgICBlbnVtIEVtcHR5TW9kZSB7IElzRW1wdHksIE5vdEVtcHR5IH07CisgICAgICAg
IAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVN
b2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVk
KFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAogICAgICAgICBlbnVtIE5ld2x5QWxs
b2NhdGVkTW9kZSB7IEhhc05ld2x5QWxsb2NhdGVkLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
IH07Ci0gICAgICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2Rl
LCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAg
ICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmli
YmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlPgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBl
clNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICAKKyAgICAg
ICAgdGVtcGxhdGU8RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJi
bGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVy
U2VsZWN0RmxpcE1vZGUoKTsKKyAgICAgICAgCisgICAgICAgIGVudW0gRmxpcE1vZGUgeyBOZWVk
c0ZsaXAsIERvZXNOb3ROZWVkRmxpcCB9OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1w
dHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFs
bG9jYXRlZE1vZGUsIEZsaXBNb2RlPgogICAgICAgICBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVw
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICAg
ICAgdm9pZCBmb3JFYWNoRnJlZUNlbGwoY29uc3QgRnJlZUxpc3QmLCBjb25zdCBGdW5jJik7Ci0g
ICAgICAgICAgICAKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0SXNGcmVlTGlzdGVkKCk7Cisg
ICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX3ByZXY7CiAgICAgICAgIE1h
cmtlZEJsb2NrOjpIYW5kbGUqIG1fbmV4dDsKICAgICAgICAgICAgIAotICAgICAgICBzaXplX3Qg
bV9hdG9tc1BlckNlbGw7Ci0gICAgICAgIHNpemVfdCBtX2VuZEF0b207IC8vIFRoaXMgaXMgYSBm
dXp6eSBlbmQuIEFsd2F5cyB0ZXN0IGZvciA8IG1fZW5kQXRvbS4KKyAgICAgICAgc2l6ZV90IG1f
YXRvbXNQZXJDZWxsIHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OworICAg
ICAgICBzaXplX3QgbV9lbmRBdG9tIHsgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSB9OyAvLyBUaGlzIGlzIGEgZnV6enkgZW5kLiBBbHdheXMgdGVzdCBmb3IgPCBtX2VuZEF0b20u
CiAgICAgICAgICAgICAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6Qml0bWFwPGF0b21z
UGVyQmxvY2s+PiBtX25ld2x5QWxsb2NhdGVkOwogICAgICAgICAgICAgCiAgICAgICAgIEFsbG9j
YXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwotICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7
Ci0gICAgICAgIGJvb2wgbV9pc09uQmxvY2tzVG9Td2VlcCB7IGZhbHNlIH07CisgICAgICAgIGJv
b2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxzZSB9OwogICAgICAgICAgICAgCi0gICAgICAgIE1hcmtl
ZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxv
Y2F0b3IgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsKICAg
ICAgICAgICAgIAotICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jazsKKyAgICAgICAgTWFya2Vk
QmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07CiAgICAgfTsKICAgICAgICAgCi0gICAgc3RhdGlj
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwg
c2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJik7CisgICAgc3RhdGlj
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJik7CiAgICAgICAgIAogICAgIEhh
bmRsZSYgaGFuZGxlKCk7CiAgICAgICAgIApAQCAtMjQ4LDM0ICsyNTIsMzUgQEAgcHVibGljOgog
ICAgIHNpemVfdCBtYXJrQ291bnQoKTsKIAogICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCop
OworICAgIGJvb2wgaXNNYXJrZWQoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKKyAgICBib29s
IGlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7CiAgICAgYm9v
bCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgCiAgICAgYm9vbCBpc01h
cmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKKyAgICBib29sIGlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKICAgICAKLSAg
ICBib29sIGlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFw
Q2VsbCopOwotCiAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgIHZvaWQgY2xlYXJN
YXJrZWQoY29uc3Qgdm9pZCopOwotICAgICAgICAKKyAgICAKICAgICBzaXplX3QgY2VsbFNpemUo
KTsKICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7Ci0K
KyAgICAKICAgICBib29sIGhhc0FueU1hcmtlZCgpIGNvbnN0OwogICAgIHZvaWQgbm90ZU1hcmtl
ZCgpOwogICAgICAgICAKICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7Ci0KKyAgICAKICAgICBib29s
IG5lZWRzRmxpcChIZWFwVmVyc2lvbik7CiAgICAgYm9vbCBuZWVkc0ZsaXAoKTsKLSAgICAgICAg
Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uKTsKLSAg
ICB2b2lkIGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNl
c3NhcnkoKTsKKyAgICAKKyAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKTsKICAgICAg
ICAgCiAgICAgdm9pZCBhc3NlcnRGbGlwcGVkKCk7CiAgICAgICAgIAogICAgIGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNEZXN0cnVjdGlvbjsgfQotICAgICAg
ICAKKyAgICAKKyAgICBpbmxpbmUgdm9pZCByZXNldFZlcnNpb24oKTsKKyAgICAKIHByaXZhdGU6
CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0g
MTsKIApAQCAtMjg0LDkgKzI4OSw5IEBAIHByaXZhdGU6CiAgICAgTWFya2VkQmxvY2soVk0mLCBI
YW5kbGUmKTsKICAgICBBdG9tKiBhdG9tcygpOwogICAgICAgICAKLSAgICB2b2lkIGZsaXBJZk5l
Y2Vzc2FyeUR1cmluZ01hcmtpbmdTbG93KCk7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlTbG93
KCk7CisgICAgdm9pZCBhYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24pOwogICAgIHZvaWQgY2xl
YXJNYXJrcygpOworICAgIHZvaWQgY2xlYXJNYXJrcyhIZWFwVmVyc2lvbik7CiAgICAgdm9pZCBj
bGVhckhhc0FueU1hcmtlZCgpOwogICAgIAogICAgIHZvaWQgbm90ZU1hcmtlZFNsb3coKTsKQEAg
LTQ2OSw0MCArNDc0LDEzIEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpuZWVkc0ZsaXAoSGVh
cFYKICAgICByZXR1cm4gaGVhcFZlcnNpb24gIT0gbV92ZXJzaW9uOwogfQogCi1pbmxpbmUgdm9p
ZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQor
aW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIGhlYXBWZXJz
aW9uKQogewogICAgIGlmIChVTkxJS0VMWShuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKSkKLSAgICAg
ICAgZmxpcElmTmVjZXNzYXJ5U2xvdygpOwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsK
LSAgICBpZiAoVU5MSUtFTFkobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkpCi0gICAgICAgIGZsaXBJ
Zk5lY2Vzc2FyeUR1cmluZ01hcmtpbmdTbG93KCk7CisgICAgICAgIGFib3V0VG9NYXJrU2xvdyho
ZWFwVmVyc2lvbik7CiAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiB9CiAKLWlubGluZSB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVy
c2lvbikKLXsKLSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lvbik7Ci19Ci0K
LWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01h
cmtpbmcoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2soKS5mbGlwSWZOZWNl
c3NhcnlEdXJpbmdNYXJraW5nKGhlYXBWZXJzaW9uKTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZmxpcEZvckVkZW5Db2xsZWN0aW9uKCkKLXsKLSAgICBhc3NlcnRGbGlw
cGVkKCk7Ci0gICAgICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhp
cyk7Ci0gICAgCi0gICAgQVNTRVJUKG1fc3RhdGUgIT0gTmV3ICYmIG1fc3RhdGUgIT0gRnJlZUxp
c3RlZCk7Ci0gICAgCi0gICAgbV9zdGF0ZSA9IE1hcmtlZDsKLX0KLQogI2lmIEFTU0VSVF9ESVNB
QkxFRAogaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmFzc2VydEZsaXBwZWQoKQogewpAQCAtNTE0
LDkgKzQ5MiwxNiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjphc3NlcnRGCiAg
ICAgYmxvY2soKS5hc3NlcnRGbGlwcGVkKCk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2Nr
Ojppc01hcmtlZChjb25zdCB2b2lkKiBwKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFy
a2VkKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKiBwKQogewotICAgIGFzc2Vy
dEZsaXBwZWQoKTsKKyAgICByZXR1cm4gbmVlZHNGbGlwKGhlYXBWZXJzaW9uKSA/IGZhbHNlIDog
bV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2Nr
Ojppc01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29uc3Qgdm9p
ZCogcCkKK3sKKyAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAgIHJldHVybiBtX21hcmtzLmdl
dChhdG9tTnVtYmVyKHApKTsKIH0KIApAQCAtNTUwLDQzICs1MzUsMTQgQEAgaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNv
bnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNN
YXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxs
KiBjZWxsKQogewotICAgIEFTU0VSVChtX3N0YXRlID09IE1hcmtlZCk7Ci0gICAgcmV0dXJuIG1f
YmxvY2stPmlzTWFya2VkKGNlbGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxv
Y2F0ZWQoY2VsbCkpOworICAgIHJldHVybiBtX2Jsb2NrLT5pc01hcmtlZCh2ZXJzaW9uLCBjZWxs
KSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAot
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBI
ZWFwQ2VsbCogY2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlB
bGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0g
ICAgQVNTRVJUKG1faGFuZGxlLm1fc3RhdGUgPT0gTWFya2VkKTsKLSAgICByZXR1cm4gaXNNYXJr
ZWQoY2VsbCkgfHwgKG1faGFuZGxlLm1fbmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNOZXds
eUFsbG9jYXRlZChjZWxsKSk7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtl
ZER1cmluZ1dlYWtWaXNpdGluZyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbiwgY29uc3QgSGVhcENl
bGwqIGNlbGwpCi17Ci0gICAgaWYgKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNNYXJrZWQoY2VsbCk7Ci19Ci0KLWlubGluZSBib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCogY2VsbCkKLXsKLSAg
ICBhc3NlcnRGbGlwcGVkKCk7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBBbGxv
Y2F0ZWQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAg
IHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7Ci0KLSAgICBjYXNlIE5ldzoK
LSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNNYXJrZWQodmVy
c2lvbiwgY2VsbCkgfHwgKG1faGFuZGxlLm1fbmV3bHlBbGxvY2F0ZWQgJiYgbV9oYW5kbGUuaXNO
ZXdseUFsbG9jYXRlZChjZWxsKSk7CiB9CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0
b20oY29uc3Qgdm9pZCogcCkKQEAgLTYwMywxMyArNTU5LDYgQEAgaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OmlzQXRvbShjb25zdCB2bwogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCi17Ci0gICAg
aWYgKCFtX2Jsb2NrLT5pc0F0b20ocCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwotfQotCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6
OkhhbmRsZTo6Zm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKQEAgLTYyMiw2
MiArNTcxLDYgQEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZAogICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rvcj4KLWlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6
Zm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVj
ZXNzYXJ5KCk7Ci0gICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2lu
ZDsKLSAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0g
bV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9j
YXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKCFp
c0xpdmUoY2VsbCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZnVuY3Rv
cihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwotICAgIH0KLSAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUg
SXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbChjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhlYXBD
ZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0g
ICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigm
bV9ibG9jay0+YXRvbXMoKVtpXSk7Ci0gICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVy
YXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpE
b25lOwotICAgIH0KLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLX0KLQot
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNTd2VlcGluZygpIGNvbnN0Ci17
Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vz
c2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNBbGxvY2F0ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nh
c3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBy
ZXR1cm4gbV9zdGF0ZSA9PSBBbGxvY2F0ZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmlzTWFya2VkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2Nr
OjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUg
PT0gTWFya2VkOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0ZyZWVM
aXN0ZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSo+KHRo
aXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBGcmVlTGlzdGVk
OwotfQotCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aGFzQW55TWFya2VkKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9iaWFzZWRNYXJrQ291bnQgIT0gbV9tYXJrQ291bnRCaWFzOwpAQCAtNzEx
LDcgKzYwNCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6TWFya2UKICAg
ICB0eXBlZGVmIE1hcmtlZEJsb2NrSGFzaCBIYXNoOwogfTsKIAotdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUpOwordm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
U3dlZXBNb2RlKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3Iu
aCIKKyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5l
IGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNv
bnN0IEhlYXBDZWxsKiBjZWxsKQoreworICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOworICAg
IAorICAgIGlmIChVTkxJS0VMWShoYXNBbnlOZXdseUFsbG9jYXRlZCgpKSkgeworICAgICAgICBp
ZiAoaXNOZXdseUFsbG9jYXRlZChjZWxsKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOworICAgIAor
ICAgIGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIAorICAgIGlmIChibG9jay5uZWVkc0ZsaXAodmVyc2lvbikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKK30KKworaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiB2ZXJz
aW9uLCBjb25zdCB2b2lkKiBwKQoreworICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzTGl2ZSh2ZXJzaW9uLCBzdGF0aWNfY2Fz
dDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+
CitpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZl
Q2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQg
PSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgp
OyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CisgICAgICAgIEhlYXBDZWxs
KiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMo
KVtpXSk7CisgICAgICAgIGlmICghaXNMaXZlKGNlbGwpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpE
b25lKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKKyAgICB9Cisg
ICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPgoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxl
Ojpmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBIZWFwQ2Vs
bDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOworICAgIGZvciAoc2l6ZV90IGkg
PSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgeworICAg
ICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1f
YmxvY2stPmF0b21zKClbaV0pOworICAgICAgICBpZiAoaXNMaXZlKGNlbGwpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0
aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9u
ZTsKKyAgICB9CisgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cit9CisKK2lu
bGluZSB2b2lkIE1hcmtlZEJsb2NrOjpyZXNldFZlcnNpb24oKQoreworICAgIG1fdmVyc2lvbiA9
IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9u
IDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dl
ZXBlci5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5o
IgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCkBAIC0xOTUsNiArMTk2LDE5IEBAIE1hcmtl
ZFNwYWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CisgICAgCisg
ICAgTWFya2VkQWxsb2NhdG9yKiBwcmV2aW91cyA9IG51bGxwdHI7CisgICAgZm9yRWFjaFN1YnNw
YWNlKAorICAgICAgICBbJl0gKFN1YnNwYWNlJiBzdWJzcGFjZSwgQWxsb2NhdG9yQXR0cmlidXRl
cykgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGZvciAoTWFya2VkQWxsb2NhdG9y
KiBhbGxvY2F0b3IgOiBzdWJzcGFjZS5iYWdPZkFsbG9jYXRvcnMpIHsKKyAgICAgICAgICAgICAg
ICBhbGxvY2F0b3ItPnNldE5leHRBbGxvY2F0b3IocHJldmlvdXMpOworICAgICAgICAgICAgICAg
IHByZXZpb3VzID0gYWxsb2NhdG9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7Cisg
ICAgbV9maXJzdEFsbG9jYXRvciA9IHByZXZpb3VzOworICAgIG1fYWxsb2NhdG9yRm9yRW1wdHlB
bGxvY2F0aW9uID0gcHJldmlvdXM7CiB9CiAKIE1hcmtlZFNwYWNlOjp+TWFya2VkU3BhY2UoKQpA
QCAtMjIyLDE1ICsyMzYsMjEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6bGFzdENoYW5jZVRvRmluYWxp
emUoKQogCiB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUoU3Vic3BhY2UmIHN1YnNwYWNlLCBz
aXplX3QgYnl0ZXMpCiB7Ci0gICAgaWYgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gYWxs
b2NhdG9yRm9yKHN1YnNwYWNlLCBieXRlcykpCi0gICAgICAgIHJldHVybiBhbGxvY2F0b3ItPmFs
bG9jYXRlKCk7CisgICAgaWYgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9y
Rm9yKHN1YnNwYWNlLCBieXRlcykpIHsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gYWxsb2NhdG9y
LT5hbGxvY2F0ZSgpOworICAgICAgICAvL2RhdGFMb2coIkFsbG9jYXRlZCAiLCBSYXdQb2ludGVy
KHJlc3VsdCksICJcbiIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICByZXR1
cm4gYWxsb2NhdGVMYXJnZShzdWJzcGFjZSwgYnl0ZXMpOwogfQogCiB2b2lkKiBNYXJrZWRTcGFj
ZTo6dHJ5QWxsb2NhdGUoU3Vic3BhY2UmIHN1YnNwYWNlLCBzaXplX3QgYnl0ZXMpCiB7Ci0gICAg
aWYgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNwYWNlLCBi
eXRlcykpCi0gICAgICAgIHJldHVybiBhbGxvY2F0b3ItPnRyeUFsbG9jYXRlKCk7CisgICAgaWYg
KE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHN1YnNwYWNlLCBieXRl
cykpIHsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gYWxsb2NhdG9yLT50cnlBbGxvY2F0ZSgpOwor
ICAgICAgICAvL2RhdGFMb2coIlRyeS1hbGxvY2F0ZWQgIiwgUmF3UG9pbnRlcihyZXN1bHQpLCAi
XG4iKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgcmV0dXJuIHRyeUFsbG9j
YXRlTGFyZ2Uoc3Vic3BhY2UsIGJ5dGVzKTsKIH0KIApAQCAtMjU5LDkgKzI3OSwxMCBAQCB2b2lk
KiBNYXJrZWRTcGFjZTo6dHJ5QWxsb2NhdGVMYXJnZShTdWJzCiB2b2lkIE1hcmtlZFNwYWNlOjpz
d2VlcCgpCiB7CiAgICAgbV9oZWFwLT5zd2VlcGVyKCktPndpbGxGaW5pc2hTd2VlcGluZygpOwot
ICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykgewotICAgICAgICAgICAgYmxvY2stPnN3ZWVwKCk7CisgICAgZm9yRWFjaEFsbG9jYXRvcigK
KyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3Rh
dHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5zd2VlcCgpOworICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0pOwogfQogCkBAIC0yODQsMzMg
KzMwNSwyMyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpzd2VlcExhcmdlQWxsb2NhdGlvbnMoCiAgICAg
bV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCA9IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXpl
KCk7CiB9CiAKLXZvaWQgTWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCgpCi17Ci0gICAgaWYgKE9w
dGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgIGRhdGFMb2coIlpvbWJpZnlpbmcgc3dlZXAuLi4iKTsK
LSAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFj
aEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAg
ICAgICAgICBpZiAoYmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAgICAgICAgICAgICBibG9j
ay0+c3dlZXAoKTsKLSAgICAgICAgfSk7Ci19Ci0KLXZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxs
b2NhdG9ycygpCit2b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7CiAg
ICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9j
YXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKLSAgICAgICAgICAgIGFsbG9jYXRvci5yZXNldCgp
OworICAgICAgICAgICAgYWxsb2NhdG9yLnByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CiAKLSAg
ICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLmNsZWFyKCk7CiAgICAgbV9hY3RpdmVXZWFrU2V0cy50
YWtlRnJvbShtX25ld0FjdGl2ZVdlYWtTZXRzKTsKKyAgICAKICAgICBpZiAobV9oZWFwLT5vcGVy
YXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pCiAgICAgICAgIG1fbGFyZ2VBbGxv
Y2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlP
ZmZzZXQ7CiAgICAgZWxzZQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0
Rm9yU3dlZXAgPSAwOwogICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQgPSBtX2xh
cmdlQWxsb2NhdGlvbnMuc2l6ZSgpOworICAgIAorICAgIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxv
Y2F0aW9uID0gbV9maXJzdEFsbG9jYXRvcjsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6dmlzaXRX
ZWFrU2V0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikKQEAgLTQxMCwxMSArNDIx
LDExIEBAIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVPclNocmlua0Jsb2NrKE1hcmsKIAogdm9pZCBN
YXJrZWRTcGFjZTo6c2hyaW5rKCkKIHsKLSAgICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAo
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIGZyZWVPclNocmlua0Js
b2NrKGJsb2NrKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFs
bG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxs
b2NhdG9yLnNocmluaygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7CiAgICAgICAgIH0pOwotICAgIC8vIEZvciBMYXJnZUFsbG9jYXRpb25zLCB3ZSBkbyB0
aGUgbW9yYWwgZXF1aXZhbGVudCBpbiBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKS4KIH0KIAogdm9p
ZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCkBAIC00MjksNTcgKzQ0MCw2MSBA
QCB2b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgaSA8IG1f
bGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25z
W2ldLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAg
Zm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7
Ci0gICAgICAgICAgICBBU1NFUlQoIWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOwotICAg
ICAgICB9KTsKLQotICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJn
ZUFsbG9jYXRpb25zKQotICAgICAgICBBU1NFUlQoIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0
ZWQoKSk7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfQotCi0jaWZuZGVmIE5ERUJVRyAK
LXN0cnVjdCBWZXJpZnlNYXJrZWQgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgeyAKLSAgICB2
b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBzd2l0Y2ggKGJsb2NrLT5tX3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgTWFya2VkQmxvY2s6
Ok1hcmtlZDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KKyAgICBpZiAoIUFT
U0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0g
KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChibG9jaywgIWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIAorICAgICAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6
IG1fbGFyZ2VBbGxvY2F0aW9ucykKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWxsb2NhdGlv
biwgIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7CiAgICAgfQotfTsgCi0jZW5kaWYg
Cit9CiAKLXZvaWQgTWFya2VkU3BhY2U6OmZsaXAoKQordm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5N
YXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRl
bkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tz
V2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2Jsb2Nrc1dpdGhOZXdP
YmplY3RzW2ldLT5mbGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbiA9IG1fdmVyc2lvbiArIDE7Ci0gICAgICAgIGlmIChV
TkxJS0VMWShuZXh0VmVyc2lvbiA9PSBpbml0aWFsVmVyc2lvbikpIHsKLSAgICAgICAgICAgIC8v
IE9oIG5vISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBmbGlwcGluZyBh
bGwgYmxvY2tzLiBUaGlzIGhhcHBlbnMKLSAgICAgICAgICAgIC8vIHN1cGVyIHJhcmVseSwgcHJv
YmFibHkgbmV2ZXIgZm9yIG1vc3QgdXNlcnMuCisgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Q
cm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3Io
CisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRp
b25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5iZWdpbk1hcmtpbmdGb3JGdWxs
Q29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgbV92ZXJzaW9uID0gbmV4dFZlcnNp
b24obV92ZXJzaW9uKTsKKyAgICAgICAgCisgICAgICAgIGlmIChVTkxJS0VMWShtX3ZlcnNpb24g
PT0gaW5pdGlhbFZlcnNpb24pKSB7CisgICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFw
LWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgc2V0dGluZyBhbGwgYmxvY2sgdmVyc2lvbnMgdG8g
bnVsbC4KICAgICAgICAgICAgIGZvckVhY2hCbG9jaygKICAgICAgICAgICAgICAgICBbJl0gKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgewotICAgICAgICAgICAgICAgICAgICBoYW5kbGUt
PmZsaXBJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmJsb2NrKCku
cmVzZXRWZXJzaW9uKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAg
bV92ZXJzaW9uID0gbmV4dFZlcnNpb247IC8vIEhlbmNlZm9ydGgsIGZsaXBJZk5lY2Vzc2FyeSgp
IHdpbGwgdHJpZ2dlciBvbiBhbGwgYmxvY2tzLgorICAgICAgICAKICAgICAgICAgZm9yIChMYXJn
ZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCiAgICAgICAgICAg
ICBhbGxvY2F0aW9uLT5mbGlwKCk7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwotICAgIFZlcmlm
eU1hcmtlZCB2ZXJpZnlGdW5jdG9yOwotICAgIGZvckVhY2hCbG9jayh2ZXJpZnlGdW5jdG9yKTsK
LSNlbmRpZgorICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hCbG9j
aygKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOwor
ICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIG1faXNNYXJraW5nID0gdHJ1ZTsKK30K
Kwordm9pZCBNYXJrZWRTcGFjZTo6ZW5kTWFya2luZygpCit7CisgICAgZm9yRWFjaEFsbG9jYXRv
cigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9u
U3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5lbmRNYXJraW5nKCk7CisgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7CisgICAgCisg
ICAgbV9pc01hcmtpbmcgPSBmYWxzZTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6d2lsbFN0YXJ0
SXRlcmF0aW5nKCkKQEAgLTU0MCwxOSArNTU1LDY2IEBAIHZvaWQgTWFya2VkU3BhY2U6OmFkZEFj
dGl2ZVdlYWtTZXQoV2Vha1MKIAogdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2soTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spCiB7CisgICAgLy8gV0FSTklORzogVGhpcyBmdW5jdGlvbiBp
cyBjYWxsZWQgYmVmb3JlIGJsb2NrIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGUgYmxvY2sgd2ls
bCBub3Qga25vdworICAgIC8vIGl0cyBjZWxsU2l6ZSgpIG9yIGF0dHJpYnV0ZXMoKS4gVGhlIGxh
dHRlciBpbXBsaWVzIHRoYXQgeW91IGNhbid0IGFzayB0aGluZ3MgbGlrZQorICAgIC8vIG5lZWRz
RGVzdHJ1Y3Rpb24oKS4KICAgICBtX2NhcGFjaXR5ICs9IE1hcmtlZEJsb2NrOjpibG9ja1NpemU7
CiAgICAgbV9ibG9ja3MuYWRkKCZibG9jay0+YmxvY2soKSk7CiB9CiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OmRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIHsKLSAg
ICBibG9jay0+YXNzZXJ0RmxpcHBlZCgpOwotICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHMuYXBw
ZW5kKGJsb2NrKTsKLSAgICAKICAgICBpZiAoYmxvY2stPndlYWtTZXQoKS5pc09uTGlzdCgpKSB7
CiAgICAgICAgIGJsb2NrLT53ZWFrU2V0KCkucmVtb3ZlKCk7CiAgICAgICAgIG1fbmV3QWN0aXZl
V2Vha1NldHMuYXBwZW5kKCZibG9jay0+d2Vha1NldCgpKTsKICAgICB9CiB9CiAKK01hcmtlZEJs
b2NrOjpIYW5kbGUqIE1hcmtlZFNwYWNlOjpmaW5kRW1wdHlCbG9ja1RvU3RlYWwoKQoreworICAg
IGZvciAoOyBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbjsgbV9hbGxvY2F0b3JGb3JFbXB0
eUFsbG9jYXRpb24gPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+bmV4dEFsbG9jYXRv
cigpKSB7CisgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYWxsb2Nh
dG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5maW5kRW1wdHlCbG9ja1RvU3RlYWwoKSkKKyAgICAgICAg
ICAgIHJldHVybiBibG9jazsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
TWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCgpCit7CisgICAgaWYgKG1faGVhcC0+b3BlcmF0
aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7CisgICAgICAgIGZvckVhY2hBbGxv
Y2F0b3IoCisgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJ
dGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFwc2hvdFVuc3dl
cHRGb3JFZGVuQ29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Zm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxv
Y2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNu
YXBzaG90VW5zd2VwdEZvckZ1bGxDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICB9KTsKKyAgICB9Cit9CisK
K3ZvaWQgTWFya2VkU3BhY2U6OmFzc2VydE5vVW5zd2VwdCgpCit7CisgICAgaWYgKEFTU0VSVF9E
SVNBQkxFRCkKKyAgICAgICAgcmV0dXJuOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAg
IFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Cisg
ICAgICAgICAgICBhbGxvY2F0b3IuYXNzZXJ0Tm9VbnN3ZXB0KCk7CisgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgTWFy
a2VkU3BhY2U6OmR1bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgZm9yRWFjaEFsbG9j
YXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIG91dC5wcmludCgiQml0cyBmb3IgIiwgYWxsb2NhdG9y
LCAiOlxuIik7CisgICAgICAgICAgICBhbGxvY2F0b3IuZHVtcEJpdHMob3V0KTsKKyAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDE2IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbnVtU2l6ZUNsYXNzZXMgPSBsYXJnZUN1dG9mZiAv
IHNpemVTdGVwOwogICAgIAotICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBpbml0aWFsVmVy
c2lvbiA9IDQyOyAgLy8gVGhpcyBjYW4gYmUgYW55IHZhbHVlLCBpbmNsdWRpbmcgcmFuZG9tIGdh
cmJhZ2UsIHNvIGxvbmcgYXMgaXQncyBjb25zaXN0ZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhl
IHByb2Nlc3MuCisgICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIG51bGxWZXJzaW9uID0gMDsg
Ly8gVGhlIHZlcnNpb24gb2YgZnJlc2hseSBhbGxvY2F0ZWQgYmxvY2tzLgorICAgIHN0YXRpYyBj
b25zdCBIZWFwVmVyc2lvbiBpbml0aWFsVmVyc2lvbiA9IDE7IC8vIFRoZSB2ZXJzaW9uIHRoYXQg
dGhlIGhlYXAgc3RhcnRzIG91dCB3aXRoLgorICAgIAorICAgIEhlYXBWZXJzaW9uIG5leHRWZXJz
aW9uKEhlYXBWZXJzaW9uIHZlcnNpb24pCisgICAgeworICAgICAgICB2ZXJzaW9uKys7CisgICAg
ICAgIGlmICh2ZXJzaW9uID09IG51bGxWZXJzaW9uKQorICAgICAgICAgICAgdmVyc2lvbisrOwor
ICAgICAgICByZXR1cm4gdmVyc2lvbjsKKyAgICB9CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBz
aXplQ2xhc3NUb0luZGV4KHNpemVfdCBzaXplKQogICAgIHsKQEAgLTExNCw3ICsxMjMsNyBAQCBw
dWJsaWM6CiAgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9y
KCkgeyByZXR1cm4gbV9ub3JtYWxTcGFjZTsgfQogICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvckF1
eGlsaWFyeURhdGEoKSB7IHJldHVybiBtX2F1eGlsaWFyeVNwYWNlOyB9CiAgICAgCi0gICAgdm9p
ZCByZXNldEFsbG9jYXRvcnMoKTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAK
ICAgICB2b2lkIHZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNpdG9yJik7CiAgICAgdm9pZCByZWFw
V2Vha1NldHMoKTsKQEAgLTE0NCwxMSArMTUzLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENv
bnN1bWVGcmVlTGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgdm9pZCBkaWRBbGxvY2F0
ZUluQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSopOwogCi0gICAgdm9pZCBmbGlwKCk7CisgICAg
dm9pZCBiZWdpbk1hcmtpbmcoKTsKKyAgICB2b2lkIGVuZE1hcmtpbmcoKTsKKyAgICB2b2lkIHNu
YXBzaG90VW5zd2VwdCgpOwogICAgIHZvaWQgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwogICAgIHZv
aWQgc3dlZXAoKTsKICAgICB2b2lkIHN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygpOwotICAgIHZvaWQg
em9tYmlmeVN3ZWVwKCk7CisgICAgdm9pZCBhc3NlcnROb1Vuc3dlcHQoKTsKICAgICBzaXplX3Qg
b2JqZWN0Q291bnQoKTsKICAgICBzaXplX3Qgc2l6ZSgpOwogICAgIHNpemVfdCBjYXBhY2l0eSgp
OwpAQCAtMTU3LDggKzE2OCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBIZWFwVmVyc2lvbiB2ZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8TWFy
a2VkQmxvY2s6OkhhbmRsZSo+JiBibG9ja3NXaXRoTmV3T2JqZWN0cygpIGNvbnN0IHsgcmV0dXJu
IG1fYmxvY2tzV2l0aE5ld09iamVjdHM7IH0KLSAgICAKICAgICBjb25zdCBWZWN0b3I8TGFyZ2VB
bGxvY2F0aW9uKj4mIGxhcmdlQWxsb2NhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxs
b2NhdGlvbnM7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7IH0KICAgICB1
bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgfQpAQCAt
MTY5LDEzICsxNzgsMTYgQEAgcHVibGljOgogICAgIExhcmdlQWxsb2NhdGlvbioqIGxhcmdlQWxs
b2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxv
Y2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0
aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0
aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZTsgfQogICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciog
Zmlyc3RBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0QWxsb2NhdG9yOyB9CisgICAg
TWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbjsgfQorICAgIAorICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpOworICAgIAogICAgIC8vIFdoZW4g
dGhpcyBpcyB0cnVlIGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSBmbGlwcGVkIGJ1dCB0aGUgbWFyayBi
aXRzIGhhdmVuJ3QgY29udmVyZ2VkIHlldC4KICAgICBib29sIGlzTWFya2luZygpIGNvbnN0IHsg
cmV0dXJuIG1faXNNYXJraW5nOyB9CiAgICAgCi0gICAgLy8gRklYTUU6IEFmdGVyIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1ODEsIE1hcmtlZFNwYWNlIHdpbGwg
Y29udHJvbCB0aGlzCi0gICAgLy8gZmxhZyBkaXJlY3RseS4KLSAgICB2b2lkIHNldElzTWFya2lu
Zyhib29sIHZhbHVlKSB7IG1faXNNYXJraW5nID0gdmFsdWU7IH0KLQorICAgIHZvaWQgZHVtcEJp
dHMoUHJpbnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgSklU
OwpAQCAtMTkwLDggKzIwMiw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXpl
U3Vic3BhY2UoU3Vic3BhY2UmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgZm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29u
c3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lk
IGZvckVhY2hTdWJzcGFjZShjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBhZGRBY3Rp
dmVXZWFrU2V0KFdlYWtTZXQqKTsKIApAQCAtMjA1LDcgKzIxNyw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9OwogICAg
IE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxl
Kj4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsKICAgICBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4g
bV9sYXJnZUFsbG9jYXRpb25zOwogICAgIHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNl
cnlPZmZzZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9y
VGhpc0NvbGxlY3Rpb24geyAwIH07CkBAIC0yMTUsNDAgKzIyNiwxMSBAQCBwcml2YXRlOgogICAg
IHVuc2lnbmVkIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSB7IDAgfTsK
ICAgICBTZW50aW5lbExpbmtlZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vh
a1NldD4+IG1fYWN0aXZlV2Vha1NldHM7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQs
IEJhc2ljUmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX25ld0FjdGl2ZVdlYWtTZXRzOworICAg
IAorICAgIE1hcmtlZEFsbG9jYXRvciogbV9maXJzdEFsbG9jYXRvciB7IG51bGxwdHIgfTsKKyAg
ICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0
ciB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2Vk
U3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQotewotICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKLSAgICBCbG9ja0l0ZXJh
dG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBp
dCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBp
ZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25T
dGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoTGFyZ2VB
bGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7Ci0gICAgICAgIGlm
IChhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2Nh
dGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJh
dGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNw
YWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKLXsKLSAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRv
ciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQg
PSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYg
KCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKExhcmdlQWxs
b2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewotICAgICAgICBpZiAo
IWFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0
aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0
aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KLX0KLQogaW5saW5lIE1hcmtlZEFsbG9jYXRvciogTWFya2VkU3BhY2U6OmFsbG9jYXRvckZv
cihTdWJzcGFjZSYgc3BhY2UsIHNpemVfdCBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwpA
QCAtMzA0LDE1ICsyODYsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2
b2lkIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIE1hcmtlZFNwYWNlOjpmb3JF
YWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgZm9yRWFjaFN1YnNw
YWNlKAotICAgICAgICBbJl0gKFN1YnNwYWNlJiBzdWJzcGFjZSwgQWxsb2NhdG9yQXR0cmlidXRl
cykgLT4gSXRlcmF0aW9uU3RhdHVzIHsKLSAgICAgICAgICAgIGZvciAoTWFya2VkQWxsb2NhdG9y
KiBhbGxvY2F0b3IgOiBzdWJzcGFjZS5iYWdPZkFsbG9jYXRvcnMpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoZnVuY3RvcigqYWxsb2NhdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOwotICAgICAgICB9KTsKKyAgICBmb3IgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
ID0gbV9maXJzdEFsbG9jYXRvcjsgYWxsb2NhdG9yOyBhbGxvY2F0b3IgPSBhbGxvY2F0b3ItPm5l
eHRBbGxvY2F0b3IoKSkgeworICAgICAgICBpZiAoZnVuY3RvcigqYWxsb2NhdG9yKSA9PSBJdGVy
YXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2luY2x1
ZGUgIk1hcmtlZFNwYWNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJ
dGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgQVNTRVJUKGlz
SXRlcmF0aW5nKCkpOworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5k
KCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaExp
dmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xh
cmdlQWxsb2NhdGlvbnMpIHsKKyAgICAgICAgaWYgKGFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxvY2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0
dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbChIZWFwSXRl
cmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEFTU0VSVChpc0l0
ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgp
OworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hEZWFk
Q2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJn
ZUFsbG9jYXRpb25zKSB7CisgICAgICAgIGlmICghYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKKyAg
ICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0
cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2
aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6
c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogICAgIHZhbGlkYXRlKGNlbGwpOwogI2VuZGlmCiAgICAg
CisgICAgLy9kYXRhTG9nKCIgICAgTWFya2luZyAiLCBSYXdQb2ludGVyKGNlbGwpLCAiXG4iKTsK
KyAgICAKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgc2V0TWFy
a2VkQW5kQXBwZW5kVG9NYXJrU3RhY2soY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCksIGNlbGwpOwog
ICAgIGVsc2UKQEAgLTE5OCw3ICsyMDAsNyBAQCB2b2lkIFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRB
bmRBcHBlbmRUb01hCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXJUeXBlPgogQUxXQVlTX0lO
TElORSB2b2lkIFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRBbmRBcHBlbmRUb01hcmtTdGFjayhDb250
YWluZXJUeXBlJiBjb250YWluZXIsIEpTQ2VsbCogY2VsbCkKIHsKLSAgICBjb250YWluZXIuZmxp
cElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhtX3ZlcnNpb24pOworICAgIGNvbnRhaW5lci5hYm91
dFRvTWFyayhtX3ZlcnNpb24pOwogICAgIAogICAgIGlmIChjb250YWluZXIudGVzdEFuZFNldE1h
cmtlZChjZWxsKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ2LDEwICsyNDgsOCBAQCB2b2lkIFNs
b3RWaXNpdG9yOjptYXJrQXV4aWxpYXJ5KGNvbnN0IHZvCiAgICAgCiAgICAgQVNTRVJUKGNlbGwt
PmhlYXAoKSA9PSBoZWFwKCkpOwogICAgIAotICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2Vk
KG1fdmVyc2lvbiwgY2VsbCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoSGVhcDo6aXNNYXJr
ZWRDb25jdXJyZW50bHkoY2VsbCkpOworICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1f
dmVyc2lvbiwgY2VsbCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgCiAgICAgbm90ZUxp
dmVBdXhpbGlhcnlDZWxsKGNlbGwpOwogfQpAQCAtMjk0LDYgKzI5NCw4IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGkKIHsKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJr
ZWRDb25jdXJyZW50bHkoY2VsbCkpOwogICAgIAorICAgIC8vZGF0YUxvZygiVmlzaXRpbmcgIiwg
UmF3UG9pbnRlcihjZWxsKSwgIlxuIik7CisKICAgICBTZXRDdXJyZW50Q2VsbFNjb3BlIGN1cnJl
bnRDZWxsU2NvcGUoKnRoaXMsIGNlbGwpOwogICAgIAogICAgIG1fY3VycmVudE9iamVjdENlbGxT
dGF0ZUJlZm9yZVZpc2l0aW5nID0gY2VsbC0+Y2VsbFN0YXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vhay5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9XZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4
LDcgKzI4LDkgQEAKIAogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSA8Y3N0
ZGRlZj4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3JUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTUxLDMzICs1MywzMyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFdlYWso
VCosIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CisgICAgaW5saW5l
IFdlYWsoVCosIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CiAKICAg
ICBlbnVtIEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9
OwotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKLSAgICBXZWFrKEhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7CisgICAgaW5saW5lIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdDsKKyAgICBpbmxpbmUgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVU
YWcpOwogCi0gICAgV2VhayhXZWFrJiYpOworICAgIGlubGluZSBXZWFrKFdlYWsmJik7CiAKICAg
ICB+V2VhaygpCiAgICAgewogICAgICAgICBjbGVhcigpOwogICAgIH0KIAotICAgIHZvaWQgc3dh
cChXZWFrJik7CisgICAgaW5saW5lIHZvaWQgc3dhcChXZWFrJik7CiAKLSAgICBXZWFrJiBvcGVy
YXRvcj0oV2VhayYmKTsKKyAgICBpbmxpbmUgV2VhayYgb3BlcmF0b3I9KFdlYWsmJik7CiAKLSAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwotICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdDsKLSAg
ICBUJiBvcGVyYXRvciooKSBjb25zdDsKLSAgICBUKiBnZXQoKSBjb25zdDsKKyAgICBpbmxpbmUg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBpbmxpbmUgVCogb3BlcmF0b3ItPigpIGNvbnN0
OworICAgIGlubGluZSBUJiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBpbmxpbmUgVCogZ2V0KCkg
Y29uc3Q7CiAKLSAgICBib29sIHdhcyhUKikgY29uc3Q7CisgICAgaW5saW5lIGJvb2wgd2FzKFQq
KSBjb25zdDsKIAotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKKyAgICBpbmxp
bmUgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogCi0gICAgV2Vha0ltcGwqIGxlYWtJ
bXBsKCkgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIGlubGluZSBXZWFrSW1wbCogbGVha0ltcGwo
KSBXQVJOX1VOVVNFRF9SRVRVUk47CiAgICAgdm9pZCBjbGVhcigpCiAgICAgewogICAgICAgICBp
ZiAoIW1faW1wbCkKQEAgLTg2LDExICs4OCwzMCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJp
dmF0ZToKLSAgICBzdGF0aWMgV2Vha0ltcGwqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAg
IHN0YXRpYyBpbmxpbmUgV2Vha0ltcGwqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwogCiAgICAg
V2Vha0ltcGwqIG1faW1wbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZlY3RvclRyYWl0czxKU0M6Oldl
YWs8VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeworICAgIHN0YXRpYyBjb25zdCBib29s
IGNhbkNvbXBhcmVXaXRoTWVtY21wID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRz
PEpTQzo6V2VhazxUPj4geworICAgIHR5cGVkZWYgSlNDOjpXZWFrPFQ+IFN0b3JhZ2VUeXBlOwor
CisgICAgdHlwZWRlZiBzdGQ6Om51bGxwdHJfdCBFbXB0eVZhbHVlVHlwZTsKKyAgICBzdGF0aWMg
RW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHR5
cGVkZWYgVCogUGVla1R5cGU7CisgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgU3RvcmFn
ZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5nZXQoKTsgfQorICAgIHN0YXRpYyBQZWVrVHlw
ZSBwZWVrKEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQZWVrVHlwZSgpOyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIFdlYWtfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdm9pZCBXZWFrQmxvY2s6OnNwZWNpYWxpemVkVmlzaXQoQ29udGFpbgogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgY29uc3QgSlNWYWx1ZSYganNWYWx1ZSA9IHdlYWtJ
bXBsLT5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChjb250YWluZXIuaXNNYXJrZWREdXJpbmdXZWFr
VmlzaXRpbmcodmVyc2lvbiwganNWYWx1ZS5hc0NlbGwoKSkpCisgICAgICAgIGlmIChjb250YWlu
ZXIuaXNNYXJrZWRDb25jdXJyZW50bHkodmVyc2lvbiwganNWYWx1ZS5hc0NlbGwoKSkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIGlmICghd2Vha0hhbmRsZU93bmVy
LT5pc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5kbGU8VW5rbm93bj46OndyYXBTbG90KCZj
b25zdF9jYXN0PEpTVmFsdWUmPihqc1ZhbHVlKSksIHdlYWtJbXBsLT5jb250ZXh0KCksIHZpc2l0
b3IpKQpAQCAtMTQ3LDE3ICsxNDcsMTQgQEAgdm9pZCBXZWFrQmxvY2s6OnJlYXAoKQogICAgIC8v
IElmIHRoaXMgV2Vha0Jsb2NrIGRvZXNuJ3QgYmVsb25nIHRvIGEgQ2VsbENvbnRhaW5lciwgd2Ug
d29uJ3QgZXZlbiBiZSBoZXJlLgogICAgIEFTU0VSVChtX2NvbnRhaW5lcik7CiAgICAgCi0gICAg
bV9jb250YWluZXIuZmxpcElmTmVjZXNzYXJ5KCk7Ci0KLSAgICAvLyBXZSBvbmx5IHJlYXAgYWZ0
ZXIgbWFya2luZy4KLSAgICBBU1NFUlQobV9jb250YWluZXIuaXNNYXJrZWQoKSk7CisgICAgSGVh
cFZlcnNpb24gdmVyc2lvbiA9IG1fY29udGFpbmVyLmhlYXAoKS0+b2JqZWN0U3BhY2UoKS52ZXJz
aW9uKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYWtJbXBsQ291bnQoKTsgKytp
KSB7CiAgICAgICAgIFdlYWtJbXBsKiB3ZWFrSW1wbCA9ICZ3ZWFrSW1wbHMoKVtpXTsKICAgICAg
ICAgaWYgKHdlYWtJbXBsLT5zdGF0ZSgpID4gV2Vha0ltcGw6OkRlYWQpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBpZiAobV9jb250YWluZXIuaXNNYXJrZWQod2Vha0ltcGwtPmpz
VmFsdWUoKS5hc0NlbGwoKSkpIHsKKyAgICAgICAgaWYgKG1fY29udGFpbmVyLmlzTWFya2VkKHZl
cnNpb24sIHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBBU1NF
UlQod2Vha0ltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lu
bGluZXMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ5LDIzICsxNDgsNCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xlCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi1u
YW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZlY3RvclRyYWl0
czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgIHN0YXRpYyBj
b25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IDogU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gewotICAgIHR5cGVkZWYgSlNDOjpXZWFrPFQ+IFN0b3Jh
Z2VUeXBlOwotCi0gICAgdHlwZWRlZiBzdGQ6Om51bGxwdHJfdCBFbXB0eVZhbHVlVHlwZTsKLSAg
ICBzdGF0aWMgRW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LQotICAgIHR5cGVkZWYgVCogUGVla1R5cGU7Ci0gICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29u
c3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5nZXQoKTsgfQotICAgIHN0YXRp
YyBQZWVrVHlwZSBwZWVrKEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQZWVrVHlwZSgpOyB9Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQogI2VuZGlmIC8vIFdlYWtJbmxpbmVzX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJX
ZWFrLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgiCi0jaW5jbHVkZSAiV2Vha0lubGlu
ZXMuaCIKICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAKICNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk1hcEl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiTWFwUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aE9iamVj
dC5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgogI2luY2x1ZGUgIk1vZHVsZUxvYWRlclByb3Rv
dHlwZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJQcm90b3R5cGVNYXBJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUHJveHlPYmplY3QuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuY3BwCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiUHJvdG90eXBlTWFwSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjA2MDMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODcsNiArMTg3LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7
CiAgICAgdih1bnNpZ25lZCwgbGFyZ2VBbGxvY2F0aW9uQ3V0b2ZmLCAxMDAwMDAsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYoYm9vbCwgZHVtcFNpemVDbGFzc2VzLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihib29sLCB1c2VCdW1wQWxsb2NhdG9yLCB0cnVlLCBOb3JtYWwsIG51
bGxwdHIpIFwKKyAgICB2KGJvb2wsIHN0ZWFsRW1wdHlCbG9ja3NGcm9tT3RoZXJBbGxvY2F0b3Jz
LCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGVhZ2VybHlVcGRhdGVUb3BD
YWxsRnJhbWUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdihib29sLCB1
c2VPU1JFbnRyeVRvREZHLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTMwMiw3ICszMDMs
NiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KHVuc2lnbmVkLCBu
dW1iZXJPZkdDTWFya2VycywgY29tcHV0ZU51bWJlck9mR0NNYXJrZXJzKDcpLCBOb3JtYWwsIG51
bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQsIDEwMDAs
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoZG91YmxlLCBtaW5IZWFwVXRpbGl6YXRpb24sIDAu
OCwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihkb3VibGUsIG1pbkNvcGllZEJsb2NrVXRpbGl6
YXRpb24sIDAuOSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihkb3VibGUsIG1pbk1hcmtlZEJs
b2NrVXRpbGl6YXRpb24sIDAuOSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwg
c2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzLCAwLCBOb3JtYWwsICJmb3JjZSBhIEdDIG9uIGV2ZXJ5
IE50aCBzbG93IHBhdGggYWxsb2MsIHdoZXJlIE4gaXMgc3BlY2lmaWVkIGJ5IHRoaXMgb3B0aW9u
IikgXAogICAgIHYoYm9vbCwgZGVmZXJHQ1Nob3VsZENvbGxlY3RXaXRoUHJvYmFiaWxpdHksIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSBwZXJmb3JtIGEgY29sbGVjdGlvbiBiYXNlZCBvbiBm
bGlwcGluZyBhIGNvaW4gYWNjb3JkaW5nIHRoZSBwcm9iYWJpbGl0eSBpbiB0aGUgJ2RlZmVyR0NQ
cm9iYWJpbGl0eScgb3B0aW9uIHdoZW4gRGVmZXJHQyBpcyBkZXN0cnVjdGVkLiIpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAkocmV2
aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBl
TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkluZGV4
aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIlByb3RvdHlwZU1hcElubGluZXMuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1h
cC5oCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90b3R5cGVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBQ
cm90b3R5cGVNYXBfaAogI2RlZmluZSBQcm90b3R5cGVNYXBfaAogCisjaW5jbHVkZSAiSW5kZXhp
bmdUeXBlLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIldlYWtHQ01hcC5o
IgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGVtcHR5U3RydWN0dXJlRm9yUHJvdG90
eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoSlNPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGNs
ZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqLCB1bnNpZ25lZCBp
bmxpbmVDYXBhY2l0eSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRQcm90b3R5cGUo
SlNPYmplY3QqKTsKLSAgICBUcmlTdGF0ZSBpc1Byb3RvdHlwZShKU09iamVjdCopIGNvbnN0OyAv
LyBSZXR1cm5zIGEgY29uc2VydmF0aXZlIGVzdGltYXRlLgorICAgIGlubGluZSBUcmlTdGF0ZSBp
c1Byb3RvdHlwZShKU09iamVjdCopIGNvbnN0OyAvLyBSZXR1cm5zIGEgY29uc2VydmF0aXZlIGVz
dGltYXRlLgogCiBwcml2YXRlOgogICAgIFN0cnVjdHVyZSogY3JlYXRlRW1wdHlTdHJ1Y3R1cmUo
SlNPYmplY3QqIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJ
bmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKQEAgLTU4LDE4ICs2MCw2IEBA
IHByaXZhdGU6CiAgICAgU3RydWN0dXJlTWFwIG1fc3RydWN0dXJlczsKIH07CiAKLWlubGluZSBU
cmlTdGF0ZSBQcm90b3R5cGVNYXA6OmlzUHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX3Byb3RvdHlwZXMuY29udGFpbnMob2JqZWN0KSkKLSAgICAgICAgcmV0
dXJuIEZhbHNlVHJpU3RhdGU7Ci0KLSAgICAvLyBXZSBrbm93IHRoYXQgJ29iamVjdCcgd2FzIHVz
ZWQgYXMgYSBwcm90b3R5cGUgYXQgb25lIHRpbWUsIHNvIGJlCi0gICAgLy8gY29uc2VydmF0aXZl
IGFuZCBzYXkgdGhhdCBpdCBtaWdodCBzdGlsbCBiZSBzby4gKEl0IHdvdWxkIGJlIGV4cGVuc2l2
ZQotICAgIC8vIHRvIGZpbmQgb3V0IGZvciBzdXJlLCBhbmQgd2UgZG9uJ3Qga25vdyBvZiBhbnkg
Y2FzZXMgd2hlcmUgYmVpbmcgcHJlY2lzZQotICAgIC8vIHdvdWxkIGltcHJvdmUgcGVyZm9ybWFu
Y2UuKQotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIFByb3RvdHlwZU1hcF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm90b3R5cGVNYXBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5saW5lcy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcElubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJvdG90eXBlTWFw
LmgiCisjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
aW5saW5lIFRyaVN0YXRlIFByb3RvdHlwZU1hcDo6aXNQcm90b3R5cGUoSlNPYmplY3QqIG9iamVj
dCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJvdG90eXBlcy5jb250YWlucyhvYmplY3QpKQorICAg
ICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKworICAgIC8vIFdlIGtub3cgdGhhdCAnb2JqZWN0
JyB3YXMgdXNlZCBhcyBhIHByb3RvdHlwZSBhdCBvbmUgdGltZSwgc28gYmUKKyAgICAvLyBjb25z
ZXJ2YXRpdmUgYW5kIHNheSB0aGF0IGl0IG1pZ2h0IHN0aWxsIGJlIHNvLiAoSXQgd291bGQgYmUg
ZXhwZW5zaXZlCisgICAgLy8gdG8gZmluZCBvdXQgZm9yIHN1cmUsIGFuZCB3ZSBkb24ndCBrbm93
IG9mIGFueSBjYXNlcyB3aGVyZSBiZWluZyBwcmVjaXNlCisgICAgLy8gd291bGQgaW1wcm92ZSBw
ZXJmb3JtYW5jZS4pCisgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNo
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENh
Y2hlLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJSZWdFeHBLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJXZWFrLmgiCi0j
aW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGlu
Z1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCiAjaW5jbHVkZSAiTWFy
a2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlBDVG9Db2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVk
ZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCShyZXZpc2lvbiAyMDYw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFdlYWtHQ01hcF9oCiAK
ICNpbmNsdWRlICJXZWFrLmgiCi0jaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgxLDE5ICs4MCw5IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGl0ZXJhdG9yIGZpbmQoY29u
c3QgS2V5VHlwZSYga2V5KQotICAgIHsKLSAgICAgICAgaXRlcmF0b3IgaXQgPSBtX21hcC5maW5k
KGtleSk7Ci0gICAgICAgIGl0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOwotICAgICAgICBpZiAo
aXQgIT0gZW5kICYmICFpdC0+dmFsdWUpIC8vIEZvdW5kIGEgem9tYmllIHZhbHVlLgotICAgICAg
ICAgICAgcmV0dXJuIGVuZDsKLSAgICAgICAgcmV0dXJuIGl0OwotICAgIH0KKyAgICBpbmxpbmUg
aXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpOwogCi0gICAgY29uc3RfaXRlcmF0b3Ig
ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29u
c3RfY2FzdDxXZWFrR0NNYXAqPih0aGlzKS0+ZmluZChrZXkpOwotICAgIH0KKyAgICBpbmxpbmUg
Y29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0OwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckVhY2goRnVuY3RvciBmdW5jdG9y
KQpAQCAtMTA0LDEyICs5Myw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJv
b2wgY29udGFpbnMoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZpbmQoa2V5KSAhPSBtX21hcC5lbmQoKTsKLSAgICB9CisgICAgaW5saW5lIGJvb2wgY29u
dGFpbnMoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdDsKIAotICAgIHZvaWQgcHJ1bmVTdGFsZUVu
dHJpZXMoKTsKKyAgICBpbmxpbmUgdm9pZCBwcnVuZVN0YWxlRW50cmllcygpOwogCiBwcml2YXRl
OgogICAgIEhhc2hNYXBUeXBlIG1fbWFwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaAkocmV2aXNpb24gMjA2MDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
V2Vha0dDTWFwLmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTQ3LDYgKzQ4LDI4IEBAIGlubGluZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywg
SGFzaEEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywg
dHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIHR5cGVuYW1l
IFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjppdGVy
YXRvciBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6
ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpCit7CisgICAgaXRlcmF0b3IgaXQgPSBtX21hcC5maW5k
KGtleSk7CisgICAgaXRlcmF0b3IgZW5kID0gbV9tYXAuZW5kKCk7CisgICAgaWYgKGl0ICE9IGVu
ZCAmJiAhaXQtPnZhbHVlKSAvLyBGb3VuZCBhIHpvbWJpZSB2YWx1ZS4KKyAgICAgICAgcmV0dXJu
IGVuZDsKKyAgICByZXR1cm4gaXQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlw
ZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4K
K2lubGluZSB0eXBlbmFtZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5
VHJhaXRzQXJnPjo6Y29uc3RfaXRlcmF0b3IgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhh
c2hBcmcsIEtleVRyYWl0c0FyZz46OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAorewor
ICAgIHJldHVybiBjb25zdF9jYXN0PFdlYWtHQ01hcCo+KHRoaXMpLT5maW5kKGtleSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhh
c2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KK2lubGluZSBib29sIFdlYWtHQ01hcDxLZXlB
cmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+Ojpjb250YWlucyhjb25zdCBLZXlU
eXBlJiBrZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBtX21hcC5lbmQoKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgogTkVWRVJfSU5MSU5FIHZvaWQgV2Vh
a0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46OnBydW5lU3Rh
bGVFbnRyaWVzKCkKIHsKICAgICBtX21hcC5yZW1vdmVJZihbXSh0eXBlbmFtZSBIYXNoTWFwVHlw
ZTo6S2V5VmFsdWVQYWlyVHlwZSYgZW50cnkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNjAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRp
b25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNp
dG9yLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDYwMzEpCisrKyBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA5LTE2ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0
ZSB0cmFja2luZyBzdXBwb3J0IG92ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBUaGUgbWFpbiBjaGFuZ2UgaGVyZSBpcyB0byBicmluZyBiYWNrIEZhc3RCaXRWZWN0b3IuY3Bw
LCBzbyB0aGF0IEkgY291bGQgb3V0bGluZSBzb21lCisgICAgICAgIGxhcmdlIHNsb3cgcGF0aCBm
dW5jdGlvbnMuIFRoaXMgYWxzbyBhZGRzIHNvbWUgdXRpbGl0aWVzLCBsaWtlIGF0b21pY1NldEFu
ZENoZWNrKCkgYW5kCisgICAgICAgIGlzRW1wdHkoKS4gVGhlIEdDIHVzZXMgdGhlc2UuCisKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6c2V0RXF1YWxzU2xvdyk6CisgICAg
ICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZVNsb3cpOgorICAgICAgICAq
IHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3du
ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJl
c2l6ZSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjppc0VtcHR5KToKKyAgICAg
ICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6YXRvbWljU2V0QW5kQ2hlY2spOgorICAgICAgICAoV1RG
OjpGYXN0Qml0VmVjdG9yOjpvcGVyYXRvcltdKTogRGVsZXRlZC4KKwogMjAxNi0wOS0xNiAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBpc1ZhbGlk
RW51bSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgR0NDCkluZGV4OiBTb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAkJMEY0NTcwNDMxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQyMUJF
NUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi87IH07CiAJCTBGNDU3MDQ1MUJFODM0NDEw
MDYyQTYyOSAvKiBCdWJibGVTb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICov
OyB9OwogCQkwRjcyNUNBQzFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzI1Q0FCMUM1MDQ2MTYwMEFE
OTQzQSAvKiBSYW5nZVNldC5oICovOyB9OworCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyog
RmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi87
IH07CiAJCTBGODI0QTY4MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY0MUI3NDQzQTAw
MDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLzsgfTsKIAkJMEY4MjRBNjkxQjc0NDNBMDAwMkUz
NDVEIC8qIFBhcmtpbmdMb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi87IH07
CiAJCTBGODcxMDVBMTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTA1OTE2NjQzRjE5MDA5MEIw
QUQgLyogUmF3UG9pbnRlci5oICovOyB9OwpAQCAtMzY2LDYgKzM2Nyw3IEBACiAJCTBGNDU3MDQy
MUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERvbWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0
NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnViYmxlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY0MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5n
TG90LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmtpbmdMb3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0
NUQgLyogUGFya2luZ0xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJr
aW5nTG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODcxMDU5MTY2NDNGMTkw
MDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJhd1BvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4MCw2ICs4ODIs
NyBAQAogCQkJCUE4QTQ3Mjk4MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9hLmggKi8sCiAJCQkJMUFF
QTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1UcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5RjE1
MUE4MjVBMDA0MTIzRkYgLyogRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJMEY3QzVGQjUxRDg4NUNG
MjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovLAogCQkJCTBGRDgxQUM0MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8sCiAJCQkJQThBNDcyQTExNTFBODI1QTAwNDEy
M0ZGIC8qIEZhc3RNYWxsb2MuY3BwICovLAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAv
KiBGYXN0TWFsbG9jLmggKi8sCkBAIC0xNTk0LDYgKzE1OTcsNyBAQAogCQkJCUNENTQ5N0FDMTU4
NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDcz
RUMxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjcxNTFBODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2Nh
dG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZG
IC8qIE9TUmFuZG9tU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDAyMTUxQTgy
NUIwMDQxMjNGRiAvKiBQYWdlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBzZXQoV1RGX1NPVVJDRVMK
ICAgICBEYXRhTG9nLmNwcAogICAgIERhdGVNYXRoLmNwcAogICAgIERlY2ltYWxOdW1iZXIuY3Bw
CisgICAgRmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZpbGVQcmlu
dFN0cmVhbS5jcHAKICAgICBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJGYXN0Qml0VmVjdG9yLmgiCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIEZhc3RCaXRW
ZWN0b3JXb3JkT3duZXI6OnNldEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25l
ciYgb3RoZXIpCit7CisgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMy
X3QqPigKKyAgICAgICAgZmFzdENhbGxvYyhvdGhlci5hcnJheUxlbmd0aCgpLCBzaXplb2YodWlu
dDMyX3QpKSk7CisgICAgbWVtY3B5KG5ld0FycmF5LCBvdGhlci5tX3dvcmRzLCBvdGhlci5hcnJh
eUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgaWYgKG1fd29yZHMpCisgICAgICAg
IGZhc3RGcmVlKG1fd29yZHMpOworICAgIG1fd29yZHMgPSBuZXdBcnJheTsKKyAgICBtX251bUJp
dHMgPSBvdGhlci5tX251bUJpdHM7Cit9CisKK3ZvaWQgRmFzdEJpdFZlY3RvcldvcmRPd25lcjo6
cmVzaXplU2xvdyhzaXplX3QgbnVtQml0cykKK3sKKyAgICBzaXplX3QgbmV3TGVuZ3RoID0gZmFz
dEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpOworICAgIAorICAgIC8vIFVzZSBmYXN0Q2Fs
bG9jIGluc3RlYWQgb2YgZmFzdFJlYWxsb2MgYmVjYXVzZSB3ZSBleHBlY3QgdGhlIGNvbW1vbgor
ICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNp
emUgb2YgdGhlIGJpdHZlY3Rvci4KKyAgICAKKyAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobmV3TGVuZ3RoLCBzaXplb2YodWludDMyX3Qp
KSk7CisgICAgbWVtY3B5KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9m
KHVpbnQzMl90KSk7CisgICAgaWYgKG1fd29yZHMpCisgICAgICAgIGZhc3RGcmVlKG1fd29yZHMp
OworICAgIG1fd29yZHMgPSBuZXdBcnJheTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJKHJldmlzaW9uIDIwNjAzMSkKKysrIFNvdXJjZS9XVEYv
d3RmL0Zhc3RCaXRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5o
PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtOTEsMTcgKzkyLDEyIEBAIHB1
YmxpYzoKICAgICAKICAgICBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvcGVyYXRvcj0oY29uc3Qg
RmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCiAgICAgewotICAgICAgICBzaXplX3QgbGVu
Z3RoID0gb3RoZXIuYXJyYXlMZW5ndGgoKTsKLSAgICAgICAgaWYgKGxlbmd0aCA9PSBhcnJheUxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICBtZW1jcHkobV93b3Jkcywgb3RoZXIubV93b3JkcywgbGVu
Z3RoICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
ICAgIGlmIChhcnJheUxlbmd0aCgpICE9IG90aGVyLmFycmF5TGVuZ3RoKCkpCisgICAgICAgICAg
ICBzZXRFcXVhbHNTbG93KG90aGVyKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1j
cHkobV93b3Jkcywgb3RoZXIubV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJf
dCkpOworICAgICAgICAgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwogICAgICAgICB9
Ci0gICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFz
dENhbGxvYyhsZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKLSAgICAgICAgbWVtY3B5KG5ld0Fy
cmF5LCBvdGhlci5tX3dvcmRzLCBsZW5ndGggKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAg
aWYgKG1fd29yZHMpCi0gICAgICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAgbV93
b3JkcyA9IG5ld0FycmF5OwotICAgICAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7CiAg
ICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAgICAgCkBAIC0xNDAsMTggKzEzNiw4IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIHJlc2l6ZShzaXplX3QgbnVtQml0cykKICAgICB7Ci0gICAg
ICAgIGlmIChudW1CaXRzID09IG1fbnVtQml0cykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCi0gICAgICAgIC8vIFVzZSBmYXN0Q2FsbG9jIGluc3RlYWQgb2YgZmFzdFJlYWxsb2MgYmVj
YXVzZSB3ZSBleHBlY3QgdGhlIGNvbW1vbgotICAgICAgICAvLyB1c2UgY2FzZSBmb3IgdGhpcyBt
ZXRob2QgdG8gYmUgaW5pdGlhbGl6aW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3IuCi0gICAg
ICAgIAotICAgICAgICBzaXplX3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3Ro
KG51bUJpdHMpOwotICAgICAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdCo+KGZhc3RDYWxsb2MobmV3TGVuZ3RoLCBzaXplb2YodWludDMyX3QpKSk7Ci0gICAgICAg
IG1lbWNweShuZXdBcnJheSwgbV93b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJf
dCkpOwotICAgICAgICBpZiAobV93b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fd29yZHMp
OwotICAgICAgICBtX3dvcmRzID0gbmV3QXJyYXk7CisgICAgICAgIGlmIChhcnJheUxlbmd0aCgp
ICE9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKSkKKyAgICAgICAgICAgIHJlc2l6
ZVNsb3cobnVtQml0cyk7CiAgICAgICAgIG1fbnVtQml0cyA9IG51bUJpdHM7CiAgICAgfQogICAg
IApAQCAtMTcxLDYgKzE1Nyw5IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCogd29yZHMoKSB7IHJl
dHVybiBtX3dvcmRzOyB9CiAKIHByaXZhdGU6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0RXF1YWxzU2xvdyhjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzaXplU2xvdyhzaXplX3QgbnVtQml0cyk7CisgICAg
CiAgICAgdWludDMyX3QqIG1fd29yZHMgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fbnVtQml0
cyB7IDAgfTsKIH07CkBAIC0zMjAsNiArMzA5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gYXJyYXlMZW5ndGgoKTsgaW5kZXgtLTspIHsKKyAg
ICAgICAgICAgIGlmIChtX3dvcmRzLndvcmQoaW5kZXgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KICAgICBGYXN0Qml0VmVjdG9ySW1wbDxG
YXN0Qml0VmVjdG9yQW5kV29yZHM8dHlwZW5hbWUgV29yZHM6OlZpZXdUeXBlLCB0eXBlbmFtZSBP
dGhlcldvcmRzOjpWaWV3VHlwZT4+IG9wZXJhdG9yJihjb25zdCBGYXN0Qml0VmVjdG9ySW1wbDxP
dGhlcldvcmRzPiYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtMzgwLDcgKzM3OCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gd3JpdHRlbiB0aGlzIHdheSBzbyB0aGF0IGl0IHBlcmZvcm1zIHdlbGwg
cmVnYXJkbGVzcyBvZiB3aGV0aGVyIHZhbHVlIGlzIGEgY29uc3RhbnQuCiAgICAgICAgIHVpbnQz
Ml90IHNraXBWYWx1ZSA9IC0oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSBeIDEpOwogICAg
ICAgICAKLSAgICAgICAgc2l6ZV90IG51bVdvcmRzID0gbV93b3Jkcy5hcnJheUxlbmd0aCgpOwor
ICAgICAgICBzaXplX3QgbnVtV29yZHMgPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobV93b3Jk
cy5udW1CaXRzKCkpOwogICAgICAgICAKICAgICAgICAgc2l6ZV90IHdvcmRJbmRleCA9IHN0YXJ0
SW5kZXggLyAzMjsKICAgICAgICAgc2l6ZV90IHN0YXJ0SW5kZXhJbldvcmQgPSBzdGFydEluZGV4
IC0gd29yZEluZGV4ICogMzI7CkBAIC00NzEsNiArNDY5LDcgQEAgcHVibGljOgogICAgICAgICBt
X3dvcmRzLmNsZWFyQWxsKCk7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBj
b250ZW50cyBvZiB0aGlzIGJpdHZlY3RvciBjaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyV29yZHM+CiAgICAgYm9vbCBzZXRBbmRDaGVjayhjb25zdCBGYXN0Qml0VmVjdG9ySW1w
bDxPdGhlcldvcmRzPiYgb3RoZXIpCiAgICAgewpAQCAtNTUwLDYgKzU0OSwyOCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwogICAgIH0KKyAgICAKKyAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnRzIGNoYW5nZWQuCisgICAgQUxXQVlTX0lOTElORSBi
b29sIGF0b21pY1NldEFuZENoZWNrKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHVpbnQzMl90KiBwb2ludGVyID0gJm1fd29yZHMud29yZChpbmRleCA+PiA1KTsKKyAg
ICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKGluZGV4ICYgMzEpOworICAgICAgICBmb3IgKDs7
KSB7CisgICAgICAgICAgICB1aW50MzJfdCBvbGRWYWx1ZSA9ICpwb2ludGVyOworICAgICAgICAg
ICAgdWludDMyX3QgbmV3VmFsdWU7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICBpZiAob2xkVmFsdWUgJiBtYXNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSB8IG1hc2s7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghKG9sZFZhbHVlICYgbWFzaykp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBuZXdW
YWx1ZSA9IG9sZFZhbHVlICYgfm1hc2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
d2Vha0NvbXBhcmVBbmRTd2FwKHBvaW50ZXIsIG9sZFZhbHVlLCBuZXdWYWx1ZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmNwcAko
cmV2aXNpb24gMjA2MDMxKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkdDT2JzZXJ2
YXRpb24uaCIKIAogI2luY2x1ZGUgPGhlYXAvSGVhcElubGluZXMuaD4KKyNpbmNsdWRlIDxoZWFw
L1dlYWtJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MTAwKQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYt
MDktMTkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE1h
cmtlZEJsb2NrIHN0YXRlIHRyYWNraW5nIHN1cHBvcnQgb3ZlcmxhcHBlZCBhbGxvY2F0aW9uIGFu
ZCBtYXJraW5nIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjE1ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIFJlbW92ZSB0aGUgYWx3YXlzLXRyaWdnZXItY29weS1waGFzZSBjb25m
aWd1cmF0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKwog
MjAxNi0wOS0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQG5hdmVyY29ycC5jb20+CiAK
ICAgICAgICAgW0VGTF0gQnVtcCBlZmwgbGlicmFyeSB0byAxLjE4LjEKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cwkocmV2aXNpb24gMjA2MDMxKQorKysgVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtODY5LDEwICs4NjksNiBAQCBk
ZWYgcnVuRlRMRWFnZXJOb0NKSVRPU1JWYWxpZGF0aW9uCiAgICAgcnVuKCJmdGwtZWFnZXItbm8t
Y2ppdC1vc3ItdmFsaWRhdGlvbiIsICItLXZhbGlkYXRlRlRMT1NSRXhpdExpdmVuZXNzPXRydWUi
LCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TICsgRUFHRVJfT1BUSU9OUykpCiBlbmQK
IAotZGVmIHJ1bkFsd2F5c1RyaWdnZXJDb3B5UGhhc2UKLSAgICBydW4oImFsd2F5cy10cmlnZ2Vy
LWNvcHktcGhhc2UiLCAiLS1taW5IZWFwVXRpbGl6YXRpb249Mi4wIiwgIi0tbWluQ29waWVkQmxv
Y2tVdGlsaXphdGlvbj0yLjAiKQotZW5kCi0KIGRlZiBydW5Ob0NKSVROb0FTTwogICAgIHJ1bigi
bm8tY2ppdC1uby1hc28iLCAiLS11c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnM9
ZmFsc2UiLCAqTk9fQ0pJVF9PUFRJT05TKQogZW5kCkBAIC05MTAsNyArOTA2LDYgQEAgZGVmIGRl
ZmF1bHRSdW4KICAgICAgICAgZGVmYXVsdFF1aWNrUnVuCiAgICAgZWxzZQogICAgICAgICBydW5E
ZWZhdWx0Ci0gICAgICAgIHJ1bkFsd2F5c1RyaWdnZXJDb3B5UGhhc2UKICAgICAgICAgaWYgJGpp
dFRlc3RzCiAgICAgICAgICAgICBydW5Ob0xMSW50CiAgICAgICAgICAgICBydW5Ob0NKSVRWYWxp
ZGF0ZVBoYXNlcwpAQCAtOTM2LDcgKzkzMSw2IEBAIGRlZiBkZWZhdWx0Tm9Ob0xMSW50UnVuCiAg
ICAgICAgIGRlZmF1bHRRdWlja1J1bgogICAgIGVsc2UKICAgICAgICAgcnVuRGVmYXVsdAotICAg
ICAgICBydW5BbHdheXNUcmlnZ2VyQ29weVBoYXNlCiAgICAgICAgIGlmICRqaXRUZXN0cwogICAg
ICAgICAgICAgcnVuTm9DSklUVmFsaWRhdGVQaGFzZXMKICAgICAgICAgICAgIHJ1bkRGR0VhZ2Vy
CkBAIC05ODgsNyArOTgyLDYgQEAgZW5kCiAjIGJ5IGNvdW50aW5nIHJlY29tcGlsYXRpb25zLgog
ZGVmIGRlZmF1bHROb0VhZ2VyUnVuCiAgICAgcnVuRGVmYXVsdAotICAgIHJ1bkFsd2F5c1RyaWdn
ZXJDb3B5UGhhc2UKICAgICBpZiAkaml0VGVzdHMKICAgICAgICAgcnVuTm9MTEludAogICAgICAg
ICBydW5Ob0NKSVRWYWxpZGF0ZVBoYXNlcwpAQCAtMTAwMyw3ICs5OTYsNiBAQCBlbmQKIAogZGVm
IGRlZmF1bHROb1NhbXBsaW5nUHJvZmlsZXJSdW4KICAgICBydW5EZWZhdWx0Ci0gICAgcnVuQWx3
YXlzVHJpZ2dlckNvcHlQaGFzZQogICAgIGlmICRqaXRUZXN0cwogICAgICAgICBydW5Ob0xMSW50
CiAgICAgICAgIHJ1bk5vQ0pJVFZhbGlkYXRlUGhhc2VzCkBAIC0xMTQxLDcgKzExMzMsNiBAQCBl
bmQKIAogZGVmIHJ1bk1vZHVsZXMKICAgICBydW4oImRlZmF1bHQtbW9kdWxlcyIsICItbSIpCi0g
ICAgcnVuKCJhbHdheXMtdHJpZ2dlci1jb3B5LXBoYXNlLW1vZHVsZXMiLCAiLW0iLCAiLS1taW5I
ZWFwVXRpbGl6YXRpb249Mi4wIiwgIi0tbWluQ29waWVkQmxvY2tVdGlsaXphdGlvbj0yLjAiKQog
CiAgICAgaWYgISRqaXRUZXN0cwogICAgICAgICByZXR1cm4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289364</attachid>
            <date>2016-09-20 09:55:46 -0700</date>
            <delta_ts>2016-09-20 10:03:46 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>174568</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDYxNTApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE2LTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBwb3J0IG92
ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgYSBtaWNyb2JlbmNobWFy
ayBmb3Igd2h5IHdlIHdhbnQgdG8gcmVjbGFpbSBlbXB0eSBibG9ja3MgZnJvbSBvdGhlciBhbGxv
Y2F0b3JzLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNz
ZXMuanM6IEFkZGVkLgorCiAyMDE2LTA5LTIwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZGVkIHRlc3QgZm9yIHg4NiAzMi1iaXQgZmFp
bHVyZSBmb3IgSGFzT3duUHJvcGVydHkgbm9kZSBpbiBERkcuCkluZGV4OiBKU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9zd2l0Y2hpbmctc2l6ZS1jbGFzc2VzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNzZXMuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3dpdGNoaW5nLXNpemUtY2xhc3Nlcy5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsr
aSkgeworICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTAwMDAwOyArK2opCisgICAgICAgIG5ldyBB
cnJheSgxMCAqIGkpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjkzIEBACisyMDE2LTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBwb3J0
IG92ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDb25jdXJyZW50IEdDcyBt
dXN0IGFsbG93IGZvciBtdXRhdGlvbiBhbmQgYWxsb2NhdGlvbiBkdXJpbmcgY29sbGVjdGlvbi4g
V2UgYWxyZWFkeSBrbm93CisgICAgICAgIGhvdyB0byBtdXRhdGUgZHVyaW5nIGNvbGxlY3Rpb24u
IFdlIGhhdmUgYSB3cml0ZSBiYXJyaWVyIGZvciB0aGF0LiBBbGxvY2F0aW9uIGR1cmluZworICAg
ICAgICBjb2xsZWN0aW9uIGlzIG1vcmUgaW52b2x2ZWQ6IHRoZSBjb2xsZWN0b3IgbW9kaWZpZXMg
dGhlIHRoZSBtYXJrIGJpdHMsIGFzIHdlbGwgYXMgb3RoZXIKKyAgICAgICAga2luZHMgb2YgTWFy
a2VkQmxvY2sgc3RhdGUsIGluLXBsYWNlIGR1cmluZyBhIGNvbGxlY3Rpb24uIFRoZSBhbGxvY2F0
b3IgdXNlcyB0aGF0IHNhbWUKKyAgICAgICAgTWFya2VkQmxvY2sgc3RhdGUgdG8gZGVjaWRlIHdo
aWNoIHJlZ2lvbnMgb2YgbWVtb3J5IGFyZSBmcmVlLiBUaGlzIHdvcmtzIGlmIHRoZSBhbGxvY2F0
b3IKKyAgICAgICAgbmV2ZXIgcnVucyB3aGlsZSB0aGUgY29sbGVjdG9yIGlzIHJ1bm5pbmcsIGJ1
dCBpZiB3ZSB3YW50IHRvIGFsbG93IHRoZW0gdG8gcnVuIGF0IHRoZSBzYW1lCisgICAgICAgIHRp
bWUsIHRoZW4gd2UgbmVlZCB0byBoYXZlIHR3byB2ZXJzaW9ucyBvZiB0aGUgc3RhdGU6IG9uZSB2
ZXJzaW9uIGJ1aWx0IHVwIGJ5IHRoZQorICAgICAgICBjb2xsZWN0b3IgYW5kIGFub3RoZXIgY29u
c3VtZWQgYnkgdGhlIGFsbG9jYXRvci4gV2UgY2xlYXIgdGhlIGNvbGxlY3RvciBzdGF0ZSBhdCB0
aGUKKyAgICAgICAgYmVnaW5uaW5nIG9mIGNvbGxlY3Rpb24sIGFuZCBzcGxhdCB0aGUgY29sbGVj
dG9yIHN0YXRlIG9udG8gdGhlIGFsbG9jYXRvciBzdGF0ZSBhZnRlcgorICAgICAgICBjb2xsZWN0
aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjb3VsZCBiZSBzdXBlciBleHBlbnNpdmUsIGJ1
dCB3ZSBjYW4gbWFrZSBpdCBjaGVhcCB3aXRoIHNvbWUgY2xldmVybmVzcy4gVGhlIGJpZ2dlc3QK
KyAgICAgICAgb2JzZXJ2YXRpb24gaXMganVzdCB0aGF0IG1vc3Qgb2YgdGhlIHN0YXRlIGlzIGEg
aGFuZGZ1bCBvZiBiaXRzIHBlciBibG9jazogaXMgdGhlIGJsb2NrCisgICAgICAgIGZyZWUtbGlz
dGVkPyBpcyBpdCBjb21wbGV0ZWx5IGZ1bGw/IGNvbXBsZXRlbHkgZW1wdHk/IGluIHRoZSBpbmNy
ZW1lbnRhbCBzd2VlcGVyJ3MKKyAgICAgICAgc25hcHNob3Q/IGlzIGl0IHJldGlyZWQ/IGlzIGl0
IGluIGVkZW4/IFRoZXJlIGlzIGFsc28gc3RhdGUgaW5zaWRlIGJsb2NrcywgbGlrZSB0aGUgbWFy
aworICAgICAgICBiaXRzLCBidXQgSSBoYXZlIGEgc29saWQgcGxhbiB0aGVyZSBhbmQgSSdsbCBz
YXZlIGl0IGZvciBhbm90aGVyIHBhdGNoLiBPbmNlIHdlIHZpZXcgdGhlCisgICAgICAgIHN0YXRl
IG9mIGJsb2NrcyBhcyBiaXRzLCB3ZSBjYW4gcHV0IHRoYXQgc3RhdGUgaW50byBiaXR2ZWN0b3Jz
LCBzbyB0aGF0IGlmIHRoZSBjb2xsZWN0b3IKKyAgICAgICAgbmVlZHMgdG8gdHJhbnNmb3JtIHRo
ZSBzdGF0ZSBvZiBzb21lIGJsb2NrcywgaXQgY2FuIGRvIGl0IHdpdGggYSBzaW5nbGUgb3BlcmF0
aW9uIG92ZXIKKyAgICAgICAgYml0dmVjdG9ycy4gSSBsaWtlIHRvIHRoaW5rIG9mIHRoaXMgYXMg
MzItd2F5IHBhcmFsbGVsaXppbmcgYmxvY2sgb3BlcmF0aW9ucywgc2luY2UKKyAgICAgICAgZG9p
bmcgb25lIG9wZXJhdGlvbiBvbiBhIDMyLWJpdCB3b3JkIGluIG9uZSBvZiB0aG9zZSBiaXR2ZWN0
b3JzIGluc3RhbnRseSBhZmZlY3RzIDMyCisgICAgICAgIGJsb2Nrcy4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgY2hhbmdlIGNvbnZlcnRzIGFsbCBwcmV2aW91cyBjb2xsZWN0aW9ucyBvZiBNYXJr
ZWRCbG9ja3MsIGFsb25nIHdpdGggdGhlIE1hcmtlZEJsb2NrCisgICAgICAgIHN0YXRlLCBpbnRv
IDggYml0dmVjdG9ycyAobGl2ZSwgZW1wdHksIGFsbG9jYXRlZCwgY2FuQWxsb2NhdGVCdXROb3RF
bXB0eSwgZWRlbiwgdW5zd2VwdCwKKyAgICAgICAgbWFya2luZ05vdEVtcHR5LCBhbmQgbWFya2lu
Z1JldGlyZWQpLiBUaGUgYml0dmVjdG9ycyBzZXBhcmF0ZSBhbGxvY2F0b3Igc3RhdGUgKGVtcHR5
LAorICAgICAgICBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIGZyb20gbWFya2lu
ZyBzdGF0ZSAobWFya2luZ05vdEVtcHR5LCBtYXJraW5nUmV0aXJlZCkuCisgICAgICAgIAorICAg
ICAgICBBcyBhIG5pY2Ugc2lkZS1lZmZlY3Qgb2Ygc3dpdGNoaW5nIHRvIGJpdHZlY3RvcnMsIHdl
IGdldCBzaXplIGNsYXNzIHJlYmFsYW5jaW5nIGZvciBmcmVlLgorICAgICAgICBJdCB1c2VkIHRv
IGJlIHRoYXQgaWYgYSBNYXJrZWRBbGxvY2F0b3IgaGFkIGFuIGVtcHR5IGJsb2NrLCB3ZSB3b3Vs
ZCBvbmx5IGFsbG93IHRoYXQKKyAgICAgICAgbWVtb3J5IHRvIGJlIHJldXNlZCBieSBhIGRpZmZl
cmVudCBNYXJrZWRBbGxvY2F0b3IgaWYgd2UgZGlkIGFuIGluY3JlbWVudGFsIHN3ZWVwIG9yIGEK
KyAgICAgICAgZnVsbCBlYWdlciBzd2VlcC4gTm93IHdlIGh1bnQgZG93biBhbGwgZGVzdHJ1Y3Rv
cmxlc3MgZW1wdHkgYmxvY2tzIGJlZm9yZSBhbGxvY2F0aW5nIG5ldworICAgICAgICBNYXJrZWRC
bG9ja3MuIEl0IHdvdWxkIGJlIHJlbGF0aXZlbHkgZWFzeSB0byBhbHNvIGh1bnQgZG93biBkZXN0
cnVjdG9yIGVtcHR5IGJsb2NrcywgYnV0CisgICAgICAgIHRoZSB0aGVvcnkgaXMgdGhhdCB0aG9z
ZSBtaWdodCBiZSBleHBlbnNpdmUgdG8gc3dlZXAsIHNvIGl0IG1pZ2h0IHN0aWxsIGJlIGJldHRl
ciB0byBsZWF2ZQorICAgICAgICB0aG9zZSB0byB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIHBlcmYtbmV1dHJhbCBhbGwgYXJvdW5kLiBJ
IGRpZCBzb21lIHRlc3RzIHdpdGggdHdvIGRpZmZlcmVudCBraW5kcyBvZgorICAgICAgICBhbGxv
Y2F0aW9uIHN0cmF0ZWdpZXMgLSBzb21ldGhpbmcgdGhhdCBpcyBzb21ld2hhdCBlYXNpZXIgdG8g
ZG8gbm93IHRoYXQgeW91IGNhbiBsb29rIGZvcgorICAgICAgICBibG9ja3MgdGhhdCBhcmUgY2Fu
ZGlkYXRlcyBmb3IgYWxsb2NhdGlvbiBieSBqdXN0IHNjYW5uaW5nIHNvbWUgYml0dmVjdG9ycy4g
SSB0cmllZCB0d28KKyAgICAgICAgdmFyaWFudHM6CisgICAgICAgIAorICAgICAgICAtIEFsbG9j
YXRlIG91dCBvZiBub24tZW1wdHkgYmxvY2tzIGZpcnN0LCBsZWF2aW5nIGVtcHR5IGJsb2NrcyBm
b3IgbGFzdCBpbiBjYXNlIGEKKyAgICAgICAgICBkaWZmZXJlbnQgYWxsb2NhdG9yIG5lZWRlZCB0
aGVtLiBUaGlzIGlzIHNvcnQgb2YgYSBiZXN0LWZpdCBzdHJhdGVneS4gSSB0cmllZCB0aGlzCisg
ICAgICAgICAgZmlyc3QsIGFuZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFzOgorICAgICAgICAgIAor
ICAgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eS5m
aW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSkKKyAgICAgICAgCisgICAgICAgIC0gQWxs
b2NhdGUgb3V0IG9mIGxvd2VyLWluZGV4ZWQgYmxvY2tzIGZpcnN0LCB0cmVhdGluZyBlbXB0eSBh
bmQgY2FuQWxsb2NhdGVCdXROb3RFbXB0eQorICAgICAgICAgIGJsb2NrcyBlcXVhbGx5LiBUaGlz
IGlzIHNvcnQgb2YgYSBmaXJzdC1maXQgc3RyYXRlZ3kuIFRoaXMgaXMgd2hhdCBJIGVuZGVkIHVw
IHNldHRsaW5nCisgICAgICAgICAgb24sIGFuZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFzOgorICAg
ICAgICAgIAorICAgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9jYXRlQnV0
Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSkKKyAg
ICAgICAgCisgICAgICAgIFRoZSBiZXN0LWZpdCBzdHJhdGVneSBtZWFudCAxJSByZWdyZXNzaW9u
cyBpbiBMb25nU3BpZGVyIGFuZCBPY3RhbmUgb3ZlcmFsbCwgYW5kIGEgMTElCisgICAgICAgIHJl
Z3Jlc3Npb24gb24gT2N0YW5lL2VhcmxleS4gRmlyc3QtZml0IG1lYW5zIHBlcmYtbmV1dHJhbGl0
eS4gTW9zdCBncmVhdCBhbGxvY2F0b3JzIHNrZXcKKyAgICAgICAgdG93YXJkcyBmaXJzdC1maXQg
YmVjYXVzZSBpdCdzIGVtcGlyaWNhbGx5IGJldHRlciwgc28gdGhpcyByZXN1bHQgaXMgbm90IHN1
cnByaXNpbmcuCisgICAgICAgIAorICAgICAgICBPdmVyYWxsLCB0aGUgcGVyZm9ybWFuY2Ugb2Yg
dGhpcyBwYXRjaCBvbiBteSBtYWNoaW5lIGlzIGFzIGZvbGxvd3MsIHdoZXJlICJuZXV0cmFsIiBt
ZWFucworICAgICAgICBsZXNzIHRoYW4gMSUgYW5kIG5vdCBzdGF0aXN0aWNhbGx5IHNpZ25pZmlj
YW50LgorICAgICAgICAKKyAgICAgICAgcnVuLWpzYy1iZW5jaG1hcmtzOgorICAgICAgICAgICAg
U3VuU3BpZGVyOiBuZXV0cmFsCisgICAgICAgICAgICBMb25nU3BpZGVyOiAwLjYlIHNsb3dlcgor
ICAgICAgICAgICAgVjhTcGlkZXI6IG5ldXRyYWwKKyAgICAgICAgICAgIE9jdGFuZTogbmV1dHJh
bAorICAgICAgICAgICAgS3Jha2VuOiBuZXV0cmFsCisgICAgICAgICAgICBNaWNyb2JlbmNobWFy
a3M6IDAuMzclIHNsb3dlcgorICAgICAgICAgICAgQXNtQmVuY2g6IG5ldXRyYWwKKyAgICAgICAg
ICAgIENvbXByZXNzaW9uQmVuY2g6IG1heWJlIDElIGZhc3RlcgorICAgICAgICAKKyAgICAgICAg
Rm9yIGJyb3dzZXIgYmVuY2htYXJrcywgSSByZXBvcnQgdGhlIHJhdGlvIG9mIG1lYW5zIChiaWdn
ZXIgLyBzbWFsbGVyKSBhbG9uZyB3aXRoIGEgVC10ZXN0CisgICAgICAgIGZyb20gTWF0aGVtYXRp
Y2EgcmVwb3J0ZWQgYXMgJSBjaGFuY2Ugb2Ygbm90IFtzaWNdIHRoZSBudWxsIGh5cG90aGVzaXMu
IE5vdGUgdGhhdCB3ZQorICAgICAgICBub3JtYWxseSBjb25zaWRlciBhbnl0aGluZyBsZXNzIHRo
YW4gOTUlIGNvbmZpZGVuY2UgdG8gYmUgaW5jb25jbHVzaXZlLgorICAgICAgICAKKyAgICAgICAg
QnJvd3NlciBiZW5jaG1hcmtzOgorICAgICAgICAgICAgUExUMzogMC4zJSBmYXN0ZXIgd2l0aCA2
NyUgY29uZmlkZW5jZQorICAgICAgICAgICAgbWVtYnVzdGVyOgorICAgICAgICAgICAgICAgIFNu
YXAyRmluaXNoZWRMb2FkaW5nUG9zdDogMC42OCUgbW9yZSBtZW1vcnkgd2l0aCA1MCUgY29uZmlk
ZW5jZQorICAgICAgICAgICAgICAgIFNuYXAzRW5kUG9zdDogMi40JSBtb3JlIG1lbW9yeSB3aXRo
IDYxJSBjb25maWRlbmNlCisgICAgICAgICAgICBKZXRTdHJlYW06IDAuMiUgc2xvd2VyIHdpdGgg
MzIlIGNvbmZpZGVuY2UKKyAgICAgICAgICAgIFNwZWVkb21ldGVyOiAwLjclIGZhc3RlciB3aXRo
IDgyJSBjb25maWRlbmNlCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAg
KiBoZWFwL0NlbGxDb250YWluZXIuaDoKKyAgICAgICAgKiBoZWFwL0NlbGxDb250YWluZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OnZtKToKKyAgICAgICAgKEpTQzo6
Q2VsbENvbnRhaW5lcjo6aGVhcCk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmlzTWFy
a2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmFib3V0
VG9NYXJrKToKKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6aXNNYXJrZWQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmJlZ2luTWFya2luZyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2Fy
YmFnZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJbXBsKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6c25hcHNob3RNYXJrZWRTcGFjZSk6CisgICAgICAgIChKU0M6OkhlYXA6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6em9tYmlmeURlYWRPYmplY3RzKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3I6Ok1hcmtlZEJsb2NrU25h
cHNob3RGdW5jdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTbmFwc2hv
dEZ1bmN0b3I6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpyZXNl
dEFsbG9jYXRvcnMpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAq
IGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWQpOgorICAg
ICAgICAoSlNDOjpIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6Okhl
YXA6OnRlc3RBbmRTZXRNYXJrZWQpOgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuY3Bw
OgorICAgICAgICAqIGhlYXAvSGVhcFV0aWwuaDoKKyAgICAgICAgKEpTQzo6SGVhcFV0aWw6OmZp
bmRHQ09iamVjdFBvaW50ZXJzRm9yTWFya2luZyk6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpp
c1BvaW50ZXJHQ09iamVjdEpTQ2VsbCk6CisgICAgICAgICogaGVhcC9IZWFwVmVyaWZpZXIuY3Bw
OgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJ
bmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXApOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVy
OjpzdGFydFN3ZWVwaW5nKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjp3aWxs
RmluaXNoU3dlZXBpbmcpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6Cisg
ICAgICAgICogaGVhcC9MYXJnZUFsbG9jYXRpb24uaDoKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxv
Y2F0aW9uOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJr
ZWRDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6YWJvdXRU
b01hcmspOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmlzTWFya2VkRHVyaW5nV2Vh
a1Zpc2l0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjpmbGlw
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmZs
aXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFy
a2VkQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpNYXJrZWRB
bGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZpbmRFbXB0eUJsb2NrKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nSW1wbCk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbik6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUltcGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OnRyeUFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0
b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9j
ayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnByZXBhcmVGb3JBbGxvY2F0aW9uKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEFsbG9jYXRvcjo6YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRWRlbkNvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OnNuYXBzaG90Rm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlND
OjpNYXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1RvU3dlZXApOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzaHJp
bmspOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFzc2VydFNuYXBzaG90RW1wdHkp
OgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmR1bXApOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OmR1bXBCaXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9y
OjpyZXRpcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZpbHRl
ck5leHRCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0
TmV4dEJsb2NrVG9Td2VlcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJpdFZlY3Rvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpuZXh0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQWxsb2NhdG9yOjpzZXROZXh0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OnJlc3VtZUFsbG9jYXRpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6fkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJrZWRC
bG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dl
ZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2Rl
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RF
bXB0eU1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBl
clNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6dW5zd2VlcFdpdGhOb05ld2x5QWxsb2NhdGVkKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c2V0SXNGcmVlTGlzdGVkKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVk
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om1hcmtDb3VudCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6bm90ZU1hcmtlZFNsb3cpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpy
ZW1vdmVGcm9tQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
ZGlkQWRkVG9BbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpk
aWRSZW1vdmVGcm9tQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2Vs
bCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0
U3RhdGVBbmRTd2VlcE1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3cpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjp3aWxsUmVtb3ZlQmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpwcmludEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01h
cmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRnJlZUxp
c3RlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmluZGV4KToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkQ29u
Y3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzT25C
bG9ja3NUb1N3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6c2V0SXNPbkJsb2Nrc1RvU3dlZXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpzdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwRm9yRWRlbkNv
bGxlY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRE
dXJpbmdXZWFrVmlzaXRpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc0xpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Okhh
bmRsZTo6Zm9yRWFjaExpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNTd2VlcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzQWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWQpOiBEZWxldGVkLgorICAgICAgICAqIGhl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6SGFuZGxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExp
dmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRD
ZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0VmVyc2lvbik6CisgICAgICAg
ICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJr
ZWRTcGFjZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzaHJpbmspOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZW5kTWFy
a2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2spOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZmluZEVtcHR5QmxvY2spOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6c25hcHNob3QpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YXNz
ZXJ0U25hcHNob3RFbXB0eSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkdW1wQml0cyk6
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp6b21iaWZ5U3dlZXApOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6VmVyaWZ5TWFya2VkOjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6OmZsaXApOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkU3Bh
Y2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5leHRWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OmZpcnN0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmJs
b2Nrc1dpdGhOZXdPYmplY3RzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OnNldElzTWFya2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JF
YWNoTGl2ZUNlbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFj
aERlYWRDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlSW5saW5lcy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwpOgorICAgICAgICAqIGhl
YXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6c2V0TWFya2Vk
QW5kQXBwZW5kVG9NYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6bWFya0F1
eGlsaWFyeSk6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBoZWFwL1dlYWsuaDoKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8
VD4+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+
OjpwZWVrKToKKyAgICAgICAgKiBoZWFwL1dlYWtCbG9jay5jcHA6CisgICAgICAgIChKU0M6Oldl
YWtCbG9jazo6c3BlY2lhbGl6ZWRWaXNpdCk6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6cmVh
cCk6CisgICAgICAgICogaGVhcC9XZWFrSW5saW5lcy5oOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPEpTQzo6V2VhazxUPj46OmVtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPEpTQzo6V2VhazxUPj46OnBlZWspOiBEZWxldGVkLgorICAgICAgICAqIGppdC9K
SVRUaHVua3MuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb3RvdHlwZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHA6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKiB0
b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcDoKKwogMjAxNi0wOS0yMCAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGZpeCBmb3IgMzItYml0
IERGRyB4ODYgaW1wbGVtZW50YXRpb24gb2YgSGFzT3duUHJvcGVydHkuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5OCw2ICs0OTgsOCBAQAogCQkwRjdDMzlGQjFDOEY2MjkzMDA0ODAxNTEgLyog
UmVnRXhwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLzsgfTsK
IAkJMEY3QzM5RkQxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZDMUM4RjY1
OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZGMUM5
MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8u
aCAqLzsgfTsKKwkJMEY3QzVGQjgxRDg4OEEwQzAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVG
QjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovOyB9OworCQkwRjdD
NUZCQTFEODg5NTA3MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDNUZCOTFEODg5NTA1MDA0NEY1
RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEw
QkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC01NzYsNiArNTc4LDcgQEAKIAkJMEY5RkI0RjQxN0ZDQjkxNzAwQ0I2
N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkI0RjIxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNr
TGF5b3V0UGhhc2UuY3BwICovOyB9OwogCQkwRjlGQjRGNTE3RkNCOTE3MDBDQjY3RjggLyogREZH
U3RhY2tMYXlvdXRQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5RkI0RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2Uu
aCAqLzsgfTsKIAkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEMxMTRFMUI1RkIw
MEQ1MkFFMCAvKiBQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEZBMTMxNzExRDhERDcyQjAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QTEzMTcwMUQ4REQ3MjkwMEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggKi87IH07CiAJ
CTBGQTJDMTdCMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMkMxNzkxN0Q3Q0Y4NDAw
OUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJCTBGQTJDMTdDMTdEN0NGODQw
MDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTJDMTdBMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVy
VXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRkE1ODFCQTE1MEU5NTJDMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI3MTUwRTk1MkEwMEI5
QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwICovOyB9OwpAQCAtNjEwLDYgKzYxMyw3IEBACiAJCTBG
QjRGQjczMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEZCNzAxQkM4NDMxNDAwMjVD
QTVBIC8qIEZUTExhenlTbG93UGF0aC5jcHAgKi87IH07CiAJCTBGQjRGQjc0MUJDODQzMTQwMDI1
Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQjRGQjcxMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1Bh
dGguaCAqLzsgfTsKIAkJMEZCNEZCNzUxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0
aENhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QjRGQjcyMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGhDYWxsLmggKi87IH07CisJ
CTBGQjUzMDM5MUQ5MDQwNEMwMEYyOEFFMyAvKiBBbGxvY2F0aW9uU2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjUzMDM4MUQ5MDQwNDYwMEYy
OEFFMyAvKiBBbGxvY2F0aW9uU2NvcGUuaCAqLzsgfTsKIAkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMy
OTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRkI1NDY3OTE0RjVDNDZCMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNw
cCAqLzsgfTsKIAkJMEZCNTQ2N0IxNEY1QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTI3MzEsNiArMjczNSw4IEBACiAJCTBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUx
IC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5oOyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFy
a2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtl
ZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDNUZCOTFE
ODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1
QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgwOCw2ICsyODE0LDcgQEAKIAkJMEY5RkI0RjIxN0ZD
QjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHBhdGggPSBkZmcv
REZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0YWNrTGF5b3V0UGhhc2UuaDsgcGF0aCA9IGRm
Zy9ERkdTdGFja0xheW91dFBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFB1dEtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZB
MTMxNzAxRDhERDcyOTAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdG90eXBlTWFwSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkEyQzE3OTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5l
clV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RSdW5u
ZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTJDMTdBMTdEN0NG
ODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZUZsYWdzLmNwcDsgcGF0aCA9IGRmZy9E
RkdOb2RlRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg1Miw2ICsy
ODU5LDcgQEAKIAkJMEZCNEZCNzAxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGgu
Y3BwOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQjRGQjcxMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoLmg7IHBhdGgg
PSBmdGwvRlRMTGF6eVNsb3dQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
QjRGQjcyMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGhDYWxsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTExhenlTbG93UGF0aENhbGwuaDsgcGF0aCA9IGZ0
bC9GVExMYXp5U2xvd1BhdGhDYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
QjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAvKiBBbGxvY2F0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsb2NhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3ODE0RjVD
NDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MjU1LDYgKzUyNjMsNyBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUg
LyogaGVhcCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MEZCNTMwMzgxRDkwNDA0NjAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovLAogCQkJCTBG
OTYzMDM1MUQ0MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVzLmNwcCAqLywKIAkJ
CQkwRjk2MzAzNjFENDE5MkMzMDA1NjA5RDkgLyogQWxsb2NhdG9yQXR0cmlidXRlcy5oICovLAog
CQkJCTBGMDcwQTQyMUQ1NDNBODkwMDZFNzIzMiAvKiBDZWxsQ29udGFpbmVyLmggKi8sCkBAIC01
MzM4LDkgKzUzNDcsMTEgQEAKIAkJCQlDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2Vk
QWxsb2NhdG9yLmggKi8sCiAJCQkJMTQyRDZGMDYxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJs
b2NrLmNwcCAqLywKIAkJCQkxNDJENkYwNzEzNTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2su
aCAqLywKKwkJCQkwRjdDNUZCNzFEODg4QTAxMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVz
LmggKi8sCiAJCQkJMTQxNDQ4Q0ExM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJsb2NrU2V0Lmgg
Ki8sCiAJCQkJMTREMkYzRDgxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmNwcCAqLywK
IAkJCQkxNEQyRjNEOTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuaCAqLywKKwkJCQkw
RjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggKi8sCiAJCQkJ
MTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8sCiAJCQkJMTQyRDZG
MEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAogCQkJCUFEREIxRjYyMThENzdE
QjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi8sCkBAIC02MDc2LDYgKzYwODcsNyBAQAog
CQkJCTY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi8sCiAJCQkJMTREODQ0
QTIxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlwZU1hcC5jcHAgKi8sCiAJCQkJMTREODQ0QTMx
NkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlwZU1hcC5oICovLAorCQkJCTBGQTEzMTcwMUQ4REQ3
MjkwMEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggKi8sCiAJCQkJNzlCMDBDQjgxQzZB
QjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuY3BwICovLAogCQkJCTc5QjAwQ0I5MUM2
QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzlCMDBDQkExQzZB
QjA3RTAwODhDNjVEIC8qIFByb3h5T2JqZWN0LmNwcCAqLywKQEAgLTczMTIsNiArNzMyNCw3IEBA
CiAJCQkJNjJENzU1RDcxQjg0RkI0QTAwMTgwMUZBIC8qIENhbGxGcmFtZVNodWZmbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjBCODNCMTE0QkNGNzE4MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZv
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzI5RTE0Q0E3REM1MDA4NUYzQzYgLyogQ2FsbExp
bmtTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjUzMDM5MUQ5MDQwNEMwMEYyOEFFMyAv
KiBBbGxvY2F0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyNzY3MzI0MUI2ODBDMUUw
MEZEOUYyRSAvKiBDYWxsTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1
RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzM5NCw2ICs3NDA3LDcgQEAKIAkJCQkwRjY2RTE2QjE0REYzRjE2MDBC
N0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMTgx
NkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYx
RTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgxNDFBQjNE
OEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmggaW4gSGVhZGVycyAq
LywKQEAgLTc4ODcsNiArNzkwMSw3IEBACiAJCQkJODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8q
IEpTRXhwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYg
LyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkVGMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZBMTMxNzEx
RDhERDcyQjAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkI2NkYwMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MUYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTExLDYgKzc5MjYsNyBAQAogCQkJCUE1MDNGQTJB
MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3OUEyMjgzNjFEMzVENzFGMDBEOEUwNjcgLyogQXJpdGhQcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0M1RkJBMUQ4ODk1MDcwMDQ0
RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMy
MTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzQ0MkNCMjUxQTZDREI4QzAwNUQzRDdDIC8qIEpTSW5wdXRzLmpzb24g
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGODE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQxNkFy
cmF5LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkJKHJldmlzaW9uIDIwNjE1
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weQkod29ya2luZyBjb3B5KQpAQCAtNjEs
OSArNjEsOCBAQCBjbGFzcyBCdWlsdGluc0ludGVybmFsc1dyYXBwZXJIZWFkZXJHZW5lCiAKICAg
ICBkZWYgZ2VuZXJhdGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKICAgICAgICAg
aGVhZGVyX2luY2x1ZGVzID0gWwotICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAotICAgICAgICAg
ICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIiksCi0gICAgICAgICAgICAp
LAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLCAoIkphdmFTY3JpcHRDb3JlIiwgImhlYXAvV2Vh
a0lubGluZXMuaCIpKSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwgKCJKYXZhU2NyaXB0Q29y
ZSIsICJydW50aW1lL1ZNLmgiKSkKICAgICAgICAgXQogICAgICAgICBmb3Igb2JqZWN0IGluIHNl
bGYuaW50ZXJuYWxzOgogICAgICAgICAgICAgaGVhZGVyX2luY2x1ZGVzLmFwcGVuZCgoWyJXZWJD
b3JlIl0sICgiV2ViQ29yZSIsIG9iamVjdC5vYmplY3RfbmFtZSArICJCdWlsdGlucy5oIikpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCShyZXZp
c2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgog
I2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIZWFwLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBBbGxvY2F0aW9uU2NvcGUgeworcHVibGljOgorICAgIEFs
bG9jYXRpb25TY29wZShIZWFwJiBoZWFwKQorICAgICAgICA6IG1faGVhcChoZWFwKQorICAgICAg
ICAsIG1fbGFzdE9wZXJhdGlvbihtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fbGFzdE9wZXJhdGlvbiA9PSBOb09wZXJhdGlvbiB8fCBtX2xhc3RP
cGVyYXRpb24gPT0gQWxsb2NhdGlvbik7CisgICAgICAgIG1faGVhcC5tX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPSBBbGxvY2F0aW9uOworICAgIH0KKyAgICAKKyAgICB+QWxsb2NhdGlvblNjb3BlKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID09IEFs
bG9jYXRpb24pOworICAgICAgICBtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID0gbV9sYXN0
T3BlcmF0aW9uOworICAgIH0KK3ByaXZhdGU6CisgICAgSGVhcCYgbV9oZWFwOworICAgIEhlYXBP
cGVyYXRpb24gbV9sYXN0T3BlcmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVyLmgJKHJldmlzaW9u
IDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitj
bGFzcyBIZWFwOwogY2xhc3MgSGVhcENlbGw7CiBjbGFzcyBMYXJnZUFsbG9jYXRpb247CiBjbGFz
cyBNYXJrZWRCbG9jazsKIGNsYXNzIFdlYWtTZXQ7CitjbGFzcyBWTTsKIAogdHlwZWRlZiB1aW50
MzJfdCBIZWFwVmVyc2lvbjsKIApAQCAtNTYsNiArNTgsOSBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KICAgICAKKyAgICBWTSogdm0oKSBjb25zdDsKKyAgICBIZWFwKiBoZWFwKCkgY29uc3Q7Cisg
ICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9lbmNv
ZGVkUG9pbnRlcjsgfQogICAgIAogICAgIGJvb2wgaXNNYXJrZWRCbG9jaygpIGNvbnN0IHsgcmV0
dXJuIG1fZW5jb2RlZFBvaW50ZXIgJiYgIShtX2VuY29kZWRQb2ludGVyICYgaXNMYXJnZUFsbG9j
YXRpb25CaXQpOyB9CkBAIC03MywxMyArNzgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
KmJpdHdpc2VfY2FzdDxMYXJnZUFsbG9jYXRpb24qPihtX2VuY29kZWRQb2ludGVyIC0gaXNMYXJn
ZUFsbG9jYXRpb25CaXQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeShI
ZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIGFib3V0
VG9NYXJrKEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxpcCgpIGNvbnN0OwogICAgIAot
ICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKICAgICBib29sIGlzTWFya2VkKEhlYXBDZWxsKikg
Y29uc3Q7CisgICAgYm9vbCBpc01hcmtlZChIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSBjb25zdDsK
ICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCopIGNvbnN0OworICAg
IGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBIZWFwQ2VsbCopIGNv
bnN0OwogICAgIAogICAgIHZvaWQgbm90ZU1hcmtlZCgpOwogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5oCShyZXZpc2lv
biAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVySW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNCArMjksMjAgQEAKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJMYXJnZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJNYXJrZWRCbG9j
ay5oIgorI2luY2x1ZGUgIlZNLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgYm9vbCBD
ZWxsQ29udGFpbmVyOjppc01hcmtlZCgpIGNvbnN0CitpbmxpbmUgVk0qIENlbGxDb250YWluZXI6
OnZtKCkgY29uc3QKIHsKICAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaGFuZGxlKCkuaXNNYXJrZWQoKTsK
KyAgICAgICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLnZtKCk7CisgICAgcmV0dXJuIG1hcmtl
ZEJsb2NrKCkudm0oKTsKK30KKworaW5saW5lIEhlYXAqIENlbGxDb250YWluZXI6OmhlYXAoKSBj
b25zdAoreworICAgIHJldHVybiAmdm0oKS0+aGVhcDsKIH0KIAogaW5saW5lIGJvb2wgQ2VsbENv
bnRhaW5lcjo6aXNNYXJrZWQoSGVhcENlbGwqIGNlbGwpIGNvbnN0CkBAIC00Niw2ICs1MiwxMyBA
QCBpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwCiAgICAgcmV0dXJuIG1h
cmtlZEJsb2NrKCkuaXNNYXJrZWQoY2VsbCk7CiB9CiAKK2lubGluZSBib29sIENlbGxDb250YWlu
ZXI6OmlzTWFya2VkKEhlYXBWZXJzaW9uIHZlcnNpb24sIEhlYXBDZWxsKiBjZWxsKSBjb25zdAor
eworICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAgICByZXR1cm4gbGFyZ2VBbGxv
Y2F0aW9uKCkuaXNNYXJrZWQoKTsKKyAgICByZXR1cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZCh2
ZXJzaW9uLCBjZWxsKTsKK30KKwogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKiBjZWxsKSBjb25zdAogewogICAgIGlmIChpc0xhcmdl
QWxsb2NhdGlvbigpKQpAQCAtNTMsNiArNjYsMTMgQEAgaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5l
cjo6aXNNYXJrZWRPck5ldwogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZChjZWxsKTsKIH0KIAoraW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIEhlYXBDZWxsKiBjZWxsKSBj
b25zdAoreworICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAgICByZXR1cm4gbGFy
Z2VBbGxvY2F0aW9uKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKCk7CisgICAgcmV0dXJuIG1h
cmtlZEJsb2NrKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHZlcnNpb24sIGNlbGwpOworfQor
CiBpbmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpub3RlTWFya2VkKCkKIHsKICAgICBpZiAoIWlz
TGFyZ2VBbGxvY2F0aW9uKCkpCkBAIC03MywxNiArOTMsMTAgQEAgaW5saW5lIFdlYWtTZXQmIENl
bGxDb250YWluZXI6OndlYWtTZXQoKQogICAgIHJldHVybiBtYXJrZWRCbG9jaygpLndlYWtTZXQo
KTsKIH0KIAotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBW
ZXJzaW9uIGhlYXBWZXJzaW9uKQotewotICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24oKSkKLSAg
ICAgICAgbWFya2VkQmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwotfQotCi1p
bmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpmbGlwSWZOZWNlc3NhcnkoKQoraW5saW5lIHZvaWQg
Q2VsbENvbnRhaW5lcjo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiB7CiAg
ICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICBtYXJrZWRCbG9jaygpLmZsaXBJ
Zk5lY2Vzc2FyeSgpOworICAgICAgICBtYXJrZWRCbG9jaygpLmFib3V0VG9NYXJrKGhlYXBWZXJz
aW9uKTsKIH0KIAogaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6bmVlZHNGbGlwKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290
cy5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
bnNlcnZhdGl2ZVJvb3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUg
IkpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5l
cy5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlj
a2VuLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCkBAIC01MjcsMTEgKzUyOCw5IEBAIHZv
aWQgSGVhcDo6YmVnaW5NYXJraW5nKCkKICAgICB9CiAgICAgCiAgICAgewotICAgICAgICBUaW1p
bmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmNsZWFy
TWFya3MiKTsKLSAgICAgICAgbV9vYmplY3RTcGFjZS5mbGlwKCk7CisgICAgICAgIFRpbWluZ1Nj
b3BlIGNsZWFyTWFya3NUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3BhY2UuYmVnaW5NYXJr
aW5nIik7CisgICAgICAgIG1fb2JqZWN0U3BhY2UuYmVnaW5NYXJraW5nKCk7CiAgICAgfQotICAg
IAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKHRydWUpOwogfQogCiB2b2lkIEhlYXA6
OnZpc2l0RXh0ZXJuYWxSZW1lbWJlcmVkU2V0KCkKQEAgLTc4MCw3ICs3NzksNyBAQCB2b2lkIEhl
YXA6OmVuZE1hcmtpbmcoKQogICAgIEFTU0VSVChtX3NoYXJlZE1hcmtTdGFjay5pc0VtcHR5KCkp
OwogICAgIG1fd2Vha1JlZmVyZW5jZUhhcnZlc3RlcnMucmVtb3ZlQWxsKCk7CiAgICAgCi0gICAg
bV9vYmplY3RTcGFjZS5zZXRJc01hcmtpbmcoZmFsc2UpOworICAgIG1fb2JqZWN0U3BhY2UuZW5k
TWFya2luZygpOwogfQogCiBzaXplX3QgSGVhcDo6b2JqZWN0Q291bnQoKQpAQCAtOTM3LDEwICs5
MzYsMTkgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgpCiAgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnVzZUltbW9ydGFsT2JqZWN0cygpKSkKICAgICAgICAgc3dlZXBlcigpLT53aWxs
RmluaXNoU3dlZXBpbmcoKTsKICAgICBlbHNlIHsKKyAgICAgICAgZG91YmxlIGJlZm9yZSA9IDA7
CisgICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJb
RnVsbCBzd2VlcDogIiwgY2FwYWNpdHkoKSAvIDEwMjQsICIga2IgIik7CisgICAgICAgICAgICBi
ZWZvcmUgPSBjdXJyZW50VGltZU1TKCk7CisgICAgICAgIH0KICAgICAgICAgbV9vYmplY3RTcGFj
ZS5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNwYWNlLnNocmluaygpOworICAgICAgICBpZiAo
T3B0aW9uczo6bG9nR0MoKSkgeworICAgICAgICAgICAgZG91YmxlIGFmdGVyID0gY3VycmVudFRp
bWVNUygpOworICAgICAgICAgICAgZGF0YUxvZygiPT4gIiwgY2FwYWNpdHkoKSAvIDEwMjQsICIg
a2IsICIsIGFmdGVyIC0gYmVmb3JlLCAiIG1zXVxuIik7CisgICAgICAgIH0KICAgICB9Ci0gICAg
QVNTRVJUKG1fYmxvY2tTbmFwc2hvdC5pc0VtcHR5KCkpOworICAgIG1fb2JqZWN0U3BhY2UuYXNz
ZXJ0Tm9VbnN3ZXB0KCk7CiAKICAgICBzd2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vha0Jsb2Nrcygp
OwogfQpAQCAtMTA0Myw3ICsxMDUxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVj
dEltcGwoSGVhcAogICAgIHJlYXBXZWFrSGFuZGxlcygpOwogICAgIHBydW5lU3RhbGVFbnRyaWVz
RnJvbVdlYWtHQ01hcHMoKTsKICAgICBzd2VlcEFycmF5QnVmZmVycygpOwotICAgIHNuYXBzaG90
TWFya2VkU3BhY2UoKTsKKyAgICBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICBmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzKCk7CiAgICAgcmVtb3ZlRGVhZENvbXBpbGVyV29ya2xpc3RFbnRy
aWVzKCk7CiAgICAgZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKTsKQEAgLTEwNTIsNyArMTA2
MCw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXAKICAgICBub3Rp
ZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRp
bmdDb2RlQmxvY2tzKCk7CiAKLSAgICByZXNldEFsbG9jYXRvcnMoKTsKKyAgICBwcmVwYXJlRm9y
QWxsb2NhdGlvbigpOwogICAgIHVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKICAgICBkaWRGaW5p
c2hDb2xsZWN0aW9uKGdjU3RhcnRUaW1lKTsKICAgICByZXN1bWVDb21waWxlclRocmVhZHMoKTsK
QEAgLTEwNjcsNiArMTA3NSwxMSBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1w
bChIZWFwCiAgICAgICAgIGRvdWJsZSBhZnRlciA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICAgICAg
ZGF0YUxvZyhhZnRlciAtIGJlZm9yZSwgIiBtc11cbiIpOwogICAgIH0KKyAgICAKKyAgICBpZiAo
ZmFsc2UpIHsKKyAgICAgICAgZGF0YUxvZygiSGVhcCBzdGF0ZSBhZnRlciBHQzpcbiIpOworICAg
ICAgICBtX29iamVjdFNwYWNlLmR1bXBCaXRzKCk7CisgICAgfQogfQogCiB2b2lkIEhlYXA6OnN3
ZWVwTGFyZ2VBbGxvY2F0aW9ucygpCkBAIC0xMTY2LDQ0ICsxMTc5LDEwIEBAIHZvaWQgSGVhcDo6
c3dlZXBBcnJheUJ1ZmZlcnMoKQogICAgIG1fYXJyYXlCdWZmZXJzLnN3ZWVwKCk7CiB9CiAKLXN0
cnVjdCBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9p
ZEZ1bmN0b3IgewotICAgIE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yKFZlY3RvcjxNYXJrZWRC
bG9jazo6SGFuZGxlKj4mIGJsb2NrcykgCi0gICAgICAgIDogbV9pbmRleCgwKSAKLSAgICAgICAg
LCBtX2Jsb2NrcyhibG9ja3MpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3IoKShN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QKLSAgICB7Ci0gICAgICAgIGJsb2NrLT5z
ZXRJc09uQmxvY2tzVG9Td2VlcCh0cnVlKTsKLSAgICAgICAgbV9ibG9ja3NbbV9pbmRleCsrXSA9
IGJsb2NrOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbXV0YWJsZSBmaWVsZCBi
ZWNhdWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAotICAgIG11dGFibGUgc2l6ZV90IG1faW5kZXg7
Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgbV9ibG9ja3M7Ci19OwotCi12b2lk
IEhlYXA6OnNuYXBzaG90TWFya2VkU3BhY2UoKQordm9pZCBIZWFwOjpzbmFwc2hvdFVuc3dlcHQo
KQogewotICAgIFRpbWluZ1Njb3BlIHRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6c25hcHNob3RN
YXJrZWRTcGFjZSIpOwotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSByZW5h
bWVkLiBJdCdzIG5vdCBhY3R1YWxseSBzbmFwc2hvdHRpbmcgYWxsIG9mIE1hcmtlZFNwYWNlLgot
ICAgIC8vIFRoaXMgaXMgdXNlZCBieSBJbmNyZW1lbnRhbFN3ZWVwZXIsIHNvIGl0IG9ubHkgbmVl
ZHMgdG8gc25hcHNob3QgYmxvY2tzLiBIb3dldmVyLCBpZiB3ZSBldmVyCi0gICAgLy8gd2FudGVk
IHRvIGFkZCBvdGhlciBzbmFwc2hvdHRpbmcgbG9naW4sIHdlJ2QgcHJvYmFibHkgcHV0IGl0IGhl
cmUuCi0gICAgCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlv
bikgewotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA6IG1fb2JqZWN0
U3BhY2UuYmxvY2tzV2l0aE5ld09iamVjdHMoKSkgewotICAgICAgICAgICAgaWYgKGhhbmRsZS0+
aXNPbkJsb2Nrc1RvU3dlZXAoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIG1fYmxvY2tTbmFwc2hvdC5hcHBlbmQoaGFuZGxlKTsKLSAgICAgICAgICAgIGhhbmRsZS0+
c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICBtX2Jsb2NrU25hcHNob3QucmVzaXplVG9GaXQobV9vYmplY3RTcGFjZS5ibG9ja3MoKS5z
ZXQoKS5zaXplKCkpOwotICAgICAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvciBmdW5jdG9y
KG1fYmxvY2tTbmFwc2hvdCk7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaEJsb2NrKGZ1
bmN0b3IpOwotICAgIH0KKyAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhpcywgIkhlYXA6
OnNuYXBzaG90VW5zd2VwdCIpOworICAgIG1fb2JqZWN0U3BhY2Uuc25hcHNob3RVbnN3ZXB0KCk7
CiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMoKQpAQCAtMTIyNiw5
ICsxMjA1LDkgQEAgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbgogICAg
IG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2Nrcyh0
aGlzKTsKIH0KIAotdm9pZCBIZWFwOjpyZXNldEFsbG9jYXRvcnMoKQordm9pZCBIZWFwOjpwcmVw
YXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9vYmplY3RTcGFjZS5yZXNldEFsbG9jYXRvcnMo
KTsKKyAgICBtX29iamVjdFNwYWNlLnByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiB9CiAKIHZvaWQg
SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCkBAIC0xNDc3LDcgKzE0NTYsNyBAQCBwdWJs
aWM6CiB2b2lkIEhlYXA6OnpvbWJpZnlEZWFkT2JqZWN0cygpCiB7CiAgICAgLy8gU3dlZXAgbm93
IGJlY2F1c2UgZGVzdHJ1Y3RvcnMgd2lsbCBjcmFzaCBvbmNlIHdlJ3JlIHpvbWJpZmllZC4KLSAg
ICBtX29iamVjdFNwYWNlLnpvbWJpZnlTd2VlcCgpOworICAgIG1fb2JqZWN0U3BhY2Uuc3dlZXAo
KTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgIG1f
b2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsKGl0ZXJhdGlvblNjb3BlLCBab21iaWZ5KCkpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjA2MTUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2
ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBBbGxvY2F0aW9uU2NvcGU7CiBj
bGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFZGVuR0NBY3Rpdml0
eUNhbGxiYWNrOwpAQCAtMjU1LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZyZWVC
bG9jayhzaXplX3QgY2FwYWNpdHkpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBBbGxv
Y2F0aW9uU2NvcGU7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAgICBmcmllbmQgY2xh
c3MgRGVmZXJHQzsKICAgICBmcmllbmQgY2xhc3MgRGVmZXJHQ0ZvckFXaGlsZTsKQEAgLTMyNywx
MSArMzI5LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFwV2Vha0hhbmRsZXMoKTsKICAgICB2
b2lkIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICB2b2lkIHN3ZWVwQXJy
YXlCdWZmZXJzKCk7Ci0gICAgdm9pZCBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CisgICAgdm9pZCBz
bmFwc2hvdFVuc3dlcHQoKTsKICAgICB2b2lkIGRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7
CiAgICAgdm9pZCBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB2b2lkIHdyaXRlQmFy
cmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKLSAgICB2b2lkIHJlc2V0QWxsb2Nh
dG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIGhhcnZl
c3RXZWFrUmVmZXJlbmNlcygpOwogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxp
emVycygpOwogICAgIHZvaWQgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVzKCk7CkBAIC00MjIsNyAr
NDI0LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9m
dWxsQWN0aXZpdHlDYWxsYmFjazsKICAgICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2Vk
ZW5BY3Rpdml0eUNhbGxiYWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmNyZW1lbnRhbFN3ZWVw
ZXI+IG1fc3dlZXBlcjsKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tT
bmFwc2hvdDsKIAogICAgIFZlY3RvcjxIZWFwT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDYx
NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MSw5ICs4MSw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtl
ZChjb25zdCAKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0
dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2sm
IGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJs
b2NrLnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9j
ay5pc01hcmtlZCgKKyAgICAgICAgYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNp
b24oKSwgY2VsbCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZENvbmN1
cnJlbnRseShjb25zdCB2b2lkKiByYXdDZWxsKQpAQCAtOTIsMTAgKzkxLDggQEAgQUxXQVlTX0lO
TElORSBib29sIEhlYXA6OmlzTWFya2VkQ29uY3VycgogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxs
b2NhdGlvbigpKQogICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJr
ZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAg
IGlmIChibG9jay5uZWVkc0ZsaXAoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNp
b24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsK
LSAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQoY2VsbCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFy
a2VkQ29uY3VycmVudGx5KAorICAgICAgICBibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCku
dmVyc2lvbigpLCBjZWxsKTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRT
ZXRNYXJrZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTEw
NCw3ICsxMDEsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6dGVzdEFuZFNldE1hcmtlCiAg
ICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBjZWxsLT5s
YXJnZUFsbG9jYXRpb24oKS50ZXN0QW5kU2V0TWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJs
b2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAgICBibG9jay5mbGlwSWZOZWNlc3NhcnlEdXJp
bmdNYXJraW5nKHZlcnNpb24pOworICAgIGJsb2NrLmFib3V0VG9NYXJrKHZlcnNpb24pOwogICAg
IHJldHVybiBibG9jay50ZXN0QW5kU2V0TWFya2VkKGNlbGwpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyMDYx
NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5j
bHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkg
Kzg0LDggQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFmaWx0ZXIucnVsZU91dChiaXR3aXNl
X2Nhc3Q8Qml0cz4ocHJldmlvdXNDYW5kaWRhdGUpKQogICAgICAgICAgICAgICAgICYmIHNldC5j
b250YWlucyhwcmV2aW91c0NhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0Nh
bmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7Ci0g
ICAgICAgICAgICAgICAgcHJldmlvdXNDYW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVy
c2lvbik7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVy
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xp
dmVDZWxsKHByZXZpb3VzUG9pbnRlcikpCisgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2Fu
ZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKGhlYXBWZXJzaW9uLCBwcmV2aW91c1BvaW50ZXIp
KQogICAgICAgICAgICAgICAgICAgICBmdW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTk5LDEwICs5OCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFz
ZXQuY29udGFpbnMoY2FuZGlkYXRlKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLQogICAgICAg
ICBhdXRvIHRyeVBvaW50ZXIgPSBbJl0gKHZvaWQqIHBvaW50ZXIpIHsKLSAgICAgICAgICAgIGlm
IChjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwocG9pbnRlcikpCisgICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKGhlYXBWZXJzaW9uLCBwb2ludGVyKSkK
ICAgICAgICAgICAgICAgICBmdW5jKHBvaW50ZXIpOwogICAgICAgICB9OwogICAgIApAQCAtMTcw
LDcgKzE2Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuY2Vs
bEtpbmQoKSAhPSBIZWFwQ2VsbDo6SlNDZWxsKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAKLSAgICAgICAgY2FuZGlkYXRlLT5mbGlwSWZOZWNlc3NhcnkoKTsKICAgICAgICAg
aWYgKCFjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwocG9pbnRlcikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFZlcmlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVNdWx0
aXBsaWVyIAogI2lmIFVTRShDRikKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2Vl
cGVyKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQogICAgIDogSGVhcFRpbWVyKGhl
YXAtPnZtKCksIHJ1bkxvb3ApCi0gICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1Nu
YXBzaG90KQorICAgICwgbV9jdXJyZW50QWxsb2NhdG9yKG51bGxwdHIpCiB7CiB9CiAKQEAgLTY2
LDcgKzY2LDcgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICNlbGlm
IFBMQVRGT1JNKEVGTCkKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhl
YXAqIGhlYXApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSkKLSAgICAsIG1fYmxvY2tzVG9T
d2VlcChoZWFwLT5tX2Jsb2NrU25hcHNob3QpCisgICAgLCBtX2N1cnJlbnRBbGxvY2F0b3IobnVs
bHB0cikKIHsKIH0KIApAQCAtODYsNyArODYsNyBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6
Y2FuY2VsVGltZXIoKQogI2VsaWYgVVNFKEdMSUIpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3Jl
bWVudGFsU3dlZXBlcihIZWFwKiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0g
ICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQorICAgICwgbV9jdXJy
ZW50QWxsb2NhdG9yKG51bGxwdHIpCiB7CiB9CiAKQEAgLTEyMSwxOSArMTIxLDIwIEBAIHZvaWQg
SW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3ZWVwKGRvdWJsZSAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fYmxvY2tzVG9Td2VlcC5jbGVhcigpOwogICAgIGNhbmNlbFRpbWVyKCk7CiB9
CiAKIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygpCiB7Ci0gICAgd2hp
bGUgKCFtX2Jsb2Nrc1RvU3dlZXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrID0gbV9ibG9ja3NUb1N3ZWVwLnRha2VMYXN0KCk7Ci0gICAgICAgIGJsb2Nr
LT5zZXRJc09uQmxvY2tzVG9Td2VlcChmYWxzZSk7Ci0KLSAgICAgICAgaWYgKCFibG9jay0+bmVl
ZHNTd2VlcGluZygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICBNYXJrZWRCbG9jazo6
SGFuZGxlKiBibG9jayA9IG51bGxwdHI7CisgICAgCisgICAgZm9yICg7IG1fY3VycmVudEFsbG9j
YXRvcjsgbV9jdXJyZW50QWxsb2NhdG9yID0gbV9jdXJyZW50QWxsb2NhdG9yLT5uZXh0QWxsb2Nh
dG9yKCkpIHsKKyAgICAgICAgYmxvY2sgPSBtX2N1cnJlbnRBbGxvY2F0b3ItPmZpbmRCbG9ja1Rv
U3dlZXAoKTsKKyAgICAgICAgaWYgKGJsb2NrKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIAorICAgIGlmIChibG9jaykgewogICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Mo
bV92bS0+aGVhcCk7CiAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwogICAgICAgICBtX3ZtLT5oZWFw
Lm9iamVjdFNwYWNlKCkuZnJlZU9yU2hyaW5rQmxvY2soYmxvY2spOwpAQCAtMTQ2LDExICsxNDcs
MTIgQEAgYm9vbCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKAogdm9pZCBJbmNy
ZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcoKQogewogICAgIHNjaGVkdWxlVGltZXIoKTsK
KyAgICBtX2N1cnJlbnRBbGxvY2F0b3IgPSBtX3ZtLT5oZWFwLm9iamVjdFNwYWNlKCkuZmlyc3RB
bGxvY2F0b3IoKTsKIH0KIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2Vl
cGluZygpCiB7Ci0gICAgbV9ibG9ja3NUb1N3ZWVwLmNsZWFyKCk7CisgICAgbV9jdXJyZW50QWxs
b2NhdG9yID0gbnVsbHB0cjsKICAgICBpZiAobV92bSkKICAgICAgICAgY2FuY2VsVGltZXIoKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5oCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDEyIEBACiAj
ZGVmaW5lIEluY3JlbWVudGFsU3dlZXBlcl9oCiAKICNpbmNsdWRlICJIZWFwVGltZXIuaCIKLSNp
bmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7Ci1jbGFzcyBNYXJrZWRCbG9jazsKK2NsYXNzIE1hcmtl
ZEFsbG9jYXRvcjsKIAogY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyIDogcHVibGljIEhlYXBUaW1l
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzY2hlZHVsZVRpbWVyKCk7CiAgICAgdm9pZCBjYW5jZWxUaW1lcigpOwog
ICAgIAotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIG1fYmxvY2tzVG9Td2VlcDsK
KyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fY3VycmVudEFsbG9jYXRvcjsKICNlbmRpZgogfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgJKHJl
dmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2Nh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw5ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgYm9vbCBpc05ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc05ld2x5QWxsb2Nh
dGVkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2VkKCkgeyByZXR1cm4gbV9pc01h
cmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9CisgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzTWFya2VkKEhlYXBDZWxsKikgeyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWFya2Vk
Q29uY3VycmVudGx5KEhlYXBWZXJzaW9uLCBIZWFwQ2VsbCopIHsgcmV0dXJuIG1faXNNYXJrZWQu
bG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQogICAgIGJvb2wgaXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKCkgeyByZXR1cm4gaXNNYXJrZWQoKSB8fCBpc05ld2x5QWxsb2NhdGVkKCk7
IH0KICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCopIHsgcmV0dXJu
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOyB9Ci0gICAgYm9vbCBpc01hcmtlZER1cmluZ1dl
YWtWaXNpdGluZyhIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVybiBpc01hcmtlZCgpOyB9
CiAgICAgYm9vbCBpc0xpdmUoKSB7IHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsg
fQogICAgIAogICAgIGJvb2wgaGFzVmFsaWRDZWxsKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWYWxp
ZENlbGw7IH0KQEAgLTEwNiw4ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgY29uc3QgQWxs
b2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRl
czsgfQogICAgIAotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KHVpbnQ2NF90KSB7IH0KLSAgICB2
b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcodWludDY0X3QpIHsgfQorICAgIHZvaWQg
YWJvdXRUb01hcmsoSGVhcFZlcnNpb24pIHsgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCB0ZXN0QW5kU2V0TWFya2VkKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDEwICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1hcmtl
ZEFsbG9jYXRvci5oIgogCisjaW5jbHVkZSAiQWxsb2NhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAi
R0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkluY3Jl
bWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJr
ZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJW
TS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMzksNyArNDEsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKEhlYXAqIGhlYXAs
IE1hcmtlZFNwYWNlKiBtYXJrZWRTcGFjZSwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0
b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogICAgIDogbV9jdXJyZW50QmxvY2soMCkKICAgICAs
IG1fbGFzdEFjdGl2ZUJsb2NrKDApCi0gICAgLCBtX25leHRCbG9ja1RvU3dlZXAobnVsbHB0cikK
ICAgICAsIG1fY2VsbFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNlbGxTaXplKSkKICAgICAs
IG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQogICAgICwgbV9oZWFwKGhlYXApCkBAIC01MCwxMSAr
NTEsMTMgQEAgTWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoSGVhcCogaAogYm9vbCBN
YXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQogewogICAgIHVuc2ln
bmVkIGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID0gMDsKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jayA9IG1fYmxvY2tMaXN0LmJlZ2luKCk7Ci0gICAgd2hpbGUgKGJsb2NrKSB7Ci0gICAg
ICAgIGJsb2NrID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotICAgICAgICBpZiAo
YmxvY2spCi0gICAgICAgICAgICBibG9jay0+ZmxpcElmTmVjZXNzYXJ5KCk7IC8vIEZvcmNlcyB1
cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRoZSBibG9jaywgYnV0IGhhcyBubyBzZW1hbnRpYyBl
ZmZlY3QuCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxvY2tzLnNpemUo
KTsgKytpbmRleCkgeworICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYmxv
Y2tzW2luZGV4XTsKKyAgICAgICAgaWYgKGJsb2NrKSB7CisgICAgICAgICAgICAvLyBGb3JjZXMg
dXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50aWMg
ZWZmZWN0LgorICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0ZsaXAoKSkKKyAgICAgICAgICAg
ICAgICBibG9jay0+YmxvY2soKS5yZXNldFZlcnNpb24oKTsKKyAgICAgICAgfQogICAgICAgICAr
K2l0ZXJzU2luY2VMYXN0VGltZUNoZWNrOwogICAgICAgICBpZiAoaXRlcnNTaW5jZUxhc3RUaW1l
Q2hlY2sgPj0gSGVhcDo6c190aW1lQ2hlY2tSZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICBkb3Vi
bGUgY3VycmVudFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwpAQCAt
NjYsODQgKzY5LDk2IEBAIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSAK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXRpcmUoTWFy
a2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCitib29sIE1hcmtlZEFsbG9jYXRvcjo6c2hvdWxkU3Rl
YWxFbXB0eUJsb2Nrc0Zyb21PdGhlckFsbG9jYXRvcnMoKSBjb25zdAogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7IC8vIFRoaXMgd2lsbCBiZSBjYWxsZWQgaW4gcGFyYWxsZWwgZHVy
aW5nIEdDLgotICAgIGlmIChibG9jayA9PSBtX2N1cnJlbnRCbG9jaykgewotICAgICAgICAvLyBU
aGlzIGhhcHBlbnMgd2hlbiB0aGUgbXV0YXRvciBpcyBydW5uaW5nLiBXZSBmaW5pc2hlZCBhIGZ1
bGwgR0MgYW5kIG1hcmtlZCB0b28gZmV3IHRoaW5ncwotICAgICAgICAvLyB0byByZXRpcmUuIFRo
ZW4gd2Ugc3RhcnRlZCBhbGxvY2F0aW5nIGluIHRoaXMgYmxvY2suIFRoZW4gYSBiYXJyaWVyIHJh
biwgd2hpY2ggbWFya2VkIGFuCi0gICAgICAgIC8vIG9iamVjdCBpbiB0aGlzIGJsb2NrLCB3aGlj
aCBwdXQgaXQgb3ZlciB0aGUgcmV0aXJlbWVudCB0aHJlc2hvbGQuIEl0J3MgT0sgdG8gc2ltcGx5
IGRvCi0gICAgICAgIC8vIG5vdGhpbmcgaW4gdGhhdCBjYXNlLgotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmIChibG9jayA9PSBtX2xhc3RBY3RpdmVCbG9jaykgewotICAgICAgICAvLyBU
aGlzIGNhbiBlYXNpbHkgaGFwcGVuIGR1cmluZyBtYXJraW5nLiBJdCB3b3VsZCBiZSBlYXN5IHRv
IGhhbmRsZSB0aGlzIGNhc2UsIGJ1dCBpdCdzCi0gICAgICAgIC8vIGp1c3QgYXMgZWFzeSB0byBp
Z25vcmUgaXQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlQoYmxv
Y2stPmlzT25MaXN0KCkpOwotICAgIGlmIChibG9jayA9PSBtX25leHRCbG9ja1RvU3dlZXApCi0g
ICAgICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgp
KTsKLSAgICBibG9jay0+cmVtb3ZlKCk7Ci0gICAgbV9yZXRpcmVkQmxvY2tzLnB1c2goYmxvY2sp
OworICAgIHJldHVybiAhbmVlZHNEZXN0cnVjdGlvbigpOwogfQogCi1NYXJrZWRCbG9jazo6SGFu
ZGxlKiBNYXJrZWRBbGxvY2F0b3I6OmZpbHRlck5leHRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaykKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmluZEVtcHR5
QmxvY2tUb1N0ZWFsKCkKIHsKLSAgICBpZiAoYmxvY2sgPT0gbV9ibG9ja0xpc3QuZW5kKCkpCisg
ICAgLy8gRG9uJ3QgYWxsb3cgb3RoZXJzIHRvIHN0ZWFsIGZyb20gdXMsIGlmIHdlIHdvdWxkbid0
IHN0ZWFsIGZyb20gb3RoZXJzLgorICAgIGlmICghc2hvdWxkU3RlYWxFbXB0eUJsb2Nrc0Zyb21P
dGhlckFsbG9jYXRvcnMoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgbV9l
bXB0eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKKyAgICBp
ZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBibG9jazsKKyAgICByZXR1cm4gbV9ibG9ja3NbbV9lbXB0eUN1cnNv
cl07CiB9CiAKLXZvaWQgTWFya2VkQWxsb2NhdG9yOjpzZXROZXh0QmxvY2tUb1N3ZWVwKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmRpZENvbnN1bWVG
cmVlTGlzdCgpCiB7Ci0gICAgbV9uZXh0QmxvY2tUb1N3ZWVwID0gZmlsdGVyTmV4dEJsb2NrKGJs
b2NrKTsKKyAgICBpZiAobV9jdXJyZW50QmxvY2spCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5k
aWRDb25zdW1lRnJlZUxpc3QoKTsKKyAgICAKKyAgICBzZXRGcmVlTGlzdChGcmVlTGlzdCgpKTsK
KyAgICBtX2N1cnJlbnRCbG9jayA9IG51bGxwdHI7CiB9CiAKLXZvaWQqIE1hcmtlZEFsbG9jYXRv
cjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZ0ltcGwoKQordm9pZCogTWFya2VkQWxsb2Nh
dG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0gICAgaWYgKG1fY3VycmVudEJs
b2NrKSB7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9PSBtX25leHRCbG9ja1RvU3dl
ZXApOwotICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7Ci0gICAg
ICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAgfQor
ICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOworICAgIEFTU0VSVCghbV9mcmVlTGlzdCk7CiAg
ICAgCi0gICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVCht
X25leHRCbG9ja1RvU3dlZXAgIT0gbV9ibG9ja0xpc3QuZW5kKCkpOwotCi0gICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJsb2NrOjpIYW5kbGUqJiBibG9jayA9
IG1fbmV4dEJsb2NrVG9Td2VlcDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICBuZXh0
ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0gICAgICAgIC8vIEl0IHdvdWxk
IGJlIHN1cGVyIHdlaXJkIGlmIHRoZSBibG9ja3Mgd2UgYXJlIHN3ZWVwaW5nIGhhdmUgYW55dGhp
bmcgYWxsb2NhdGVkIGR1cmluZyB0aGlzCi0gICAgICAgIC8vIGN5Y2xlLgotICAgICAgICBBU1NF
UlQoIWJsb2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgCi0gICAgICAgIEZy
ZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVw
VG9GcmVlTGlzdCk7CisgICAgZm9yICg7OykgeworICAgICAgICBtX2FsbG9jYXRpb25DdXJzb3Ig
PSAobV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IHwgbV9lbXB0eSkuZmluZEJpdChtX2FsbG9jYXRp
b25DdXJzb3IsIHRydWUpOworICAgICAgICBpZiAobV9hbGxvY2F0aW9uQ3Vyc29yID49IG1fYmxv
Y2tzLnNpemUoKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgLy8gSXQn
cyBwb3NzaWJsZSB0byBzdHVtYmxlIG9uIGEgY29tcGxldGUtZnVsbCBibG9jay4gTWFya2luZyB0
cmllcyB0byByZXRpcmUgdGhlc2UsIGJ1dAotICAgICAgICAvLyB0aGF0IGFsZ29yaXRobSBpcyBy
YWN5IGFuZCBtYXkgZm9yZ2V0IHRvIGRvIGl0IHNvbWV0aW1lcy4KLSAgICAgICAgaWYgKGZyZWVM
aXN0LmFsbG9jYXRpb25XaWxsRmFpbCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlz
RnJlZUxpc3RlZCgpKTsKLSAgICAgICAgICAgIGJsb2NrLT51bnN3ZWVwV2l0aE5vTmV3bHlBbGxv
Y2F0ZWQoKTsKLSAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNNYXJrZWQoKSk7Ci0gICAgICAg
ICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAg
ICAgICAgc2V0SXNDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KG1fYWxsb2NhdGlvbkN1cnNvciwgZmFs
c2UpOwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2s7Ci0gICAgICAgIHNldEZyZWVM
aXN0KGZyZWVMaXN0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICh2b2lkKiByZXN1bHQg
PSB0cnlBbGxvY2F0ZUluKG1fYmxvY2tzW21fYWxsb2NhdGlvbkN1cnNvcl0pKQorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZyZWVMaXN0KSB7Ci0g
ICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKE9w
dGlvbnM6OnN0ZWFsRW1wdHlCbG9ja3NGcm9tT3RoZXJBbGxvY2F0b3JzKCkKKyAgICAgICAgJiYg
c2hvdWxkU3RlYWxFbXB0eUJsb2Nrc0Zyb21PdGhlckFsbG9jYXRvcnMoKSkgeworICAgICAgICBp
ZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX21hcmtlZFNwYWNlLT5maW5kRW1wdHlC
bG9ja1RvU3RlYWwoKSkgeworICAgICAgICAgICAgYmxvY2stPnN3ZWVwKCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIC8vIEl0J3MgZ29vZCB0aGF0IHRoaXMgY2xlYXJzIGNhbkFsbG9jYXRl
QnV0Tm90RW1wdHkgYXMgd2VsbCBhcyBhbGwgb3RoZXIgYml0cywKKyAgICAgICAgICAgIC8vIGJl
Y2F1c2UgdGhlcmUgaXMgYSByZW1vdGUgY2hhbmNlIHRoYXQgYSBibG9jayBtYXkgaGF2ZSBib3Ro
IGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkKKyAgICAgICAgICAgIC8vIGFuZCBlbXB0eSBzZXQgYXQg
dGhlIHNhbWUgdGltZS4KKyAgICAgICAgICAgIGJsb2NrLT5yZW1vdmVGcm9tQWxsb2NhdG9yKCk7
CisgICAgICAgICAgICBhZGRCbG9jayhibG9jayk7CisgICAgICAgICAgICByZXR1cm4gYWxsb2Nh
dGVJbihibG9jayk7CisgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CiAKK3ZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykKK3sKKyAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZUluKGJsb2NrKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Zv
aWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaykKK3sKKyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxvY2stPmhhc0FueU5l
d2x5QWxsb2NhdGVkKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAg
ICAKKyAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6SGFu
ZGxlOjpTd2VlcFRvRnJlZUxpc3QpOworICAgIAorICAgIC8vIEl0J3MgcG9zc2libGUgdG8gc3R1
bWJsZSBvbiBhIGNvbXBsZXRlbHkgZnVsbCBibG9jay4gTWFya2luZyB0cmllcyB0byByZXRpcmUg
dGhlc2UsIGJ1dAorICAgIC8vIHRoYXQgYWxnb3JpdGhtIGlzIHJhY3kgYW5kIG1heSBmb3JnZXQg
dG8gZG8gaXQgc29tZXRpbWVzLgorICAgIGlmIChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwo
KSkgeworICAgICAgICBBU1NFUlQoYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgYmxv
Y2stPnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOworICAgICAgICBBU1NFUlQoIWJsb2Nr
LT5pc0ZyZWVMaXN0ZWQoKSk7CisgICAgICAgIEFTU0VSVCghaXNFbXB0eShibG9jaykpOworICAg
ICAgICBBU1NFUlQoIWlzQ2FuQWxsb2NhdGVCdXROb3RFbXB0eShibG9jaykpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCisgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jazsK
KyAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7CisgICAgCiAgICAgdm9pZCogcmVzdWx0OwogICAg
IGlmIChtX2ZyZWVMaXN0LnJlbWFpbmluZykgewogICAgICAgICB1bnNpZ25lZCBjZWxsU2l6ZSA9
IG1fY2VsbFNpemU7CkBAIC0xNTUsMjEgKzE3MCwxMSBAQCB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6
OnRyeUFsbG9jYXRlV2l0aG91CiAgICAgICAgIHJlc3VsdCA9IGhlYWQ7CiAgICAgfQogICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgc2V0SXNFZGVuKG1fY3VycmVudEJsb2NrLCB0cnVl
KTsKICAgICBtX21hcmtlZFNwYWNlLT5kaWRBbGxvY2F0ZUluQmxvY2sobV9jdXJyZW50QmxvY2sp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6
OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKQotewotICAgIEFTU0VSVCghbV9oZWFwLT5p
c0J1c3koKSk7Ci0gICAgbV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBBbGxvY2F0aW9u
OwotICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCk7
Ci0KLSAgICBtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOwotICAg
IEFTU0VSVChyZXN1bHQgfHwgIW1fY3VycmVudEJsb2NrKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCiBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpkb1Rlc3RDb2xsZWN0aW9u
c0lmTmVlZGVkKCkKIHsKICAgICBpZiAoIU9wdGlvbnM6OnNsb3dQYXRoQWxsb2NzQmV0d2VlbkdD
cygpKQpAQCAtMjA2LDE5ICsyMTEsMTcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0
ZVNsb3dDYXNlSQogICAgIEFTU0VSVCghbV9tYXJrZWRTcGFjZS0+aXNJdGVyYXRpbmcoKSk7CiAg
ICAgbV9oZWFwLT5kaWRBbGxvY2F0ZShtX2ZyZWVMaXN0Lm9yaWdpbmFsU2l6ZSk7CiAgICAgCisg
ICAgZGlkQ29uc3VtZUZyZWVMaXN0KCk7CisgICAgCisgICAgbV9oZWFwLT5jb2xsZWN0SWZOZWNl
c3NhcnlPckRlZmVyKCk7CisgICAgCisgICAgQWxsb2NhdGlvblNjb3BlIGFsbG9jYXRpb25TY29w
ZSgqbV9oZWFwKTsKKwogICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxl
Y3RpbmcoKTsKICAgICAKICAgICBpZiAoTElLRUxZKHJlc3VsdCAhPSAwKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAKLSAgICBpZiAobV9oZWFwLT5jb2xsZWN0SWZOZWNlc3NhcnlPckRl
ZmVyKCkpIHsKLSAgICAgICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygp
OwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0KLSAgICBBU1NFUlQoIW1faGVhcC0+c2hvdWxkQ29sbGVjdCgpKTsKLSAgICAKICAgICBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IHRyeUFsbG9jYXRlQmxvY2soKTsKICAgICBpZiAoIWJs
b2NrKSB7CiAgICAgICAgIGlmIChjcmFzaE9uRmFpbHVyZSkKQEAgLTIyNyw4ICsyMzAsNyBAQCB2
b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2VJCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAgICAgYWRkQmxvY2soYmxvY2spOwotICAgICAgICAKLSAgICBy
ZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CisgICAgcmVzdWx0ID0gYWxs
b2NhdGVJbihibG9jayk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTI0OSwzNyArMjUxLDc1IEBAIHNpemVfdCBNYXJrZWRBbGxvY2F0b3I6OmJsb2NrU2l6
ZUZvckJ5dGUKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2Nh
dGVCbG9jaygpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOwotICAgIHJldHVybiBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIHRoaXMsIG1f
Y2VsbFNpemUsIG1fYXR0cmlidXRlcyk7CisgICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSog
aGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9oZWFwKTsKKyAgICBpZiAoIWhhbmRs
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgbV9tYXJrZWRTcGFjZS0+ZGlk
QWRkQmxvY2soaGFuZGxlKTsKKyAgICAKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCiB2b2lkIE1h
cmtlZEFsbG9jYXRvcjo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7Ci0g
ICAgQVNTRVJUKCFtX2N1cnJlbnRCbG9jayk7Ci0gICAgQVNTRVJUKCFtX2ZyZWVMaXN0KTsKKyAg
ICBzaXplX3QgaW5kZXg7CisgICAgaWYgKG1fZnJlZUJsb2NrSW5kaWNlcy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgaW5kZXggPSBtX2Jsb2Nrcy5zaXplKCk7CisKKyAgICAgICAgc2l6ZV90IG9sZENh
cGFjaXR5ID0gbV9ibG9ja3MuY2FwYWNpdHkoKTsKKyAgICAgICAgbV9ibG9ja3MuYXBwZW5kKGJs
b2NrKTsKKyAgICAgICAgaWYgKG1fYmxvY2tzLmNhcGFjaXR5KCkgIT0gb2xkQ2FwYWNpdHkpIHsK
KyAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0
Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2
ZWN0b3IsIHZlY3Rvci5udW1CaXRzKCkgPT0gb2xkQ2FwYWNpdHkpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHko
KSA+IG9sZENhcGFjaXR5KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yRWFjaEJpdFZl
Y3RvcigKKyAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAg
ICAgICAgICAgICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5KCkpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW5kZXgg
PSBtX2ZyZWVCbG9ja0luZGljZXMudGFrZUxhc3QoKTsKKyAgICAgICAgQVNTRVJUKCFtX2Jsb2Nr
c1tpbmRleF0pOworICAgICAgICBtX2Jsb2Nrc1tpbmRleF0gPSBibG9jazsKKyAgICB9CiAgICAg
Ci0gICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsKLSAgICBzZXROZXh0QmxvY2tUb1N3ZWVw
KGJsb2NrKTsKLSAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRCbG9jayhibG9jayk7CisgICAgZm9y
RWFjaEJpdFZlY3RvcigKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQodmVjdG9yLCAhdmVjdG9yW2luZGV4XSk7CisgICAgICAg
IH0pOworCisgICAgLy8gVGhpcyBpcyB0aGUgcG9pbnQgYXQgd2hpY2ggdGhlIGJsb2NrIGxlYXJu
cyBvZiBpdHMgY2VsbFNpemUoKSBhbmQgYXR0cmlidXRlcygpLgorICAgIGJsb2NrLT5kaWRBZGRU
b0FsbG9jYXRvcih0aGlzLCBpbmRleCk7CisgICAgCisgICAgc2V0SXNMaXZlKGluZGV4LCB0cnVl
KTsKKyAgICBzZXRJc0VtcHR5KGluZGV4LCB0cnVlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0
b3I6OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewotICAgIGlmICht
X2N1cnJlbnRCbG9jayA9PSBibG9jaykgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGZpbHRl
ck5leHRCbG9jayhtX2N1cnJlbnRCbG9jay0+bmV4dCgpKTsKLSAgICAgICAgc2V0RnJlZUxpc3Qo
RnJlZUxpc3QoKSk7Ci0gICAgfQotICAgIGlmIChtX25leHRCbG9ja1RvU3dlZXAgPT0gYmxvY2sp
Ci0gICAgICAgIHNldE5leHRCbG9ja1RvU3dlZXAobV9uZXh0QmxvY2tUb1N3ZWVwLT5uZXh0KCkp
OworICAgIEFTU0VSVChibG9jay0+YWxsb2NhdG9yKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1f
YmxvY2tzW2Jsb2NrLT5pbmRleCgpXSA9PSBibG9jayk7CiAKLSAgICBibG9jay0+d2lsbFJlbW92
ZUJsb2NrKCk7Ci0gICAgbV9ibG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsKKyAgICBtX2Jsb2Nrc1ti
bG9jay0+aW5kZXgoKV0gPSBudWxscHRyOworICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQo
YmxvY2stPmluZGV4KCkpOworICAgIAorICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsm
XSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmlu
ZGV4KCldID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIAorICAgIGJsb2NrLT5kaWRSZW1vdmVG
cm9tQWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGlu
ZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xs
ZWN0aW9uKQotICAgICAgICBtX2Jsb2NrTGlzdC50YWtlRnJvbShtX3JldGlyZWRCbG9ja3MpOwot
CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1h
cmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmchXG4iKTsKICAgICBBU1NFUlQoIW1fbGFzdEFj
dGl2ZUJsb2NrKTsKICAgICBpZiAoIW1fY3VycmVudEJsb2NrKSB7CiAgICAgICAgIEFTU0VSVCgh
bV9mcmVlTGlzdCk7CkBAIC0yOTIsMjkgKzMzMiwyNSBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
c3RvcEFsbG9jYXRpbmcoKQogICAgIG1fZnJlZUxpc3QgPSBGcmVlTGlzdCgpOwogfQogCi12b2lk
IE1hcmtlZEFsbG9jYXRvcjo6cmVzZXQoKQordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKCkKIHsKLSAgICBtX2xhc3RBY3RpdmVCbG9jayA9IDA7Ci0gICAgbV9jdXJy
ZW50QmxvY2sgPSAwOworICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gbnVsbHB0cjsKKyAgICBtX2N1
cnJlbnRCbG9jayA9IG51bGxwdHI7CiAgICAgc2V0RnJlZUxpc3QoRnJlZUxpc3QoKSk7CiAKLSAg
ICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fYmxvY2tMaXN0LmJlZ2luKCkpOworICAgIG1fYWxsb2Nh
dGlvbkN1cnNvciA9IDA7CisgICAgbV9lbXB0eUN1cnNvciA9IDA7CisgICAgbV91bnN3ZXB0Q3Vy
c29yID0gMDsKKyAgICAKKyAgICBtX2VkZW4uY2xlYXJBbGwoKTsKIAogICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjp1c2VJbW1vcnRhbE9iamVjdHMoKSkpIHsKLSAgICAgICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogbmV4dDsKLSAgICAgICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiYgYmxvY2sg
PSBtX25leHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgICAg
IG5leHQgPSBmaWx0ZXJOZXh0QmxvY2soYmxvY2stPm5leHQoKSk7Ci0KLSAgICAgICAgICAgIEZy
ZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVw
VG9GcmVlTGlzdCk7Ci0gICAgICAgICAgICBibG9jay0+emFwKGZyZWVMaXN0KTsKLSAgICAgICAg
ICAgIHJldGlyZShibG9jayk7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IFRoaW5ncz8K
ICAgICB9CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgp
CiB7Ci0gICAgbV9ibG9ja0xpc3QudGFrZUZyb20obV9yZXRpcmVkQmxvY2tzKTsKICAgICBmb3JF
YWNoQmxvY2soCiAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKICAg
ICAgICAgICAgIGJsb2NrLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwpAQCAtMzI2LDQgKzM2Miwx
MjEgQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNldEZyZWVMaXN0KGNvbnN0IAogICAgIG1fZnJl
ZUxpc3QgPSBmcmVlTGlzdDsKIH0KIAordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9j
YXRpbmcoKQoreworICAgIGlmICghbV9sYXN0QWN0aXZlQmxvY2spCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZnJlZUxpc3QgPSBtX2xhc3RBY3RpdmVCbG9jay0+cmVzdW1lQWxsb2NhdGluZygp
OworICAgIG1fY3VycmVudEJsb2NrID0gbV9sYXN0QWN0aXZlQmxvY2s7CisgICAgbV9sYXN0QWN0
aXZlQmxvY2sgPSBudWxscHRyOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YmVnaW5NYXJr
aW5nRm9yRnVsbENvbGxlY3Rpb24oKQoreworICAgIC8vIE1hcmsgYml0cyBhcmUgc3RpY2t5IGFu
ZCBzbyBpcyBvdXIgc3VtbWFyeSBvZiBtYXJrIGJpdHMuIFdlIG9ubHkgY2xlYXIgdGhlc2UgZHVy
aW5nIGZ1bGwKKyAgICAvLyBjb2xsZWN0aW9ucywgc28gaWYgeW91IHN1cnZpdmVkIHRoZSBsYXN0
IGNvbGxlY3Rpb24geW91IHdpbGwgc3Vydml2ZSB0aGUgbmV4dCBvbmUgc28gbG9uZworICAgIC8v
IGFzIHRoZSBuZXh0IG9uZSBpcyBlZGVuLgorICAgIG1fbWFya2luZ05vdEVtcHR5LmNsZWFyQWxs
KCk7CisgICAgbV9tYXJraW5nUmV0aXJlZC5jbGVhckFsbCgpOworfQorCit2b2lkIE1hcmtlZEFs
bG9jYXRvcjo6ZW5kTWFya2luZygpCit7CisgICAgbV9hbGxvY2F0ZWQuY2xlYXJBbGwoKTsKKyAg
ICAKKyAgICAvLyBJdCdzIHN1cnByaXNpbmcgYW5kIGZydXN0cmF0aW5nIHRvIGNvbXByZWhlbmQs
IGJ1dCB0aGUgZW5kLW9mLW1hcmtpbmcgZmxpcCBkb2VzIG5vdCBuZWVkIHRvCisgICAgLy8ga25v
dyB3aGF0IGtpbmQgb2YgY29sbGVjdGlvbiBpdCBpcy4gVGhhdCBrbm93bGVkZ2UgaXMgYWxyZWFk
eSBlbmNvZGVkIGluIHRoZSBtX21hcmtpbmdYWVoKKyAgICAvLyB2ZWN0b3JzLgorICAgIAorICAg
IGlmIChuZWVkc0Rlc3RydWN0aW9uKCkpIHsKKyAgICAgICAgLy8gSWYgYmxvY2tzIG5lZWQgZGVz
dHJ1Y3Rpb24gdGhlbiBub3RoaW5nIGlzIGVtcHR5ISBUaGlzIGlzIGEgY29ycmVjdCBhc3NlcnRp
b24gYnV0IG1heQorICAgICAgICAvLyBiZWNvbWUgd3Jvbmcgb25jZSB3ZSBnbyBmdWxsIGNvbmN1
cnJlbnQ6IHdoZW4gd2UgY3JlYXRlIGEgbmV3IGJsb2NrLCBpdCB3aWxsIGZsaWNrZXIKKyAgICAg
ICAgLy8gaW50byB0aGUgZW1wdHkgc2V0IGZvciBhIHRpbnkgbW9tZW50LiBPbiB0aGUgb3RoZXIg
aGFuZCwgdGhpcyBjb2RlIGlzIGxpa2VseSB0byBiZSBydW4KKyAgICAgICAgLy8gaW4gc3RvcFRo
ZVdvcmxkLgorICAgICAgICBBU1NFUlQobV9lbXB0eS5pc0VtcHR5KCkpOworICAgICAgICBtX2Nh
bkFsbG9jYXRlQnV0Tm90RW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nUmV0aXJlZDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2VtcHR5ID0gbV9saXZlICYgfm1fbWFya2lu
Z05vdEVtcHR5OworICAgIG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSA9IG1fbGl2ZSAmIG1fbWFy
a2luZ05vdEVtcHR5ICYgfm1fbWFya2luZ1JldGlyZWQ7CisgICAgCisgICAgaWYgKGZhbHNlKSB7
CisgICAgICAgIGRhdGFMb2coIkJpdHMgZm9yICIsIG1fY2VsbFNpemUsICIsICIsIG1fYXR0cmli
dXRlcywgIiBhZnRlciBlbmRNYXJraW5nOlxuIik7CisgICAgICAgIGR1bXBCaXRzKFdURjo6ZGF0
YUZpbGUoKSk7CisgICAgfQorfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c25hcHNob3RVbnN3
ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKQoreworICAgIG1fdW5zd2VwdCB8PSBtX2VkZW47Cit9CisK
K3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbigp
Cit7CisgICAgbV91bnN3ZXB0ID0gbV9saXZlOworfQorCitNYXJrZWRCbG9jazo6SGFuZGxlKiBN
YXJrZWRBbGxvY2F0b3I6OmZpbmRCbG9ja1RvU3dlZXAoKQoreworICAgIG1fdW5zd2VwdEN1cnNv
ciA9IG1fdW5zd2VwdC5maW5kQml0KG1fdW5zd2VwdEN1cnNvciwgdHJ1ZSk7CisgICAgaWYgKG1f
dW5zd2VwdEN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBtX2Jsb2Nrc1ttX3Vuc3dlcHRDdXJzb3JdOworfQorCit2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6c3dlZXAoKQoreworICAgIG1fdW5zd2VwdC5mb3JFYWNoU2V0Qml0KAorICAg
ICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgbV9ibG9ja3NbaW5kZXhdLT5z
d2VlcCgpOworICAgICAgICB9KTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNocmluaygp
Cit7CisgICAgbV9lbXB0eS5mb3JFYWNoU2V0Qml0KAorICAgICAgICBbJl0gKHNpemVfdCBpbmRl
eCkgeworICAgICAgICAgICAgbV9tYXJrZWRTcGFjZS0+ZnJlZUJsb2NrKG1fYmxvY2tzW2luZGV4
XSk7CisgICAgICAgIH0pOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YXNzZXJ0Tm9VbnN3
ZXB0KCkKK3sKKyAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgaWYgKG1fdW5zd2VwdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBkYXRhTG9nKCJBc3NlcnRpb24gZmFpbGVkOiB1bnN3ZXB0IG5vdCBlbXB0eSBpbiAiLCAqdGhp
cywgIi5cbiIpOworICAgIGR1bXBCaXRzKCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgb3V0LnByaW50KFJhd1BvaW50ZXIodGhpcyksICI6IiwgbV9jZWxsU2l6ZSwgIi8iLCBt
X2F0dHJpYnV0ZXMpOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZHVtcEJpdHMoUHJpbnRT
dHJlYW0mIG91dCkKK3sKKyAgICB1bnNpZ25lZCBtYXhOYW1lTGVuZ3RoID0gMDsKKyAgICBmb3JF
YWNoQml0VmVjdG9yV2l0aE5hbWUoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYsIGNvbnN0
IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihuYW1l
KTsKKyAgICAgICAgICAgIG1heE5hbWVMZW5ndGggPSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBs
ZW5ndGgpOworICAgICAgICB9KTsKKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUo
CisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7
CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiLCBuYW1lLCAiOiAiKTsKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1heE5hbWVMZW5ndGggLSBzdHJsZW4obmFtZSk7IGktLTspCisg
ICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIik7CisgICAgICAgICAgICBvdXQucHJpbnQodmVj
dG9yLCAiXG4iKTsKKyAgICAgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNp
b24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJBbGxvY2F0b3JB
dHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRnJlZUxpc3QuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9j
ay5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRp
bmVsTGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTM3LDYgKzM5LDE0OSBAQCBjbGFzcyBIZWFwOwogY2xhc3MgTWFya2VkU3BhY2U7
CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKKyNkZWZpbmUgRk9SX0VBQ0hfTUFSS0VE
X0FMTE9DQVRPUl9CSVQobWFjcm8pIFwKKyAgICBtYWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0
IG9mIGJsb2NrIGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICovXAorICAgIG1hY3Jv
KGVtcHR5LCBFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZl
IG9iamVjdHMgYW5kIG5vdGhpbmcgdG8gZGVzdHJveS4gKi8gXAorICAgIG1hY3JvKGFsbG9jYXRl
ZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9mIGFsbGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxp
dmUgb2JqZWN0cy4gKi9cCisgICAgbWFjcm8oY2FuQWxsb2NhdGVCdXROb3RFbXB0eSwgQ2FuQWxs
b2NhdGVCdXROb3RFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIGFyZSBuZWl0aGVyIGVt
cHR5IG5vciByZXRpcmVkIChpLmUuIGFyZSBtb3JlIHRoYW4gbWluTWFya2VkQmxvY2tVdGlsaXph
dGlvbiBmdWxsKS4gKi8gXAorICAgIG1hY3JvKGVkZW4sIEVkZW4pIC8qIFRoZSBzZXQgb2YgYWxs
IGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhlIGxhc3QgR0MuICovXAorICAg
IG1hY3JvKHVuc3dlcHQsIFVuc3dlcHQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNv
dWxkIGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wKKyAgICBcCisgICAg
LyogVGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAqL1wKKyAgICBtYWNybyhtYXJr
aW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRo
YXQgYXJlIG5vdCBlbXB0eS4gKi8gXAorICAgIG1hY3JvKG1hcmtpbmdSZXRpcmVkLCBNYXJraW5n
UmV0aXJlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIHJldGlyZWQuICovCisK
Ky8vIEZJWE1FOiBXZSBkZWZpbmVkIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgYW5kIGVtcHR5IHRv
IGJlIGV4Y2x1c2l2ZToKKy8vCisvLyAgICAgY2FuQWxsb2NhdGVCdXROb3RFbXB0eSAmIGVtcHR5
ID09IDAKKy8vCisvLyBJbnN0ZWFkIG9mIGNhbGxpbmcgaXQgY2FuQWxsb2NhdGUgYW5kIG1ha2lu
ZyBpdCBpbmNsdXNpdmU6CisvLworLy8gICAgIGNhbkFsbG9jYXRlICYgZW1wdHkgPT0gZW1wdHkK
Ky8vCisvLyBUaGUgbGF0dGVyIGlzIHByb2JhYmx5IGJldHRlci4gSSdsbCBsZWF2ZSBpdCB0byBh
IGZ1dHVyZSBidWcgdG8gZml4IHRoYXQsIHNpbmNlIGJyZWF0aGluZyBvbgorLy8gdGhpcyBjb2Rl
IGxlYWRzIHRvIHJlZ3Jlc3Npb25zIGZvciBkYXlzLCBhbmQgaXQncyBub3QgY2xlYXIgdGhhdCBt
YWtpbmcgdGhpcyBjaGFuZ2Ugd291bGQKKy8vIGltcHJvdmUgcGVyZiBzaW5jZSBpdCB3b3VsZCBu
b3QgY2hhbmdlIHRoZSBjb2xsZWN0b3IncyBiZWhhdmlvciwgYW5kIGVpdGhlciB3YXkgdGhlIGFs
bG9jYXRvcgorLy8gaGFzIHRvIGxvb2sgYXQgYm90aCBiaXR2ZWN0b3JzLgorLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjEyMQorCisvLyBOb3RlIHRoYXQgdGhp
cyBjb2xsZWN0b3Igc3VwcG9ydHMgb3ZlcmxhcHBpbmcgYWxsb2NhdG9yIHN0YXRlIHdpdGggbWFy
a2luZyBzdGF0ZSwgc2luY2UgaW4gYQorLy8gY29uY3VycmVudCBjb2xsZWN0b3IgeW91IGFsbG93
IGFsbG9jYXRpb24gd2hpbGUgbWFya2luZyBpcyBydW5uaW5nLiBTbyBpdCdzIGJlc3QgdG8gdmlz
dWFsaXplIGEKKy8vIGZ1bGwgbXV0YWJsZS0+ZWRlbiBjb2xsZWN0LT5tdXRhdGUtPmZ1bGwgY29s
bGVjdCBjeWNsZSBhbmQgc2VlIGhvdyB0aGUgYml0cyBhYm92ZSBnZXQgYWZmZWN0ZWQuCisvLyBU
aGUgZXhhbXBsZSBiZWxvdyB0cmllcyB0byBiZSBleGhhdXN0aXZlIGFib3V0IHdoYXQgaGFwcGVu
cyB0byB0aGUgYml0cywgYnV0IG9taXRzIGEgbG90IG9mCisvLyB0aGluZ3MgdGhhdCBoYXBwZW4g
dG8gb3RoZXIgc3RhdGUuCisvLworLy8gQ3JlYXRlIGFsbG9jYXRvcgorLy8gLSBhbGwgYml0cyBh
cmUgZW1wdHkKKy8vIFN0YXJ0IGFsbG9jYXRpbmcgaW4gc29tZSBibG9jaworLy8gLSBhbGxvY2F0
ZSB0aGUgYmxvY2sgYW5kIHNldCB0aGUgbGl2ZSBiaXQuCisvLyAtIHRoZSBlbXB0eSBiaXQgZm9y
IHRoZSBibG9jayBmbGlja2VycyBvbiBhbmQgdGhlbiBnZXRzIGltbWVkaWF0ZWx5IGNsZWFyZWQg
Ynkgc3dlZXBpbmcuCisvLyAtIHNldCB0aGUgZWRlbiBiaXQuCisvLyBGaW5pc2ggYWxsb2NhdGlu
ZyBpbiB0aGF0IGJsb2NrCisvLyAtIHNldCB0aGUgYWxsb2NhdGVkIGJpdC4KKy8vIERvIHRoYXQg
dG8gYSBsb3Qgb2YgYmxvY2tzIGFuZCB0aGVuIHN0YXJ0IGFuIGVkZW4gY29sbGVjdGlvbi4KKy8v
IC0gYmVnaW5NYXJraW5nKCkgaGFzIG5vdGhpbmcgdG8gZG8uCisvLyAtIGJ5IGRlZmF1bHQgd2Ug
aGF2ZSBjbGVhciBtYXJraW5nTm90RW1wdHkvbWFya2luZ1JldGlyZWQgYml0cy4KKy8vIC0gbWFy
a2luZyBidWlsZHMgdXAgbWFya2luZ05vdEVtcHR5L21hcmtpbmdSZXRpcmVkIGJpdHMuCisvLyBX
ZSBkbyBlbmRNYXJraW5nKCkKKy8vIC0gY2xlYXIgYWxsIGFsbG9jYXRlZCBiaXRzLgorLy8gLSBm
b3IgZGVzdHJ1Y3RvciBibG9ja3M6IGZyYWdtZW50ZWQgPSBsaXZlICYgfm1hcmtpbmdSZXRpcmVk
CisvLyAtIGZvciBub24tZGVzdHJ1Y3RvciBibG9ja3M6CisvLyAgICAgICBlbXB0eSA9IGxpdmUg
JiB+bWFya2luZ05vdEVtcHR5CisvLyAgICAgICBmcmFnbWVudGVkID0gbGl2ZSAmIG1hcmtpbmdO
b3RFbXB0eSAmIH5tYXJraW5nUmV0aXJlZAorLy8gU25hcHNob3R0aW5nLgorLy8gLSB1bnN3ZXB0
IHw9IGVkZW4KKy8vIFByZXBhcmUgZm9yIGFsbG9jYXRpb24uCisvLyAtIGNsZWFyIGVkZW4KKy8v
IEZpbmlzaCBjb2xsZWN0aW9uLgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9jayB0aGF0IGhhZCBz
b21lIGZyZWUgYW5kIHNvbWUgbGl2ZSBvYmplY3RzLgorLy8gLSBjbGVhciB0aGUgY2FuQWxsb2Nh
dGVCdXROb3RFbXB0eSBiaXQKKy8vIC0gY2xlYXIgdGhlIHVuc3dlcHQgYml0CisvLyAtIHNldCB0
aGUgZWRlbiBiaXQKKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRlZCBiaXQp
LgorLy8gQWxsb2NhdGUgaW4gc29tZSBibG9jayB0aGF0IHdhcyBjb21wbGV0ZWx5IGVtcHR5Lgor
Ly8gLSBjbGVhciB0aGUgZW1wdHkgYml0CisvLyAtIGNsZWFyIHRoZSB1bnN3ZXB0IGJpdAorLy8g
LSBzZXQgdGhlIGVkZW4gYml0LgorLy8gRmluaXNoIGFsbG9jYXRpbmcgKHNldCB0aGUgYWxsb2Nh
dGVkIGJpdCkuCisvLyBBbGxvY2F0ZSBpbiBzb21lIGJsb2NrIHRoYXQgd2FzIGNvbXBsZXRlbHkg
ZW1wdHkgaW4gYW5vdGhlciBhbGxvY2F0b3IuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSBiaXQKKy8v
IC0gY2xlYXIgYWxsIGJpdHMgaW4gdGhhdCBhbGxvY2F0b3IKKy8vIC0gc2V0IHRoZSBsaXZlIGJp
dCBpbiBhbm90aGVyIGFsbG9jYXRvciBhbmQgdGhlIGVtcHR5IGJpdC4KKy8vIC0gY2xlYXIgdGhl
IGVtcHR5LCB1bnN3ZXB0IGJpdHMuCisvLyAtIHNldCB0aGUgZWRlbiBiaXQuCisvLyBGaW5pc2gg
YWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4KKy8vIFN0YXJ0IGEgZnVsbCBjb2xs
ZWN0aW9uLgorLy8gLSBiZWdpbk1hcmtpbmcoKSBjbGVhcnMgbWFya2luZ05vdEVtcHR5LCBtYXJr
aW5nUmV0aXJlZAorLy8gLSB0aGUgaGVhcCB2ZXJzaW9uIGlzIGluY3JlbWVudGVkCisvLyAtIG1h
cmtpbmcgcmVidWlsZHMgbWFya2luZ05vdEVtcHR5L21hcmtpbmdyZXRpcmVkIGJpdHMuCisvLyBX
ZSBkbyBlbmRNYXJraW5nKCkKKy8vIC0gY2xlYXIgYWxsIGFsbG9jYXRlZCBiaXRzLgorLy8gLSBz
ZXQgY2FuQWxsb2NhdGVCdXROb3RFbXB0eS9lbXB0eSB0aGUgc2FtZSB3YXkgYXMgaW4gZWRlbiBj
b2xsZWN0aW9uLgorLy8gU25hcHNob3R0aW5nLgorLy8gLSB1bnN3ZXB0ID0gbGl2ZQorLy8gcHJl
cGFyZSBmb3IgYWxsb2NhdGlvbi4KKy8vIC0gY2xlYXIgZWRlbi4KKy8vIEZpbmlzaCBjb2xsZWN0
aW9uLgorLy8KKy8vIE5vdGljZSBob3cgaW4gdGhpcyBzY2hlbWUsIHRoZSBlbXB0eS9jYW5BbGxv
Y2F0ZUJ1dE5vdEVtcHR5IHN0YXRlIHN0YXlzIHNlcGFyYXRlIGZyb20gdGhlCisvLyBtYXJraW5n
Tm90RW1wdHkvbWFya2luZ1JldGlyZWQgc3RhdGUuIFRoaXMgaXMgb25lIHN0ZXAgdG93YXJkcyBo
YXZpbmcgc2VwYXJhdGVkIGFsbG9jYXRpb24gYW5kCisvLyBtYXJraW5nIHN0YXRlLgorLy8KKy8v
IEFmdGVyIHRoaXMsIHdlIGp1c3QgbmVlZCB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9uOiB3aGF0IGRv
ZXMgYW4gb2JqZWN0IGFsbG9jYXRlZCBkdXJpbmcgZWRlbiBHQworLy8gbG9vayBsaWtlIHRvIHRo
ZSBHQz8KKy8vCisvLyBJJ3ZlIGNvbWUgdXAgd2l0aCB0d28gY29tcGVsbGluZyBhbnN3ZXJzLgor
Ly8KKy8vIDEuIEFMTE9DQVRFIEJMQUNLCisvLworLy8gSSB0aGluayB0aGF0IHRoZSBlYXNpZXN0
IGFuc3dlciBpcyB0byBhbGxvY2F0ZSB0aGUgb2JqZWN0IHdoaXRlIGFuZCB0aGVuCisvLyBpbW1l
ZGlhdGVseSBtYXJrIGl0LiBUaGlzIG1ha2VzIHRoZSBvYmplY3QgYmVoYXZlIGFzIGlmIGl0IHdh
cyBhbGxvY2F0ZWQganVzdCBiZWZvcmUgdGhlIHN0YXJ0CisvLyBvZiBHQyBhbmQgaXQgd2FzIG9u
IHRoZSBzdGFjayBhdCB0aGUgYmVnaW5uaW5nIG9mIEdDLiBXZSB3b3VsZG4ndCBoYXZlIHRvIGRv
IGFueXRoaW5nIGRpZmZlcmVudAorLy8gd2l0aCB0aGUgdmFyaW91cyBibG9jayBiaXRzIHdoZW4g
YWxsb2NhdGluZyBkdXJpbmcgR0M6IHdlIGNvdWxkIHN0aWxsIHNldCBlZGVuIGFuZCBhbGxvY2F0
ZWQKKy8vIHNpbmNlIHRoZXkgd2lsbCBiZSBjbGVhcmVkIGFueXdheS4KKy8vCisvLyBCdXQgdGhp
cyBtZWFucyB0aGF0IHRoZSBvYmplY3Qgd29uJ3QgYmUgZWxpZ2libGUgZm9yIGZyZWVpbmcgdW50
aWwgdGhlIG5leHQgZnVsbCBHQy4gSWRlYWxseQorLy8gd2UnZCBtYWtlIHRoZSBvYmplY3QgaXMg
ZWxpZ2libGUgZm9yIGZyZWVpbmcgYXQgdGhlIG5leHQgZWRlbiBHQy4gVGhlcmUncyBhIGJ1bmNo
IG9mIHRoaW5ncyB3ZQorLy8gY291bGQgZG8gdG8gbWFrZSB0aGlzIGhhcHBlbi4gSGVyZSBhcmUg
c29tZSBpZGVhczoKKy8vCisvLyAtIEludHJvZHVjZSBhIG5ldyBDZWxsU3RhdGUsIGNhbGxlZCBG
bG9hdCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgb2JqZWN0IHdhcyBhbGxvY2F0ZWQgZHVyaW5nIHRo
ZQorLy8gICBHQy4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgbWFya2luZyBkb2VzIG5vdGhpbmcg
Zm9yIEZsb2F0cy4gVGhpcyB3b3VsZCBtYWtlIG1hcmtpbmcgYSB0aW55CisvLyAgIGJpdCBtb3Jl
IGV4cGVuc2l2ZS4gV2Ugd291bGQgbWFrZSBzdXJlIHRoYXQgdGhlIGJhcnJpZXIgcmVjb2duaXpl
cyBzdG9yZXMgdG8gYSBGbG9hdCB0aGUgc2FtZQorLy8gICB3YXkgdGhhdCBpdCBzZWVzIGEgc3Rv
cmUgdG8gT2xkQmxhY2s6IGl0IHB1dHMgdGhlIG9iamVjdCBvbiB0aGUgbWFyayBzdGFjay4gRmxv
YXRzIHdvdWxkIGJlCisvLyAgIHB1dCBvbiB0aGUgbWFyayBzdGFjayBhcyBGbG9hdEdyZXkgdG8g
aW5kaWNhdGUgdGhhdCB0aGV5IHdpbGwgYmUgc2Nhbm5lZCBieSB0aGUgR0MgYnV0IHRoYXQKKy8v
ICAgdGhleSBhcmVuJ3QgYWN0dWFsbHkgbWFya2VkLgorLy8KKy8vICAgTm90ZSB0aGF0IHRoaXMg
aW1wbGllcyBoYXZpbmcgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aG9zZSBjZWxscyBmcm9tIEZs
b2F0IHRvIHNvbWV0aGluZyBlbHNlCisvLyAgIGF0IHRoZSBlbmQgb2YgR0MuICBJJ20gbm90IHN1
cmUgdGhhdCB0aGlzIGlzIHNvIGdyZWF0LgorLy8KKy8vIC0gTWFyayB0aGUgb2JqZWN0cyBhZnRl
ciBhbGxvY2F0aW9uLCBidXQgYWxzbyBzZXQgc29tZSBvdGhlciBiaXRzIHRvIGluZGljYXRlIHRo
YXQgdGhlIHRob3NlCisvLyAgIG9iamVjdHMgc2hvdWxkIGJlIHVubWFya2VkIGF0IHRoZSBlbmQg
b2YgdGhlIEdDLgorLy8KKy8vIEVpdGhlciBvZiB0aGVzZSBhcHByb2FjaGVzIHdvdWxkIG1ha2Ug
Y29sbGVjdGlvbnMgbW9yZSBleHBlbnNpdmUsIGJ1dCBpdCBmZWVscyBsaWtlIHRoZSBsYXR0ZXIK
Ky8vIGFwcHJvYWNoIHdvdWxkIGJlIGEgcHJvZml0YWJsZSBvcHRpbWl6YXRpb24uIEknbSBhbHNv
IHJlYWxseSBnZXR0aW5nIHdvcnJpZWQgYWJvdXQgaG93IHRoaXMgR0MKKy8vIGV4cGVyaWVuY2Vz
IGJhY2t3YXJkcyB0aW1lIHRyYXZlbCwgd2l0aCBhbGwgdGhlIHJlbWFya2luZyBvZiB0aGluZ3Mg
bGlrZSBuZXcgb2JqZWN0cyBhbmQKKy8vIHdoYXRub3QuCisvLworLy8gMi4gQUxMT0NBVEUgV0hJ
VEUKKy8vCisvLyBJIGRvbid0IGtub3cgaWYgdGhpcyBpcyBzb3VuZCwgYnV0IGlmIGl0IHdhcyB0
aGVuIGl0IHdvdWxkIGJlIHRoZSBvcHRpbWFsIHNvbHV0aW9uLiBBbGxvY2F0aW9uCisvLyB3b3Vs
ZCB3b3JrIGFzIG5vdyBhbmQgY29uc2VxdWVudGx5LCBldmVyeXRoaW5nIHdlIGtub3cgYWJvdXQg
d2hhdCB3YXMgYWxsb2NhdGVkIGR1cmluZyBhIEdDIGlzCisvLyBmb3Jnb3R0ZW4gYXQgdGhlIGVu
ZCBvZiBHQy4gQnV0IHRoYXQncyBmaW5lLiBFbmQgb2YgR0MgbXVzdCByZXNjYW4gYW55IGhlYXAg
bG9jYXRpb25zIHRoYXQgZ290CisvLyBzdG9yZWQgaW50byBhbmQgaXQgbXVzdCByZXNjYW4gdGhl
IHN0YWNrLiBTbywgd2hpdGUgb2JqZWN0cyBhbGxvY2F0ZWQgZHVyaW5nIEdDIHdvdWxkIGdldAor
Ly8gbWFya2VkIGlmIHRoZXkgc29tZWhvdyBzdXJ2aXZlZC4KKy8vCisvLyBUaGlzIG1lYW5zIHRo
YXQgZm9yIGV4YW1wbGUgaWYgdGhlcmUgaXMgYSBmaWVsZCB0aGF0IG9mdGVuIGdldHMgc3RvcmVk
IHRvIHdpdGggbmV3IG9iamVjdHMsIHRoZQorLy8gR0Mgd2lsbCBub3Qgc2VlIGFsbCBvZiB0aGUg
dmFsdWVzIGluIHRoYXQgZmllbGQgYnV0IGluc3RlYWQgaXQgd291bGQgcG9sbCB0aGF0IGZpZWxk
LCBob3BlZnVsbHkKKy8vIHNvbWV3aGF0IHJhcmVseS4gV2UgY2FuIG1ha2UgaXQgdmVyeSByYXJl
IGJ5IG9ubHkgaW5mcmVxdWVudGx5IGRvbmF0aW5nIGZyb20gdGhlIG1haW4gdGhyZWFkJ3MKKy8v
IHNsb3QgdmlzaXRvciB0byBhbnkgb2YgdGhlIG90aGVycy4gU28sIHdlIHdvdWxkIG9ubHkgbWFy
ayBzb21lIG9mIHRoZSBuZXcgb2JqZWN0cyB0aGF0IGdvdAorLy8gc3RvcmVkIGludG8gdGhhdCBm
aWVsZC4gSXQgYWxzbyBtZWFucyB0aGF0IGFueSBvYmplY3QgYWxsb2NhdGVkIGR1cmluZyB0aGUg
R0MgdGhhdCBkaWRuJ3QgZ2V0CisvLyBzdG9yZWQgaW50byBhbnkgb2JqZWN0IHRoYXQgd2FzIGxp
dmUgc2luY2UgYmVmb3JlIHRoZSBzdGFydCBvZiBHQyB3b3VsZCBzaW1wbHkgZGlzYXBwZWFyLiBU
aGlzCisvLyBtZWFucyBtdWNoIGxlc3MgcmVzY2FubmluZyB0aGFuIGFueSBvZiB0aGUgb3RoZXIg
cHJvcG9zYWxzLgorLy8KKy8vIEkgcmVhbGx5IHdhbnQgdG8gZ28gd2l0aCB0aGUgYWxsb2NhdGUt
d2hpdGUgYXBwcm9hY2gsIGJ1dCBJIG5lZWQgdG8gdGhpbmsgbW9yZSBkZWVwbHkgYWJvdXQgaXQK
Ky8vIGJlZm9yZSBJIGNvbW1pdCB0byBpdC4KKwogY2xhc3MgTWFya2VkQWxsb2NhdG9yIHsKICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCkBAIC00Niw5ICsxOTEsMTYg
QEAgcHVibGljOgogCiAgICAgTWFya2VkQWxsb2NhdG9yKEhlYXAqLCBNYXJrZWRTcGFjZSosIHNp
emVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYpOwogICAgIHZvaWQgbGFz
dENoYW5jZVRvRmluYWxpemUoKTsKLSAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBwcmVwYXJl
Rm9yQWxsb2NhdGlvbigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKICAgICB2b2lkIHJl
c3VtZUFsbG9jYXRpbmcoKTsKKyAgICB2b2lkIGJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9u
KCk7CisgICAgdm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdFVuc3dlcHRGb3JF
ZGVuQ29sbGVjdGlvbigpOworICAgIHZvaWQgc25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rp
b24oKTsKKyAgICB2b2lkIHN3ZWVwKCk7CisgICAgdm9pZCBzaHJpbmsoKTsKKyAgICB2b2lkIGFz
c2VydE5vVW5zd2VwdCgpOwogICAgIHNpemVfdCBjZWxsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2VsbFNpemU7IH0KICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IE5lZWRzRGVzdHJ1
Y3Rpb247IH0KQEAgLTcyLDM1ICsyMjQsODkgQEAgcHVibGljOgogICAgIGJvb2wgaXNQYWdlZE91
dChkb3VibGUgZGVhZGxpbmUpOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYmxvY2tTaXplRm9y
Qnl0ZXMoc2l6ZV90KTsKKyAgICAKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNT
T1JTKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAgICBcCisgICAgYm9vbCBpcyAjIyBj
YXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fICMjIGxvd2VyQml0
TmFtZVtpbmRleF07IH0gXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0YWxCaXROYW1lKGJs
b2NrLT5pbmRleCgpKTsgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShzaXpl
X3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4XSA9IHZhbHVl
OyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzICMjIGNhcGl0YWxCaXROYW1lKGJsb2NrLT5p
bmRleCgpLCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBp
dGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2Vy
Qml0TmFtZS5hdG9taWNTZXRBbmRDaGVjayhpbmRleCwgdmFsdWUpOyB9IFwKKyAgICBib29sIGF0
b21pY1NldEFuZENoZWNrSXMgIyMgY2FwaXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2ssIGJvb2wgdmFsdWUpIHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZS5hdG9taWNTZXRB
bmRDaGVjayhibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FM
TE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIE1BUktF
RF9BTExPQ0FUT1JfQklUX0FDQ0VTU09SUworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
KyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisjZGVm
aW5lIE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJp
dE5hbWUpIFwKKyAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBGT1Jf
RUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyk7
CisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0sKKyAgICB9CisgICAgCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFt
ZShjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRf
Q0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAgICBmdW5jKG1f
ICMjIGxvd2VyQml0TmFtZSwgI2NhcGl0YWxCaXROYW1lKTsKKyAgICAgICAgRk9SX0VBQ0hfTUFS
S0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJBQ0spOworI3VuZGVm
IE1BUktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLCisgICAgfQorICAgIAorICAgIE1hcmtlZEFs
bG9jYXRvciogbmV4dEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEFsbG9jYXRvcjsg
fQorICAgIAorICAgIC8vIE1hcmtlZFNwYWNlIGNhbGxzIHRoaXMgZHVyaW5nIGluaXQuCisgICAg
dm9pZCBzZXROZXh0QWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKSB7IG1fbmV4
dEFsbG9jYXRvciA9IGFsbG9jYXRvcjsgfQorICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpOworICAgIAorICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGZpbmRCbG9ja1RvU3dlZXAoKTsKKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdDsKKyAgICB2b2lkIGR1bXBCaXRzKFByaW50U3RyZWFtJiA9IFdURjo6ZGF0YUZpbGUoKSk7
CiAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIAorICAg
IGJvb2wgc2hvdWxkU3RlYWxFbXB0eUJsb2Nrc0Zyb21PdGhlckFsbG9jYXRvcnMoKSBjb25zdDsK
KyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKCk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogdHJ5QWxsb2NhdGVTbG93Q2FzZSgpOwogICAgIHZv
aWQqIGFsbG9jYXRlU2xvd0Nhc2VJbXBsKGJvb2wgY3Jhc2hPbkZhaWx1cmUpOworICAgIHZvaWQg
ZGlkQ29uc3VtZUZyZWVMaXN0KCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVj
dGluZygpOwotICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCk7CiAg
ICAgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5QWxsb2NhdGVCbG9jaygpOworICAgIHZvaWQqIHRy
eUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSopOworICAgIHZvaWQqIGFsbG9jYXRlSW4o
TWFya2VkQmxvY2s6OkhhbmRsZSopOwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkb1Rlc3RDb2xs
ZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgdm9pZCByZXRpcmUoTWFya2VkQmxvY2s6OkhhbmRsZSop
OwogICAgIAogICAgIHZvaWQgc2V0RnJlZUxpc3QoY29uc3QgRnJlZUxpc3QmKTsKICAgICAKLSAg
ICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaWx0ZXJOZXh0QmxvY2soTWFya2VkQmxvY2s6OkhhbmRs
ZSopOwotICAgIHZvaWQgc2V0TmV4dEJsb2NrVG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKik7
Ci0gICAgCiAgICAgRnJlZUxpc3QgbV9mcmVlTGlzdDsKKyAgICAKKyAgICBWZWN0b3I8TWFya2Vk
QmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tzOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mcmVlQmxv
Y2tJbmRpY2VzOworICAgIAorI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElP
Tihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCisgICAgRmFzdEJpdFZlY3RvciBtXyAj
IyBsb3dlckJpdE5hbWU7CisgICAgRk9SX0VBQ0hfTUFSS0VEX0FMTE9DQVRPUl9CSVQoTUFSS0VE
X0FMTE9DQVRPUl9CSVRfREVDTEFSQVRJT04pCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRf
REVDTEFSQVRJT04KKyAgICAKKyAgICAvLyBBZnRlciB5b3UgZG8gc29tZXRoaW5nIHRvIGEgYmxv
Y2sgYmFzZWQgb24gb25lIG9mIHRoZXNlIGN1cnNvcnMsIHlvdSBjbGVhciB0aGUgYml0IGluIHRo
ZQorICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0dmVjdG9yIGFuZCBsZWF2ZSB0aGUgY3Vyc29yIHdo
ZXJlIGl0IHdhcy4KKyAgICBzaXplX3QgbV9hbGxvY2F0aW9uQ3Vyc29yIHsgMCB9OyAvLyBQb2lu
dHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgYWxsb2NhdGlvbi4K
KyAgICBzaXplX3QgbV9lbXB0eUN1cnNvciB7IDAgfTsgLy8gUG9pbnRzIHRvIHRoZSBuZXh0IGJs
b2NrIHRoYXQgaXMgYSBjYW5kaWRhdGUgZm9yIGVtcHR5IGFsbG9jYXRpb24gKGFsbG9jYXRpbmcg
aW4gZW1wdHkgYmxvY2tzKS4KKyAgICBzaXplX3QgbV91bnN3ZXB0Q3Vyc29yIHsgMCB9OyAvLyBQ
b2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3IgaW5jcmVtZW50
YWwgc3dlZXBpbmcuCisgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9jdXJyZW50Qmxv
Y2s7CiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0QmxvY2tUb1N3ZWVwOwotICAgIFNlbnRpbmVsTGlua2Vk
TGlzdDxNYXJrZWRCbG9jazo6SGFuZGxlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRCbG9j
azo6SGFuZGxlPj4gbV9ibG9ja0xpc3Q7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJs
b2NrOjpIYW5kbGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBt
X3JldGlyZWRCbG9ja3M7CisKICAgICBMb2NrIG1fbG9jazsKICAgICB1bnNpZ25lZCBtX2NlbGxT
aXplOwogICAgIEFsbG9jYXRvckF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIEhlYXAqIG1f
aGVhcDsKICAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAgICBNYXJrZWRBbGxvY2F0
b3IqIG1fbmV4dEFsbG9jYXRvcjsKIH07CiAKIGlubGluZSBwdHJkaWZmX3QgTWFya2VkQWxsb2Nh
dG9yOjpvZmZzZXRPZkZyZWVMaXN0KCkKQEAgLTE0OSwyMCArMzU1LDEyIEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGwKICAgICByZXR1cm4gaGVhZDsKIH0KIAotaW5s
aW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKLXsKLSAgICBpZiAo
IW1fbGFzdEFjdGl2ZUJsb2NrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ZyZWVMaXN0ID0g
bV9sYXN0QWN0aXZlQmxvY2stPnJlc3VtZUFsbG9jYXRpbmcoKTsKLSAgICBtX2N1cnJlbnRCbG9j
ayA9IG1fbGFzdEFjdGl2ZUJsb2NrOwotICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKLX0KLQog
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9ibG9ja0xpc3Qu
Zm9yRWFjaChmdW5jdG9yKTsKLSAgICBtX3JldGlyZWRCbG9ja3MuZm9yRWFjaChmdW5jdG9yKTsK
KyAgICBtX2xpdmUuZm9yRWFjaFNldEJpdCgKKyAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsK
KyAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgfSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzYsNyArMzcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBib29sIGNvbXB1dGVCYWxhbmNlID0g
ZmFsc2U7CiBzdGF0aWMgc2l6ZV90IGJhbGFuY2U7CiAKLU1hcmtlZEJsb2NrOjpIYW5kbGUqIE1h
cmtlZEJsb2NrOjp0cnlDcmVhdGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRl
cykKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoSGVhcCYgaGVh
cCkKIHsKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFsYW5jZSsrOwpAQCAt
NDgsMjYgKzQ5LDE3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmUK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCiAg
ICAgICAgIHNjcmliYmxlKGJsb2NrU3BhY2UsIGJsb2NrU2l6ZSk7Ci0gICAgcmV0dXJuIG5ldyBI
YW5kbGUoaGVhcCwgYWxsb2NhdG9yLCBjZWxsU2l6ZSwgYXR0cmlidXRlcywgYmxvY2tTcGFjZSk7
CisgICAgcmV0dXJuIG5ldyBIYW5kbGUoaGVhcCwgYmxvY2tTcGFjZSk7CiB9CiAKLU1hcmtlZEJs
b2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCB2b2lkKiBibG9ja1NwYWNlKQotICAgIDogbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsgYXRv
bVNpemUgLSAxKSAvIGF0b21TaXplKQotICAgICwgbV9lbmRBdG9tKGF0b21zUGVyQmxvY2sgLSBt
X2F0b21zUGVyQ2VsbCArIDEpCi0gICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKLSAgICAs
IG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgotICAgICwgbV9h
bGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+aGVhcCgpLT52
bSgpLCBDZWxsQ29udGFpbmVyKCkpCitNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYg
aGVhcCwgdm9pZCogYmxvY2tTcGFjZSkKKyAgICA6IG1fd2Vha1NldChoZWFwLnZtKCksIENlbGxD
b250YWluZXIoKSkKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1NwYWNlKSBN
YXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCiAgICAgbV93ZWFrU2V0LnNldENv
bnRhaW5lcigqbV9ibG9jayk7CiAgICAgCiAgICAgaGVhcC5kaWRBbGxvY2F0ZUJsb2NrKGJsb2Nr
U2l6ZSk7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICBB
U1NFUlQoYWxsb2NhdG9yKTsKLSAgICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxLaW5kICE9IEhlYXBD
ZWxsOjpKU0NlbGwpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0cmlidXRlcy5kZXN0cnVj
dGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKIH0KIAogTWFya2VkQmxvY2s6OkhhbmRs
ZTo6fkhhbmRsZSgpCkBAIC03OCw0NSArNzAsMzUgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhh
bmRsZSgpCiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9n
KCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9CisgICAgcmVt
b3ZlRnJvbUFsbG9jYXRvcigpOwogICAgIG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwogICAgIGZh
c3RBbGlnbmVkRnJlZShtX2Jsb2NrKTsKICAgICBoZWFwLmRpZEZyZWVCbG9jayhibG9ja1NpemUp
OwogfQogCiBNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmIGhhbmRsZSkK
LSAgICA6IG1fbmVlZHNEZXN0cnVjdGlvbihoYW5kbGUubmVlZHNEZXN0cnVjdGlvbigpKQotICAg
ICwgbV92ZXJzaW9uKHZtLmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpCisgICAgOiBtX3Zl
cnNpb24oTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uKQogICAgICwgbV9oYW5kbGUoaGFuZGxlKQog
ICAgICwgbV92bSgmdm0pCiB7Ci0gICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNw
YWNlOjpibG9ja1BheWxvYWQgLyBoYW5kbGUuY2VsbFNpemUoKTsKLSAgICBkb3VibGUgbWFya0Nv
dW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQ
ZXJCbG9jayk7Ci0gICAgCi0gICAgLy8gVGhlIG1hcmsgY291bnQgYmlhcyBzaG91bGQgYmUgY29t
Zm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2UuCi0gICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50
QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90Pjo6
bWluKCkpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzIDwgMCk7Ci0gICAgCi0g
ICAgbV9tYXJrQ291bnRCaWFzID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFya0NvdW50Qmlhcyk7
Ci0gICAgCi0gICAgbV9iaWFzZWRNYXJrQ291bnQgPSBtX21hcmtDb3VudEJpYXM7IC8vIFRoaXMg
bWVhbnMgd2UgaGF2ZW4ndCBtYXJrZWQgYW55dGhpbmcgeWV0LgogfQogCi10ZW1wbGF0ZTxNYXJr
ZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2Vl
cE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgordGVtcGxhdGU8TWFy
a2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwg
TWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6RmxpcE1vZGUgZmxpcE1vZGU+CiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwKCkKIHsKLSAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgQVNTRVJUKGJsb2NrU3RhdGUgPT0gTmV3IHx8IGJs
b2NrU3RhdGUgPT0gTWFya2VkKTsKLSAgICBBU1NFUlQoIShkZXN0cnVjdGlvbk1vZGUgPT0gRG9l
c05vdE5lZWREZXN0cnVjdGlvbiAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CisgICAgUkVM
RUFTRV9BU1NFUlQoIShkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbiAm
JiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CiAgICAgCi0gICAgYXNzZXJ0RmxpcHBlZCgpOwor
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKwogICAgIE1h
cmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7CiAgICAgCi0gICAgYm9vbCBpc05ld0Js
b2NrID0gYmxvY2tTdGF0ZSA9PSBOZXc7Ci0gICAgYm9vbCBpc0VtcHR5QmxvY2sgPSAhYmxvY2su
aGFzQW55TWFya2VkKCkKLSAgICAgICAgJiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNOb3RI
YXZlTmV3bHlBbGxvY2F0ZWQKLSAgICAgICAgJiYgZGVzdHJ1Y3Rpb25Nb2RlID09IERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb247Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKSAmJiAo
aXNOZXdCbG9jayB8fCBpc0VtcHR5QmxvY2spKSB7Ci0gICAgICAgIEFTU0VSVChibG9jay5tX21h
cmtzLmlzRW1wdHkoKSk7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50
ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAhXG4iKTsK
KyAgICAKKyAgICBpZiAoT3B0aW9uczo6dXNlQnVtcEFsbG9jYXRvcigpCisgICAgICAgICYmIGVt
cHR5TW9kZSA9PSBJc0VtcHR5CisgICAgICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkKSB7CisgICAgICAgIEFTU0VSVChmbGlwTW9kZSA9PSBOZWVk
c0ZsaXApOwogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRPZkxhc3RDZWxsID0gc3RhdGlj
X2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsgbV9lbmRBdG9tIC0gMSkpOwog
ICAgICAgICBjaGFyKiBwYXlsb2FkRW5kID0gc3RhcnRPZkxhc3RDZWxsICsgY2VsbFNpemUoKTsK
QEAgLTEyNCw3ICsxMDYsMTAgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lh
bGl6ZQogICAgICAgICBjaGFyKiBwYXlsb2FkQmVnaW4gPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGJs
b2NrLmF0b21zKCkgKyBmaXJzdEF0b20oKSk7CiAgICAgICAgIGlmIChzY3JpYmJsZU1vZGUgPT0g
U2NyaWJibGUpCiAgICAgICAgICAgICBzY3JpYmJsZShwYXlsb2FkQmVnaW4sIHBheWxvYWRFbmQg
LSBwYXlsb2FkQmVnaW4pOwotICAgICAgICBtX3N0YXRlID0gKChzd2VlcE1vZGUgPT0gU3dlZXBU
b0ZyZWVMaXN0KSA/IEZyZWVMaXN0ZWQgOiBNYXJrZWQpOworICAgICAgICBpZiAoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgICAgIHNldElzRnJlZUxpc3RlZCgpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVl
KTsKICAgICAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6OmJ1bXAocGF5bG9hZEVuZCwg
cGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7CiAgICAgICAgIGlmIChmYWxzZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIlF1aWNrbHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcih0aGlzKSwgIiB3
aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSgpLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0cmli
dXRlcywgIjogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTEzNiwxNSArMTIxLDE4IEBAIEZyZWVMaXN0
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAvLyBvcmRlciBvZiB0aGUgZnJl
ZSBsaXN0LgogICAgIEZyZWVDZWxsKiBoZWFkID0gMDsKICAgICBzaXplX3QgY291bnQgPSAwOwor
ICAgIGJvb2wgaXNFbXB0eSA9IHRydWU7CiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgp
OyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgIGlmIChibG9j
a1N0YXRlID09IE1hcmtlZAotICAgICAgICAgICAgJiYgKGJsb2NrLm1fbWFya3MuZ2V0KGkpCi0g
ICAgICAgICAgICAgICAgfHwgKG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBIYXNOZXdseUFsbG9jYXRl
ZCAmJiBtX25ld2x5QWxsb2NhdGVkLT5nZXQoaSkpKSkKKyAgICAgICAgaWYgKGVtcHR5TW9kZSA9
PSBOb3RFbXB0eQorICAgICAgICAgICAgJiYgKChmbGlwTW9kZSA9PSBEb2VzTm90TmVlZEZsaXAg
JiYgYmxvY2subV9tYXJrcy5nZXQoaSkpCisgICAgICAgICAgICAgICAgfHwgKG5ld2x5QWxsb2Nh
dGVkTW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5QWxsb2NhdGVkLT5nZXQoaSkp
KSkgeworICAgICAgICAgICAgaXNFbXB0eSA9IGZhbHNlOwogICAgICAgICAgICAgY29udGludWU7
Ci0KKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVy
cHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZibG9jay5hdG9tcygpW2ldKTsKIAotICAgICAgICBp
ZiAoZGVzdHJ1Y3Rpb25Nb2RlID09IE5lZWRzRGVzdHJ1Y3Rpb24gJiYgYmxvY2tTdGF0ZSAhPSBO
ZXcpCisgICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNEZXN0cnVjdGlvbiAmJiBl
bXB0eU1vZGUgPT0gTm90RW1wdHkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxKU0NlbGwqPihj
ZWxsKS0+Y2FsbERlc3RydWN0b3IoKnZtKCkpOwogCiAgICAgICAgIGlmIChzd2VlcE1vZGUgPT0g
U3dlZXBUb0ZyZWVMaXN0KSB7CkBAIC0xNjMsNyArMTUxLDEwIEBAIEZyZWVMaXN0IE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgbV9uZXdseUFsbG9jYXRlZCA9IG51bGxw
dHI7CiAKICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6bGlzdChoZWFkLCBjb3VudCAq
IGNlbGxTaXplKCkpOwotICAgIG1fc3RhdGUgPSAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dCA/IEZyZWVMaXN0ZWQgOiBNYXJrZWQpOworICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0Zy
ZWVMaXN0KQorICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKKyAgICBlbHNlIGlmIChpc0VtcHR5
KQorICAgICAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCB0cnVlKTsKICAgICBpZiAo
ZmFsc2UpCiAgICAgICAgIGRhdGFMb2coIlNsb3dseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVy
KCZibG9jayksICIgd2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0cmlidXRl
cyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIik7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTE3MSwxNSArMTYyLDIwIEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNw
ZWNpYWxpemUKIAogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXAoU3dlZXBNb2Rl
IHN3ZWVwTW9kZSkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKKyAgICBtX2FsbG9jYXRvci0+
c2V0SXNVbnN3ZXB0KHRoaXMsIGZhbHNlKTsKICAgICAKLSAgICBIRUFQX0xPR19CTE9DS19TVEFU
RV9UUkFOU0lUSU9OKHRoaXMpOwotCiAgICAgbV93ZWFrU2V0LnN3ZWVwKCk7CiAKICAgICBpZiAo
c3dlZXBNb2RlID09IFN3ZWVwT25seSAmJiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9l
c05vdE5lZWREZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAKKyAgICBp
ZiAoVU5MSUtFTFkobV9pc0ZyZWVMaXN0ZWQpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN3
ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOworICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsK
KyAgICB9CisgICAgCisgICAgQVNTRVJUKCFtX2FsbG9jYXRvci0+aXNBbGxvY2F0ZWQodGhpcykp
OworICAgIAogICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVj
dGlvbikKICAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlPE5lZWRz
RGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U2Ny
aWJibGVNb2RlPERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24+KHN3ZWVwTW9kZSk7CkBAIC0xODksNDcg
KzE4NSw1OSBAQCB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlCiBGcmVl
TGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZShT
d2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAgIGlmIChzY3JpYmJsZUZyZWVDZWxscygpKQotICAg
ICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFuZFN3ZWVwTW9kZTxkZXN0cnVjdGlv
bk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUpOwotICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVj
dFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgRG9udFNjcmliYmxlPihzd2VlcE1v
ZGUpOworICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rp
b25Nb2RlLCBTY3JpYmJsZT4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxl
Y3RFbXB0eU1vZGU8ZGVzdHJ1Y3Rpb25Nb2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9kZSk7CiB9
CiAKIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+Ci1GcmVlTGlzdCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVwTW9kZSBz
d2VlcE1vZGUpCitGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVj
dEVtcHR5TW9kZShTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIHN3aXRjaCAobV9zdGF0ZSkg
ewotICAgIGNhc2UgTmV3OgotICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVl
TGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPE5ldywgU3dlZXBUb0ZyZWVM
aXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9j
YXRlZD4oKTsKLSAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAgIC8vIEhhcHBlbnMgd2hlbiBh
IGJsb2NrIHRyYW5zaXRpb25zIHRvIGZ1bGx5IGFsbG9jYXRlZC4KLSAgICAgICAgQVNTRVJUKHN3
ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsK
LSAgICBjYXNlIEFsbG9jYXRlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7Ci0gICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAg
IGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09
IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJr
ZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05l
d2x5QWxsb2NhdGVkPigpCi0gICAgICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtl
ZCwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxv
Y2F0ZWQ+KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxN
YXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERv
ZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAgICAgICA6IHNwZWNpYWxpemVk
U3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBE
b2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgICAgICB9Ci0gICAgfQotICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZyZWVMaXN0KCk7CisgICAgLy8g
SXQncyBub3Qgb2J2aW91cywgYnV0IHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGtub3cgaWYgdGhl
IGJsb2NrIGlzIGVtcHR5LiBJdCdzIHRoZSBvbmx5CisgICAgLy8gYml0IHRoYXQgY2FwdHVyZXMg
dGhlc2UgY2F2ZWF0czoKKyAgICAvLyAtIEl0J3MgdHJ1ZSB3aGVuIHRoZSBibG9jayBpcyBmcmVz
aGx5IGFsbG9jYXRlZC4KKyAgICAvLyAtIEl0J3MgdHJ1ZSBpZiB0aGUgYmxvY2sgaGFkIGJlZW4g
c3dlcHQgaW4gdGhlIHBhc3QsIGFsbCBkZXN0cnVjdG9ycyB3ZXJlIGNhbGxlZCwgYW5kIHRoYXQK
KyAgICAvLyAgIHN3ZWVwIHByb3ZlZCB0aGF0IHRoZSBibG9jayBpcyBlbXB0eS4KKyAgICAvLyAt
IEl0J3MgZmFsc2UgaWYgdGhlcmUgYXJlIGFueSBkZXN0cnVjdG9ycyB0aGF0IG5lZWQgdG8gYmUg
Y2FsbGVkLCBldmVuIGlmIHRoZSBibG9jayBoYXMgbm8KKyAgICAvLyAgIGxpdmUgb2JqZWN0cy4K
KyAgICBpZiAobV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcykpCisgICAgICAgIHJldHVybiBzd2Vl
cEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkPElzRW1wdHksIGRlc3RydWN0aW9uTW9kZSwg
c2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEhh
c05ld2x5QWxsb2NhdGVkPE5vdEVtcHR5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZT4o
c3dlZXBNb2RlKTsKK30KKwordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2Rl
IGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6
OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dlZXBNb2RlIHN3
ZWVwTW9kZSkKK3sKKyAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAgcmV0dXJuIHN3
ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3Jp
YmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworICAgIHJldHVybiBzd2Vl
cEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOworfQorCit0ZW1w
bGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlv
bk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUg
c2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3
bHlBbGxvY2F0ZWRNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxw
ZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBpZiAoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0
RmxpcE1vZGU8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2Ny
aWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVy
U2VsZWN0RmxpcE1vZGU8ZW1wdHlNb2RlLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9kZSwgc2Ny
aWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7Cit9CisKK3RlbXBsYXRlPE1hcmtlZEJs
b2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3
ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVlTGlzdCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCkKK3sKKyAgICBp
ZiAobmVlZHNGbGlwKCkpCisgICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPGVtcHR5TW9k
ZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0
ZWRNb2RlLCBOZWVkc0ZsaXA+KCk7CisgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlN
b2RlLCBzd2VlcE1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9j
YXRlZE1vZGUsIERvZXNOb3ROZWVkRmxpcD4oKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjp1bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKQogewotICAgIGZsaXBJZk5lY2Vzc2Fy
eSgpOwotICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0g
ICAgCi0gICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAgICBtX3N0
YXRlID0gTWFya2VkOworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNGcmVlTGlzdGVkKTsKKyAgICBt
X2lzRnJlZUxpc3RlZCA9IGZhbHNlOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNl
dElzRnJlZUxpc3RlZCgpCit7CisgICAgbV9hbGxvY2F0b3ItPnNldElzRW1wdHkodGhpcywgZmFs
c2UpOworICAgIG1faXNGcmVlTGlzdGVkID0gdHJ1ZTsKIH0KIAogY2xhc3MgU2V0TmV3bHlBbGxv
Y2F0ZWRGdW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7CkBAIC0yNTIs
MjYgKzI2MCwxNyBAQCBwcml2YXRlOgogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BB
bGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKIHsKLSAgICBmbGlwSWZOZWNlc3Nh
cnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOworICAgIGlm
IChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZyFcbiIpOworICAgIEFTU0VSVCghYWxsb2NhdG9yKCkt
PmlzQWxsb2NhdGVkKHRoaXMpKTsKIAotICAgIGlmIChtX3N0YXRlID09IE1hcmtlZCkgewotICAg
ICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgaW4gdGhlIE1hcmtlZCBzdGF0ZSB0aGVuIHdlIGtub3cg
dGhhdCBvbmUgb2YgdGhlc2UKLSAgICAgICAgLy8gY29uZGl0aW9ucyBob2xkczoKLSAgICAgICAg
Ly8KLSAgICAgICAgLy8gLSBJdCB3YXMgbm90IHVzZWQgZm9yIGFsbG9jYXRpb24gZHVyaW5nIHRo
ZSBwcmV2aW91cyBhbGxvY2F0aW9uIGN5Y2xlLgotICAgICAgICAvLyAgIEl0IG1heSBoYXZlIGRl
YWQgb2JqZWN0cywgYW5kIHdlIG9ubHkga25vdyB0aGVtIHRvIGJlIGRlYWQgYnkgdGhlCi0gICAg
ICAgIC8vICAgZmFjdCB0aGF0IHRoZWlyIG1hcmsgYml0cyBhcmUgdW5zZXQuCi0gICAgICAgIC8v
Ci0gICAgICAgIC8vIC0gU29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCks
IGZvciBleGFtcGxlIGJlY2F1c2Ugb2YKLSAgICAgICAgLy8gICBoZWFwIGl0ZXJhdGlvbiwgYW5k
IHRoZXkgaGFkIGFscmVhZHkgCi0gICAgICAgIC8vIEhlbmNlIGlmIHRoZSBibG9jayBpcyBNYXJr
ZWQgd2UgbmVlZCB0byBsZWF2ZSBpdCBNYXJrZWQuCisgICAgaWYgKCFpc0ZyZWVMaXN0ZWQoKSkg
eworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2UgZWl0aGVyIGRpZG4ndCB1c2UgdGhpcyBi
bG9jayBhdCBhbGwgZm9yIGFsbG9jYXRpb24gc2luY2UgbGFzdCBHQywKKyAgICAgICAgLy8gb3Ig
c29tZW9uZSBoYWQgYWxyZWFkeSBkb25lIHN0b3BBbGxvY2F0aW5nKCkgYmVmb3JlLgogICAgICAg
ICBBU1NFUlQoZnJlZUxpc3QuYWxsb2NhdGlvbldpbGxGYWlsKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOwotICAgIAog
ICAgIC8vIFJvbGwgYmFjayB0byBhIGNvaGVyZW50IHN0YXRlIGZvciBIZWFwIGludHJvc3BlY3Rp
b24uIENlbGxzIG5ld2x5CiAgICAgLy8gYWxsb2NhdGVkIGZyb20gb3VyIGZyZWUgbGlzdCBhcmUg
bm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQgYW5vdGhlcgogICAgIC8vIHdheSB0byB0
ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIApAQCAtMjkwLDExICsyODksMTIgQEAgdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgICAgICAgICAgY2xlYXJOZXdseUFs
bG9jYXRlZChjZWxsKTsKICAgICAgICAgfSk7CiAgICAgCi0gICAgbV9zdGF0ZSA9IE1hcmtlZDsK
KyAgICBtX2lzRnJlZUxpc3RlZCA9IGZhbHNlOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKKyAgICBhbGxvY2F0b3IoKS0+c2V0SXNBbGxv
Y2F0ZWQodGhpcywgZmFsc2UpOwogICAgIG1fYmxvY2stPmNsZWFyTWFya3MoKTsKICAgICBtX3dl
YWtTZXQubGFzdENoYW5jZVRvRmluYWxpemUoKTsKIApAQCAtMzA0LDE0ICszMDQsMTEgQEAgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaQogCiBGcmVlTGlzdCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKLSAgICBmbGlwSWZOZWNlc3Nhcnko
KTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotCi0gICAgQVNT
RVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKKyAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9j
YXRlZCh0aGlzKSk7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAKICAgICBpZiAoIW1f
bmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgLy8gV2UgZGlkbid0IGhhdmUgdG8gY3JlYXRlIGEg
Im5ld2x5IGFsbG9jYXRlZCIgYml0bWFwLiBUaGF0IG1lYW5zIHdlIHdlcmUgYWxyZWFkeSBNYXJr
ZWQKLSAgICAgICAgLy8gd2hlbiB3ZSBsYXN0IHN0b3BwZWQgYWxsb2NhdGlvbiwgc28gcmV0dXJu
IGFuIGVtcHR5IGZyZWUgbGlzdCBhbmQgc3RheSBpbiB0aGUgTWFya2VkIHN0YXRlLgorICAgICAg
ICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgYmxvY2sgd2hlbiB3
ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAgIH0K
IApAQCAtMzQ1LDQwICszNDIsMjggQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNo
RnJlZUNlbAogICAgIH0KIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KCkK
LXsKLSAgICBmbGlwSWZOZWNlc3Nhcnkodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24o
KSk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5KCkKLXsK
LSAgICBibG9jaygpLmZsaXBJZk5lY2Vzc2FyeSgpOwotfQotCi12b2lkIE1hcmtlZEJsb2NrOjpm
bGlwSWZOZWNlc3NhcnlTbG93KCkKLXsKLSAgICBBU1NFUlQobmVlZHNGbGlwKCkpOwotICAgIEFT
U0VSVCghdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsKLSAgICBjbGVhck1h
cmtzKCk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtp
bmdTbG93KCkKK3ZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbiBo
ZWFwVmVyc2lvbikKIHsKICAgICBBU1NFUlQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFy
a2luZygpKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChuZWVkc0Zs
aXAoKSkKLSAgICAgICAgY2xlYXJNYXJrcygpOworICAgIGlmIChuZWVkc0ZsaXAoaGVhcFZlcnNp
b24pKSB7CisgICAgICAgIGNsZWFyTWFya3MoaGVhcFZlcnNpb24pOworICAgICAgICAvLyBUaGlz
IG1lYW5zIHdlJ3JlIHRoZSBmaXJzdCBvbmVzIHRvIG1hcmsgYW55IG9iamVjdCBpbiB0aGlzIGJs
b2NrLgorICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hlY2tJc01h
cmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOworICAgIH0KIH0KIAogdm9pZCBNYXJrZWRC
bG9jazo6Y2xlYXJNYXJrcygpCiB7CisgICAgY2xlYXJNYXJrcyh2bSgpLT5oZWFwLm9iamVjdFNw
YWNlKCkudmVyc2lvbigpKTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcyhIZWFw
VmVyc2lvbiBoZWFwVmVyc2lvbikKK3sKICAgICBtX21hcmtzLmNsZWFyQWxsKCk7CiAgICAgY2xl
YXJIYXNBbnlNYXJrZWQoKTsKLSAgICAvLyBUaGlzIHdpbGwgYmVjb21lIHRydWUgYXQgdGhlIGVu
ZCBvZiB0aGUgbWFyayBwaGFzZS4gV2Ugc2V0IGl0IG5vdyB0bwotICAgIC8vIGF2b2lkIGFuIGV4
dHJhIHBhc3MgdG8gZG8gc28gbGF0ZXIuCi0gICAgaGFuZGxlKCkubV9zdGF0ZSA9IE1hcmtlZDsK
ICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotICAgIG1fdmVyc2lvbiA9IHZtKCktPmhlYXAu
b2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CisgICAgbV92ZXJzaW9uID0gaGVhcFZlcnNpb247CiB9
CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0zOTgsMzEgKzM4MywzOCBAQCBib29sIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6Om5lZWRzRmxpcCgpCiAgICAgcmV0dXJuIG1fYmxvY2stPm5lZWRzRmxp
cCgpOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OndpbGxSZW1vdmVCbG9jaygpCiti
b29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25zdCB2b2lkKiBwKQogewotICAgIGZsaXBJZk5l
Y2Vzc2FyeSgpOworICAgIHJldHVybiBpc01hcmtlZCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCku
dmVyc2lvbigpLCBwKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1l
RnJlZUxpc3QoKQorYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxv
Y2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0g
ICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICAKLSAgICBBU1NF
UlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKKyAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxs
b2NhdGVkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOworfQorCiti
b29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwq
IGNlbGwpCit7CisgICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh2bSgpLT5oZWFw
Lm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKK30KIAotICAgIG1fc3RhdGUgPSBBbGxv
Y2F0ZWQ7Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCgpCit7
CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCFcbiIpOworICAgIEFTU0VSVChp
c0ZyZWVMaXN0ZWQoKSk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSBmYWxzZTsKKyAgICBhbGxvY2F0
b3IoKS0+c2V0SXNBbGxvY2F0ZWQodGhpcywgdHJ1ZSk7CiB9CiAKIHNpemVfdCBNYXJrZWRCbG9j
azo6bWFya0NvdW50KCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9t
YXJrcy5jb3VudCgpOworICAgIHJldHVybiBuZWVkc0ZsaXAoKSA/IDAgOiBtX21hcmtzLmNvdW50
KCk7CiB9CiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNFbXB0eSgpCiB7Ci0gICAgZmxp
cElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkICYmICFibG9jaygp
Lmhhc0FueU1hcmtlZCgpICYmIG1fd2Vha1NldC5pc0VtcHR5KCkgJiYgKCFtX25ld2x5QWxsb2Nh
dGVkIHx8IG1fbmV3bHlBbGxvY2F0ZWQtPmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIG1fYWxsb2Nh
dG9yLT5pc0VtcHR5KHRoaXMpOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhckhhc0FueU1h
cmtlZCgpCkBAIC00MzIsMjkgKzQyNCw3OCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhckhhc0Fu
eU1hcmtlZCgpCiAKIHZvaWQgTWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KCkKIHsKLSAgICBo
YW5kbGUoKS5tX2FsbG9jYXRvci0+cmV0aXJlKCZoYW5kbGUoKSk7CisgICAgaGFuZGxlKCkuYWxs
b2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nUmV0aXJlZCgmaGFuZGxlKCksIHRy
dWUpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21BbGxvY2F0b3Io
KQoreworICAgIGlmICghbV9hbGxvY2F0b3IpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBt
X2FsbG9jYXRvci0+cmVtb3ZlQmxvY2sodGhpcyk7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVf
dCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpKTsKKyAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKKyAgICAKKyAgICBtX2lu
ZGV4ID0gaW5kZXg7CisgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7CisgICAgCisgICAgc2l6
ZV90IGNlbGxTaXplID0gYWxsb2NhdG9yLT5jZWxsU2l6ZSgpOworICAgIG1fYXRvbXNQZXJDZWxs
ID0gKGNlbGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplOworICAgIG1fZW5kQXRvbSA9
IGF0b21zUGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDE7CisgICAgCisgICAgbV9hdHRyaWJ1
dGVzID0gYWxsb2NhdG9yLT5hdHRyaWJ1dGVzKCk7CisKKyAgICBpZiAobV9hdHRyaWJ1dGVzLmNl
bGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0
cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKKyAgICAKKyAg
ICBibG9jaygpLm1fbmVlZHNEZXN0cnVjdGlvbiA9IG5lZWRzRGVzdHJ1Y3Rpb24oKTsKKyAgICAK
KyAgICB1bnNpZ25lZCBjZWxsc1BlckJsb2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAv
IGNlbGxTaXplOworICAgIGRvdWJsZSBtYXJrQ291bnRCaWFzID0gLShPcHRpb25zOjptaW5NYXJr
ZWRCbG9ja1V0aWxpemF0aW9uKCkgKiBjZWxsc1BlckJsb2NrKTsKKyAgICAKKyAgICAvLyBUaGUg
bWFyayBjb3VudCBiaWFzIHNob3VsZCBiZSBjb21mb3J0YWJseSB3aXRoaW4gdGhpcyByYW5nZS4K
KyAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptaW4oKSkpOworICAgIFJFTEVBU0VfQVNTRVJU
KG1hcmtDb3VudEJpYXMgPCAwKTsKKyAgICAKKyAgICAvLyBUaGlzIG1lYW5zIHdlIGhhdmVuJ3Qg
bWFya2VkIGFueXRoaW5nIHlldC4KKyAgICBibG9jaygpLm1fYmlhc2VkTWFya0NvdW50ID0gYmxv
Y2soKS5tX21hcmtDb3VudEJpYXMgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihtYXJrQ291bnRCaWFz
KTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVGcm9tQWxsb2NhdG9y
KCkKK3sKKyAgICBBU1NFUlQobV9pbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpKTsKKyAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworICAgIAorICAgIG1faW5kZXggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworICAgIG1fYWxsb2NhdG9yID0gbnVs
bHB0cjsKK30KKworYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENl
bGwqIGNlbGwpCit7CisgICAgcmV0dXJuIGlzTGl2ZSh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCku
dmVyc2lvbigpLCBjZWxsKTsKK30KKworYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVD
ZWxsKGNvbnN0IHZvaWQqIHApCit7CisgICAgcmV0dXJuIGlzTGl2ZUNlbGwodm0oKS0+aGVhcC5v
YmplY3RTcGFjZSgpLnZlcnNpb24oKSwgcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBu
YW1lc3BhY2UgV1RGIHsKIAotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUp
Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjpTd2VlcE1vZGUgbW9kZSkKIHsKLSAgICBzd2l0Y2ggKGJsb2NrU3RhdGUpIHsKLSAg
ICBjYXNlIE1hcmtlZEJsb2NrOjpOZXc6Ci0gICAgICAgIG91dC5wcmludCgiTmV3Iik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJsb2NrOjpGcmVlTGlzdGVkOgotICAgICAgICBv
dXQucHJpbnQoIkZyZWVMaXN0ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2Vk
QmxvY2s6OkFsbG9jYXRlZDoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvY2F0ZWQiKTsKKyAgICBz
d2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBU
b0ZyZWVMaXN0OgorICAgICAgICBvdXQucHJpbnQoIlN3ZWVwVG9GcmVlTGlzdCIpOwogICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6TWFya2VkOgotICAgICAgICBvdXQucHJp
bnQoIk1hcmtlZCIpOworICAgIGNhc2UgSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE9u
bHk6CisgICAgICAgIG91dC5wcmludCgiU3dlZXBPbmx5Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
MjAgKzQ0LDYgQEAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogdHlwZWRlZiB1aW50cHRyX3QgQml0
czsKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKLS8vIFNldCB0byBsb2cgc3RhdGUg
dHJhbnNpdGlvbnMgb2YgYmxvY2tzLgotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFO
U0lUSU9OUyAwCi0KLSNpZiBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwotI2RlZmlu
ZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhhbmRsZSkgZG8geyAgICAgICAgICAg
IFwKLSAgICAgICAgZGF0YUxvZ0YoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgICAgICAiJXM6JWQgJXM6IGJsb2NrICVzID0gJXAsICVkXG4i
LCAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBf
X0ZVTkNUSU9OX18sICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICNoYW5kbGUsICYo
aGFuZGxlKS0+YmxvY2soKSwgKGhhbmRsZSktPm1fc3RhdGUpOyAgICBcCi0gICAgfSB3aGlsZSAo
ZmFsc2UpCi0jZWxzZQotI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKGhh
bmRsZSkgKCh2b2lkKTApCi0jZW5kaWYKLQogLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFs
aWduZWQgY29udGFpbmVyIGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgogLy8gT2JqZWN0cyBh
cmUgYWxsb2NhdGVkIHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZl
bgogLy8gbWFya2VkIGJsb2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXplLiBPYmplY3Rz
IHNtYWxsZXIgdGhhbiB0aGUKQEAgLTc2LDggKzYyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgSGFuZGxlOwogcHVibGljOgotICAgIGVudW0gQmxvY2tTdGF0ZSA6IHVp
bnQ4X3QgeyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAgIAog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBibG9ja01hc2sgPSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVzdCBiZSBh
IHBvd2VyIG9mIHR3by4KQEAgLTg2LDEyICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWNf
YXNzZXJ0KCEoTWFya2VkQmxvY2s6OmF0b21TaXplICYgKE1hcmtlZEJsb2NrOjphdG9tU2l6ZSAt
IDEpKSwgIk1hcmtlZEJsb2NrOjphdG9tU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwog
ICAgIHN0YXRpY19hc3NlcnQoIShNYXJrZWRCbG9jazo6YmxvY2tTaXplICYgKE1hcmtlZEJsb2Nr
OjpibG9ja1NpemUgLSAxKSksICJNYXJrZWRCbG9jazo6YmxvY2tTaXplIG11c3QgYmUgYSBwb3dl
ciBvZiB0d28uIik7Ci0KKyAgICAKICAgICBzdHJ1Y3QgVm9pZEZ1bmN0b3IgewogICAgICAgICB0
eXBlZGVmIHZvaWQgUmV0dXJuVHlwZTsKICAgICAgICAgdm9pZCByZXR1cm5WYWx1ZSgpIHsgfQog
ICAgIH07Ci0KKyAgICAKICAgICBjbGFzcyBDb3VudEZ1bmN0b3IgewogICAgIHB1YmxpYzoKICAg
ICAgICAgdHlwZWRlZiBzaXplX3QgUmV0dXJuVHlwZTsKQEAgLTEwNiwxMCArOTAsOSBAQCBwdWJs
aWM6CiAgICAgICAgIG11dGFibGUgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgIH07CiAgICAgICAg
IAotICAgIGNsYXNzIEhhbmRsZSA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxIYW5kbGU+
IHsKKyAgICBjbGFzcyBIYW5kbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5k
bGUpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5kIGNs
YXNzIERvdWJseUxpbmtlZExpc3ROb2RlPEhhbmRsZT47CiAgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsK
ICAgICAgICAgZnJpZW5kIHN0cnVjdCBWZXJpZnlNYXJrZWQ7CkBAIC0xMzAsNiArMTEzLDE1IEBA
IHB1YmxpYzoKICAgICAgICAgVk0qIHZtKCkgY29uc3Q7CiAgICAgICAgIFdlYWtTZXQmIHdlYWtT
ZXQoKTsKICAgICAgICAgICAgIAorICAgICAgICAvLyBTd2VlcGluZyBlbnN1cmVzIHRoYXQgZGVz
dHJ1Y3RvcnMgZ2V0IGNhbGxlZCBhbmQgcmVtb3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgdW5zd2Vw
dAorICAgICAgICAvLyBzZXQuIFN3ZWVwaW5nIHRvIGZyZWUgbGlzdCBhbHNvIHJlbW92ZXMgdGhl
IGJsb2NrIGZyb20gdGhlIGVtcHR5IHNldCwgaWYgaXQgd2FzIGluIHRoYXQKKyAgICAgICAgLy8g
c2V0LiBTd2VlcGluZyB3aXRoIFN3ZWVwT25seSBtYXkgYWRkIHRoaXMgYmxvY2sgdG8gdGhlIGVt
cHR5IHNldCwgaWYgdGhlIGJsb2NrIGlzIGZvdW5kCisgICAgICAgIC8vIHRvIGJlIGVtcHR5Lgor
ICAgICAgICAvLworICAgICAgICAvLyBOb3RlIHRoYXQgeW91IG5lZWQgdG8gbWFrZSBzdXJlIHRo
YXQgdGhlIGVtcHR5IGJpdCByZWZsZWN0cyByZWFsaXR5LiBJZiBpdCdzIG5vdCBzZXQKKyAgICAg
ICAgLy8gYW5kIHRoZSBibG9jayBpcyBmcmVzaGx5IGNyZWF0ZWQsIHRoZW4gd2UnbGwgbWFrZSB0
aGUgbWlzdGFrZSBvZiBydW5uaW5nIGRlc3RydWN0b3JzIGluCisgICAgICAgIC8vIHRoZSBibG9j
ay4gSWYgaXQncyBub3Qgc2V0IGFuZCB0aGUgYmxvY2sgaGFzIG5vdGhpbmcgbWFya2VkLCB0aGVu
IHdlJ2xsIG1ha2UgdGhlCisgICAgICAgIC8vIG1pc3Rha2Ugb2YgbWFraW5nIGEgcG9wIGZyZWVs
aXN0IHJhdGhlciB0aGFuIGEgYnVtcCBmcmVlbGlzdC4KICAgICAgICAgZW51bSBTd2VlcE1vZGUg
eyBTd2VlcE9ubHksIFN3ZWVwVG9GcmVlTGlzdCB9OwogICAgICAgICBGcmVlTGlzdCBzd2VlcChT
d2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAKQEAgLTE1Myw4ICsxNDUsNiBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIGFuZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZhbHNlIG90
aGVyd2lzZS4KICAgICAgICAgYm9vbCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgdm9pZCBmbGlwRm9yRWRlbkNvbGxlY3Rpb24oKTsKLSAgICAgICAgICAgIAog
ICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAgICAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmli
dXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OwogICAgICAgICBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1
Y3Rpb24oKSBjb25zdDsKQEAgLTE2NCw5ICsxNTQsMTQgQEAgcHVibGljOgogICAgICAgICBzaXpl
X3QgbWFya0NvdW50KCk7CiAgICAgICAgIHNpemVfdCBzaXplKCk7CiAgICAgICAgICAgICAKKyAg
ICAgICAgaW5saW5lIGJvb2wgaXNMaXZlKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwor
ICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhlYXBWZXJzaW9uLCBjb25zdCB2b2lkKik7
CisKICAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSGVhcENlbGwqKTsKICAgICAgICAgYm9vbCBp
c0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKKwogICAgICAgICBib29sIGlzTWFya2VkT3JOZXdseUFs
bG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOworICAgICAgICBib29sIGlzTWFya2VkT3JOZXdseUFs
bG9jYXRlZChIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKICAgICAgICAgICAgIAogICAg
ICAgICBib29sIGlzTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIHNl
dE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKQEAgLTE3NCwzMSArMTY5LDI1IEBAIHB1Ymxp
YzoKICAgICAgICAgCiAgICAgICAgIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSBjb25zdCB7
IHJldHVybiAhIW1fbmV3bHlBbGxvY2F0ZWQ7IH0KICAgICAgICAgICAgIAotICAgICAgICBib29s
IGlzQWxsb2NhdGVkKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKLSAg
ICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdDsKLSAgICAgICAgYm9vbCBuZWVkc1N3ZWVw
aW5nKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgd2lsbFJlbW92ZUJsb2NrKCk7Ci0KICAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoQ2VsbChj
b25zdCBGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVy
YXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwo
Y29uc3QgRnVuY3RvciYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYpOworICAg
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBm
b3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICAgICAgCiAgICAgICAgIGJv
b2wgbmVlZHNGbGlwKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgdm9pZCBmbGlwSWZOZWNlc3Nh
cnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uKTsKLSAgICAgICAgdm9pZCBmbGlwSWZOZWNlc3Nh
cnkoSGVhcFZlcnNpb24pOwotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgICAg
ICAgICAgCisgICAgICAgIAogICAgICAgICB2b2lkIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAg
ICAgIAotICAgICAgICBib29sIGlzT25CbG9ja3NUb1N3ZWVwKCkgY29uc3QgeyByZXR1cm4gbV9p
c09uQmxvY2tzVG9Td2VlcDsgfQotICAgICAgICB2b2lkIHNldElzT25CbG9ja3NUb1N3ZWVwKGJv
b2wgdmFsdWUpIHsgbV9pc09uQmxvY2tzVG9Td2VlcCA9IHZhbHVlOyB9CisgICAgICAgIGJvb2wg
aXNGcmVlTGlzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyZWVMaXN0ZWQ7IH0KKyAgICAgICAg
CisgICAgICAgIHNpemVfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICAg
ICAgCisgICAgICAgIHZvaWQgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOworICAgICAgICAKKyAgICAg
ICAgdm9pZCBkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgaW5kZXgp
OworICAgICAgICB2b2lkIGRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKTsKICAgICAgICAgCi0gICAg
ICAgIEJsb2NrU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0gICAgICAg
ICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBIYW5kbGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRv
ciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYsIHZvaWQqKTsK
KyAgICAgICAgSGFuZGxlKEhlYXAmLCB2b2lkKik7CiAgICAgICAgICAgICAKICAgICAgICAgdGVt
cGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlPgogICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVj
dFNjcmliYmxlTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwpAQCAtMjA2LDM1ICsxOTUsNTAg
QEAgcHVibGljOgogICAgICAgICBlbnVtIFNjcmliYmxlTW9kZSB7IERvbnRTY3JpYmJsZSwgU2Ny
aWJibGUgfTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGUs
IFNjcmliYmxlTW9kZT4KLSAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTdGF0ZUFu
ZFN3ZWVwTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICBGcmVlTGlzdCBzd2Vl
cEhlbHBlclNlbGVjdEVtcHR5TW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAg
ICAgCisgICAgICAgIGVudW0gRW1wdHlNb2RlIHsgSXNFbXB0eSwgTm90RW1wdHkgfTsKKyAgICAg
ICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJs
ZU1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0
ZWQoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCiAgICAgICAgIGVudW0gTmV3bHlB
bGxvY2F0ZWRNb2RlIHsgSGFzTmV3bHlBbGxvY2F0ZWQsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0
ZWQgfTsKLSAgICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRlLCBTd2VlcE1v
ZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+Cisg
ICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2Ny
aWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGU+CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVs
cGVyU2VsZWN0U3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIAorICAg
ICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3Jp
YmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxw
ZXJTZWxlY3RGbGlwTW9kZSgpOworICAgICAgICAKKyAgICAgICAgZW51bSBGbGlwTW9kZSB7IE5l
ZWRzRmxpcCwgRG9lc05vdE5lZWRGbGlwIH07CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTxF
bXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5
QWxsb2NhdGVkTW9kZSwgRmxpcE1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHNwZWNpYWxpemVkU3dl
ZXAoKTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAg
ICAgICB2b2lkIGZvckVhY2hGcmVlQ2VsbChjb25zdCBGcmVlTGlzdCYsIGNvbnN0IEZ1bmMmKTsK
LSAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0ZyZWVMaXN0ZWQoKTsK
KyAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG1fcHJldjsKICAgICAgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogbV9uZXh0OwogICAgICAgICAgICAgCi0gICAgICAgIHNpemVf
dCBtX2F0b21zUGVyQ2VsbDsKLSAgICAgICAgc2l6ZV90IG1fZW5kQXRvbTsgLy8gVGhpcyBpcyBh
IGZ1enp5IGVuZC4gQWx3YXlzIHRlc3QgZm9yIDwgbV9lbmRBdG9tLgorICAgICAgICBzaXplX3Qg
bV9hdG9tc1BlckNlbGwgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07Cisg
ICAgICAgIHNpemVfdCBtX2VuZEF0b20geyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpIH07IC8vIFRoaXMgaXMgYSBmdXp6eSBlbmQuIEFsd2F5cyB0ZXN0IGZvciA8IG1fZW5kQXRv
bS4KICAgICAgICAgICAgIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpCaXRtYXA8YXRv
bXNQZXJCbG9jaz4+IG1fbmV3bHlBbGxvY2F0ZWQ7CiAgICAgICAgICAgICAKICAgICAgICAgQWxs
b2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7Ci0gICAgICAgIEJsb2NrU3RhdGUgbV9zdGF0
ZTsKLSAgICAgICAgYm9vbCBtX2lzT25CbG9ja3NUb1N3ZWVwIHsgZmFsc2UgfTsKKyAgICAgICAg
Ym9vbCBtX2lzRnJlZUxpc3RlZCB7IGZhbHNlIH07CiAgICAgICAgICAgICAKLSAgICAgICAgTWFy
a2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2Fs
bG9jYXRvciB7IG51bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0Owog
ICAgICAgICAgICAgCi0gICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrOworICAgICAgICBNYXJr
ZWRCbG9jayogbV9ibG9jayB7IG51bGxwdHIgfTsKICAgICB9OwogICAgICAgICAKLSAgICBzdGF0
aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3Iq
LCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0
aWMgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5Q3JlYXRlKEhlYXAmKTsKICAgICAgICAgCiAgICAg
SGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCkBAIC0yNDgsMzQgKzI1MiwzNSBAQCBwdWJsaWM6
CiAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogCiAgICAgYm9vbCBpc01hcmtlZChjb25zdCB2b2lk
Kik7CisgICAgYm9vbCBpc01hcmtlZChIZWFwVmVyc2lvbiwgY29uc3Qgdm9pZCopOworICAgIGJv
b2wgaXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKICAgICBi
b29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICAKICAgICBib29sIGlz
TWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOworICAgIGJvb2wgaXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCopOwogICAgIAot
ICAgIGJvb2wgaXNNYXJrZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24sIGNvbnN0IEhl
YXBDZWxsKik7Ci0KICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAgdm9pZCBjbGVh
ck1hcmtlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIAorICAgIAogICAgIHNpemVfdCBjZWxsU2l6
ZSgpOwogICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsK
LQorICAgIAogICAgIGJvb2wgaGFzQW55TWFya2VkKCkgY29uc3Q7CiAgICAgdm9pZCBub3RlTWFy
a2VkKCk7CiAgICAgICAgIAogICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKLQorICAgIAogICAgIGJv
b2wgbmVlZHNGbGlwKEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxpcCgpOwotICAgICAg
ICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24pOwot
ICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uKTsKLSAgICB2b2lkIGZsaXBJZk5l
Y2Vzc2FyeSgpOworICAgIAorICAgIHZvaWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24pOwogICAg
ICAgICAKICAgICB2b2lkIGFzc2VydEZsaXBwZWQoKTsKICAgICAgICAgCiAgICAgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9Ci0gICAg
ICAgIAorICAgIAorICAgIGlubGluZSB2b2lkIHJlc2V0VmVyc2lvbigpOworICAgIAogcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUg
LSAxOwogCkBAIC0yODQsOSArMjg5LDkgQEAgcHJpdmF0ZToKICAgICBNYXJrZWRCbG9jayhWTSYs
IEhhbmRsZSYpOwogICAgIEF0b20qIGF0b21zKCk7CiAgICAgICAgIAotICAgIHZvaWQgZmxpcElm
TmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3coKTsKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeVNs
b3coKTsKKyAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbik7CiAgICAgdm9pZCBj
bGVhck1hcmtzKCk7CisgICAgdm9pZCBjbGVhck1hcmtzKEhlYXBWZXJzaW9uKTsKICAgICB2b2lk
IGNsZWFySGFzQW55TWFya2VkKCk7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xvdygpOwpA
QCAtNDY5LDQwICs0NzQsMTMgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Om5lZWRzRmxpcChI
ZWFwVgogICAgIHJldHVybiBoZWFwVmVyc2lvbiAhPSBtX3ZlcnNpb247CiB9CiAKLWlubGluZSB2
b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24p
CitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZl
cnNpb24pCiB7CiAgICAgaWYgKFVOTElLRUxZKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpKQotICAg
ICAgICBmbGlwSWZOZWNlc3NhcnlTbG93KCk7Ci19Ci0KLWlubGluZSB2b2lkIE1hcmtlZEJsb2Nr
OjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQot
ewotICAgIGlmIChVTkxJS0VMWShuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKSkKLSAgICAgICAgZmxp
cElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3coKTsKKyAgICAgICAgYWJvdXRUb01hcmtTbG93
KGhlYXBWZXJzaW9uKTsKICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKIH0KIAotaW5saW5lIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9uIGhlYXBW
ZXJzaW9uKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJzaW9uKTsKLX0K
LQotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5n
TWFya2luZyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBibG9jaygpLmZsaXBJZk5l
Y2Vzc2FyeUR1cmluZ01hcmtpbmcoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUgdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpmbGlwRm9yRWRlbkNvbGxlY3Rpb24oKQotewotICAgIGFzc2VydEZs
aXBwZWQoKTsKLSAgICAgICAgCi0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0
aGlzKTsKLSAgICAKLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBOZXcgJiYgbV9zdGF0ZSAhPSBGcmVl
TGlzdGVkKTsKLSAgICAKLSAgICBtX3N0YXRlID0gTWFya2VkOwotfQotCiAjaWYgQVNTRVJUX0RJ
U0FCTEVECiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YXNzZXJ0RmxpcHBlZCgpCiB7CkBAIC01
MTQsOSArNDkyLDE2IEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFzc2VydEYK
ICAgICBibG9jaygpLmFzc2VydEZsaXBwZWQoKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHApCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNN
YXJrZWQoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqIHApCiB7Ci0gICAgYXNz
ZXJ0RmxpcHBlZCgpOworICAgIHJldHVybiBuZWVkc0ZsaXAoaGVhcFZlcnNpb24pID8gZmFsc2Ug
OiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OmlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25zdCB2
b2lkKiBwKQoreworICAgIGlmIChuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgcmV0dXJuIG1fbWFya3Mu
Z2V0KGF0b21OdW1iZXIocCkpOwogfQogCkBAIC01NTAsNDMgKzUzNSwxNCBAQCBpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1p
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQo
Y29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3QgSGVhcENl
bGwqIGNlbGwpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gTWFya2VkKTsKLSAgICByZXR1cm4g
bV9ibG9jay0+aXNNYXJrZWQoY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNOZXdseUFs
bG9jYXRlZChjZWxsKSk7CisgICAgcmV0dXJuIG1fYmxvY2stPmlzTWFya2VkKHZlcnNpb24sIGNl
bGwpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQog
Ci1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0
IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsK
LSAgICBBU1NFUlQobV9oYW5kbGUubV9zdGF0ZSA9PSBNYXJrZWQpOwotICAgIHJldHVybiBpc01h
cmtlZChjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBtX2hhbmRsZS5pc05l
d2x5QWxsb2NhdGVkKGNlbGwpKTsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFy
a2VkRHVyaW5nV2Vha1Zpc2l0aW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25zdCBIZWFw
Q2VsbCogY2VsbCkKLXsKLSAgICBpZiAobmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc01hcmtlZChjZWxsKTsKLX0KLQotaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQotewot
ICAgIGFzc2VydEZsaXBwZWQoKTsKLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBjYXNlIEFs
bG9jYXRlZDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIE1hcmtlZDoKLSAgICAg
ICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjZWxsKTsKLQotICAgIGNhc2UgTmV3
OgotICAgIGNhc2UgRnJlZUxpc3RlZDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc01hcmtlZCh2
ZXJzaW9uLCBjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFsbG9jYXRlZCAmJiBtX2hhbmRsZS5p
c05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omlz
QXRvbShjb25zdCB2b2lkKiBwKQpAQCAtNjAzLDEzICs1NTksNiBAQCBpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKLXsKLSAg
ICBpZiAoIW1fYmxvY2stPmlzQXRvbShwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7Ci19Ci0KIHRlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9j
azo6SGFuZGxlOjpmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewpAQCAtNjIy
LDYyICs1NzEsNiBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kCiAg
ICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPgotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxl
Ojpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBmbGlwSWZO
ZWNlc3NhcnkoKTsKLSAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxL
aW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSAr
PSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0
X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOwotICAgICAgICBpZiAo
IWlzTGl2ZShjZWxsKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmdW5j
dG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Ci0gICAgfQotICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLWlubGlu
ZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgSGVh
cENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKLSAgICBmb3IgKHNpemVf
dCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsK
LSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+
KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKLSAgICAgICAgaWYgKGlzTGl2ZShjZWxsKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0
ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkRvbmU7Ci0gICAgfQotICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotfQot
Ci1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpuZWVkc1N3ZWVwaW5nKCkgY29uc3QK
LXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVj
ZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwotfQotCi1pbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0FsbG9jYXRlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3Rf
Y2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAg
IHJldHVybiBtX3N0YXRlID09IEFsbG9jYXRlZDsKLX0KLQotaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNNYXJrZWQoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxv
Y2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0
ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRnJl
ZUxpc3RlZCgpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4o
dGhpcyktPmZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IEZyZWVMaXN0
ZWQ7Ci19Ci0KIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpoYXNBbnlNYXJrZWQoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2JpYXNlZE1hcmtDb3VudCAhPSBtX21hcmtDb3VudEJpYXM7CkBAIC03
MTEsNyArNjA0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpNYXJrZQog
ICAgIHR5cGVkZWYgTWFya2VkQmxvY2tIYXNoIEhhc2g7CiB9OwogCi12b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSk7Cit2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
OjpTd2VlcE1vZGUpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRv
ci5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNpb24gdmVyc2lvbiwg
Y29uc3QgSGVhcENlbGwqIGNlbGwpCit7CisgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7Cisg
ICAgCisgICAgaWYgKFVOTElLRUxZKGhhc0FueU5ld2x5QWxsb2NhdGVkKCkpKSB7CisgICAgICAg
IGlmIChpc05ld2x5QWxsb2NhdGVkKGNlbGwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7CisgICAg
CisgICAgaWYgKGFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgCisgICAgaWYgKGJsb2NrLm5lZWRzRmxpcCh2ZXJzaW9uKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworfQorCitp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKEhlYXBWZXJzaW9uIHZl
cnNpb24sIGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20ocCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNMaXZlKHZlcnNpb24sIHN0YXRpY19j
YXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rv
cj4KK2lubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExp
dmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSGVhcENlbGw6OktpbmQga2lu
ZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKKyAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9t
KCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKKyAgICAgICAgSGVhcENl
bGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9t
cygpW2ldKTsKKyAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6
OkRvbmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOworICAgIH0K
KyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+CitpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEhlYXBD
ZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7CisgICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Cisg
ICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigm
bV9ibG9jay0+YXRvbXMoKVtpXSk7CisgICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVy
YXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpE
b25lOworICAgIH0KKyAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKK30KKwor
aW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OnJlc2V0VmVyc2lvbigpCit7CisgICAgbV92ZXJzaW9u
ID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNp
b24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSW5jcmVtZW50YWxT
d2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKQEAgLTE5NSw2ICsxOTYsMTkgQEAgTWFy
a2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKKyAgICAK
KyAgICBNYXJrZWRBbGxvY2F0b3IqIHByZXZpb3VzID0gbnVsbHB0cjsKKyAgICBmb3JFYWNoU3Vi
c3BhY2UoCisgICAgICAgIFsmXSAoU3Vic3BhY2UmIHN1YnNwYWNlLCBBbGxvY2F0b3JBdHRyaWJ1
dGVzKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgZm9yIChNYXJrZWRBbGxvY2F0
b3IqIGFsbG9jYXRvciA6IHN1YnNwYWNlLmJhZ09mQWxsb2NhdG9ycykgeworICAgICAgICAgICAg
ICAgIGFsbG9jYXRvci0+c2V0TmV4dEFsbG9jYXRvcihwcmV2aW91cyk7CisgICAgICAgICAgICAg
ICAgcHJldmlvdXMgPSBhbGxvY2F0b3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsK
KyAgICBtX2ZpcnN0QWxsb2NhdG9yID0gcHJldmlvdXM7CisgICAgbV9hbGxvY2F0b3JGb3JFbXB0
eUFsbG9jYXRpb24gPSBwcmV2aW91czsKIH0KIAogTWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSgp
CkBAIC0yMjIsMTUgKzIzNiwyMSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpsYXN0Q2hhbmNlVG9GaW5h
bGl6ZSgpCiAKIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZShTdWJzcGFjZSYgc3Vic3BhY2Us
IHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBh
bGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci0+
YWxsb2NhdGUoKTsKKyAgICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0
b3JGb3Ioc3Vic3BhY2UsIGJ5dGVzKSkgeworICAgICAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0
b3ItPmFsbG9jYXRlKCk7CisgICAgICAgIC8vZGF0YUxvZygiQWxsb2NhdGVkICIsIFJhd1BvaW50
ZXIocmVzdWx0KSwgIlxuIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIHJl
dHVybiBhbGxvY2F0ZUxhcmdlKHN1YnNwYWNlLCBieXRlcyk7CiB9CiAKIHZvaWQqIE1hcmtlZFNw
YWNlOjp0cnlBbGxvY2F0ZShTdWJzcGFjZSYgc3Vic3BhY2UsIHNpemVfdCBieXRlcykKIHsKLSAg
ICBpZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2Us
IGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci0+dHJ5QWxsb2NhdGUoKTsKKyAgICBp
ZiAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc3Vic3BhY2UsIGJ5
dGVzKSkgeworICAgICAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3ItPnRyeUFsbG9jYXRlKCk7
CisgICAgICAgIC8vZGF0YUxvZygiVHJ5LWFsbG9jYXRlZCAiLCBSYXdQb2ludGVyKHJlc3VsdCks
ICJcbiIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICByZXR1cm4gdHJ5QWxs
b2NhdGVMYXJnZShzdWJzcGFjZSwgYnl0ZXMpOwogfQogCkBAIC0yNTksOSArMjc5LDEwIEBAIHZv
aWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZUxhcmdlKFN1YnMKIHZvaWQgTWFya2VkU3BhY2U6
OnN3ZWVwKCkKIHsKICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7
Ci0gICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKSB7Ci0gICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9y
KAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25T
dGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLnN3ZWVwKCk7CisgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTI4NCwz
MyArMzA1LDIzIEBAIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygKICAg
ICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0ID0gbV9sYXJnZUFsbG9jYXRpb25zLnNp
emUoKTsKIH0KIAotdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKLXsKLSAgICBpZiAo
T3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0YUxvZygiWm9tYmlmeWluZyBzd2VlcC4uLiIp
OwotICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAgICBmb3JF
YWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAg
ICAgICAgICAgIGlmIChibG9jay0+bmVlZHNTd2VlcGluZygpKQotICAgICAgICAgICAgICAgIGJs
b2NrLT5zd2VlcCgpOwotICAgICAgICB9KTsKLX0KLQotdm9pZCBNYXJrZWRTcGFjZTo6cmVzZXRB
bGxvY2F0b3JzKCkKK3ZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsK
ICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxs
b2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAgICAgICAgYWxsb2NhdG9yLnJlc2V0
KCk7CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICAg
ICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKIAot
ICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHMuY2xlYXIoKTsKICAgICBtX2FjdGl2ZVdlYWtTZXRz
LnRha2VGcm9tKG1fbmV3QWN0aXZlV2Vha1NldHMpOworICAgIAogICAgIGlmIChtX2hlYXAtPm9w
ZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikKICAgICAgICAgbV9sYXJnZUFs
bG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9sYXJnZUFsbG9jYXRpb25zTnVyc2Vy
eU9mZnNldDsKICAgICBlbHNlCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZz
ZXRGb3JTd2VlcCA9IDA7CiAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCA9IG1f
bGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7CisgICAgCisgICAgbV9hbGxvY2F0b3JGb3JFbXB0eUFs
bG9jYXRpb24gPSBtX2ZpcnN0QWxsb2NhdG9yOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp2aXNp
dFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQpAQCAtNDEwLDExICs0
MjEsMTEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZnJlZU9yU2hyaW5rQmxvY2soTWFyawogCiB2b2lk
IE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogewotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZd
IChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgZnJlZU9yU2hyaW5r
QmxvY2soYmxvY2spOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBh
bGxvY2F0b3Iuc2hyaW5rKCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKICAgICAgICAgfSk7Ci0gICAgLy8gRm9yIExhcmdlQWxsb2NhdGlvbnMsIHdlIGRv
IHRoZSBtb3JhbCBlcXVpdmFsZW50IGluIHN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygpLgogfQogCiB2
b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKQEAgLTQyOSw1NyArNDQwLDYx
IEBAIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQogICAgIGZvciAodW5z
aWduZWQgaSA9IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyBpIDwg
bV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsgKytpKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlv
bnNbaV0tPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICBmb3JFYWNoQmxvY2soCi0gICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sp
IHsKLSAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKSk7Ci0g
ICAgICAgIH0pOwotCi0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xh
cmdlQWxsb2NhdGlvbnMpCi0gICAgICAgIEFTU0VSVCghYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9j
YXRlZCgpKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi19Ci0KLSNpZm5kZWYgTkRFQlVH
IAotc3RydWN0IFZlcmlmeU1hcmtlZCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7IAotICAg
IHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHN3aXRjaCAoYmxvY2stPm1fc3RhdGUpIHsKLSAgICAgICAgY2FzZSBNYXJrZWRCbG9j
azo6TWFya2VkOgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQorICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsm
XSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKGJsb2NrLCAhYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgCisgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9u
IDogbV9sYXJnZUFsbG9jYXRpb25zKQorICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhbGxvY2F0
aW9uLCAhYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9jYXRlZCgpKTsKICAgICB9Ci19OyAKLSNlbmRp
ZiAKK30KIAotdm9pZCBNYXJrZWRTcGFjZTo6ZmxpcCgpCit2b2lkIE1hcmtlZFNwYWNlOjpiZWdp
bk1hcmtpbmcoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBF
ZGVuQ29sbGVjdGlvbikgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9j
a3NXaXRoTmV3T2JqZWN0cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fYmxvY2tzV2l0aE5l
d09iamVjdHNbaV0tPmZsaXBGb3JFZGVuQ29sbGVjdGlvbigpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIEhlYXBWZXJzaW9uIG5leHRWZXJzaW9uID0gbV92ZXJzaW9uICsgMTsKLSAgICAgICAgaWYg
KFVOTElLRUxZKG5leHRWZXJzaW9uID09IGluaXRpYWxWZXJzaW9uKSkgewotICAgICAgICAgICAg
Ly8gT2ggbm8hIFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5IGZsaXBwaW5n
IGFsbCBibG9ja3MuIFRoaXMgaGFwcGVucwotICAgICAgICAgICAgLy8gc3VwZXIgcmFyZWx5LCBw
cm9iYWJseSBuZXZlciBmb3IgbW9zdCB1c2Vycy4KKyAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25J
blByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICAgICAgZm9yRWFjaEFsbG9jYXRv
cigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJh
dGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLmJlZ2luTWFya2luZ0ZvckZ1
bGxDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBtX3ZlcnNpb24gPSBuZXh0VmVy
c2lvbihtX3ZlcnNpb24pOworICAgICAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fdmVyc2lv
biA9PSBpbml0aWFsVmVyc2lvbikpIHsKKyAgICAgICAgICAgIC8vIE9oIG5vISBWZXJzaW9uIHdy
YXAtYXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBzZXR0aW5nIGFsbCBibG9jayB2ZXJzaW9ucyB0
byBudWxsLgogICAgICAgICAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICAgICAgICAgIFsmXSAo
TWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRs
ZS0+ZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+YmxvY2so
KS5yZXNldFZlcnNpb24oKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgfQotICAgICAg
ICBtX3ZlcnNpb24gPSBuZXh0VmVyc2lvbjsgLy8gSGVuY2Vmb3J0aCwgZmxpcElmTmVjZXNzYXJ5
KCkgd2lsbCB0cmlnZ2VyIG9uIGFsbCBibG9ja3MuCisgICAgICAgIAogICAgICAgICBmb3IgKExh
cmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKICAgICAgICAg
ICAgIGFsbG9jYXRpb24tPmZsaXAoKTsKICAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgVmVy
aWZ5TWFya2VkIHZlcmlmeUZ1bmN0b3I7Ci0gICAgZm9yRWFjaEJsb2NrKHZlcmlmeUZ1bmN0b3Ip
OwotI2VuZGlmCisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgZm9yRWFjaEJs
b2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgeworICAg
ICAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7
CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgbV9pc01hcmtpbmcgPSB0cnVlOwor
fQorCit2b2lkIE1hcmtlZFNwYWNlOjplbmRNYXJraW5nKCkKK3sKKyAgICBmb3JFYWNoQWxsb2Nh
dG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRp
b25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLmVuZE1hcmtpbmcoKTsKKyAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKKyAgICAK
KyAgICBtX2lzTWFya2luZyA9IGZhbHNlOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp3aWxsU3Rh
cnRJdGVyYXRpbmcoKQpAQCAtNTQwLDE5ICs1NTUsNjYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6YWRk
QWN0aXZlV2Vha1NldChXZWFrUwogCiB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBZGRCbG9jayhNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIHsKKyAgICAvLyBXQVJOSU5HOiBUaGlzIGZ1bmN0aW9u
IGlzIGNhbGxlZCBiZWZvcmUgYmxvY2sgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoZSBibG9jayB3
aWxsIG5vdCBrbm93CisgICAgLy8gaXRzIGNlbGxTaXplKCkgb3IgYXR0cmlidXRlcygpLiBUaGUg
bGF0dGVyIGltcGxpZXMgdGhhdCB5b3UgY2FuJ3QgYXNrIHRoaW5ncyBsaWtlCisgICAgLy8gbmVl
ZHNEZXN0cnVjdGlvbigpLgogICAgIG1fY2FwYWNpdHkgKz0gTWFya2VkQmxvY2s6OmJsb2NrU2l6
ZTsKICAgICBtX2Jsb2Nrcy5hZGQoJmJsb2NrLT5ibG9jaygpKTsKIH0KIAogdm9pZCBNYXJrZWRT
cGFjZTo6ZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewot
ICAgIGJsb2NrLT5hc3NlcnRGbGlwcGVkKCk7Ci0gICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5h
cHBlbmQoYmxvY2spOwotICAgIAogICAgIGlmIChibG9jay0+d2Vha1NldCgpLmlzT25MaXN0KCkp
IHsKICAgICAgICAgYmxvY2stPndlYWtTZXQoKS5yZW1vdmUoKTsKICAgICAgICAgbV9uZXdBY3Rp
dmVXZWFrU2V0cy5hcHBlbmQoJmJsb2NrLT53ZWFrU2V0KCkpOwogICAgIH0KIH0KIAorTWFya2Vk
QmxvY2s6OkhhbmRsZSogTWFya2VkU3BhY2U6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCit7Cisg
ICAgZm9yICg7IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyBtX2FsbG9jYXRvckZvckVt
cHR5QWxsb2NhdGlvbiA9IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uLT5uZXh0QWxsb2Nh
dG9yKCkpIHsKKyAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9hbGxv
Y2F0b3JGb3JFbXB0eUFsbG9jYXRpb24tPmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGJsb2NrOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9p
ZCBNYXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KCkKK3sKKyAgICBpZiAobV9oZWFwLT5vcGVy
YXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKKyAgICAgICAgZm9yRWFjaEFs
bG9jYXRvcigKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+
IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90VW5z
d2VwdEZvckVkZW5Db2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFs
bG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3Iu
c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOworICAgIH0KK30K
Kwordm9pZCBNYXJrZWRTcGFjZTo6YXNzZXJ0Tm9VbnN3ZXB0KCkKK3sKKyAgICBpZiAoQVNTRVJU
X0RJU0FCTEVEKQorICAgICAgICByZXR1cm47CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAg
ICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsK
KyAgICAgICAgICAgIGFsbG9jYXRvci5hc3NlcnROb1Vuc3dlcHQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICB9KTsKK30KKwordm9pZCBN
YXJrZWRTcGFjZTo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICBmb3JFYWNoQWxs
b2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVy
YXRpb25TdGF0dXMgeworICAgICAgICAgICAgb3V0LnByaW50KCJCaXRzIGZvciAiLCBhbGxvY2F0
b3IsICI6XG4iKTsKKyAgICAgICAgICAgIGFsbG9jYXRvci5kdW1wQml0cyhvdXQpOworICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsMTYgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1TaXplQ2xhc3NlcyA9IGxhcmdlQ3V0b2Zm
IC8gc2l6ZVN0ZXA7CiAgICAgCi0gICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxW
ZXJzaW9uID0gNDI7ICAvLyBUaGlzIGNhbiBiZSBhbnkgdmFsdWUsIGluY2x1ZGluZyByYW5kb20g
Z2FyYmFnZSwgc28gbG9uZyBhcyBpdCdzIGNvbnNpc3RlbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0
aGUgcHJvY2Vzcy4KKyAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gbnVsbFZlcnNpb24gPSAw
OyAvLyBUaGUgdmVyc2lvbiBvZiBmcmVzaGx5IGFsbG9jYXRlZCBibG9ja3MuCisgICAgc3RhdGlj
IGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gMTsgLy8gVGhlIHZlcnNpb24gdGhh
dCB0aGUgaGVhcCBzdGFydHMgb3V0IHdpdGguCisgICAgCisgICAgSGVhcFZlcnNpb24gbmV4dFZl
cnNpb24oSGVhcFZlcnNpb24gdmVyc2lvbikKKyAgICB7CisgICAgICAgIHZlcnNpb24rKzsKKyAg
ICAgICAgaWYgKHZlcnNpb24gPT0gbnVsbFZlcnNpb24pCisgICAgICAgICAgICB2ZXJzaW9uKys7
CisgICAgICAgIHJldHVybiB2ZXJzaW9uOworICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90
IHNpemVDbGFzc1RvSW5kZXgoc2l6ZV90IHNpemUpCiAgICAgewpAQCAtMTE0LDcgKzEyMyw3IEBA
IHB1YmxpYzoKICAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0
b3IoKSB7IHJldHVybiBtX25vcm1hbFNwYWNlOyB9CiAgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9y
QXV4aWxpYXJ5RGF0YSgpIHsgcmV0dXJuIG1fYXV4aWxpYXJ5U3BhY2U7IH0KICAgICAKLSAgICB2
b2lkIHJlc2V0QWxsb2NhdG9ycygpOworICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsK
IAogICAgIHZvaWQgdmlzaXRXZWFrU2V0cyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lkIHJl
YXBXZWFrU2V0cygpOwpAQCAtMTQ0LDExICsxNTMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
Q29uc3VtZUZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICB2b2lkIGRpZEFsbG9j
YXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAKLSAgICB2b2lkIGZsaXAoKTsKKyAg
ICB2b2lkIGJlZ2luTWFya2luZygpOworICAgIHZvaWQgZW5kTWFya2luZygpOworICAgIHZvaWQg
c25hcHNob3RVbnN3ZXB0KCk7CiAgICAgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAgICAg
dm9pZCBzd2VlcCgpOwogICAgIHZvaWQgc3dlZXBMYXJnZUFsbG9jYXRpb25zKCk7Ci0gICAgdm9p
ZCB6b21iaWZ5U3dlZXAoKTsKKyAgICB2b2lkIGFzc2VydE5vVW5zd2VwdCgpOwogICAgIHNpemVf
dCBvYmplY3RDb3VudCgpOwogICAgIHNpemVfdCBzaXplKCk7CiAgICAgc2l6ZV90IGNhcGFjaXR5
KCk7CkBAIC0xNTcsOCArMTY4LDYgQEAgcHVibGljOgogICAgIAogICAgIEhlYXBWZXJzaW9uIHZl
cnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KIAotICAgIGNvbnN0IFZlY3RvcjxN
YXJrZWRCbG9jazo6SGFuZGxlKj4mIGJsb2Nrc1dpdGhOZXdPYmplY3RzKCkgY29uc3QgeyByZXR1
cm4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsgfQotICAgIAogICAgIGNvbnN0IFZlY3RvcjxMYXJn
ZUFsbG9jYXRpb24qPiYgbGFyZ2VBbGxvY2F0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VB
bGxvY2F0aW9uczsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsgfQogICAg
IHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyB9CkBA
IC0xNjksMTMgKzE3OCwxNiBAQCBwdWJsaWM6CiAgICAgTGFyZ2VBbGxvY2F0aW9uKiogbGFyZ2VB
bGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFs
bG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQ7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9j
YXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9j
YXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplOyB9CiAgICAgCisgICAgTWFya2VkQWxsb2NhdG9y
KiBmaXJzdEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RBbGxvY2F0b3I7IH0KKyAg
ICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uOyB9CisgICAgCisgICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCk7CisgICAgCiAgICAgLy8gV2hl
biB0aGlzIGlzIHRydWUgaXQgbWVhbnMgdGhhdCB3ZSBoYXZlIGZsaXBwZWQgYnV0IHRoZSBtYXJr
IGJpdHMgaGF2ZW4ndCBjb252ZXJnZWQgeWV0LgogICAgIGJvb2wgaXNNYXJraW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9pc01hcmtpbmc7IH0KICAgICAKLSAgICAvLyBGSVhNRTogQWZ0ZXIgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTU4MSwgTWFya2VkU3BhY2Ugd2ls
bCBjb250cm9sIHRoaXMKLSAgICAvLyBmbGFnIGRpcmVjdGx5LgotICAgIHZvaWQgc2V0SXNNYXJr
aW5nKGJvb2wgdmFsdWUpIHsgbV9pc01hcmtpbmcgPSB2YWx1ZTsgfQotCisgICAgdm9pZCBkdW1w
Qml0cyhQcmludFN0cmVhbSYgPSBXVEY6OmRhdGFGaWxlKCkpOworICAgIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CkBAIC0xOTAsOCArMjAyLDggQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGluaXRpYWxp
emVTdWJzcGFjZShTdWJzcGFjZSYpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hTdWJzcGFjZShjb25zdCBGdW5jdG9yJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgZm9yRWFjaEFsbG9jYXRvcihj
b25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZv
aWQgZm9yRWFjaFN1YnNwYWNlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAKICAgICB2b2lkIGFkZEFj
dGl2ZVdlYWtTZXQoV2Vha1NldCopOwogCkBAIC0yMDUsNyArMjE3LDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faXNJdGVyYXRpbmc7CiAgICAgYm9vbCBtX2lzTWFya2luZyB7IGZhbHNlIH07CiAg
ICAgTWFya2VkQmxvY2tTZXQgbV9ibG9ja3M7Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5k
bGUqPiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOwogICAgIFZlY3RvcjxMYXJnZUFsbG9jYXRpb24q
PiBtX2xhcmdlQWxsb2NhdGlvbnM7CiAgICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zTnVy
c2VyeU9mZnNldCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRG
b3JUaGlzQ29sbGVjdGlvbiB7IDAgfTsKQEAgLTIxNSw0MCArMjI2LDExIEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplIHsgMCB9
OwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxX
ZWFrU2V0Pj4gbV9hY3RpdmVXZWFrU2V0czsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8V2Vha1Nl
dCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+IG1fbmV3QWN0aXZlV2Vha1NldHM7Cisg
ICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2ZpcnN0QWxsb2NhdG9yIHsgbnVsbHB0ciB9Owor
ICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24geyBudWxs
cHRyIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJr
ZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCi17Ci0gICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwotICAgIEJsb2NrSXRl
cmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9y
IGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaExpdmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlv
blN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChMYXJn
ZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpIHsKLSAgICAgICAg
aWYgKGFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxv
Y2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRl
cmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2Vk
U3BhY2U6OmZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQotewotICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKLSAgICBCbG9ja0l0ZXJh
dG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBp
dCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBp
ZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hEZWFkQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRpb25T
dGF0dXM6OkRvbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoTGFyZ2VB
bGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7Ci0gICAgICAgIGlm
ICghYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsKLSAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9j
YXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVy
YXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgfQotfQotCiBpbmxpbmUgTWFya2VkQWxsb2NhdG9yKiBNYXJrZWRTcGFjZTo6YWxsb2NhdG9y
Rm9yKFN1YnNwYWNlJiBzcGFjZSwgc2l6ZV90IGJ5dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7
CkBAIC0zMDQsMTUgKzI4NiwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5l
IHZvaWQgCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgTWFya2VkU3BhY2U6OmZv
ckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBmb3JFYWNoU3Vi
c3BhY2UoCi0gICAgICAgIFsmXSAoU3Vic3BhY2UmIHN1YnNwYWNlLCBBbGxvY2F0b3JBdHRyaWJ1
dGVzKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAgICAgICAgZm9yIChNYXJrZWRBbGxvY2F0
b3IqIGFsbG9jYXRvciA6IHN1YnNwYWNlLmJhZ09mQWxsb2NhdG9ycykgewotICAgICAgICAgICAg
ICAgIGlmIChmdW5jdG9yKCphbGxvY2F0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7Ci0gICAgICAgIH0pOworICAgIGZvciAoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0
b3IgPSBtX2ZpcnN0QWxsb2NhdG9yOyBhbGxvY2F0b3I7IGFsbG9jYXRvciA9IGFsbG9jYXRvci0+
bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGlmIChmdW5jdG9yKCphbGxvY2F0b3IpID09IEl0
ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCisjaW5j
bHVkZSAiTWFya2VkU3BhY2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVh
cEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBBU1NFUlQo
aXNJdGVyYXRpbmcoKSk7CisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5l
bmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNo
TGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1f
bGFyZ2VBbGxvY2F0aW9ucykgeworICAgICAgICBpZiAoYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsK
KyAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+
YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJ
dGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgQVNTRVJUKGlz
SXRlcmF0aW5nKCkpOworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5k
KCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaERl
YWRDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xh
cmdlQWxsb2NhdGlvbnMpIHsKKyAgICAgICAgaWYgKCFhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewor
ICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5h
dHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShy
ZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksOCBAQCB2b2lkIFNsb3RWaXNpdG9y
OjpzZXRNYXJrZWRBbmRBcHBlbmRUb01hCiAgICAgdmFsaWRhdGUoY2VsbCk7CiAjZW5kaWYKICAg
ICAKKyAgICAvL2RhdGFMb2coIiAgICBNYXJraW5nICIsIFJhd1BvaW50ZXIoY2VsbCksICJcbiIp
OworICAgIAogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICBzZXRN
YXJrZWRBbmRBcHBlbmRUb01hcmtTdGFjayhjZWxsLT5sYXJnZUFsbG9jYXRpb24oKSwgY2VsbCk7
CiAgICAgZWxzZQpAQCAtMTk4LDcgKzIwMCw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtl
ZEFuZEFwcGVuZFRvTWEKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lclR5cGU+CiBBTFdBWVNf
SU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKENv
bnRhaW5lclR5cGUmIGNvbnRhaW5lciwgSlNDZWxsKiBjZWxsKQogewotICAgIGNvbnRhaW5lci5m
bGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKG1fdmVyc2lvbik7CisgICAgY29udGFpbmVyLmFi
b3V0VG9NYXJrKG1fdmVyc2lvbik7CiAgICAgCiAgICAgaWYgKGNvbnRhaW5lci50ZXN0QW5kU2V0
TWFya2VkKGNlbGwpKQogICAgICAgICByZXR1cm47CkBAIC0yNDYsMTAgKzI0OCw4IEBAIHZvaWQg
U2xvdFZpc2l0b3I6Om1hcmtBdXhpbGlhcnkoY29uc3Qgdm8KICAgICAKICAgICBBU1NFUlQoY2Vs
bC0+aGVhcCgpID09IGhlYXAoKSk7CiAgICAgCi0gICAgaWYgKEhlYXA6OnRlc3RBbmRTZXRNYXJr
ZWQobV92ZXJzaW9uLCBjZWxsKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChIZWFwOjppc01h
cmtlZENvbmN1cnJlbnRseShjZWxsKSk7CisgICAgaWYgKEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQo
bV92ZXJzaW9uLCBjZWxsKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICAKICAgICBub3Rl
TGl2ZUF1eGlsaWFyeUNlbGwoY2VsbCk7CiB9CkBAIC0yOTQsNiArMjk0LDggQEAgQUxXQVlTX0lO
TElORSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaQogewogICAgIEFTU0VSVChIZWFwOjppc01h
cmtlZENvbmN1cnJlbnRseShjZWxsKSk7CiAgICAgCisgICAgLy9kYXRhTG9nKCJWaXNpdGluZyAi
LCBSYXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKKwogICAgIFNldEN1cnJlbnRDZWxsU2NvcGUgY3Vy
cmVudENlbGxTY29wZSgqdGhpcywgY2VsbCk7CiAgICAgCiAgICAgbV9jdXJyZW50T2JqZWN0Q2Vs
bFN0YXRlQmVmb3JlVmlzaXRpbmcgPSBjZWxsLT5jZWxsU3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrLmgJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWsuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjgsNyArMjgsOSBAQAogCiAjaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKICNpbmNsdWRlIDxj
c3RkZGVmPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtNTEsMzMgKzUzLDMzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgV2Vh
ayhUKiwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKyAgICBpbmxp
bmUgV2VhayhUKiwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKIAog
ICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVl
IH07Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0OwotICAgIFdlYWso
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKKyAgICBpbmxpbmUgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0OworICAgIGlubGluZSBXZWFrKEhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVRhZyk7CiAKLSAgICBXZWFrKFdlYWsmJik7CisgICAgaW5saW5lIFdlYWsoV2VhayYmKTsKIAog
ICAgIH5XZWFrKCkKICAgICB7CiAgICAgICAgIGNsZWFyKCk7CiAgICAgfQogCi0gICAgdm9pZCBz
d2FwKFdlYWsmKTsKKyAgICBpbmxpbmUgdm9pZCBzd2FwKFdlYWsmKTsKIAotICAgIFdlYWsmIG9w
ZXJhdG9yPShXZWFrJiYpOworICAgIGlubGluZSBXZWFrJiBvcGVyYXRvcj0oV2VhayYmKTsKIAot
ICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7Ci0gICAgVCogb3BlcmF0b3ItPigpIGNvbnN0Owot
ICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0OwotICAgIFQqIGdldCgpIGNvbnN0OworICAgIGlubGlu
ZSBib29sIG9wZXJhdG9yISgpIGNvbnN0OworICAgIGlubGluZSBUKiBvcGVyYXRvci0+KCkgY29u
c3Q7CisgICAgaW5saW5lIFQmIG9wZXJhdG9yKigpIGNvbnN0OworICAgIGlubGluZSBUKiBnZXQo
KSBjb25zdDsKIAotICAgIGJvb2wgd2FzKFQqKSBjb25zdDsKKyAgICBpbmxpbmUgYm9vbCB3YXMo
VCopIGNvbnN0OwogCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OworICAgIGlu
bGluZSBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7CiAKLSAgICBXZWFrSW1wbCogbGVh
a0ltcGwoKSBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgaW5saW5lIFdlYWtJbXBsKiBsZWFrSW1w
bCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICB2b2lkIGNsZWFyKCkKICAgICB7CiAgICAgICAg
IGlmICghbV9pbXBsKQpAQCAtODYsMTEgKzg4LDMwIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBw
cml2YXRlOgotICAgIHN0YXRpYyBXZWFrSW1wbCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7Cisg
ICAgc3RhdGljIGlubGluZSBXZWFrSW1wbCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CiAKICAg
ICBXZWFrSW1wbCogbV9pbXBsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEpTQzo6
V2VhazxUPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFp
dHM8SlNDOjpXZWFrPFQ+PiB7CisgICAgdHlwZWRlZiBKU0M6OldlYWs8VD4gU3RvcmFnZVR5cGU7
CisKKyAgICB0eXBlZGVmIHN0ZDo6bnVsbHB0cl90IEVtcHR5VmFsdWVUeXBlOworICAgIHN0YXRp
YyBFbXB0eVZhbHVlVHlwZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAg
dHlwZWRlZiBUKiBQZWVrVHlwZTsKKyAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBTdG9y
YWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CisgICAgc3RhdGljIFBlZWtU
eXBlIHBlZWsoRW1wdHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3
ICsxMTMsNyBAQCB2b2lkIFdlYWtCbG9jazo6c3BlY2lhbGl6ZWRWaXNpdChDb250YWluCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBKU1ZhbHVlJiBqc1ZhbHVlID0gd2Vh
a0ltcGwtPmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKGNvbnRhaW5lci5pc01hcmtlZER1cmluZ1dl
YWtWaXNpdGluZyh2ZXJzaW9uLCBqc1ZhbHVlLmFzQ2VsbCgpKSkKKyAgICAgICAgaWYgKGNvbnRh
aW5lci5pc01hcmtlZENvbmN1cnJlbnRseSh2ZXJzaW9uLCBqc1ZhbHVlLmFzQ2VsbCgpKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYgKCF3ZWFrSGFuZGxlT3du
ZXItPmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3Qo
JmNvbnN0X2Nhc3Q8SlNWYWx1ZSY+KGpzVmFsdWUpKSwgd2Vha0ltcGwtPmNvbnRleHQoKSwgdmlz
aXRvcikpCkBAIC0xNDcsMTcgKzE0NywxNCBAQCB2b2lkIFdlYWtCbG9jazo6cmVhcCgpCiAgICAg
Ly8gSWYgdGhpcyBXZWFrQmxvY2sgZG9lc24ndCBiZWxvbmcgdG8gYSBDZWxsQ29udGFpbmVyLCB3
ZSB3b24ndCBldmVuIGJlIGhlcmUuCiAgICAgQVNTRVJUKG1fY29udGFpbmVyKTsKICAgICAKLSAg
ICBtX2NvbnRhaW5lci5mbGlwSWZOZWNlc3NhcnkoKTsKLQotICAgIC8vIFdlIG9ubHkgcmVhcCBh
ZnRlciBtYXJraW5nLgotICAgIEFTU0VSVChtX2NvbnRhaW5lci5pc01hcmtlZCgpKTsKKyAgICBI
ZWFwVmVyc2lvbiB2ZXJzaW9uID0gbV9jb250YWluZXIuaGVhcCgpLT5vYmplY3RTcGFjZSgpLnZl
cnNpb24oKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2Vha0ltcGxDb3VudCgpOyAr
K2kpIHsKICAgICAgICAgV2Vha0ltcGwqIHdlYWtJbXBsID0gJndlYWtJbXBscygpW2ldOwogICAg
ICAgICBpZiAod2Vha0ltcGwtPnN0YXRlKCkgPiBXZWFrSW1wbDo6RGVhZCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChtX2NvbnRhaW5lci5pc01hcmtlZCh3ZWFrSW1wbC0+
anNWYWx1ZSgpLmFzQ2VsbCgpKSkgeworICAgICAgICBpZiAobV9jb250YWluZXIuaXNNYXJrZWQo
dmVyc2lvbiwgd2Vha0ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEFT
U0VSVCh3ZWFrSW1wbC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vh
a0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFr
SW5saW5lcy5oCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9XZWFrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiV2Vha1NldElubGlu
ZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoVHJh
aXRzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNDksMjMgKzE0OCw0IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIHdlYWtDbGUKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
LW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJh
aXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPj4gOiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiB7Ci0gICAgdHlwZWRlZiBKU0M6OldlYWs8VD4gU3Rv
cmFnZVR5cGU7Ci0KLSAgICB0eXBlZGVmIHN0ZDo6bnVsbHB0cl90IEVtcHR5VmFsdWVUeXBlOwot
ICAgIHN0YXRpYyBFbXB0eVZhbHVlVHlwZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQotCi0gICAgdHlwZWRlZiBUKiBQZWVrVHlwZTsKLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhj
b25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9Ci0gICAgc3Rh
dGljIFBlZWtUeXBlIHBlZWsoRW1wdHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0K
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCiAjZW5kaWYgLy8gV2Vha0lubGluZXNfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCShyZXZpc2lvbiAyMDYxNTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUg
IldlYWsuaCIKICNpbmNsdWRlICJXZWFrSGFuZGxlT3duZXIuaCIKLSNpbmNsdWRlICJXZWFrSW5s
aW5lcy5oIgogI2luY2x1ZGUgPHR1cGxlPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDYxNTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNiw2ICsxMTYsNyBAQAogI2luY2x1ZGUgIk1hcENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiTWFwSXRlcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJNYXBQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJNYXRoT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCiAjaW5jbHVkZSAiTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJP
YmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKICNpbmNs
dWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlByb3RvdHlwZU1hcElubGluZXMu
aCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgogI2luY2x1ZGUgIlJlamVjdC5oIgogI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KyNpbmNsdWRlICJQcm90b3R5cGVNYXBJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMDYx
NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4Nyw2ICsxODcsNyBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmlu
ZzsKICAgICB2KHVuc2lnbmVkLCBsYXJnZUFsbG9jYXRpb25DdXRvZmYsIDEwMDAwMCwgTm9ybWFs
LCBudWxscHRyKSBcCiAgICAgdihib29sLCBkdW1wU2l6ZUNsYXNzZXMsIGZhbHNlLCBOb3JtYWws
IG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZUJ1bXBBbGxvY2F0b3IsIHRydWUsIE5vcm1hbCwg
bnVsbHB0cikgXAorICAgIHYoYm9vbCwgc3RlYWxFbXB0eUJsb2Nrc0Zyb21PdGhlckFsbG9jYXRv
cnMsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZWFnZXJseVVwZGF0ZVRv
cENhbGxGcmFtZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKICAgICB2KGJvb2ws
IHVzZU9TUkVudHJ5VG9ERkcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXApAQCAtMzAyLDcgKzMw
Myw2IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYodW5zaWduZWQs
IG51bWJlck9mR0NNYXJrZXJzLCBjb21wdXRlTnVtYmVyT2ZHQ01hcmtlcnMoNyksIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYodW5zaWduZWQsIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZCwgMTAw
MCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihkb3VibGUsIG1pbkhlYXBVdGlsaXphdGlvbiwg
MC44LCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2KGRvdWJsZSwgbWluQ29waWVkQmxvY2tVdGls
aXphdGlvbiwgMC45LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGRvdWJsZSwgbWluTWFya2Vk
QmxvY2tVdGlsaXphdGlvbiwgMC45LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVk
LCBzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3MsIDAsIE5vcm1hbCwgImZvcmNlIGEgR0Mgb24gZXZl
cnkgTnRoIHNsb3cgcGF0aCBhbGxvYywgd2hlcmUgTiBpcyBzcGVjaWZpZWQgYnkgdGhpcyBvcHRp
b24iKSBcCiAgICAgdihib29sLCBkZWZlckdDU2hvdWxkQ29sbGVjdFdpdGhQcm9iYWJpbGl0eSwg
ZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHBlcmZvcm0gYSBjb2xsZWN0aW9uIGJhc2VkIG9u
IGZsaXBwaW5nIGEgY29pbiBhY2NvcmRpbmcgdGhlIHByb2JhYmlsaXR5IGluIHRoZSAnZGVmZXJH
Q1Byb2JhYmlsaXR5JyBvcHRpb24gd2hlbiBEZWZlckdDIGlzIGRlc3RydWN0ZWQuIikgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCShy
ZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5
cGVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW5k
ZXhpbmdUeXBlLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiUHJvdG90eXBlTWFwSW5saW5lcy5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBl
TWFwLmgJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3RvdHlwZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVm
IFByb3RvdHlwZU1hcF9oCiAjZGVmaW5lIFByb3RvdHlwZU1hcF9oCiAKKyNpbmNsdWRlICJJbmRl
eGluZ1R5cGUuaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFw
LmgiCiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKQEAgLTQ4LDcgKzUwLDcgQEAgcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSogZW1wdHlTdHJ1Y3R1cmVGb3JQcm90
b3R5cGVGcm9tQmFzZVN0cnVjdHVyZShKU09iamVjdCosIFN0cnVjdHVyZSopOwogICAgIHZvaWQg
Y2xlYXJFbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09iamVjdCosIHVuc2lnbmVk
IGlubGluZUNhcGFjaXR5KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFByb3RvdHlw
ZShKU09iamVjdCopOwotICAgIFRyaVN0YXRlIGlzUHJvdG90eXBlKEpTT2JqZWN0KikgY29uc3Q7
IC8vIFJldHVybnMgYSBjb25zZXJ2YXRpdmUgZXN0aW1hdGUuCisgICAgaW5saW5lIFRyaVN0YXRl
IGlzUHJvdG90eXBlKEpTT2JqZWN0KikgY29uc3Q7IC8vIFJldHVybnMgYSBjb25zZXJ2YXRpdmUg
ZXN0aW1hdGUuCiAKIHByaXZhdGU6CiAgICAgU3RydWN0dXJlKiBjcmVhdGVFbXB0eVN0cnVjdHVy
ZShKU09iamVjdCogcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyos
IEluZGV4aW5nVHlwZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwpAQCAtNTgsMTggKzYwLDYg
QEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzOwogfTsKIAotaW5saW5l
IFRyaVN0YXRlIFByb3RvdHlwZU1hcDo6aXNQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCkgY29u
c3QKLXsKLSAgICBpZiAoIW1fcHJvdG90eXBlcy5jb250YWlucyhvYmplY3QpKQotICAgICAgICBy
ZXR1cm4gRmFsc2VUcmlTdGF0ZTsKLQotICAgIC8vIFdlIGtub3cgdGhhdCAnb2JqZWN0JyB3YXMg
dXNlZCBhcyBhIHByb3RvdHlwZSBhdCBvbmUgdGltZSwgc28gYmUKLSAgICAvLyBjb25zZXJ2YXRp
dmUgYW5kIHNheSB0aGF0IGl0IG1pZ2h0IHN0aWxsIGJlIHNvLiAoSXQgd291bGQgYmUgZXhwZW5z
aXZlCi0gICAgLy8gdG8gZmluZCBvdXQgZm9yIHN1cmUsIGFuZCB3ZSBkb24ndCBrbm93IG9mIGFu
eSBjYXNlcyB3aGVyZSBiZWluZyBwcmVjaXNlCi0gICAgLy8gd291bGQgaW1wcm92ZSBwZXJmb3Jt
YW5jZS4pCi0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gUHJvdG90eXBlTWFwX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RvdHlwZU1hcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXBJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcm90b3R5cGVN
YXAuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitpbmxpbmUgVHJpU3RhdGUgUHJvdG90eXBlTWFwOjppc1Byb3RvdHlwZShKU09iamVjdCogb2Jq
ZWN0KSBjb25zdAoreworICAgIGlmICghbV9wcm90b3R5cGVzLmNvbnRhaW5zKG9iamVjdCkpCisg
ICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworCisgICAgLy8gV2Uga25vdyB0aGF0ICdvYmpl
Y3QnIHdhcyB1c2VkIGFzIGEgcHJvdG90eXBlIGF0IG9uZSB0aW1lLCBzbyBiZQorICAgIC8vIGNv
bnNlcnZhdGl2ZSBhbmQgc2F5IHRoYXQgaXQgbWlnaHQgc3RpbGwgYmUgc28uIChJdCB3b3VsZCBi
ZSBleHBlbnNpdmUKKyAgICAvLyB0byBmaW5kIG91dCBmb3Igc3VyZSwgYW5kIHdlIGRvbid0IGtu
b3cgb2YgYW55IGNhc2VzIHdoZXJlIGJlaW5nIHByZWNpc2UKKyAgICAvLyB3b3VsZCBpbXByb3Zl
IHBlcmZvcm1hbmNlLikKKyAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENh
Y2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q2FjaGUuaAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1
ZGUgIlJlZ0V4cEtleS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIldlYWsuaCIK
LSNpbmNsdWRlICJXZWFrSW5saW5lcy5oIgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkxMSW50UENSYW5nZXMuaCIKICNpbmNsdWRlICJN
YXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCisjaW5jbHVkZSAiTWFy
a2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUENUb0NvZGVPcmlnaW5NYXAuaCIKICNpbmNs
dWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHJldmlzaW9uIDIw
NjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2Vha0dDTWFwX2gK
IAogI2luY2x1ZGUgIldlYWsuaCIKLSNpbmNsdWRlICJXZWFrSW5saW5lcy5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODEsMTkgKzgwLDkgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaXRlcmF0b3IgZmluZChj
b25zdCBLZXlUeXBlJiBrZXkpCi0gICAgewotICAgICAgICBpdGVyYXRvciBpdCA9IG1fbWFwLmZp
bmQoa2V5KTsKLSAgICAgICAgaXRlcmF0b3IgZW5kID0gbV9tYXAuZW5kKCk7Ci0gICAgICAgIGlm
IChpdCAhPSBlbmQgJiYgIWl0LT52YWx1ZSkgLy8gRm91bmQgYSB6b21iaWUgdmFsdWUuCi0gICAg
ICAgICAgICByZXR1cm4gZW5kOwotICAgICAgICByZXR1cm4gaXQ7Ci0gICAgfQorICAgIGlubGlu
ZSBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSk7CiAKLSAgICBjb25zdF9pdGVyYXRv
ciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBj
b25zdF9jYXN0PFdlYWtHQ01hcCo+KHRoaXMpLT5maW5kKGtleSk7Ci0gICAgfQorICAgIGlubGlu
ZSBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3Q7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yRWFjaChGdW5jdG9yIGZ1bmN0
b3IpCkBAIC0xMDQsMTAgKzkzLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAg
Ym9vbCBjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gZmluZChrZXkpICE9IG1fbWFwLmVuZCgpOwotICAgIH0KKyAgICBpbmxpbmUgYm9vbCBj
b250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0OwogCiAgICAgdm9pZCBwcnVuZVN0YWxl
RW50cmllcygpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NN
YXBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha0dDTWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrR0NNYXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJXZWFrR0NNYXAuaCIK
KyNpbmNsdWRlICJXZWFrSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDcsNiAr
NDgsMjggQEAgaW5saW5lIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNoQQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNo
QXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+CitpbmxpbmUgdHlwZW5hbWUgV2Vha0dDTWFwPEtl
eUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46Oml0ZXJhdG9yIFdlYWtHQ01h
cDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjpmaW5kKGNvbnN0IEtl
eVR5cGUmIGtleSkKK3sKKyAgICBpdGVyYXRvciBpdCA9IG1fbWFwLmZpbmQoa2V5KTsKKyAgICBp
dGVyYXRvciBlbmQgPSBtX21hcC5lbmQoKTsKKyAgICBpZiAoaXQgIT0gZW5kICYmICFpdC0+dmFs
dWUpIC8vIEZvdW5kIGEgem9tYmllIHZhbHVlLgorICAgICAgICByZXR1cm4gZW5kOworICAgIHJl
dHVybiBpdDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFy
ZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIHR5cGVu
YW1lIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+Ojpj
b25zdF9pdGVyYXRvciBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJh
aXRzQXJnPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8V2Vha0dDTWFwKj4odGhpcyktPmZpbmQoa2V5KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5h
bWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIGJvb2wgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcs
IEhhc2hBcmcsIEtleVRyYWl0c0FyZz46OmNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmluZChrZXkpICE9IG1fbWFwLmVuZCgpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmc+CiBORVZFUl9JTkxJTkUgdm9pZCBXZWFrR0NNYXA8S2V5QXJn
LCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6cHJ1bmVTdGFsZUVudHJpZXMoKQog
ewogICAgIG1fbWFwLnJlbW92ZUlmKFtdKHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpLZXlWYWx1ZVBh
aXJUeXBlJiBlbnRyeSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk1Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKICNpbmNs
dWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYtMDktMTYgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE1hcmtlZEJsb2NrIHN0YXRlIHRyYWNraW5nIHN1
cHBvcnQgb3ZlcmxhcHBlZCBhbGxvY2F0aW9uIGFuZCBtYXJraW5nIHN0YXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoZSBtYWluIGNo
YW5nZSBoZXJlIGlzIHRvIGJyaW5nIGJhY2sgRmFzdEJpdFZlY3Rvci5jcHAsIHNvIHRoYXQgSSBj
b3VsZCBvdXRsaW5lIHNvbWUKKyAgICAgICAgbGFyZ2Ugc2xvdyBwYXRoIGZ1bmN0aW9ucy4gVGhp
cyBhbHNvIGFkZHMgc29tZSB1dGlsaXRpZXMsIGxpa2UgYXRvbWljU2V0QW5kQ2hlY2soKSBhbmQK
KyAgICAgICAgaXNFbXB0eSgpLiBUaGUgR0MgdXNlcyB0aGVzZS4KKworICAgICAgICAqIFdURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpG
YXN0Qml0VmVjdG9yV29yZE93bmVyOjpzZXRFcXVhbHNTbG93KToKKyAgICAgICAgKFdURjo6RmFz
dEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXplU2xvdyk6CisgICAgICAgICogd3RmL0Zhc3RCaXRW
ZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXplKToKKyAgICAg
ICAgKFdURjo6RmFzdEJpdFZlY3RvckltcGw6OmlzRW1wdHkpOgorICAgICAgICAoV1RGOjpGYXN0
Qml0VmVjdG9yOjphdG9taWNTZXRBbmRDaGVjayk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0
b3I6Om9wZXJhdG9yW10pOiBEZWxldGVkLgorCiAyMDE2LTA5LTE5ICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykgYXV0b21hdGljIHRleHQgc2l6ZSBhZGp1c3RtZW50IGNvZGUKSW5kZXg6IFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogCQkwRjQ1NzA0MzFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwNDIxQkU1
QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLzsgfTsKIAkJMEY0NTcwNDUxQkU4MzQ0MTAw
NjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi87
IH07CiAJCTBGNzI1Q0FDMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MjVDQUIxQzUwNDYxNjAwQUQ5
NDNBIC8qIFJhbmdlU2V0LmggKi87IH07CisJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBG
YXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLzsg
fTsKIAkJMEY4MjRBNjgxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MjRBNjQxQjc0NDNBMDAw
MkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwICovOyB9OwogCQkwRjgyNEE2OTFCNzQ0M0EwMDAyRTM0
NUQgLyogUGFya2luZ0xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLzsgfTsK
IAkJMEY4NzEwNUExNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODcxMDU5MTY2NDNGMTkwMDkwQjBB
RCAvKiBSYXdQb2ludGVyLmggKi87IH07CkBAIC0zNjYsNiArMzY3LDcgQEAKIAkJMEY0NTcwNDIx
QkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ1
NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCdWJibGVTb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSYW5nZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGYXN0Qml0VmVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MjRBNjQxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdM
b3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFya2luZ0xvdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1
RCAvKiBQYXJraW5nTG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcmtp
bmdMb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NzEwNTkxNjY0M0YxOTAw
OTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmF3UG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODgwLDYgKzg4Miw3
IEBACiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EuaCAqLywKIAkJCQkxQUVB
ODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5oICovLAogCQkJCUE4QTQ3MjlGMTUx
QTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQkwRjdDNUZCNTFEODg1Q0Yy
MDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8sCiAJCQkJMEZEODFBQzQxNTRGQjIyRTAw
OTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIz
RkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8q
IEZhc3RNYWxsb2MuaCAqLywKQEAgLTE1OTQsNiArMTU5Nyw3IEBACiAJCQkJQ0Q1NDk3QUMxNTg1
N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNF
QzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEE0NzNGNDE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNzE1MUE4MjVCMDA0MTIzRkYgLyogT1NBbGxvY2F0
b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYg
LyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MDIxNTFBODI1
QjAwNDEyM0ZGIC8qIFBhZ2VCbG9jay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBAIHNldChXVEZfU09VUkNFUwog
ICAgIERhdGFMb2cuY3BwCiAgICAgRGF0ZU1hdGguY3BwCiAgICAgRGVjaW1hbE51bWJlci5jcHAK
KyAgICBGYXN0Qml0VmVjdG9yLmNwcAogICAgIEZhc3RNYWxsb2MuY3BwCiAgICAgRmlsZVByaW50
U3RyZWFtLmNwcAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL0Zhc3RCaXRWZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RC
aXRWZWN0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZhc3RCaXRWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgRmFzdEJpdFZl
Y3RvcldvcmRPd25lcjo6c2V0RXF1YWxzU2xvdyhjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVy
JiBvdGhlcikKK3sKKyAgICB1aW50MzJfdCogbmV3QXJyYXkgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dCo+KAorICAgICAgICBmYXN0Q2FsbG9jKG90aGVyLmFycmF5TGVuZ3RoKCksIHNpemVvZih1aW50
MzJfdCkpKTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG90aGVyLm1fd29yZHMsIG90aGVyLmFycmF5
TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICBpZiAobV93b3JkcykKKyAgICAgICAg
ZmFzdEZyZWUobV93b3Jkcyk7CisgICAgbV93b3JkcyA9IG5ld0FycmF5OworICAgIG1fbnVtQml0
cyA9IG90aGVyLm1fbnVtQml0czsKK30KKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpy
ZXNpemVTbG93KHNpemVfdCBudW1CaXRzKQoreworICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0
Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cyk7CisgICAgCisgICAgLy8gVXNlIGZhc3RDYWxs
b2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCisg
ICAgLy8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6
ZSBvZiB0aGUgYml0dmVjdG9yLgorICAgIAorICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkp
KTsKKyAgICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2Yo
dWludDMyX3QpKTsKKyAgICBpZiAobV93b3JkcykKKyAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7
CisgICAgbV93b3JkcyA9IG5ld0FycmF5OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRl
eDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL1dURi93
dGYvRmFzdEJpdFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC05MSwxNyArOTIsMTIgQEAgcHVi
bGljOgogICAgIAogICAgIEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG9wZXJhdG9yPShjb25zdCBG
YXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHNpemVfdCBsZW5n
dGggPSBvdGhlci5hcnJheUxlbmd0aCgpOwotICAgICAgICBpZiAobGVuZ3RoID09IGFycmF5TGVu
Z3RoKCkpIHsKLSAgICAgICAgICAgIG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBsZW5n
dGggKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAg
ICAgaWYgKGFycmF5TGVuZ3RoKCkgIT0gb3RoZXIuYXJyYXlMZW5ndGgoKSkKKyAgICAgICAgICAg
IHNldEVxdWFsc1Nsb3cob3RoZXIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNw
eShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90
KSk7CisgICAgICAgICAgICBtX251bUJpdHMgPSBvdGhlci5tX251bUJpdHM7CiAgICAgICAgIH0K
LSAgICAgICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0
Q2FsbG9jKGxlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOwotICAgICAgICBtZW1jcHkobmV3QXJy
YXksIG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBp
ZiAobV93b3JkcykKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fd29yZHMpOwotICAgICAgICBtX3dv
cmRzID0gbmV3QXJyYXk7Ci0gICAgICAgIG1fbnVtQml0cyA9IG90aGVyLm1fbnVtQml0czsKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICAgICAKQEAgLTE0MCwxOCArMTM2LDggQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgcmVzaXplKHNpemVfdCBudW1CaXRzKQogICAgIHsKLSAgICAg
ICAgaWYgKG51bUJpdHMgPT0gbV9udW1CaXRzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKLSAgICAgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNh
dXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCi0gICAgICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1l
dGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rvci4KLSAgICAg
ICAgCi0gICAgICAgIHNpemVfdCBuZXdMZW5ndGggPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgo
bnVtQml0cyk7Ci0gICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQz
Ml90Kj4oZmFzdENhbGxvYyhuZXdMZW5ndGgsIHNpemVvZih1aW50MzJfdCkpKTsKLSAgICAgICAg
bWVtY3B5KG5ld0FycmF5LCBtX3dvcmRzLCBhcnJheUxlbmd0aCgpICogc2l6ZW9mKHVpbnQzMl90
KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAgICAgICAgICAgZmFzdEZyZWUobV93b3Jkcyk7
Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsKKyAgICAgICAgaWYgKGFycmF5TGVuZ3RoKCkg
IT0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpKQorICAgICAgICAgICAgcmVzaXpl
U2xvdyhudW1CaXRzKTsKICAgICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKICAgICB9CiAgICAg
CkBAIC0xNzEsNiArMTU3LDkgQEAgcHVibGljOgogICAgIHVpbnQzMl90KiB3b3JkcygpIHsgcmV0
dXJuIG1fd29yZHM7IH0KIAogcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXRFcXVhbHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNpemVTbG93KHNpemVfdCBudW1CaXRzKTsKKyAgICAK
ICAgICB1aW50MzJfdCogbV93b3JkcyB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9udW1CaXRz
IHsgMCB9OwogfTsKQEAgLTMyMCw2ICszMDksMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KICAgICAKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgaW5kZXggPSBhcnJheUxlbmd0aCgpOyBpbmRleC0tOykgeworICAg
ICAgICAgICAgaWYgKG1fd29yZHMud29yZChpbmRleCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIEZhc3RCaXRWZWN0b3JJbXBsPEZh
c3RCaXRWZWN0b3JBbmRXb3Jkczx0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUsIHR5cGVuYW1lIE90
aGVyV29yZHM6OlZpZXdUeXBlPj4gb3BlcmF0b3ImKGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90
aGVyV29yZHM+JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC0zODAsNyArMzc4LDcgQEAgcHVibGlj
OgogICAgICAgICAvLyB3cml0dGVuIHRoaXMgd2F5IHNvIHRoYXQgaXQgcGVyZm9ybXMgd2VsbCBy
ZWdhcmRsZXNzIG9mIHdoZXRoZXIgdmFsdWUgaXMgYSBjb25zdGFudC4KICAgICAgICAgdWludDMy
X3Qgc2tpcFZhbHVlID0gLShzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpIF4gMSk7CiAgICAg
ICAgIAotICAgICAgICBzaXplX3QgbnVtV29yZHMgPSBtX3dvcmRzLmFycmF5TGVuZ3RoKCk7Cisg
ICAgICAgIHNpemVfdCBudW1Xb3JkcyA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChtX3dvcmRz
Lm51bUJpdHMoKSk7CiAgICAgICAgIAogICAgICAgICBzaXplX3Qgd29yZEluZGV4ID0gc3RhcnRJ
bmRleCAvIDMyOwogICAgICAgICBzaXplX3Qgc3RhcnRJbmRleEluV29yZCA9IHN0YXJ0SW5kZXgg
LSB3b3JkSW5kZXggKiAzMjsKQEAgLTQ3MSw2ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
d29yZHMuY2xlYXJBbGwoKTsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNv
bnRlbnRzIG9mIHRoaXMgYml0dmVjdG9yIGNoYW5nZWQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3RoZXJXb3Jkcz4KICAgICBib29sIHNldEFuZENoZWNrKGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBs
PE90aGVyV29yZHM+JiBvdGhlcikKICAgICB7CkBAIC01NTAsNiArNTQ5LDI4IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBhdChpbmRleCk7CiAgICAgfQorICAgIAorICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgY29udGVudHMgY2hhbmdlZC4KKyAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgYXRvbWljU2V0QW5kQ2hlY2soc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgdWludDMyX3QqIHBvaW50ZXIgPSAmbV93b3Jkcy53b3JkKGluZGV4ID4+IDUpOworICAg
ICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoaW5kZXggJiAzMSk7CisgICAgICAgIGZvciAoOzsp
IHsKKyAgICAgICAgICAgIHVpbnQzMl90IG9sZFZhbHVlID0gKnBvaW50ZXI7CisgICAgICAgICAg
ICB1aW50MzJfdCBuZXdWYWx1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAg
ICAgICAgIGlmIChvbGRWYWx1ZSAmIG1hc2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlIHwgbWFzazsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCEob2xkVmFsdWUgJiBtYXNrKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG5ld1Zh
bHVlID0gb2xkVmFsdWUgJiB+bWFzazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3
ZWFrQ29tcGFyZUFuZFN3YXAocG9pbnRlciwgb2xkVmFsdWUsIG5ld1ZhbHVlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uY3BwCShy
ZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiR0NPYnNlcnZh
dGlvbi5oIgogCiAjaW5jbHVkZSA8aGVhcC9IZWFwSW5saW5lcy5oPgorI2luY2x1ZGUgPGhlYXAv
V2Vha0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDYxNTApCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0w
OS0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTWFy
a2VkQmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9jYXRpb24gYW5k
IG1hcmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgUmVtb3ZlIHRoZSBhbHdheXMtdHJpZ2dlci1jb3B5LXBoYXNlIGNvbmZp
Z3VyYXRpb24uCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorCiAy
MDE2LTA5LTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IG9uIDEwLjEwIGJvdHMuCkluZGV4OiBUb29scy9TY3Jp
cHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVu
LWpzYy1zdHJlc3MtdGVzdHMJKHJldmlzaW9uIDIwNjE1MCkKKysrIFRvb2xzL1NjcmlwdHMvcnVu
LWpzYy1zdHJlc3MtdGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTg2OSwxMCArODY5LDYgQEAgZGVm
IHJ1bkZUTEVhZ2VyTm9DSklUT1NSVmFsaWRhdGlvbgogICAgIHJ1bigiZnRsLWVhZ2VyLW5vLWNq
aXQtb3NyLXZhbGlkYXRpb24iLCAiLS12YWxpZGF0ZUZUTE9TUkV4aXRMaXZlbmVzcz10cnVlIiwg
KihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIEVBR0VSX09QVElPTlMpKQogZW5kCiAK
LWRlZiBydW5BbHdheXNUcmlnZ2VyQ29weVBoYXNlCi0gICAgcnVuKCJhbHdheXMtdHJpZ2dlci1j
b3B5LXBoYXNlIiwgIi0tbWluSGVhcFV0aWxpemF0aW9uPTIuMCIsICItLW1pbkNvcGllZEJsb2Nr
VXRpbGl6YXRpb249Mi4wIikKLWVuZAotCiBkZWYgcnVuTm9DSklUTm9BU08KICAgICBydW4oIm5v
LWNqaXQtbm8tYXNvIiwgIi0tdXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zPWZh
bHNlIiwgKk5PX0NKSVRfT1BUSU9OUykKIGVuZApAQCAtOTEwLDcgKzkwNiw2IEBAIGRlZiBkZWZh
dWx0UnVuCiAgICAgICAgIGRlZmF1bHRRdWlja1J1bgogICAgIGVsc2UKICAgICAgICAgcnVuRGVm
YXVsdAotICAgICAgICBydW5BbHdheXNUcmlnZ2VyQ29weVBoYXNlCiAgICAgICAgIGlmICRqaXRU
ZXN0cwogICAgICAgICAgICAgcnVuTm9MTEludAogICAgICAgICAgICAgcnVuTm9DSklUVmFsaWRh
dGVQaGFzZXMKQEAgLTkzNiw3ICs5MzEsNiBAQCBkZWYgZGVmYXVsdE5vTm9MTEludFJ1bgogICAg
ICAgICBkZWZhdWx0UXVpY2tSdW4KICAgICBlbHNlCiAgICAgICAgIHJ1bkRlZmF1bHQKLSAgICAg
ICAgcnVuQWx3YXlzVHJpZ2dlckNvcHlQaGFzZQogICAgICAgICBpZiAkaml0VGVzdHMKICAgICAg
ICAgICAgIHJ1bk5vQ0pJVFZhbGlkYXRlUGhhc2VzCiAgICAgICAgICAgICBydW5ERkdFYWdlcgpA
QCAtOTg4LDcgKzk4Miw2IEBAIGVuZAogIyBieSBjb3VudGluZyByZWNvbXBpbGF0aW9ucy4KIGRl
ZiBkZWZhdWx0Tm9FYWdlclJ1bgogICAgIHJ1bkRlZmF1bHQKLSAgICBydW5BbHdheXNUcmlnZ2Vy
Q29weVBoYXNlCiAgICAgaWYgJGppdFRlc3RzCiAgICAgICAgIHJ1bk5vTExJbnQKICAgICAgICAg
cnVuTm9DSklUVmFsaWRhdGVQaGFzZXMKQEAgLTEwMDMsNyArOTk2LDYgQEAgZW5kCiAKIGRlZiBk
ZWZhdWx0Tm9TYW1wbGluZ1Byb2ZpbGVyUnVuCiAgICAgcnVuRGVmYXVsdAotICAgIHJ1bkFsd2F5
c1RyaWdnZXJDb3B5UGhhc2UKICAgICBpZiAkaml0VGVzdHMKICAgICAgICAgcnVuTm9MTEludAog
ICAgICAgICBydW5Ob0NKSVRWYWxpZGF0ZVBoYXNlcwpAQCAtMTE0MSw3ICsxMTMzLDYgQEAgZW5k
CiAKIGRlZiBydW5Nb2R1bGVzCiAgICAgcnVuKCJkZWZhdWx0LW1vZHVsZXMiLCAiLW0iKQotICAg
IHJ1bigiYWx3YXlzLXRyaWdnZXItY29weS1waGFzZS1tb2R1bGVzIiwgIi1tIiwgIi0tbWluSGVh
cFV0aWxpemF0aW9uPTIuMCIsICItLW1pbkNvcGllZEJsb2NrVXRpbGl6YXRpb249Mi4wIikKIAog
ICAgIGlmICEkaml0VGVzdHMKICAgICAgICAgcmV0dXJuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289367</attachid>
            <date>2016-09-20 10:03:46 -0700</date>
            <delta_ts>2016-09-20 11:07:24 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>174939</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDYxNTApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE2LTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBwb3J0IG92
ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgYSBtaWNyb2JlbmNobWFy
ayBmb3Igd2h5IHdlIHdhbnQgdG8gcmVjbGFpbSBlbXB0eSBibG9ja3MgZnJvbSBvdGhlciBhbGxv
Y2F0b3JzLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNz
ZXMuanM6IEFkZGVkLgorCiAyMDE2LTA5LTIwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZGVkIHRlc3QgZm9yIHg4NiAzMi1iaXQgZmFp
bHVyZSBmb3IgSGFzT3duUHJvcGVydHkgbm9kZSBpbiBERkcuCkluZGV4OiBKU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9zd2l0Y2hpbmctc2l6ZS1jbGFzc2VzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL3N3aXRjaGluZy1zaXplLWNsYXNzZXMuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3dpdGNoaW5nLXNpemUtY2xhc3Nlcy5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsr
aSkgeworICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTAwMDAwOyArK2opCisgICAgICAgIG5ldyBB
cnJheSgxMCAqIGkpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjk3IEBACisyMDE2LTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBwb3J0
IG92ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDb25jdXJyZW50IEdDcyBt
dXN0IGFsbG93IGZvciBtdXRhdGlvbiBhbmQgYWxsb2NhdGlvbiBkdXJpbmcgY29sbGVjdGlvbi4g
V2UgYWxyZWFkeSBrbm93CisgICAgICAgIGhvdyB0byBtdXRhdGUgZHVyaW5nIGNvbGxlY3Rpb24u
IFdlIGhhdmUgYSB3cml0ZSBiYXJyaWVyIGZvciB0aGF0LiBBbGxvY2F0aW9uIGR1cmluZworICAg
ICAgICBjb2xsZWN0aW9uIGlzIG1vcmUgaW52b2x2ZWQ6IHRoZSBjb2xsZWN0b3IgbW9kaWZpZXMg
dGhlIHRoZSBtYXJrIGJpdHMsIGFzIHdlbGwgYXMgb3RoZXIKKyAgICAgICAga2luZHMgb2YgTWFy
a2VkQmxvY2sgc3RhdGUsIGluLXBsYWNlIGR1cmluZyBhIGNvbGxlY3Rpb24uIFRoZSBhbGxvY2F0
b3IgdXNlcyB0aGF0IHNhbWUKKyAgICAgICAgTWFya2VkQmxvY2sgc3RhdGUgdG8gZGVjaWRlIHdo
aWNoIHJlZ2lvbnMgb2YgbWVtb3J5IGFyZSBmcmVlLiBUaGlzIHdvcmtzIGlmIHRoZSBhbGxvY2F0
b3IKKyAgICAgICAgbmV2ZXIgcnVucyB3aGlsZSB0aGUgY29sbGVjdG9yIGlzIHJ1bm5pbmcsIGJ1
dCBpZiB3ZSB3YW50IHRvIGFsbG93IHRoZW0gdG8gcnVuIGF0IHRoZSBzYW1lCisgICAgICAgIHRp
bWUsIHRoZW4gd2UgbmVlZCB0byBoYXZlIHR3byB2ZXJzaW9ucyBvZiB0aGUgc3RhdGU6IG9uZSB2
ZXJzaW9uIGJ1aWx0IHVwIGJ5IHRoZQorICAgICAgICBjb2xsZWN0b3IgYW5kIGFub3RoZXIgY29u
c3VtZWQgYnkgdGhlIGFsbG9jYXRvci4gV2UgY2xlYXIgdGhlIGNvbGxlY3RvciBzdGF0ZSBhdCB0
aGUKKyAgICAgICAgYmVnaW5uaW5nIG9mIGNvbGxlY3Rpb24sIGFuZCBzcGxhdCB0aGUgY29sbGVj
dG9yIHN0YXRlIG9udG8gdGhlIGFsbG9jYXRvciBzdGF0ZSBhZnRlcgorICAgICAgICBjb2xsZWN0
aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjb3VsZCBiZSBzdXBlciBleHBlbnNpdmUsIGJ1
dCB3ZSBjYW4gbWFrZSBpdCBjaGVhcCB3aXRoIHNvbWUgY2xldmVybmVzcy4gVGhlIGJpZ2dlc3QK
KyAgICAgICAgb2JzZXJ2YXRpb24gaXMganVzdCB0aGF0IG1vc3Qgb2YgdGhlIHN0YXRlIGlzIGEg
aGFuZGZ1bCBvZiBiaXRzIHBlciBibG9jazogaXMgdGhlIGJsb2NrCisgICAgICAgIGZyZWUtbGlz
dGVkPyBpcyBpdCBjb21wbGV0ZWx5IGZ1bGw/IGNvbXBsZXRlbHkgZW1wdHk/IGluIHRoZSBpbmNy
ZW1lbnRhbCBzd2VlcGVyJ3MKKyAgICAgICAgc25hcHNob3Q/IGlzIGl0IHJldGlyZWQ/IGlzIGl0
IGluIGVkZW4/IFRoZXJlIGlzIGFsc28gc3RhdGUgaW5zaWRlIGJsb2NrcywgbGlrZSB0aGUgbWFy
aworICAgICAgICBiaXRzLCBidXQgSSBoYXZlIGEgc29saWQgcGxhbiB0aGVyZSBhbmQgSSdsbCBz
YXZlIGl0IGZvciBhbm90aGVyIHBhdGNoLiBPbmNlIHdlIHZpZXcgdGhlCisgICAgICAgIHN0YXRl
IG9mIGJsb2NrcyBhcyBiaXRzLCB3ZSBjYW4gcHV0IHRoYXQgc3RhdGUgaW50byBiaXR2ZWN0b3Jz
LCBzbyB0aGF0IGlmIHRoZSBjb2xsZWN0b3IKKyAgICAgICAgbmVlZHMgdG8gdHJhbnNmb3JtIHRo
ZSBzdGF0ZSBvZiBzb21lIGJsb2NrcywgaXQgY2FuIGRvIGl0IHdpdGggYSBzaW5nbGUgb3BlcmF0
aW9uIG92ZXIKKyAgICAgICAgYml0dmVjdG9ycy4gSSBsaWtlIHRvIHRoaW5rIG9mIHRoaXMgYXMg
MzItd2F5IHBhcmFsbGVsaXppbmcgYmxvY2sgb3BlcmF0aW9ucywgc2luY2UKKyAgICAgICAgZG9p
bmcgb25lIG9wZXJhdGlvbiBvbiBhIDMyLWJpdCB3b3JkIGluIG9uZSBvZiB0aG9zZSBiaXR2ZWN0
b3JzIGluc3RhbnRseSBhZmZlY3RzIDMyCisgICAgICAgIGJsb2Nrcy4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgY2hhbmdlIGNvbnZlcnRzIGFsbCBwcmV2aW91cyBjb2xsZWN0aW9ucyBvZiBNYXJr
ZWRCbG9ja3MsIGFsb25nIHdpdGggdGhlIE1hcmtlZEJsb2NrCisgICAgICAgIHN0YXRlLCBpbnRv
IDggYml0dmVjdG9ycyAobGl2ZSwgZW1wdHksIGFsbG9jYXRlZCwgY2FuQWxsb2NhdGVCdXROb3RF
bXB0eSwgZWRlbiwgdW5zd2VwdCwKKyAgICAgICAgbWFya2luZ05vdEVtcHR5LCBhbmQgbWFya2lu
Z1JldGlyZWQpLiBUaGUgYml0dmVjdG9ycyBzZXBhcmF0ZSBhbGxvY2F0b3Igc3RhdGUgKGVtcHR5
LAorICAgICAgICBhbGxvY2F0ZWQsIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIGZyb20gbWFya2lu
ZyBzdGF0ZSAobWFya2luZ05vdEVtcHR5LCBtYXJraW5nUmV0aXJlZCkuCisgICAgICAgIAorICAg
ICAgICBBcyBhIG5pY2Ugc2lkZS1lZmZlY3Qgb2Ygc3dpdGNoaW5nIHRvIGJpdHZlY3RvcnMsIHdl
IGdldCBzaXplIGNsYXNzIHJlYmFsYW5jaW5nIGZvciBmcmVlLgorICAgICAgICBJdCB1c2VkIHRv
IGJlIHRoYXQgaWYgYSBNYXJrZWRBbGxvY2F0b3IgaGFkIGFuIGVtcHR5IGJsb2NrLCB3ZSB3b3Vs
ZCBvbmx5IGFsbG93IHRoYXQKKyAgICAgICAgbWVtb3J5IHRvIGJlIHJldXNlZCBieSBhIGRpZmZl
cmVudCBNYXJrZWRBbGxvY2F0b3IgaWYgd2UgZGlkIGFuIGluY3JlbWVudGFsIHN3ZWVwIG9yIGEK
KyAgICAgICAgZnVsbCBlYWdlciBzd2VlcC4gTm93IHdlIGh1bnQgZG93biBhbGwgZGVzdHJ1Y3Rv
cmxlc3MgZW1wdHkgYmxvY2tzIGJlZm9yZSBhbGxvY2F0aW5nIG5ldworICAgICAgICBNYXJrZWRC
bG9ja3MuIEl0IHdvdWxkIGJlIHJlbGF0aXZlbHkgZWFzeSB0byBhbHNvIGh1bnQgZG93biBkZXN0
cnVjdG9yIGVtcHR5IGJsb2NrcywgYnV0CisgICAgICAgIHRoZSB0aGVvcnkgaXMgdGhhdCB0aG9z
ZSBtaWdodCBiZSBleHBlbnNpdmUgdG8gc3dlZXAsIHNvIGl0IG1pZ2h0IHN0aWxsIGJlIGJldHRl
ciB0byBsZWF2ZQorICAgICAgICB0aG9zZSB0byB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIHBlcmYtbmV1dHJhbCBhbGwgYXJvdW5kLiBJ
IGRpZCBzb21lIHRlc3RzIHdpdGggdHdvIGRpZmZlcmVudCBraW5kcyBvZgorICAgICAgICBhbGxv
Y2F0aW9uIHN0cmF0ZWdpZXMgLSBzb21ldGhpbmcgdGhhdCBpcyBzb21ld2hhdCBlYXNpZXIgdG8g
ZG8gbm93IHRoYXQgeW91IGNhbiBsb29rIGZvcgorICAgICAgICBibG9ja3MgdGhhdCBhcmUgY2Fu
ZGlkYXRlcyBmb3IgYWxsb2NhdGlvbiBieSBqdXN0IHNjYW5uaW5nIHNvbWUgYml0dmVjdG9ycy4g
SSB0cmllZCB0d28KKyAgICAgICAgdmFyaWFudHM6CisgICAgICAgIAorICAgICAgICAtIEFsbG9j
YXRlIG91dCBvZiBub24tZW1wdHkgYmxvY2tzIGZpcnN0LCBsZWF2aW5nIGVtcHR5IGJsb2NrcyBm
b3IgbGFzdCBpbiBjYXNlIGEKKyAgICAgICAgICBkaWZmZXJlbnQgYWxsb2NhdG9yIG5lZWRlZCB0
aGVtLiBUaGlzIGlzIHNvcnQgb2YgYSBiZXN0LWZpdCBzdHJhdGVneS4gSSB0cmllZCB0aGlzCisg
ICAgICAgICAgZmlyc3QsIGFuZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFzOgorICAgICAgICAgIAor
ICAgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eS5m
aW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSkKKyAgICAgICAgCisgICAgICAgIC0gQWxs
b2NhdGUgb3V0IG9mIGxvd2VyLWluZGV4ZWQgYmxvY2tzIGZpcnN0LCB0cmVhdGluZyBlbXB0eSBh
bmQgY2FuQWxsb2NhdGVCdXROb3RFbXB0eQorICAgICAgICAgIGJsb2NrcyBlcXVhbGx5LiBUaGlz
IGlzIHNvcnQgb2YgYSBmaXJzdC1maXQgc3RyYXRlZ3kuIFRoaXMgaXMgd2hhdCBJIGVuZGVkIHVw
IHNldHRsaW5nCisgICAgICAgICAgb24sIGFuZCBpdCBjYW4gYmUgZXhwcmVzc2VkIGFzOgorICAg
ICAgICAgIAorICAgICAgICAgIG1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9jYXRlQnV0
Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KG1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSkKKyAg
ICAgICAgCisgICAgICAgIFRoZSBiZXN0LWZpdCBzdHJhdGVneSBtZWFudCAxJSByZWdyZXNzaW9u
cyBpbiBMb25nU3BpZGVyIGFuZCBPY3RhbmUgb3ZlcmFsbCwgYW5kIGEgMTElCisgICAgICAgIHJl
Z3Jlc3Npb24gb24gT2N0YW5lL2VhcmxleS4gRmlyc3QtZml0IG1lYW5zIHBlcmYtbmV1dHJhbGl0
eS4gTW9zdCBncmVhdCBhbGxvY2F0b3JzIHNrZXcKKyAgICAgICAgdG93YXJkcyBmaXJzdC1maXQg
YmVjYXVzZSBpdCdzIGVtcGlyaWNhbGx5IGJldHRlciwgc28gdGhpcyByZXN1bHQgaXMgbm90IHN1
cnByaXNpbmcuCisgICAgICAgIAorICAgICAgICBPdmVyYWxsLCB0aGUgcGVyZm9ybWFuY2Ugb2Yg
dGhpcyBwYXRjaCBvbiBteSBtYWNoaW5lIGlzIGFzIGZvbGxvd3MsIHdoZXJlICJuZXV0cmFsIiBt
ZWFucworICAgICAgICBsZXNzIHRoYW4gMSUgYW5kIG5vdCBzdGF0aXN0aWNhbGx5IHNpZ25pZmlj
YW50LgorICAgICAgICAKKyAgICAgICAgcnVuLWpzYy1iZW5jaG1hcmtzOgorICAgICAgICAgICAg
U3VuU3BpZGVyOiBuZXV0cmFsCisgICAgICAgICAgICBMb25nU3BpZGVyOiAwLjYlIHNsb3dlcgor
ICAgICAgICAgICAgVjhTcGlkZXI6IG5ldXRyYWwKKyAgICAgICAgICAgIE9jdGFuZTogbmV1dHJh
bAorICAgICAgICAgICAgS3Jha2VuOiBuZXV0cmFsCisgICAgICAgICAgICBNaWNyb2JlbmNobWFy
a3M6IDAuMzclIHNsb3dlcgorICAgICAgICAgICAgQXNtQmVuY2g6IG5ldXRyYWwKKyAgICAgICAg
ICAgIENvbXByZXNzaW9uQmVuY2g6IG1heWJlIDElIGZhc3RlcgorICAgICAgICAKKyAgICAgICAg
Rm9yIGJyb3dzZXIgYmVuY2htYXJrcywgSSByZXBvcnQgdGhlIHJhdGlvIG9mIG1lYW5zIChiaWdn
ZXIgLyBzbWFsbGVyKSBhbG9uZyB3aXRoIGEgVC10ZXN0CisgICAgICAgIGZyb20gTWF0aGVtYXRp
Y2EgcmVwb3J0ZWQgYXMgJSBjaGFuY2Ugb2Ygbm90IFtzaWNdIHRoZSBudWxsIGh5cG90aGVzaXMu
IE5vdGUgdGhhdCB3ZQorICAgICAgICBub3JtYWxseSBjb25zaWRlciBhbnl0aGluZyBsZXNzIHRo
YW4gOTUlIGNvbmZpZGVuY2UgdG8gYmUgaW5jb25jbHVzaXZlLgorICAgICAgICAKKyAgICAgICAg
QnJvd3NlciBiZW5jaG1hcmtzOgorICAgICAgICAgICAgUExUMzogMC4zJSBmYXN0ZXIgd2l0aCA2
NyUgY29uZmlkZW5jZQorICAgICAgICAgICAgbWVtYnVzdGVyOgorICAgICAgICAgICAgICAgIFNu
YXAyRmluaXNoZWRMb2FkaW5nUG9zdDogMC42OCUgbW9yZSBtZW1vcnkgd2l0aCA1MCUgY29uZmlk
ZW5jZQorICAgICAgICAgICAgICAgIFNuYXAzRW5kUG9zdDogMi40JSBtb3JlIG1lbW9yeSB3aXRo
IDYxJSBjb25maWRlbmNlCisgICAgICAgICAgICBKZXRTdHJlYW06IDAuMiUgc2xvd2VyIHdpdGgg
MzIlIGNvbmZpZGVuY2UKKyAgICAgICAgICAgIFNwZWVkb21ldGVyOiAwLjclIGZhc3RlciB3aXRo
IDgyJSBjb25maWRlbmNlCisgICAgICAgIAorICAgICAgICBGaW5hbGx5LCB0aGlzIGJyZWFrcyAt
LXVzZUltbW9ydGFsT2JqZWN0cy4gSXQgd2FzIGFscmVhZHkgYnJva2VuIGFzIGZhciBhcyBJIGNh
biB0ZWxsLiBJCisgICAgICAgIGZpbGVkIGEgYnVnIHRvIHJlaW1wbGVtZW50IGl0IChidWcgMTYy
Mjk2KS4gVW5sZXNzIHNvbWVvbmUgdXJnZW50bHkgbmVlZHMgdGhpcyBpbnRlcm5hbAorICAgICAg
ICB0b29sLCBpdCdzIHByb2JhYmx5IGJlc3QgdG8gcmVpbXBsZW1lbnQgaXQgYWZ0ZXIgSSdtIGRv
bmUgcmVmYWN0b3JpbmcgTWFya2VkU3BhY2UuIAorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5j
cHA6CisgICAgICAgICogaGVhcC9DZWxsQ29udGFpbmVyLmg6CisgICAgICAgICogaGVhcC9DZWxs
Q29udGFpbmVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjp2bSk6Cisg
ICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmhlYXApOgorICAgICAgICAoSlNDOjpDZWxsQ29u
dGFpbmVyOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpDZWxsQ29u
dGFpbmVyOjphYm91dFRvTWFyayk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6OmlzTWFy
a2VkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5lcjo6ZmxpcElmTmVjZXNz
YXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcDoKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpiZWdpbk1hcmtpbmcp
OgorICAgICAgICAoSlNDOjpIZWFwOjplbmRNYXJraW5nKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
Y29sbGVjdEFsbEdhcmJhZ2UpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0SW1wbCk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OnNuYXBzaG90TWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnpvbWJpZnlE
ZWFkT2JqZWN0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yOjpN
YXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrU25hcHNob3RGdW5jdG9yOjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SGVhcDo6cmVzZXRBbGxvY2F0b3JzKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlYXAu
aDoKKyAgICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6Omlz
TWFya2VkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkpOgorICAg
ICAgICAoSlNDOjpIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKToKKyAgICAgICAgKiBoZWFwL0hlYXBT
dGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXBVdGlsLmg6CisgICAgICAgIChKU0M6
OkhlYXBVdGlsOjpmaW5kR0NPYmplY3RQb2ludGVyc0Zvck1hcmtpbmcpOgorICAgICAgICAoSlND
OjpIZWFwVXRpbDo6aXNQb2ludGVyR0NPYmplY3RKU0NlbGwpOgorICAgICAgICAqIGhlYXAvSGVh
cFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHA6Cisg
ICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKToKKyAg
ICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6
SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jayk6CisgICAgICAgIChKU0M6OkluY3Jl
bWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFs
U3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKToKKyAgICAgICAgKiBoZWFwL0luY3JlbWVudGFs
U3dlZXBlci5oOgorICAgICAgICAqIGhlYXAvTGFyZ2VBbGxvY2F0aW9uLmg6CisgICAgICAgIChK
U0M6OkxhcmdlQWxsb2NhdGlvbjo6aXNNYXJrZWQpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9j
YXRpb246OmlzTWFya2VkQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0
aW9uOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpMYXJnZUFsbG9j
YXRpb246OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6TGFyZ2VBbGxvY2F0aW9uOjppc01h
cmtlZER1cmluZ1dlYWtWaXNpdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkxhcmdlQWxs
b2NhdGlvbjo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGFyZ2VB
bGxvY2F0aW9uOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9j
YXRvcjo6TWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpp
c1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmaW5kRW1wdHlCbG9j
ayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29s
bGVjdGluZ0ltcGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlSW4p
OgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSW4pOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2VJbXBsKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxv
Y2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxp
emUpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jYXRpbmcpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0
aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjplbmRNYXJraW5nKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZvckVkZW5Db2xsZWN0aW9uKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdEZvckZ1bGxDb2xsZWN0aW9uKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmaW5kQmxvY2tUb1N3ZWVwKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFs
bG9jYXRvcjo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphc3NlcnRT
bmFwc2hvdEVtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkdW1wKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkdW1wQml0cyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6cmV0aXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjpmaWx0ZXJOZXh0QmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OnNldE5leHRCbG9ja1RvU3dlZXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEFs
bG9jYXRvci5oOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCaXRWZWN0
b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCaXRWZWN0b3JXaXRo
TmFtZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6bmV4dEFsbG9jYXRvcik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEFsbG9jYXRvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnRyeUNyZWF0ZSk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6On5IYW5kbGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6TWFya2VkQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpz
cGVjaWFsaXplZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVj
dFNjcmliYmxlTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVw
SGVscGVyU2VsZWN0RW1wdHlNb2RlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZSk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnVuc3dlZXBXaXRoTm9OZXdseUFsbG9j
YXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNldElzRnJlZUxpc3Rl
ZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENv
bnN1bWVGcmVlTGlzdCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjptYXJrQ291bnQpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc0VtcHR5KToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6Om5vdGVNYXJrZWRTbG93KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2Vl
cEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnlTbG93KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmdTbG93KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6d2lsbFJlbW92ZUJsb2Nr
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAg
ICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc0ZyZWVMaXN0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpp
bmRleCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphYm91dFRvTWFyayk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
Ojppc01hcmtlZENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
Ojppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjppc09uQmxvY2tzVG9Td2VlcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnNldElzT25CbG9ja3NUb1N3ZWVwKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnlEdXJp
bmdNYXJraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
ZmxpcEZvckVkZW5Db2xsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hEZWFkQ2VsbCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Om5lZWRzU3dlZXBpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjppc0FsbG9jYXRlZCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OmZvckVhY2hMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OmZvckVhY2hEZWFkQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpyZXNldFZlcnNp
b24pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2Nh
dGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cHJl
cGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c2hyaW5rKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZGlkQWxsb2Nh
dGVJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZpbmRFbXB0eUJsb2NrKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90KToKKyAgICAgICAgKEpTQzo6TWFy
a2VkU3BhY2U6OmFzc2VydFNuYXBzaG90RW1wdHkpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6ZHVtcEJpdHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlZlcmlmeU1hcmtlZDo6b3BlcmF0b3IoKSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmbGlwKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
ZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpuZXh0VmVyc2lv
bik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmaXJzdEFsbG9jYXRvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3JFbXB0eUFsbG9jYXRpb24pOgorICAgICAg
ICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpibG9ja3NXaXRoTmV3T2JqZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpzZXRJc01hcmtpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmZvckVhY2hEZWFkQ2VsbCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZUlubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNo
TGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKToK
KyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0
b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKToKKyAgICAgICAgKEpTQzo6U2xvdFZp
c2l0b3I6Om1hcmtBdXhpbGlhcnkpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogaGVhcC9XZWFrLmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFp
dHM8SlNDOjpXZWFrPFQ+Pjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8
SlNDOjpXZWFrPFQ+Pjo6cGVlayk6CisgICAgICAgICogaGVhcC9XZWFrQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpXZWFrQmxvY2s6OnNwZWNpYWxpemVkVmlzaXQpOgorICAgICAgICAoSlNDOjpX
ZWFrQmxvY2s6OnJlYXApOgorICAgICAgICAqIGhlYXAvV2Vha0lubGluZXMuaDoKKyAgICAgICAg
KFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+OjplbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6SGFzaFRyYWl0czxKU0M6OldlYWs8VD4+OjpwZWVrKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVNYXAuaDoKKyAgICAgICAgKiBydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDTWFwLmg6
CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA6CisKIDIwMTYtMDktMjAg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBm
aXggZm9yIDMyLWJpdCBERkcgeDg2IGltcGxlbWVudGF0aW9uIG9mIEhhc093blByb3BlcnR5LgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OTgsNiArNDk4LDggQEAKIAkJMEY3QzM5RkIxQzhGNjI5
MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxp
bmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovOyB9Owog
CQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEg
LyogREZHT3BJbmZvLmggKi87IH07CisJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAvKiBNYXJr
ZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGN0M1RkI3MUQ4ODhBMDEwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCAq
LzsgfTsKKwkJMEY3QzVGQkExRDg4OTUwNzAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjkx
RDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovOyB9OwogCQkwRjgwMjNF
QTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjQxNjM5
QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9OwogCQkwRjgz
MzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTc2LDYgKzU3OCw3IEBACiAJCTBGOUZCNEY0
MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZCNEYyMTdGQ0I5MTcwMENCNjdG
OCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCAqLzsgfTsKIAkJMEY5RkI0RjUxN0ZDQjkxNzAw
Q0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFj
a0xheW91dFBoYXNlLmggKi87IH07CiAJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRL
aW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlG
QzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQTEzMTcxMUQ4REQ3MkIwMEVDMTMwQSAvKiBQ
cm90b3R5cGVNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkExMzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5l
cy5oICovOyB9OwogCQkwRkEyQzE3QjE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTJD
MTc5MTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwICovOyB9OwogCQkwRkEy
QzE3QzE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEyQzE3QTE3RDdDRjg0MDA5RDAxNUYg
LyogVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEZBNTgxQkExNTBFOTUyQzAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE1ODFC
NzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLzsgfTsKQEAgLTYxMCw2ICs2
MTMsNyBAQAogCQkwRkI0RkI3MzFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRGQjcw
MUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovOyB9OwogCQkwRkI0RkI3
NDFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEgLyog
RlRMTGF6eVNsb3dQYXRoLmggKi87IH07CiAJCTBGQjRGQjc1MUJDODQzMTQwMDI1Q0E1QSAvKiBG
VExMYXp5U2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoQ2Fs
bC5oICovOyB9OworCQkwRkI1MzAzOTFEOTA0MDRDMDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3Bl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1MzAz
ODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi87IH07CiAJCTBGQjU0Njc3
MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1OUFEMTAwMkMy
OTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0yNzMxLDYgKzI3MzUsOCBAQAogCQkwRjdDMzlGQTFDOEY2MjkzMDA0ODAx
NTEgLyogUmVnRXhwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZWdFeHBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZDMUM4
RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPcEluZm8uaDsgcGF0aCA9IGRmZy9ERkdP
cEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzVGQjcxRDg4OEEwMTAw
NDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXJrZWRCbG9ja0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRTcGFjZUlubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeVZhbEluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDgsNiArMjgxNCw3IEBACiAJ
CTBGOUZCNEYyMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0YWNrTGF5b3V0UGhhc2UuY3Bw
OyBwYXRoID0gZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdGFja0xheW91dFBoYXNl
Lmg7IHBhdGggPSBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQTEzMTcwMUQ4REQ3MjkwMEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3RvdHlwZU1hcElubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMkMxNzkxN0Q3Q0Y4NDAwOUQwMTVG
IC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkEyQzE3QTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RSdW5uZXJVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGVGbGFncy5jcHA7
IHBhdGggPSBkZmcvREZHTm9kZUZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI4NTIsNiArMjg1OSw3IEBACiAJCTBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExM
YXp5U2xvd1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRM
TGF6eVNsb3dQYXRoLmNwcDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6
eVNsb3dQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTExhenlTbG93
UGF0aC5oOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoQ2Fs
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGhDYWxs
Lmg7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkI1MzAzODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpb25TY29wZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2N0ExNEY1QzdENDAw
MkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI1NSw2ICs1MjYzLDcgQEAKIAkJMTQyRTMxMkExMzRG
RjBBNjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTBGQjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAvKiBBbGxvY2F0aW9uU2NvcGUu
aCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkgLyogQWxsb2NhdG9yQXR0cmlidXRl
cy5jcHAgKi8sCiAJCQkJMEY5NjMwMzYxRDQxOTJDMzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJp
YnV0ZXMuaCAqLywKIAkJCQkwRjA3MEE0MjFENTQzQTg5MDA2RTcyMzIgLyogQ2VsbENvbnRhaW5l
ci5oICovLApAQCAtNTMzOCw5ICs1MzQ3LDExIEBACiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JB
Qzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4
NiAvKiBNYXJrZWRCbG9jay5jcHAgKi8sCiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8q
IE1hcmtlZEJsb2NrLmggKi8sCisJCQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtl
ZEJsb2NrSW5saW5lcy5oICovLAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJr
ZWRCbG9ja1NldC5oICovLAogCQkJCTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRT
cGFjZS5jcHAgKi8sCiAJCQkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNl
LmggKi8sCisJCQkJMEY3QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5l
cy5oICovLAogCQkJCTE0MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICov
LAogCQkJCTE0MkQ2RjBGMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKIAkJCQlB
RERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLApAQCAtNjA3Niw2
ICs2MDg3LDcgQEAKIAkJCQk2NUMwMkZCQjA2Mzc0NjJBMDAzRTdFRTYgLyogUHJvdGVjdC5oICov
LAogCQkJCTE0RDg0NEEyMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuY3BwICovLAog
CQkJCTE0RDg0NEEzMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuaCAqLywKKwkJCQkw
RkExMzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5oICovLAogCQkJ
CTc5QjAwQ0I4MUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmNwcCAqLywKIAkJ
CQk3OUIwMENCOTFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlDb25zdHJ1Y3Rvci5oICovLAogCQkJ
CTc5QjAwQ0JBMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9iamVjdC5jcHAgKi8sCkBAIC03MzEy
LDYgKzczMjQsNyBAQAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVT
aHVmZmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8q
IENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RDNTAwODVG
M0M2IC8qIENhbGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI1MzAzOTFEOTA0
MDRDMDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Mjc2
NzMyNDFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxW
YXJpYW50LmggaW4gSGVhZGVycyAqLywKQEAgLTczOTQsNiArNzQwNyw3IEBACiAJCQkJMEY2NkUx
NkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkI5MjE4MTZEMDJFQjIwMDU1QTVEQiAvKiBERkdBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMUUzQTQ2MTUzNENCQUYwMDBGOTQ1NiAvKiBERkdBcmd1bWVudFBvc2l0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFya2Vk
QmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgxMjFBQjNEOEJFMDBCQkI4
RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyREQ4MTQxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIxODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9kZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC03ODg3LDYgKzc5MDEsNyBAQAogCQkJCTg2RTNDNjE0MTY3QkFC
RDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0
QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGQTEzMTcxMUQ4REQ3MkIwMEVDMTMwQSAvKiBQcm90b3R5cGVNYXBJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJy
YXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1
bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyog
SlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzkxMSw2ICs3OTI2LDcgQEAK
IAkJCQlBNTAzRkEyQTE4OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1
Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlBMjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8q
IEFyaXRoUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1QzAxODVCRkFDQzAwN0U5
NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDNUZC
QTFEODg5NTA3MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0NDJDQjI1MUE2Q0RCOEMwMDVEM0Q3QyAvKiBK
U0lucHV0cy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBl
cl9oZWFkZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5CShy
ZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlu
cy9idWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTYxLDkgKzYxLDggQEAgY2xhc3MgQnVpbHRpbnNJbnRlcm5hbHNXcmFwcGVySGVh
ZGVyR2VuZQogCiAgICAgZGVmIGdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMoc2Vs
Zik6CiAgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsKLSAgICAgICAgICAgIChbIldlYkNvcmUi
XSwKLSAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvVk0uaCIpLAot
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwgKCJKYXZhU2NyaXB0Q29y
ZSIsICJoZWFwL1dlYWtJbmxpbmVzLmgiKSksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sICgi
SmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIikpCiAgICAgICAgIF0KICAgICAgICAgZm9y
IG9iamVjdCBpbiBzZWxmLmludGVybmFsczoKICAgICAgICAgICAgIGhlYWRlcl9pbmNsdWRlcy5h
cHBlbmQoKFsiV2ViQ29yZSJdLCAoIldlYkNvcmUiLCBvYmplY3Qub2JqZWN0X25hbWUgKyAiQnVp
bHRpbnMuaCIpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRl
ICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm90ZWN0LmgiCiAjaW5jbHVkZSAiVk1FbnRyeVNjb3Bl
LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9u
U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SGVhcC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQWxsb2NhdGlvblNjb3BlIHsKK3B1
YmxpYzoKKyAgICBBbGxvY2F0aW9uU2NvcGUoSGVhcCYgaGVhcCkKKyAgICAgICAgOiBtX2hlYXAo
aGVhcCkKKyAgICAgICAgLCBtX2xhc3RPcGVyYXRpb24obV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9n
cmVzcykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2xhc3RPcGVyYXRpb24gPT0gTm9PcGVyYXRp
b24gfHwgbV9sYXN0T3BlcmF0aW9uID09IEFsbG9jYXRpb24pOworICAgICAgICBtX2hlYXAubV9v
cGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsKKyAgICB9CisgICAgCisgICAgfkFsbG9j
YXRpb25TY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9oZWFwLm1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9PSBBbGxvY2F0aW9uKTsKKyAgICAgICAgbV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9IG1fbGFzdE9wZXJhdGlvbjsKKyAgICB9Citwcml2YXRlOgorICAgIEhlYXAmIG1faGVh
cDsKKyAgICBIZWFwT3BlcmF0aW9uIG1fbGFzdE9wZXJhdGlvbjsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQ29udGFpbmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5l
ci5oCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxs
Q29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMiBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBDZWxsOwogY2xhc3MgTGFyZ2VBbGxv
Y2F0aW9uOwogY2xhc3MgTWFya2VkQmxvY2s7CiBjbGFzcyBXZWFrU2V0OworY2xhc3MgVk07CiAK
IHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CiAKQEAgLTU2LDYgKzU4LDkgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAgICAgCisgICAgVk0qIHZtKCkgY29uc3Q7CisgICAgSGVhcCogaGVh
cCgpIGNvbnN0OworICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhIW1fZW5jb2RlZFBvaW50ZXI7IH0KICAgICAKICAgICBib29sIGlzTWFya2VkQmxvY2so
KSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRQb2ludGVyICYmICEobV9lbmNvZGVkUG9pbnRlciAm
IGlzTGFyZ2VBbGxvY2F0aW9uQml0KTsgfQpAQCAtNzMsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8TGFyZ2VBbGxvY2F0aW9uKj4obV9lbmNvZGVkUG9p
bnRlciAtIGlzTGFyZ2VBbGxvY2F0aW9uQml0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmbGlw
SWZOZWNlc3NhcnkoSGVhcFZlcnNpb24pOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7Cisg
ICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lvbik7CiAgICAgYm9vbCBuZWVkc0ZsaXAoKSBj
b25zdDsKICAgICAKLSAgICBib29sIGlzTWFya2VkKCkgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtl
ZChIZWFwQ2VsbCopIGNvbnN0OworICAgIGJvb2wgaXNNYXJrZWQoSGVhcFZlcnNpb24sIEhlYXBD
ZWxsKikgY29uc3Q7CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENlbGwq
KSBjb25zdDsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiwg
SGVhcENlbGwqKSBjb25zdDsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXJJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lcklubGlu
ZXMuaAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2Vs
bENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQgKzI5LDIwIEBACiAj
aW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiTGFyZ2VBbGxvY2F0aW9uLmgiCiAjaW5jbHVk
ZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJWTS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAot
aW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoKSBjb25zdAoraW5saW5lIFZNKiBD
ZWxsQ29udGFpbmVyOjp2bSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmhhbmRsZSgp
LmlzTWFya2VkKCk7CisgICAgICAgIHJldHVybiBsYXJnZUFsbG9jYXRpb24oKS52bSgpOworICAg
IHJldHVybiBtYXJrZWRCbG9jaygpLnZtKCk7Cit9CisKK2lubGluZSBIZWFwKiBDZWxsQ29udGFp
bmVyOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJnZtKCktPmhlYXA7CiB9CiAKIGlubGlu
ZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXBDZWxsKiBjZWxsKSBjb25zdApAQCAt
NDYsNiArNTIsMTMgQEAgaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoSGVhcAog
ICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkKGNlbGwpOwogfQogCitpbmxpbmUgYm9v
bCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBIZWFwQ2VsbCog
Y2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKKyAgICAgICAgcmV0
dXJuIGxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CisgICAgcmV0dXJuIG1hcmtlZEJsb2Nr
KCkuaXNNYXJrZWQodmVyc2lvbiwgY2VsbCk7Cit9CisKIGlubGluZSBib29sIENlbGxDb250YWlu
ZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCogY2VsbCkgY29uc3QKIHsKICAg
ICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKQEAgLTUzLDYgKzY2LDEzIEBAIGlubGluZSBib29s
IENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXcKICAgICByZXR1cm4gbWFya2VkQmxvY2soKS5p
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiB9CiAKK2lubGluZSBib29sIENlbGxDb250
YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBIZWFw
Q2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaXNMYXJnZUFsbG9jYXRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIGxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpOwor
ICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh2ZXJzaW9u
LCBjZWxsKTsKK30KKwogaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6bm90ZU1hcmtlZCgpCiB7
CiAgICAgaWYgKCFpc0xhcmdlQWxsb2NhdGlvbigpKQpAQCAtNzMsMTYgKzkzLDEwIEBAIGlubGlu
ZSBXZWFrU2V0JiBDZWxsQ29udGFpbmVyOjp3ZWFrU2V0KCkKICAgICByZXR1cm4gbWFya2VkQmxv
Y2soKS53ZWFrU2V0KCk7CiB9CiAKLWlubGluZSB2b2lkIENlbGxDb250YWluZXI6OmZsaXBJZk5l
Y2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKLXsKLSAgICBpZiAoIWlzTGFyZ2VBbGxv
Y2F0aW9uKCkpCi0gICAgICAgIG1hcmtlZEJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5KGhlYXBWZXJz
aW9uKTsKLX0KLQotaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6ZmxpcElmTmVjZXNzYXJ5KCkK
K2lubGluZSB2b2lkIENlbGxDb250YWluZXI6OmFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIGhlYXBW
ZXJzaW9uKQogewogICAgIGlmICghaXNMYXJnZUFsbG9jYXRpb24oKSkKLSAgICAgICAgbWFya2Vk
QmxvY2soKS5mbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgbWFya2VkQmxvY2soKS5hYm91dFRv
TWFyayhoZWFwVmVyc2lvbik7CiB9CiAKIGlubGluZSBib29sIENlbGxDb250YWluZXI6Om5lZWRz
RmxpcCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRp
dmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29u
c2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2
ICs0NSw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJNYXJr
ZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgpAQCAtNTI3LDEx
ICs1MjgsOSBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgfQogICAgIAogICAgIHsK
LSAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmpl
Y3RTcGFjZS5jbGVhck1hcmtzIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZmxpcCgpOworICAg
ICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNw
YWNlLmJlZ2luTWFya2luZyIpOworICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZygp
OwogICAgIH0KLSAgICAKLSAgICBtX29iamVjdFNwYWNlLnNldElzTWFya2luZyh0cnVlKTsKIH0K
IAogdm9pZCBIZWFwOjp2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCkBAIC03ODAsNyArNzc5
LDcgQEAgdm9pZCBIZWFwOjplbmRNYXJraW5nKCkKICAgICBBU1NFUlQobV9zaGFyZWRNYXJrU3Rh
Y2suaXNFbXB0eSgpKTsKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLnJlbW92ZUFsbCgp
OwogICAgIAotICAgIG1fb2JqZWN0U3BhY2Uuc2V0SXNNYXJraW5nKGZhbHNlKTsKKyAgICBtX29i
amVjdFNwYWNlLmVuZE1hcmtpbmcoKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVjdENvdW50KCkK
QEAgLTkzNywxMCArOTM2LDE5IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VJbW1vcnRhbE9iamVjdHMoKSkpCiAgICAgICAgIHN3
ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7CiAgICAgZWxzZSB7CisgICAgICAgIGRvdWJs
ZSBiZWZvcmUgPSAwOworICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkgeworICAgICAgICAg
ICAgZGF0YUxvZygiW0Z1bGwgc3dlZXA6ICIsIGNhcGFjaXR5KCkgLyAxMDI0LCAiIGtiICIpOwor
ICAgICAgICAgICAgYmVmb3JlID0gY3VycmVudFRpbWVNUygpOworICAgICAgICB9CiAgICAgICAg
IG1fb2JqZWN0U3BhY2Uuc3dlZXAoKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5zaHJpbmsoKTsK
KyAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpIHsKKyAgICAgICAgICAgIGRvdWJsZSBhZnRl
ciA9IGN1cnJlbnRUaW1lTVMoKTsKKyAgICAgICAgICAgIGRhdGFMb2coIj0+ICIsIGNhcGFjaXR5
KCkgLyAxMDI0LCAiIGtiLCAiLCBhZnRlciAtIGJlZm9yZSwgIiBtc11cbiIpOworICAgICAgICB9
CiAgICAgfQotICAgIEFTU0VSVChtX2Jsb2NrU25hcHNob3QuaXNFbXB0eSgpKTsKKyAgICBtX29i
amVjdFNwYWNlLmFzc2VydE5vVW5zd2VwdCgpOwogCiAgICAgc3dlZXBBbGxMb2dpY2FsbHlFbXB0
eVdlYWtCbG9ja3MoKTsKIH0KQEAgLTEwNDMsNyArMTA1MSw3IEBAIE5FVkVSX0lOTElORSB2b2lk
IEhlYXA6OmNvbGxlY3RJbXBsKEhlYXAKICAgICByZWFwV2Vha0hhbmRsZXMoKTsKICAgICBwcnVu
ZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCk7CiAgICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsK
LSAgICBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CisgICAgc25hcHNob3RVbnN3ZXB0KCk7CiAgICAg
ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwogICAgIHJlbW92ZURlYWRDb21waWxl
cldvcmtsaXN0RW50cmllcygpOwogICAgIGRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCk7CkBA
IC0xMDUyLDcgKzEwNjAsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChI
ZWFwCiAgICAgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAgd3JpdGVCYXJyaWVyQ3Vy
cmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOwogCi0gICAgcmVzZXRBbGxvY2F0b3JzKCk7Cisg
ICAgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCk7
CiAgICAgZGlkRmluaXNoQ29sbGVjdGlvbihnY1N0YXJ0VGltZSk7CiAgICAgcmVzdW1lQ29tcGls
ZXJUaHJlYWRzKCk7CkBAIC0xMDY3LDYgKzEwNzUsMTEgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVh
cDo6Y29sbGVjdEltcGwoSGVhcAogICAgICAgICBkb3VibGUgYWZ0ZXIgPSBjdXJyZW50VGltZU1T
KCk7CiAgICAgICAgIGRhdGFMb2coYWZ0ZXIgLSBiZWZvcmUsICIgbXNdXG4iKTsKICAgICB9Cisg
ICAgCisgICAgaWYgKGZhbHNlKSB7CisgICAgICAgIGRhdGFMb2coIkhlYXAgc3RhdGUgYWZ0ZXIg
R0M6XG4iKTsKKyAgICAgICAgbV9vYmplY3RTcGFjZS5kdW1wQml0cygpOworICAgIH0KIH0KIAog
dm9pZCBIZWFwOjpzd2VlcExhcmdlQWxsb2NhdGlvbnMoKQpAQCAtMTE2Niw0NCArMTE3OSwxMCBA
QCB2b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKICAgICBtX2FycmF5QnVmZmVycy5zd2Vl
cCgpOwogfQogCi1zdHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1bmN0b3IgOiBwdWJsaWMgTWFy
a2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvcihW
ZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBibG9ja3MpIAotICAgICAgICA6IG1faW5kZXgo
MCkgCi0gICAgICAgICwgbV9ibG9ja3MoYmxvY2tzKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lk
IG9wZXJhdG9yKCkoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0Ci0gICAgewotICAg
ICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAodHJ1ZSk7Ci0gICAgICAgIG1fYmxvY2tz
W21faW5kZXgrK10gPSBibG9jazsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG11
dGFibGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgotICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKLSAgICBtdXRhYmxlIHNp
emVfdCBtX2luZGV4OwotICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4mIG1fYmxvY2tz
OwotfTsKLQotdm9pZCBIZWFwOjpzbmFwc2hvdE1hcmtlZFNwYWNlKCkKK3ZvaWQgSGVhcDo6c25h
cHNob3RVbnN3ZXB0KCkKIHsKLSAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhpcywgIkhl
YXA6OnNuYXBzaG90TWFya2VkU3BhY2UiKTsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJv
YmFibHkgYmUgcmVuYW1lZC4gSXQncyBub3QgYWN0dWFsbHkgc25hcHNob3R0aW5nIGFsbCBvZiBN
YXJrZWRTcGFjZS4KLSAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSW5jcmVtZW50YWxTd2VlcGVyLCBz
byBpdCBvbmx5IG5lZWRzIHRvIHNuYXBzaG90IGJsb2Nrcy4gSG93ZXZlciwgaWYgd2UgZXZlcgot
ICAgIC8vIHdhbnRlZCB0byBhZGQgb3RoZXIgc25hcHNob3R0aW5nIGxvZ2luLCB3ZSdkIHByb2Jh
Ymx5IHB1dCBpdCBoZXJlLgotICAgIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0g
RWRlbkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9yIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5k
bGUgOiBtX29iamVjdFNwYWNlLmJsb2Nrc1dpdGhOZXdPYmplY3RzKCkpIHsKLSAgICAgICAgICAg
IGlmIChoYW5kbGUtPmlzT25CbG9ja3NUb1N3ZWVwKCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBtX2Jsb2NrU25hcHNob3QuYXBwZW5kKGhhbmRsZSk7Ci0gICAgICAg
ICAgICBoYW5kbGUtPnNldElzT25CbG9ja3NUb1N3ZWVwKHRydWUpOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgbV9ibG9ja1NuYXBzaG90LnJlc2l6ZVRvRml0KG1fb2JqZWN0U3Bh
Y2UuYmxvY2tzKCkuc2V0KCkuc2l6ZSgpKTsKLSAgICAgICAgTWFya2VkQmxvY2tTbmFwc2hvdEZ1
bmN0b3IgZnVuY3RvcihtX2Jsb2NrU25hcHNob3QpOwotICAgICAgICBtX29iamVjdFNwYWNlLmZv
ckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICB9CisgICAgVGltaW5nU2NvcGUgdGltaW5nU2NvcGUo
KnRoaXMsICJIZWFwOjpzbmFwc2hvdFVuc3dlcHQiKTsKKyAgICBtX29iamVjdFNwYWNlLnNuYXBz
aG90VW5zd2VwdCgpOwogfQogCiB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVz
KCkKQEAgLTEyMjYsOSArMTIwNSw5IEBAIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5
RXhlY3V0aW4KICAgICBtX2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGlu
Z0NvZGVCbG9ja3ModGhpcyk7CiB9CiAKLXZvaWQgSGVhcDo6cmVzZXRBbGxvY2F0b3JzKCkKK3Zv
aWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewotICAgIG1fb2JqZWN0U3BhY2UucmVz
ZXRBbGxvY2F0b3JzKCk7CisgICAgbV9vYmplY3RTcGFjZS5wcmVwYXJlRm9yQWxsb2NhdGlvbigp
OwogfQogCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQpAQCAtMTQ3Nyw3ICsx
NDU2LDcgQEAgcHVibGljOgogdm9pZCBIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMoKQogewogICAg
IC8vIFN3ZWVwIG5vdyBiZWNhdXNlIGRlc3RydWN0b3JzIHdpbGwgY3Jhc2ggb25jZSB3ZSdyZSB6
b21iaWZpZWQuCi0gICAgbV9vYmplY3RTcGFjZS56b21iaWZ5U3dlZXAoKTsKKyAgICBtX29iamVj
dFNwYWNlLnN3ZWVwKCk7CiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0
aGlzKTsKICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hEZWFkQ2VsbChpdGVyYXRpb25TY29wZSwg
Wm9tYmlmeSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9u
IDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtNDksNiArNDksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQWxsb2Nh
dGlvblNjb3BlOwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgQ29kZUJsb2NrU2V0OwogY2xhc3Mg
RWRlbkdDQWN0aXZpdHlDYWxsYmFjazsKQEAgLTI1NSw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRGcmVlQmxvY2soc2l6ZV90IGNhcGFjaXR5KTsKIAogcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgQWxsb2NhdGlvblNjb3BlOwogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAg
ICAgZnJpZW5kIGNsYXNzIERlZmVyR0M7CiAgICAgZnJpZW5kIGNsYXNzIERlZmVyR0NGb3JBV2hp
bGU7CkBAIC0zMjcsMTEgKzMyOSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhcFdlYWtIYW5k
bGVzKCk7CiAgICAgdm9pZCBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCk7CiAgICAg
dm9pZCBzd2VlcEFycmF5QnVmZmVycygpOwotICAgIHZvaWQgc25hcHNob3RNYXJrZWRTcGFjZSgp
OworICAgIHZvaWQgc25hcHNob3RVbnN3ZXB0KCk7CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92
aWRlckNhY2hlcygpOwogICAgIHZvaWQgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAg
dm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7Ci0gICAgdm9p
ZCByZXNldEFsbG9jYXRvcnMoKTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAg
ICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25k
aXRpb25hbEZpbmFsaXplcnMoKTsKICAgICB2b2lkIGNsZWFyVW5tYXJrZWRFeGVjdXRhYmxlcygp
OwpAQCAtNDIyLDcgKzQyNCw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5j
cmVtZW50YWxTd2VlcGVyPiBtX3N3ZWVwZXI7Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5k
bGUqPiBtX2Jsb2NrU25hcHNob3Q7CiAKICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNl
cnZlcnM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAko
cmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOSArODEsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SGVhcDo6aXNNYXJrZWQoY29uc3QgCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkp
CiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwogICAg
IE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgaWYgKGJsb2Nr
Lm5lZWRzRmxpcChibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKKyAg
ICByZXR1cm4gYmxvY2suaXNNYXJrZWQoCisgICAgICAgIGJsb2NrLnZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6
aXNNYXJrZWRDb25jdXJyZW50bHkoY29uc3Qgdm9pZCogcmF3Q2VsbCkKQEAgLTkyLDEwICs5MSw4
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZENvbmN1cnIKICAgICBpZiAoY2Vs
bC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2Nh
dGlvbigpLmlzTWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2Vk
QmxvY2soKTsKLSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJsb2NrLnZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV1RGOjpsb2Fk
TG9hZEZlbmNlKCk7Ci0gICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJldHVy
biBibG9jay5pc01hcmtlZENvbmN1cnJlbnRseSgKKyAgICAgICAgYmxvY2sudm0oKS0+aGVhcC5v
YmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBI
ZWFwOjp0ZXN0QW5kU2V0TWFya2VkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IHZvaWQqIHJh
d0NlbGwpCkBAIC0xMDQsNyArMTAxLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RB
bmRTZXRNYXJrZQogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICBy
ZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkudGVzdEFuZFNldE1hcmtlZCgpOwogICAgIE1h
cmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgYmxvY2suZmxpcElm
TmVjZXNzYXJ5RHVyaW5nTWFya2luZyh2ZXJzaW9uKTsKKyAgICBibG9jay5hYm91dFRvTWFyayh2
ZXJzaW9uKTsKICAgICByZXR1cm4gYmxvY2sudGVzdEFuZFNldE1hcmtlZChjZWxsKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAko
cmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRp
c3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGVh
cEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0
aW9ucy5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCShyZXZpc2lvbiAyMDYx
NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw5ICs4NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghZmlsdGVyLnJ1
bGVPdXQoYml0d2lzZV9jYXN0PEJpdHM+KHByZXZpb3VzQ2FuZGlkYXRlKSkKICAgICAgICAgICAg
ICAgICAmJiBzZXQuY29udGFpbnMocHJldmlvdXNDYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAg
JiYgcHJldmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgPT0gSGVhcENlbGw6OkF1
eGlsaWFyeSkgewotICAgICAgICAgICAgICAgIHByZXZpb3VzQ2FuZGlkYXRlLT5mbGlwSWZOZWNl
c3NhcnkoaGVhcFZlcnNpb24pOwogICAgICAgICAgICAgICAgIHByZXZpb3VzUG9pbnRlciA9IHN0
YXRpY19jYXN0PGNoYXIqPihwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEFsaWduKHBy
ZXZpb3VzUG9pbnRlcikpOwotICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+
aGFuZGxlKCkuaXNMaXZlQ2VsbChwcmV2aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlm
IChwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcHJl
dmlvdXNQb2ludGVyKSkKICAgICAgICAgICAgICAgICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05OSwxMCArOTgsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghc2V0LmNvbnRhaW5zKGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIAotICAgICAgICBjYW5kaWRhdGUtPmZsaXBJZk5lY2Vzc2FyeShoZWFwVmVyc2lv
bik7Ci0KICAgICAgICAgYXV0byB0cnlQb2ludGVyID0gWyZdICh2b2lkKiBwb2ludGVyKSB7Ci0g
ICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQor
ICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lv
biwgcG9pbnRlcikpCiAgICAgICAgICAgICAgICAgZnVuYyhwb2ludGVyKTsKICAgICAgICAgfTsK
ICAgICAKQEAgLTE3MCw3ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChjYW5kaWRhdGUt
PmhhbmRsZSgpLmNlbGxLaW5kKCkgIT0gSGVhcENlbGw6OkpTQ2VsbCkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGNhbmRpZGF0ZS0+ZmxpcElmTmVjZXNzYXJ5
KCk7CiAgICAgICAgIGlmICghY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkocmV2aXNpb24gMjA2MTUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAy
MDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBjb25zdCBkb3VibGUg
c3dlZXBUaW1lTXVsdGlwbGllciAKICNpZiBVU0UoQ0YpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6Oklu
Y3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICA6
IEhlYXBUaW1lcihoZWFwLT52bSgpLCBydW5Mb29wKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhl
YXAtPm1fYmxvY2tTbmFwc2hvdCkKKyAgICAsIG1fY3VycmVudEFsbG9jYXRvcihudWxscHRyKQog
ewogfQogCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxU
aW1lcigpCiAjZWxpZiBQTEFURk9STShFRkwpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVu
dGFsU3dlZXBlcihIZWFwKiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCi0gICAg
LCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQorICAgICwgbV9jdXJyZW50
QWxsb2NhdG9yKG51bGxwdHIpCiB7CiB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBJbmNyZW1l
bnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKICNlbGlmIFVTRShHTElCKQogSW5jcmVtZW50YWxT
d2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCkKICAgICA6IEhlYXBUaW1lciho
ZWFwLT52bSgpKQotICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkK
KyAgICAsIG1fY3VycmVudEFsbG9jYXRvcihudWxscHRyKQogewogfQogCkBAIC0xMjEsMTkgKzEy
MSwyMCBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZG9Td2VlcChkb3VibGUgCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsKICAgICBjYW5j
ZWxUaW1lcigpOwogfQogCiBib29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2so
KQogewotICAgIHdoaWxlICghbV9ibG9ja3NUb1N3ZWVwLmlzRW1wdHkoKSkgewotICAgICAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcC50YWtlTGFzdCgpOwot
ICAgICAgICBibG9jay0+c2V0SXNPbkJsb2Nrc1RvU3dlZXAoZmFsc2UpOwotCi0gICAgICAgIGlm
ICghYmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBudWxscHRyOworICAgIAorICAgIGZvciAoOyBt
X2N1cnJlbnRBbGxvY2F0b3I7IG1fY3VycmVudEFsbG9jYXRvciA9IG1fY3VycmVudEFsbG9jYXRv
ci0+bmV4dEFsbG9jYXRvcigpKSB7CisgICAgICAgIGJsb2NrID0gbV9jdXJyZW50QWxsb2NhdG9y
LT5maW5kQmxvY2tUb1N3ZWVwKCk7CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoYmxvY2spIHsKICAgICAgICAgRGVmZXJHQ0ZvckFX
aGlsZSBkZWZlckdDKG1fdm0tPmhlYXApOwogICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgICAg
ICAgbV92bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsKQEAg
LTE0NiwxMSArMTQ3LDEyIEBAIGJvb2wgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9j
aygKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKCkKIHsKICAgICBzY2hl
ZHVsZVRpbWVyKCk7CisgICAgbV9jdXJyZW50QWxsb2NhdG9yID0gbV92bS0+aGVhcC5vYmplY3RT
cGFjZSgpLmZpcnN0QWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3
aWxsRmluaXNoU3dlZXBpbmcoKQogewotICAgIG1fYmxvY2tzVG9Td2VlcC5jbGVhcigpOworICAg
IG1fY3VycmVudEFsbG9jYXRvciA9IG51bGxwdHI7CiAgICAgaWYgKG1fdm0pCiAgICAgICAgIGNh
bmNlbFRpbWVyKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1l
bnRhbFN3ZWVwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEz
ICsyNywxMiBAQAogI2RlZmluZSBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogCiAjaW5jbHVkZSAiSGVh
cFRpbWVyLmgiCi0jaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwotY2xhc3MgTWFya2VkQmxvY2s7
CitjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAKIGNsYXNzIEluY3JlbWVudGFsU3dlZXBlciA6IHB1
YmxpYyBIZWFwVGltZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyAr
NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVUaW1lcigpOwogICAgIHZvaWQgY2Fu
Y2VsVGltZXIoKTsKICAgICAKLSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+JiBtX2Js
b2Nrc1RvU3dlZXA7CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2N1cnJlbnRBbGxvY2F0b3I7CiAj
ZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2Nh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxs
b2NhdGlvbi5oCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9MYXJnZUFsbG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsOSArNzAsMTAgQEAgcHVi
bGljOgogICAgIAogICAgIGJvb2wgaXNOZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNOZXdseUFsbG9jYXRlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc01hcmtlZCgpIHsg
cmV0dXJuIG1faXNNYXJrZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc01hcmtlZChIZWFwQ2VsbCopIHsgcmV0dXJuIG1faXNNYXJr
ZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSB7IHJldHVy
biBtX2lzTWFya2VkLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7IH0KICAgICBib29s
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCgpIHsgcmV0dXJuIGlzTWFya2VkKCkgfHwgaXNOZXds
eUFsbG9jYXRlZCgpOyB9CiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENl
bGwqKSB7IHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsgfQotICAgIGJvb2wgaXNN
YXJrZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZlcnNpb24sIEhlYXBDZWxsKikgeyByZXR1cm4g
aXNNYXJrZWQoKTsgfQogICAgIGJvb2wgaXNMaXZlKCkgeyByZXR1cm4gaXNNYXJrZWRPck5ld2x5
QWxsb2NhdGVkKCk7IH0KICAgICAKICAgICBib29sIGhhc1ZhbGlkQ2VsbCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzVmFsaWRDZWxsOyB9CkBAIC0xMDYsOCArMTA3LDcgQEAgcHVibGljOgogICAgIAog
ICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZXM7IH0KICAgICAKLSAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeSh1aW50NjRf
dCkgeyB9Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKHVpbnQ2NF90KSB7
IH0KKyAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uKSB7IH0KICAgICAKICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgdGVzdEFuZFNldE1hcmtlZCgpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDYx
NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKIAorI2luY2x1ZGUgIkFsbG9jYXRpb25TY29wZS5o
IgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNp
bmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgi
CiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTM5LDcg
KzQxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRv
cihIZWFwKiBoZWFwLCBNYXJrZWRTcGFjZSogbWFya2VkU3BhY2UsIHNpemVfdCBjZWxsU2l6ZSwg
Y29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRlcykKICAgICA6IG1fY3VycmVudEJs
b2NrKDApCiAgICAgLCBtX2xhc3RBY3RpdmVCbG9jaygwKQotICAgICwgbV9uZXh0QmxvY2tUb1N3
ZWVwKG51bGxwdHIpCiAgICAgLCBtX2NlbGxTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjZWxs
U2l6ZSkpCiAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKICAgICAsIG1faGVhcChoZWFw
KQpAQCAtNTAsMTEgKzUxLDEzIEBAIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKEhl
YXAqIGgKIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSkK
IHsKICAgICB1bnNpZ25lZCBpdGVyc1NpbmNlTGFzdFRpbWVDaGVjayA9IDA7Ci0gICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2NrTGlzdC5iZWdpbigpOwotICAgIHdoaWxlIChi
bG9jaykgewotICAgICAgICBibG9jayA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsK
LSAgICAgICAgaWYgKGJsb2NrKQotICAgICAgICAgICAgYmxvY2stPmZsaXBJZk5lY2Vzc2FyeSgp
OyAvLyBGb3JjZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMg
bm8gc2VtYW50aWMgZWZmZWN0LgorICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBt
X2Jsb2Nrcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2sgPSBtX2Jsb2Nrc1tpbmRleF07CisgICAgICAgIGlmIChibG9jaykgeworICAgICAgICAg
ICAgLy8gRm9yY2VzIHVzIHRvIHRvdWNoIHRoZSBtZW1vcnkgb2YgdGhlIGJsb2NrLCBidXQgaGFz
IG5vIHNlbWFudGljIGVmZmVjdC4KKyAgICAgICAgICAgIGlmIChibG9jay0+bmVlZHNGbGlwKCkp
CisgICAgICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkucmVzZXRWZXJzaW9uKCk7CisgICAgICAg
IH0KICAgICAgICAgKytpdGVyc1NpbmNlTGFzdFRpbWVDaGVjazsKICAgICAgICAgaWYgKGl0ZXJz
U2luY2VMYXN0VGltZUNoZWNrID49IEhlYXA6OnNfdGltZUNoZWNrUmVzb2x1dGlvbikgewogICAg
ICAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKQEAgLTY2LDg0ICs2OSw5NiBAQCBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdl
ZE91dChkb3VibGUgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRv
cjo6cmV0aXJlKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQorYm9vbCBNYXJrZWRBbGxvY2F0
b3I6OnNob3VsZFN0ZWFsRW1wdHlCbG9ja3NGcm9tT3RoZXJBbGxvY2F0b3JzKCkgY29uc3QKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOyAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIGlu
IHBhcmFsbGVsIGR1cmluZyBHQy4KLSAgICBpZiAoYmxvY2sgPT0gbV9jdXJyZW50QmxvY2spIHsK
LSAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gdGhlIG11dGF0b3IgaXMgcnVubmluZy4gV2Ug
ZmluaXNoZWQgYSBmdWxsIEdDIGFuZCBtYXJrZWQgdG9vIGZldyB0aGluZ3MKLSAgICAgICAgLy8g
dG8gcmV0aXJlLiBUaGVuIHdlIHN0YXJ0ZWQgYWxsb2NhdGluZyBpbiB0aGlzIGJsb2NrLiBUaGVu
IGEgYmFycmllciByYW4sIHdoaWNoIG1hcmtlZCBhbgotICAgICAgICAvLyBvYmplY3QgaW4gdGhp
cyBibG9jaywgd2hpY2ggcHV0IGl0IG92ZXIgdGhlIHJldGlyZW1lbnQgdGhyZXNob2xkLiBJdCdz
IE9LIHRvIHNpbXBseSBkbwotICAgICAgICAvLyBub3RoaW5nIGluIHRoYXQgY2FzZS4KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoYmxvY2sgPT0gbV9sYXN0QWN0aXZlQmxvY2spIHsK
LSAgICAgICAgLy8gVGhpcyBjYW4gZWFzaWx5IGhhcHBlbiBkdXJpbmcgbWFya2luZy4gSXQgd291
bGQgYmUgZWFzeSB0byBoYW5kbGUgdGhpcyBjYXNlLCBidXQgaXQncwotICAgICAgICAvLyBqdXN0
IGFzIGVhc3kgdG8gaWdub3JlIGl0LgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJFTEVB
U0VfQVNTRVJUKGJsb2NrLT5pc09uTGlzdCgpKTsKLSAgICBpZiAoYmxvY2sgPT0gbV9uZXh0Qmxv
Y2tUb1N3ZWVwKQotICAgICAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBmaWx0ZXJOZXh0QmxvY2so
YmxvY2stPm5leHQoKSk7Ci0gICAgYmxvY2stPnJlbW92ZSgpOwotICAgIG1fcmV0aXJlZEJsb2Nr
cy5wdXNoKGJsb2NrKTsKKyAgICByZXR1cm4gIW5lZWRzRGVzdHJ1Y3Rpb24oKTsKIH0KIAotTWFy
a2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQWxsb2NhdG9yOjpmaWx0ZXJOZXh0QmxvY2soTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0
b3I6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiB7Ci0gICAgaWYgKGJsb2NrID09IG1fYmxvY2tM
aXN0LmVuZCgpKQorICAgIC8vIERvbid0IGFsbG93IG90aGVycyB0byBzdGVhbCBmcm9tIHVzLCBp
ZiB3ZSB3b3VsZG4ndCBzdGVhbCBmcm9tIG90aGVycy4KKyAgICBpZiAoIXNob3VsZFN0ZWFsRW1w
dHlCbG9ja3NGcm9tT3RoZXJBbGxvY2F0b3JzKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIAorICAgIG1fZW1wdHlDdXJzb3IgPSBtX2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1cnNvciwg
dHJ1ZSk7CisgICAgaWYgKG1fZW1wdHlDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYmxvY2s7CisgICAgcmV0dXJuIG1fYmxvY2tz
W21fZW1wdHlDdXJzb3JdOwogfQogCi12b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2V0TmV4dEJsb2Nr
VG9Td2VlcChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKK3ZvaWQgTWFya2VkQWxsb2NhdG9y
OjpkaWRDb25zdW1lRnJlZUxpc3QoKQogewotICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IGZpbHRl
ck5leHRCbG9jayhibG9jayk7CisgICAgaWYgKG1fY3VycmVudEJsb2NrKQorICAgICAgICBtX2N1
cnJlbnRCbG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7CisgICAgCisgICAgc2V0RnJlZUxpc3Qo
RnJlZUxpc3QoKSk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogfQogCi12b2lkKiBN
YXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmdJbXBsKCkKK3ZvaWQq
IE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpCiB7CiAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlm
IChtX2N1cnJlbnRCbG9jaykgewotICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gbV9u
ZXh0QmxvY2tUb1N3ZWVwKTsKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmRpZENvbnN1bWVGcmVl
TGlzdCgpOwotICAgICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fY3VycmVudEJsb2NrLT5uZXh0
KCkpOwotICAgIH0KKyAgICBBU1NFUlQoIW1fY3VycmVudEJsb2NrKTsKKyAgICBBU1NFUlQoIW1f
ZnJlZUxpc3QpOwogICAgIAotICAgIHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotCi0gICAgUkVM
RUFTRV9BU1NFUlQobV9uZXh0QmxvY2tUb1N3ZWVwICE9IG1fYmxvY2tMaXN0LmVuZCgpKTsKLQot
ICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jazo6SGFu
ZGxlKiYgYmxvY2sgPSBtX25leHRCbG9ja1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IG5leHQpIHsK
LSAgICAgICAgbmV4dCA9IGZpbHRlck5leHRCbG9jayhibG9jay0+bmV4dCgpKTsKLQotICAgICAg
ICAvLyBJdCB3b3VsZCBiZSBzdXBlciB3ZWlyZCBpZiB0aGUgYmxvY2tzIHdlIGFyZSBzd2VlcGlu
ZyBoYXZlIGFueXRoaW5nIGFsbG9jYXRlZCBkdXJpbmcgdGhpcwotICAgICAgICAvLyBjeWNsZS4K
LSAgICAgICAgQVNTRVJUKCFibG9jay0+aGFzQW55TmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAg
IAotICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6
SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgbV9hbGxv
Y2F0aW9uQ3Vyc29yID0gKG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSB8IG1fZW1wdHkpLmZpbmRC
aXQobV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKTsKKyAgICAgICAgaWYgKG1fYWxsb2NhdGlvbkN1
cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0g
ICAgICAgIC8vIEl0J3MgcG9zc2libGUgdG8gc3R1bWJsZSBvbiBhIGNvbXBsZXRlLWZ1bGwgYmxv
Y2suIE1hcmtpbmcgdHJpZXMgdG8gcmV0aXJlIHRoZXNlLCBidXQKLSAgICAgICAgLy8gdGhhdCBh
bGdvcml0aG0gaXMgcmFjeSBhbmQgbWF5IGZvcmdldCB0byBkbyBpdCBzb21ldGltZXMuCi0gICAg
ICAgIGlmIChmcmVlTGlzdC5hbGxvY2F0aW9uV2lsbEZhaWwoKSkgewotICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7Ci0gICAgICAgICAgICBibG9jay0+dW5zd2VlcFdp
dGhOb05ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzTWFya2Vk
KCkpOwotICAgICAgICAgICAgcmV0aXJlKGJsb2NrKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9CisgICAgICAgIHNldElzQ2FuQWxsb2NhdGVCdXROb3RFbXB0eShtX2FsbG9jYXRp
b25DdXJzb3IsIGZhbHNlKTsKIAotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOwotICAg
ICAgICBzZXRGcmVlTGlzdChmcmVlTGlzdCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBpZiAo
dm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVJbihtX2Jsb2Nrc1ttX2FsbG9jYXRpb25DdXJzb3Jd
KSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmICghbV9m
cmVlTGlzdCkgewotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IDA7Ci0gICAgICAgIHJldHVybiAw
OworICAgIGlmIChPcHRpb25zOjpzdGVhbEVtcHR5QmxvY2tzRnJvbU90aGVyQWxsb2NhdG9ycygp
CisgICAgICAgICYmIHNob3VsZFN0ZWFsRW1wdHlCbG9ja3NGcm9tT3RoZXJBbGxvY2F0b3JzKCkp
IHsKKyAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9tYXJrZWRTcGFj
ZS0+ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgp
OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBJdCdzIGdvb2QgdGhhdCB0aGlzIGNsZWFy
cyBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGFzIHdlbGwgYXMgYWxsIG90aGVyIGJpdHMsCisgICAg
ICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzIGEgcmVtb3RlIGNoYW5jZSB0aGF0IGEgYmxvY2sg
bWF5IGhhdmUgYm90aCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5CisgICAgICAgICAgICAvLyBhbmQg
ZW1wdHkgc2V0IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgICAgICBibG9jay0+cmVtb3ZlRnJv
bUFsbG9jYXRvcigpOworICAgICAgICAgICAgYWRkQmxvY2soYmxvY2spOworICAgICAgICAgICAg
cmV0dXJuIGFsbG9jYXRlSW4oYmxvY2spOworICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHJl
dHVybiBudWxscHRyOworfQogCit2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlSW4oTWFy
a2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCit7CisgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2Nh
dGVJbihibG9jayk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSW4oTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2spCit7CisgICAgQVNTRVJUKGJsb2NrKTsKKyAgICBBU1NFUlQoIWJs
b2NrLT5oYXNBbnlOZXdseUFsbG9jYXRlZCgpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0ZyZWVM
aXN0ZWQoKSk7CisgICAgCisgICAgRnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAoTWFy
a2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAKKyAgICAvLyBJdCdzIHBv
c3NpYmxlIHRvIHN0dW1ibGUgb24gYSBjb21wbGV0ZWx5IGZ1bGwgYmxvY2suIE1hcmtpbmcgdHJp
ZXMgdG8gcmV0aXJlIHRoZXNlLCBidXQKKyAgICAvLyB0aGF0IGFsZ29yaXRobSBpcyByYWN5IGFu
ZCBtYXkgZm9yZ2V0IHRvIGRvIGl0IHNvbWV0aW1lcy4KKyAgICBpZiAoZnJlZUxpc3QuYWxsb2Nh
dGlvbldpbGxGYWlsKCkpIHsKKyAgICAgICAgQVNTRVJUKGJsb2NrLT5pc0ZyZWVMaXN0ZWQoKSk7
CisgICAgICAgIGJsb2NrLT51bnN3ZWVwV2l0aE5vTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICAgICAg
QVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOworICAgICAgICBBU1NFUlQoIWlzRW1wdHko
YmxvY2spKTsKKyAgICAgICAgQVNTRVJUKCFpc0NhbkFsbG9jYXRlQnV0Tm90RW1wdHkoYmxvY2sp
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAorICAgIG1fY3VycmVudEJs
b2NrID0gYmxvY2s7CisgICAgc2V0RnJlZUxpc3QoZnJlZUxpc3QpOworICAgIAogICAgIHZvaWQq
IHJlc3VsdDsKICAgICBpZiAobV9mcmVlTGlzdC5yZW1haW5pbmcpIHsKICAgICAgICAgdW5zaWdu
ZWQgY2VsbFNpemUgPSBtX2NlbGxTaXplOwpAQCAtMTU1LDIxICsxNzAsMTEgQEAgdm9pZCogTWFy
a2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdQogICAgICAgICByZXN1bHQgPSBoZWFkOwog
ICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHNldElzRWRlbihtX2N1cnJl
bnRCbG9jaywgdHJ1ZSk7CiAgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWxsb2NhdGVJbkJsb2NrKG1f
Y3VycmVudEJsb2NrKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgdm9pZCogTWFy
a2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCkKLXsKLSAgICBBU1NF
UlQoIW1faGVhcC0+aXNCdXN5KCkpOwotICAgIG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNz
ID0gQWxsb2NhdGlvbjsKLSAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xs
ZWN0aW5nSW1wbCgpOwotCi0gICAgbV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09w
ZXJhdGlvbjsKLSAgICBBU1NFUlQocmVzdWx0IHx8ICFtX2N1cnJlbnRCbG9jayk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQogQUxXQVlTX0lOTElORSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZG9U
ZXN0Q29sbGVjdGlvbnNJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFPcHRpb25zOjpzbG93UGF0aEFs
bG9jc0JldHdlZW5HQ3MoKSkKQEAgLTIwNiwxOSArMjExLDE3IEBAIHZvaWQqIE1hcmtlZEFsbG9j
YXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICBBU1NFUlQoIW1fbWFya2VkU3BhY2UtPmlzSXRl
cmF0aW5nKCkpOwogICAgIG1faGVhcC0+ZGlkQWxsb2NhdGUobV9mcmVlTGlzdC5vcmlnaW5hbFNp
emUpOwogICAgIAorICAgIGRpZENvbnN1bWVGcmVlTGlzdCgpOworICAgIAorICAgIG1faGVhcC0+
Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOworICAgIAorICAgIEFsbG9jYXRpb25TY29wZSBh
bGxvY2F0aW9uU2NvcGUoKm1faGVhcCk7CisKICAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0
ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShyZXN1bHQgIT0gMCkp
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+Y29sbGVjdElm
TmVjZXNzYXJ5T3JEZWZlcigpKSB7Ci0gICAgICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91
dENvbGxlY3RpbmcoKTsKLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX2hlYXAtPnNob3VsZENvbGxlY3QoKSk7Ci0g
ICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSB0cnlBbGxvY2F0ZUJsb2NrKCk7
CiAgICAgaWYgKCFibG9jaykgewogICAgICAgICBpZiAoY3Jhc2hPbkZhaWx1cmUpCkBAIC0yMjcs
OCArMjMwLDcgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlSQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIGFkZEJsb2NrKGJsb2NrKTsKLSAg
ICAgICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOworICAg
IHJlc3VsdCA9IGFsbG9jYXRlSW4oYmxvY2spOwogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CkBAIC0yNDksMzcgKzI1MSw3NSBAQCBzaXplX3QgTWFya2VkQWxsb2Nh
dG9yOjpibG9ja1NpemVGb3JCeXRlCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRBbGxvY2F0
b3I6OnRyeUFsbG9jYXRlQmxvY2soKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgqbV9o
ZWFwLCB0aGlzLCBtX2NlbGxTaXplLCBtX2F0dHJpYnV0ZXMpOworICAgIAorICAgIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1faGVhcCk7Cisg
ICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIG1fbWFy
a2VkU3BhY2UtPmRpZEFkZEJsb2NrKGhhbmRsZSk7CisgICAgCisgICAgcmV0dXJuIGhhbmRsZTsK
IH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrKQogewotICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOwotICAgIEFTU0VSVCghbV9m
cmVlTGlzdCk7CisgICAgc2l6ZV90IGluZGV4OworICAgIGlmIChtX2ZyZWVCbG9ja0luZGljZXMu
aXNFbXB0eSgpKSB7CisgICAgICAgIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOworCisgICAgICAg
IHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CisgICAgICAgIG1fYmxv
Y2tzLmFwcGVuZChibG9jayk7CisgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9s
ZENhcGFjaXR5KSB7CisgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAgICAg
ICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYmxv
Y2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2
ZWN0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBh
Y2l0eSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7CisgICAgICAgIEFT
U0VSVCghbV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgbV9ibG9ja3NbaW5kZXhdID0gYmxvY2s7
CisgICAgfQogICAgIAotICAgIG1fYmxvY2tMaXN0LmFwcGVuZChibG9jayk7Ci0gICAgc2V0TmV4
dEJsb2NrVG9Td2VlcChibG9jayk7Ci0gICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soYmxv
Y2spOworICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYg
dmVjdG9yKSB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvciwgIXZlY3RvcltpbmRl
eF0pOworICAgICAgICB9KTsKKworICAgIC8vIFRoaXMgaXMgdGhlIHBvaW50IGF0IHdoaWNoIHRo
ZSBibG9jayBsZWFybnMgb2YgaXRzIGNlbGxTaXplKCkgYW5kIGF0dHJpYnV0ZXMoKS4KKyAgICBi
bG9jay0+ZGlkQWRkVG9BbGxvY2F0b3IodGhpcywgaW5kZXgpOworICAgIAorICAgIHNldElzTGl2
ZShpbmRleCwgdHJ1ZSk7CisgICAgc2V0SXNFbXB0eShpbmRleCwgdHJ1ZSk7CiB9CiAKIHZvaWQg
TWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykK
IHsKLSAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gYmxvY2spIHsKLSAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBmaWx0ZXJOZXh0QmxvY2sobV9jdXJyZW50QmxvY2stPm5leHQoKSk7Ci0gICAgICAg
IHNldEZyZWVMaXN0KEZyZWVMaXN0KCkpOwotICAgIH0KLSAgICBpZiAobV9uZXh0QmxvY2tUb1N3
ZWVwID09IGJsb2NrKQotICAgICAgICBzZXROZXh0QmxvY2tUb1N3ZWVwKG1fbmV4dEJsb2NrVG9T
d2VlcC0+bmV4dCgpKTsKKyAgICBBU1NFUlQoYmxvY2stPmFsbG9jYXRvcigpID09IHRoaXMpOwor
ICAgIEFTU0VSVChtX2Jsb2Nrc1tibG9jay0+aW5kZXgoKV0gPT0gYmxvY2spOwogCi0gICAgYmxv
Y2stPndpbGxSZW1vdmVCbG9jaygpOwotICAgIG1fYmxvY2tMaXN0LnJlbW92ZShibG9jayk7Cisg
ICAgbV9ibG9ja3NbYmxvY2stPmluZGV4KCldID0gbnVsbHB0cjsKKyAgICBtX2ZyZWVCbG9ja0lu
ZGljZXMuYXBwZW5kKGJsb2NrLT5pbmRleCgpKTsKKyAgICAKKyAgICBmb3JFYWNoQml0VmVjdG9y
KAorICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICAgICAgdmVj
dG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOworICAgICAgICB9KTsKKyAgICAKKyAgICBibG9j
ay0+ZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
c3RvcEFsbG9jYXRpbmcoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3Mo
KSA9PSBGdWxsQ29sbGVjdGlvbikKLSAgICAgICAgbV9ibG9ja0xpc3QudGFrZUZyb20obV9yZXRp
cmVkQmxvY2tzKTsKLQorICAgIGlmIChmYWxzZSkKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVy
KHRoaXMpLCAiOiBNYXJrZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nIVxuIik7CiAgICAgQVNT
RVJUKCFtX2xhc3RBY3RpdmVCbG9jayk7CiAgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykgewogICAg
ICAgICBBU1NFUlQoIW1fZnJlZUxpc3QpOwpAQCAtMjkyLDI5ICszMzIsMjYgQEAgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKICAgICBtX2ZyZWVMaXN0ID0gRnJlZUxpc3Qo
KTsKIH0KIAotdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAw
OwotICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxw
dHI7CisgICAgbV9jdXJyZW50QmxvY2sgPSBudWxscHRyOwogICAgIHNldEZyZWVMaXN0KEZyZWVM
aXN0KCkpOwogCi0gICAgc2V0TmV4dEJsb2NrVG9Td2VlcChtX2Jsb2NrTGlzdC5iZWdpbigpKTsK
KyAgICBtX2FsbG9jYXRpb25DdXJzb3IgPSAwOworICAgIG1fZW1wdHlDdXJzb3IgPSAwOworICAg
IG1fdW5zd2VwdEN1cnNvciA9IDA7CisgICAgCisgICAgbV9lZGVuLmNsZWFyQWxsKCk7CiAKICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7Ci0gICAgICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIG5leHQ7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2s6Okhh
bmRsZSomIGJsb2NrID0gbV9uZXh0QmxvY2tUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7
Ci0gICAgICAgICAgICBuZXh0ID0gZmlsdGVyTmV4dEJsb2NrKGJsb2NrLT5uZXh0KCkpOwotCi0g
ICAgICAgICAgICBGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6
SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAgICAgYmxvY2stPnphcChmcmVlTGlz
dCk7Ci0gICAgICAgICAgICByZXRpcmUoYmxvY2spOwotICAgICAgICB9CisgICAgICAgIC8vIEZJ
WE1FOiBNYWtlIHRoaXMgd29yayBhZ2Fpbi4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjI5NgogICAgIH0KIH0KIAogdm9pZCBNYXJrZWRBbGxv
Y2F0b3I6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKLSAgICBtX2Jsb2NrTGlzdC50YWtlRnJv
bShtX3JldGlyZWRCbG9ja3MpOwogICAgIGZvckVhY2hCbG9jaygKICAgICAgICAgWyZdIChNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewogICAgICAgICAgICAgYmxvY2stPmxhc3RDaGFuY2VU
b0ZpbmFsaXplKCk7CkBAIC0zMjYsNCArMzYzLDEyMSBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6
c2V0RnJlZUxpc3QoY29uc3QgCiAgICAgbV9mcmVlTGlzdCA9IGZyZWVMaXN0OwogfQogCit2b2lk
IE1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZygpCit7CisgICAgaWYgKCFtX2xhc3RB
Y3RpdmVCbG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFj
dGl2ZUJsb2NrLT5yZXN1bWVBbGxvY2F0aW5nKCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBtX2xh
c3RBY3RpdmVCbG9jazsKKyAgICBtX2xhc3RBY3RpdmVCbG9jayA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgTWFya2VkQWxsb2NhdG9yOjpiZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpCit7Cisg
ICAgLy8gTWFyayBiaXRzIGFyZSBzdGlja3kgYW5kIHNvIGlzIG91ciBzdW1tYXJ5IG9mIG1hcmsg
Yml0cy4gV2Ugb25seSBjbGVhciB0aGVzZSBkdXJpbmcgZnVsbAorICAgIC8vIGNvbGxlY3Rpb25z
LCBzbyBpZiB5b3Ugc3Vydml2ZWQgdGhlIGxhc3QgY29sbGVjdGlvbiB5b3Ugd2lsbCBzdXJ2aXZl
IHRoZSBuZXh0IG9uZSBzbyBsb25nCisgICAgLy8gYXMgdGhlIG5leHQgb25lIGlzIGVkZW4uCisg
ICAgbV9tYXJraW5nTm90RW1wdHkuY2xlYXJBbGwoKTsKKyAgICBtX21hcmtpbmdSZXRpcmVkLmNs
ZWFyQWxsKCk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjplbmRNYXJraW5nKCkKK3sKKyAg
ICBtX2FsbG9jYXRlZC5jbGVhckFsbCgpOworICAgIAorICAgIC8vIEl0J3Mgc3VycHJpc2luZyBh
bmQgZnJ1c3RyYXRpbmcgdG8gY29tcHJlaGVuZCwgYnV0IHRoZSBlbmQtb2YtbWFya2luZyBmbGlw
IGRvZXMgbm90IG5lZWQgdG8KKyAgICAvLyBrbm93IHdoYXQga2luZCBvZiBjb2xsZWN0aW9uIGl0
IGlzLiBUaGF0IGtub3dsZWRnZSBpcyBhbHJlYWR5IGVuY29kZWQgaW4gdGhlIG1fbWFya2luZ1hZ
WgorICAgIC8vIHZlY3RvcnMuCisgICAgCisgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgewor
ICAgICAgICAvLyBJZiBibG9ja3MgbmVlZCBkZXN0cnVjdGlvbiB0aGVuIG5vdGhpbmcgaXMgZW1w
dHkhIFRoaXMgaXMgYSBjb3JyZWN0IGFzc2VydGlvbiBidXQgbWF5CisgICAgICAgIC8vIGJlY29t
ZSB3cm9uZyBvbmNlIHdlIGdvIGZ1bGwgY29uY3VycmVudDogd2hlbiB3ZSBjcmVhdGUgYSBuZXcg
YmxvY2ssIGl0IHdpbGwgZmxpY2tlcgorICAgICAgICAvLyBpbnRvIHRoZSBlbXB0eSBzZXQgZm9y
IGEgdGlueSBtb21lbnQuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGlzIGNvZGUgaXMgbGlrZWx5IHRv
IGJlIHJ1bgorICAgICAgICAvLyBpbiBzdG9wVGhlV29ybGQuCisgICAgICAgIEFTU0VSVChtX2Vt
cHR5LmlzRW1wdHkoKSk7CisgICAgICAgIG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSA9IG1fbGl2
ZSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IG1fZW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHk7CisgICAgbV9jYW5BbGxvY2F0
ZUJ1dE5vdEVtcHR5ID0gbV9saXZlICYgbV9tYXJraW5nTm90RW1wdHkgJiB+bV9tYXJraW5nUmV0
aXJlZDsKKyAgICAKKyAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgZGF0YUxvZygiQml0cyBmb3Ig
IiwgbV9jZWxsU2l6ZSwgIiwgIiwgbV9hdHRyaWJ1dGVzLCAiIGFmdGVyIGVuZE1hcmtpbmc6XG4i
KTsKKyAgICAgICAgZHVtcEJpdHMoV1RGOjpkYXRhRmlsZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQg
TWFya2VkQWxsb2NhdG9yOjpzbmFwc2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpCit7Cisg
ICAgbV91bnN3ZXB0IHw9IG1fZWRlbjsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OnNuYXBz
aG90VW5zd2VwdEZvckZ1bGxDb2xsZWN0aW9uKCkKK3sKKyAgICBtX3Vuc3dlcHQgPSBtX2xpdmU7
Cit9CisKK01hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEFsbG9jYXRvcjo6ZmluZEJsb2NrVG9T
d2VlcCgpCit7CisgICAgbV91bnN3ZXB0Q3Vyc29yID0gbV91bnN3ZXB0LmZpbmRCaXQobV91bnN3
ZXB0Q3Vyc29yLCB0cnVlKTsKKyAgICBpZiAobV91bnN3ZXB0Q3Vyc29yID49IG1fYmxvY2tzLnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYmxvY2tzW21fdW5z
d2VwdEN1cnNvcl07Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjpzd2VlcCgpCit7CisgICAg
bV91bnN3ZXB0LmZvckVhY2hTZXRCaXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7Cisg
ICAgICAgICAgICBtX2Jsb2Nrc1tpbmRleF0tPnN3ZWVwKCk7CisgICAgICAgIH0pOworfQorCit2
b2lkIE1hcmtlZEFsbG9jYXRvcjo6c2hyaW5rKCkKK3sKKyAgICBtX2VtcHR5LmZvckVhY2hTZXRC
aXQoCisgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBtX21hcmtlZFNw
YWNlLT5mcmVlQmxvY2sobV9ibG9ja3NbaW5kZXhdKTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQg
TWFya2VkQWxsb2NhdG9yOjphc3NlcnROb1Vuc3dlcHQoKQoreworICAgIGlmIChBU1NFUlRfRElT
QUJMRUQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAobV91bnN3ZXB0LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGRhdGFMb2coIkFzc2VydGlvbiBmYWlsZWQ6
IHVuc3dlcHQgbm90IGVtcHR5IGluICIsICp0aGlzLCAiLlxuIik7CisgICAgZHVtcEJpdHMoKTsK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0
aGlzKSwgIjoiLCBtX2NlbGxTaXplLCAiLyIsIG1fYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgTWFy
a2VkQWxsb2NhdG9yOjpkdW1wQml0cyhQcmludFN0cmVhbSYgb3V0KQoreworICAgIHVuc2lnbmVk
IG1heE5hbWVMZW5ndGggPSAwOworICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKKyAgICAg
ICAgWyZdIChGYXN0Qml0VmVjdG9yJiwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKG5hbWUpOworICAgICAgICAgICAgbWF4TmFtZUxlbmd0
aCA9IHN0ZDo6bWF4KG1heE5hbWVMZW5ndGgsIGxlbmd0aCk7CisgICAgICAgIH0pOworICAgIAor
ICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKKyAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9y
JiB2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIG91dC5wcmludCgiICAg
ICIsIG5hbWUsICI6ICIpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF4TmFtZUxl
bmd0aCAtIHN0cmxlbihuYW1lKTsgaS0tOykKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAi
KTsKKyAgICAgICAgICAgIG91dC5wcmludCh2ZWN0b3IsICJcbiIpOworICAgICAgICB9KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksOSBAQAogI2luY2x1ZGUgIkFsbG9jYXRvckF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVl
TGlzdC5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRW
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzcsNiArMzksMTQ5IEBAIGNs
YXNzIEhlYXA7CiBjbGFzcyBNYXJrZWRTcGFjZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAorI2RlZmluZSBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChtYWNybykgXAorICAg
IG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUg
YWN0dWFsIGJsb2Nrcy4gKi9cCisgICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9m
IGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cyBhbmQgbm90aGluZyB0byBkZXN0
cm95LiAqLyBcCisgICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2Yg
YWxsYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAgICBtYWNybyhj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJldGlyZWQgKGkuZS4gYXJlIG1v
cmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAqLyBcCisgICAgbWFjcm8o
ZWRlbiwgRWRlbikgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0
cyBzaW5jZSB0aGUgbGFzdCBHQy4gKi9cCisgICAgbWFjcm8odW5zd2VwdCwgVW5zd2VwdCkgLyog
VGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVu
dGFsIHN3ZWVwZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5n
IG1hcmtpbmcuICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5
KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisgICAg
bWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KKworLy8gRklYTUU6IFdlIGRlZmluZWQgY2FuQWxs
b2NhdGVCdXROb3RFbXB0eSBhbmQgZW1wdHkgdG8gYmUgZXhjbHVzaXZlOgorLy8KKy8vICAgICBj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ICYgZW1wdHkgPT0gMAorLy8KKy8vIEluc3RlYWQgb2YgY2Fs
bGluZyBpdCBjYW5BbGxvY2F0ZSBhbmQgbWFraW5nIGl0IGluY2x1c2l2ZToKKy8vCisvLyAgICAg
Y2FuQWxsb2NhdGUgJiBlbXB0eSA9PSBlbXB0eQorLy8KKy8vIFRoZSBsYXR0ZXIgaXMgcHJvYmFi
bHkgYmV0dGVyLiBJJ2xsIGxlYXZlIGl0IHRvIGEgZnV0dXJlIGJ1ZyB0byBmaXggdGhhdCwgc2lu
Y2UgYnJlYXRoaW5nIG9uCisvLyB0aGlzIGNvZGUgbGVhZHMgdG8gcmVncmVzc2lvbnMgZm9yIGRh
eXMsIGFuZCBpdCdzIG5vdCBjbGVhciB0aGF0IG1ha2luZyB0aGlzIGNoYW5nZSB3b3VsZAorLy8g
aW1wcm92ZSBwZXJmIHNpbmNlIGl0IHdvdWxkIG5vdCBjaGFuZ2UgdGhlIGNvbGxlY3RvcidzIGJl
aGF2aW9yLCBhbmQgZWl0aGVyIHdheSB0aGUgYWxsb2NhdG9yCisvLyBoYXMgdG8gbG9vayBhdCBi
b3RoIGJpdHZlY3RvcnMuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyMTIxCisKKy8vIE5vdGUgdGhhdCB0aGlzIGNvbGxlY3RvciBzdXBwb3J0cyBvdmVybGFw
cGluZyBhbGxvY2F0b3Igc3RhdGUgd2l0aCBtYXJraW5nIHN0YXRlLCBzaW5jZSBpbiBhCisvLyBj
b25jdXJyZW50IGNvbGxlY3RvciB5b3UgYWxsb3cgYWxsb2NhdGlvbiB3aGlsZSBtYXJraW5nIGlz
IHJ1bm5pbmcuIFNvIGl0J3MgYmVzdCB0byB2aXN1YWxpemUgYQorLy8gZnVsbCBtdXRhYmxlLT5l
ZGVuIGNvbGxlY3QtPm11dGF0ZS0+ZnVsbCBjb2xsZWN0IGN5Y2xlIGFuZCBzZWUgaG93IHRoZSBi
aXRzIGFib3ZlIGdldCBhZmZlY3RlZC4KKy8vIFRoZSBleGFtcGxlIGJlbG93IHRyaWVzIHRvIGJl
IGV4aGF1c3RpdmUgYWJvdXQgd2hhdCBoYXBwZW5zIHRvIHRoZSBiaXRzLCBidXQgb21pdHMgYSBs
b3Qgb2YKKy8vIHRoaW5ncyB0aGF0IGhhcHBlbiB0byBvdGhlciBzdGF0ZS4KKy8vCisvLyBDcmVh
dGUgYWxsb2NhdG9yCisvLyAtIGFsbCBiaXRzIGFyZSBlbXB0eQorLy8gU3RhcnQgYWxsb2NhdGlu
ZyBpbiBzb21lIGJsb2NrCisvLyAtIGFsbG9jYXRlIHRoZSBibG9jayBhbmQgc2V0IHRoZSBsaXZl
IGJpdC4KKy8vIC0gdGhlIGVtcHR5IGJpdCBmb3IgdGhlIGJsb2NrIGZsaWNrZXJzIG9uIGFuZCB0
aGVuIGdldHMgaW1tZWRpYXRlbHkgY2xlYXJlZCBieSBzd2VlcGluZy4KKy8vIC0gc2V0IHRoZSBl
ZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIGluIHRoYXQgYmxvY2sKKy8vIC0gc2V0IHRo
ZSBhbGxvY2F0ZWQgYml0LgorLy8gRG8gdGhhdCB0byBhIGxvdCBvZiBibG9ja3MgYW5kIHRoZW4g
c3RhcnQgYW4gZWRlbiBjb2xsZWN0aW9uLgorLy8gLSBiZWdpbk1hcmtpbmcoKSBoYXMgbm90aGlu
ZyB0byBkby4KKy8vIC0gYnkgZGVmYXVsdCB3ZSBoYXZlIGNsZWFyIG1hcmtpbmdOb3RFbXB0eS9t
YXJraW5nUmV0aXJlZCBiaXRzLgorLy8gLSBtYXJraW5nIGJ1aWxkcyB1cCBtYXJraW5nTm90RW1w
dHkvbWFya2luZ1JldGlyZWQgYml0cy4KKy8vIFdlIGRvIGVuZE1hcmtpbmcoKQorLy8gLSBjbGVh
ciBhbGwgYWxsb2NhdGVkIGJpdHMuCisvLyAtIGZvciBkZXN0cnVjdG9yIGJsb2NrczogZnJhZ21l
bnRlZCA9IGxpdmUgJiB+bWFya2luZ1JldGlyZWQKKy8vIC0gZm9yIG5vbi1kZXN0cnVjdG9yIGJs
b2NrczoKKy8vICAgICAgIGVtcHR5ID0gbGl2ZSAmIH5tYXJraW5nTm90RW1wdHkKKy8vICAgICAg
IGZyYWdtZW50ZWQgPSBsaXZlICYgbWFya2luZ05vdEVtcHR5ICYgfm1hcmtpbmdSZXRpcmVkCisv
LyBTbmFwc2hvdHRpbmcuCisvLyAtIHVuc3dlcHQgfD0gZWRlbgorLy8gUHJlcGFyZSBmb3IgYWxs
b2NhdGlvbi4KKy8vIC0gY2xlYXIgZWRlbgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLyBBbGxv
Y2F0ZSBpbiBzb21lIGJsb2NrIHRoYXQgaGFkIHNvbWUgZnJlZSBhbmQgc29tZSBsaXZlIG9iamVj
dHMuCisvLyAtIGNsZWFyIHRoZSBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGJpdAorLy8gLSBjbGVh
ciB0aGUgdW5zd2VwdCBiaXQKKy8vIC0gc2V0IHRoZSBlZGVuIGJpdAorLy8gRmluaXNoIGFsbG9j
YXRpbmcgKHNldCB0aGUgYWxsb2NhdGVkIGJpdCkuCisvLyBBbGxvY2F0ZSBpbiBzb21lIGJsb2Nr
IHRoYXQgd2FzIGNvbXBsZXRlbHkgZW1wdHkuCisvLyAtIGNsZWFyIHRoZSBlbXB0eSBiaXQKKy8v
IC0gY2xlYXIgdGhlIHVuc3dlcHQgYml0CisvLyAtIHNldCB0aGUgZWRlbiBiaXQuCisvLyBGaW5p
c2ggYWxsb2NhdGluZyAoc2V0IHRoZSBhbGxvY2F0ZWQgYml0KS4KKy8vIEFsbG9jYXRlIGluIHNv
bWUgYmxvY2sgdGhhdCB3YXMgY29tcGxldGVseSBlbXB0eSBpbiBhbm90aGVyIGFsbG9jYXRvci4K
Ky8vIC0gY2xlYXIgdGhlIGVtcHR5IGJpdAorLy8gLSBjbGVhciBhbGwgYml0cyBpbiB0aGF0IGFs
bG9jYXRvcgorLy8gLSBzZXQgdGhlIGxpdmUgYml0IGluIGFub3RoZXIgYWxsb2NhdG9yIGFuZCB0
aGUgZW1wdHkgYml0LgorLy8gLSBjbGVhciB0aGUgZW1wdHksIHVuc3dlcHQgYml0cy4KKy8vIC0g
c2V0IHRoZSBlZGVuIGJpdC4KKy8vIEZpbmlzaCBhbGxvY2F0aW5nIChzZXQgdGhlIGFsbG9jYXRl
ZCBiaXQpLgorLy8gU3RhcnQgYSBmdWxsIGNvbGxlY3Rpb24uCisvLyAtIGJlZ2luTWFya2luZygp
IGNsZWFycyBtYXJraW5nTm90RW1wdHksIG1hcmtpbmdSZXRpcmVkCisvLyAtIHRoZSBoZWFwIHZl
cnNpb24gaXMgaW5jcmVtZW50ZWQKKy8vIC0gbWFya2luZyByZWJ1aWxkcyBtYXJraW5nTm90RW1w
dHkvbWFya2luZ3JldGlyZWQgYml0cy4KKy8vIFdlIGRvIGVuZE1hcmtpbmcoKQorLy8gLSBjbGVh
ciBhbGwgYWxsb2NhdGVkIGJpdHMuCisvLyAtIHNldCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5L2Vt
cHR5IHRoZSBzYW1lIHdheSBhcyBpbiBlZGVuIGNvbGxlY3Rpb24uCisvLyBTbmFwc2hvdHRpbmcu
CisvLyAtIHVuc3dlcHQgPSBsaXZlCisvLyBwcmVwYXJlIGZvciBhbGxvY2F0aW9uLgorLy8gLSBj
bGVhciBlZGVuLgorLy8gRmluaXNoIGNvbGxlY3Rpb24uCisvLworLy8gTm90aWNlIGhvdyBpbiB0
aGlzIHNjaGVtZSwgdGhlIGVtcHR5L2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgc3RhdGUgc3RheXMg
c2VwYXJhdGUgZnJvbSB0aGUKKy8vIG1hcmtpbmdOb3RFbXB0eS9tYXJraW5nUmV0aXJlZCBzdGF0
ZS4gVGhpcyBpcyBvbmUgc3RlcCB0b3dhcmRzIGhhdmluZyBzZXBhcmF0ZWQgYWxsb2NhdGlvbiBh
bmQKKy8vIG1hcmtpbmcgc3RhdGUuCisvLworLy8gQWZ0ZXIgdGhpcywgd2UganVzdCBuZWVkIHRv
IGFuc3dlciB0aGUgcXVlc3Rpb246IHdoYXQgZG9lcyBhbiBvYmplY3QgYWxsb2NhdGVkIGR1cmlu
ZyBlZGVuIEdDCisvLyBsb29rIGxpa2UgdG8gdGhlIEdDPworLy8KKy8vIEkndmUgY29tZSB1cCB3
aXRoIHR3byBjb21wZWxsaW5nIGFuc3dlcnMuCisvLworLy8gMS4gQUxMT0NBVEUgQkxBQ0sKKy8v
CisvLyBJIHRoaW5rIHRoYXQgdGhlIGVhc2llc3QgYW5zd2VyIGlzIHRvIGFsbG9jYXRlIHRoZSBv
YmplY3Qgd2hpdGUgYW5kIHRoZW4KKy8vIGltbWVkaWF0ZWx5IG1hcmsgaXQuIFRoaXMgbWFrZXMg
dGhlIG9iamVjdCBiZWhhdmUgYXMgaWYgaXQgd2FzIGFsbG9jYXRlZCBqdXN0IGJlZm9yZSB0aGUg
c3RhcnQKKy8vIG9mIEdDIGFuZCBpdCB3YXMgb24gdGhlIHN0YWNrIGF0IHRoZSBiZWdpbm5pbmcg
b2YgR0MuIFdlIHdvdWxkbid0IGhhdmUgdG8gZG8gYW55dGhpbmcgZGlmZmVyZW50CisvLyB3aXRo
IHRoZSB2YXJpb3VzIGJsb2NrIGJpdHMgd2hlbiBhbGxvY2F0aW5nIGR1cmluZyBHQzogd2UgY291
bGQgc3RpbGwgc2V0IGVkZW4gYW5kIGFsbG9jYXRlZAorLy8gc2luY2UgdGhleSB3aWxsIGJlIGNs
ZWFyZWQgYW55d2F5LgorLy8KKy8vIEJ1dCB0aGlzIG1lYW5zIHRoYXQgdGhlIG9iamVjdCB3b24n
dCBiZSBlbGlnaWJsZSBmb3IgZnJlZWluZyB1bnRpbCB0aGUgbmV4dCBmdWxsIEdDLiBJZGVhbGx5
CisvLyB3ZSdkIG1ha2UgdGhlIG9iamVjdCBpcyBlbGlnaWJsZSBmb3IgZnJlZWluZyBhdCB0aGUg
bmV4dCBlZGVuIEdDLiBUaGVyZSdzIGEgYnVuY2ggb2YgdGhpbmdzIHdlCisvLyBjb3VsZCBkbyB0
byBtYWtlIHRoaXMgaGFwcGVuLiBIZXJlIGFyZSBzb21lIGlkZWFzOgorLy8KKy8vIC0gSW50cm9k
dWNlIGEgbmV3IENlbGxTdGF0ZSwgY2FsbGVkIEZsb2F0LCB3aGljaCBtZWFucyB0aGF0IHRoZSBv
YmplY3Qgd2FzIGFsbG9jYXRlZCBkdXJpbmcgdGhlCisvLyAgIEdDLiBXZSB3b3VsZCBtYWtlIHN1
cmUgdGhhdCBtYXJraW5nIGRvZXMgbm90aGluZyBmb3IgRmxvYXRzLiBUaGlzIHdvdWxkIG1ha2Ug
bWFya2luZyBhIHRpbnkKKy8vICAgYml0IG1vcmUgZXhwZW5zaXZlLiBXZSB3b3VsZCBtYWtlIHN1
cmUgdGhhdCB0aGUgYmFycmllciByZWNvZ25pemVzIHN0b3JlcyB0byBhIEZsb2F0IHRoZSBzYW1l
CisvLyAgIHdheSB0aGF0IGl0IHNlZXMgYSBzdG9yZSB0byBPbGRCbGFjazogaXQgcHV0cyB0aGUg
b2JqZWN0IG9uIHRoZSBtYXJrIHN0YWNrLiBGbG9hdHMgd291bGQgYmUKKy8vICAgcHV0IG9uIHRo
ZSBtYXJrIHN0YWNrIGFzIEZsb2F0R3JleSB0byBpbmRpY2F0ZSB0aGF0IHRoZXkgd2lsbCBiZSBz
Y2FubmVkIGJ5IHRoZSBHQyBidXQgdGhhdAorLy8gICB0aGV5IGFyZW4ndCBhY3R1YWxseSBtYXJr
ZWQuCisvLworLy8gICBOb3RlIHRoYXQgdGhpcyBpbXBsaWVzIGhhdmluZyB0byBjaGFuZ2UgdGhl
IHN0YXRlIG9mIHRob3NlIGNlbGxzIGZyb20gRmxvYXQgdG8gc29tZXRoaW5nIGVsc2UKKy8vICAg
YXQgdGhlIGVuZCBvZiBHQy4gIEknbSBub3Qgc3VyZSB0aGF0IHRoaXMgaXMgc28gZ3JlYXQuCisv
LworLy8gLSBNYXJrIHRoZSBvYmplY3RzIGFmdGVyIGFsbG9jYXRpb24sIGJ1dCBhbHNvIHNldCBz
b21lIG90aGVyIGJpdHMgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdGhvc2UKKy8vICAgb2JqZWN0cyBz
aG91bGQgYmUgdW5tYXJrZWQgYXQgdGhlIGVuZCBvZiB0aGUgR0MuCisvLworLy8gRWl0aGVyIG9m
IHRoZXNlIGFwcHJvYWNoZXMgd291bGQgbWFrZSBjb2xsZWN0aW9ucyBtb3JlIGV4cGVuc2l2ZSwg
YnV0IGl0IGZlZWxzIGxpa2UgdGhlIGxhdHRlcgorLy8gYXBwcm9hY2ggd291bGQgYmUgYSBwcm9m
aXRhYmxlIG9wdGltaXphdGlvbi4gSSdtIGFsc28gcmVhbGx5IGdldHRpbmcgd29ycmllZCBhYm91
dCBob3cgdGhpcyBHQworLy8gZXhwZXJpZW5jZXMgYmFja3dhcmRzIHRpbWUgdHJhdmVsLCB3aXRo
IGFsbCB0aGUgcmVtYXJraW5nIG9mIHRoaW5ncyBsaWtlIG5ldyBvYmplY3RzIGFuZAorLy8gd2hh
dG5vdC4KKy8vCisvLyAyLiBBTExPQ0FURSBXSElURQorLy8KKy8vIEkgZG9uJ3Qga25vdyBpZiB0
aGlzIGlzIHNvdW5kLCBidXQgaWYgaXQgd2FzIHRoZW4gaXQgd291bGQgYmUgdGhlIG9wdGltYWwg
c29sdXRpb24uIEFsbG9jYXRpb24KKy8vIHdvdWxkIHdvcmsgYXMgbm93IGFuZCBjb25zZXF1ZW50
bHksIGV2ZXJ5dGhpbmcgd2Uga25vdyBhYm91dCB3aGF0IHdhcyBhbGxvY2F0ZWQgZHVyaW5nIGEg
R0MgaXMKKy8vIGZvcmdvdHRlbiBhdCB0aGUgZW5kIG9mIEdDLiBCdXQgdGhhdCdzIGZpbmUuIEVu
ZCBvZiBHQyBtdXN0IHJlc2NhbiBhbnkgaGVhcCBsb2NhdGlvbnMgdGhhdCBnb3QKKy8vIHN0b3Jl
ZCBpbnRvIGFuZCBpdCBtdXN0IHJlc2NhbiB0aGUgc3RhY2suIFNvLCB3aGl0ZSBvYmplY3RzIGFs
bG9jYXRlZCBkdXJpbmcgR0Mgd291bGQgZ2V0CisvLyBtYXJrZWQgaWYgdGhleSBzb21laG93IHN1
cnZpdmVkLgorLy8KKy8vIFRoaXMgbWVhbnMgdGhhdCBmb3IgZXhhbXBsZSBpZiB0aGVyZSBpcyBh
IGZpZWxkIHRoYXQgb2Z0ZW4gZ2V0cyBzdG9yZWQgdG8gd2l0aCBuZXcgb2JqZWN0cywgdGhlCisv
LyBHQyB3aWxsIG5vdCBzZWUgYWxsIG9mIHRoZSB2YWx1ZXMgaW4gdGhhdCBmaWVsZCBidXQgaW5z
dGVhZCBpdCB3b3VsZCBwb2xsIHRoYXQgZmllbGQsIGhvcGVmdWxseQorLy8gc29tZXdoYXQgcmFy
ZWx5LiBXZSBjYW4gbWFrZSBpdCB2ZXJ5IHJhcmUgYnkgb25seSBpbmZyZXF1ZW50bHkgZG9uYXRp
bmcgZnJvbSB0aGUgbWFpbiB0aHJlYWQncworLy8gc2xvdCB2aXNpdG9yIHRvIGFueSBvZiB0aGUg
b3RoZXJzLiBTbywgd2Ugd291bGQgb25seSBtYXJrIHNvbWUgb2YgdGhlIG5ldyBvYmplY3RzIHRo
YXQgZ290CisvLyBzdG9yZWQgaW50byB0aGF0IGZpZWxkLiBJdCBhbHNvIG1lYW5zIHRoYXQgYW55
IG9iamVjdCBhbGxvY2F0ZWQgZHVyaW5nIHRoZSBHQyB0aGF0IGRpZG4ndCBnZXQKKy8vIHN0b3Jl
ZCBpbnRvIGFueSBvYmplY3QgdGhhdCB3YXMgbGl2ZSBzaW5jZSBiZWZvcmUgdGhlIHN0YXJ0IG9m
IEdDIHdvdWxkIHNpbXBseSBkaXNhcHBlYXIuIFRoaXMKKy8vIG1lYW5zIG11Y2ggbGVzcyByZXNj
YW5uaW5nIHRoYW4gYW55IG9mIHRoZSBvdGhlciBwcm9wb3NhbHMuCisvLworLy8gSSByZWFsbHkg
d2FudCB0byBnbyB3aXRoIHRoZSBhbGxvY2F0ZS13aGl0ZSBhcHByb2FjaCwgYnV0IEkgbmVlZCB0
byB0aGluayBtb3JlIGRlZXBseSBhYm91dCBpdAorLy8gYmVmb3JlIEkgY29tbWl0IHRvIGl0Lgor
CiBjbGFzcyBNYXJrZWRBbGxvY2F0b3IgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKQEAgLTQ2LDkgKzE5MSwxNiBAQCBwdWJsaWM6CiAKICAgICBNYXJrZWRBbGxv
Y2F0b3IoSGVhcCosIE1hcmtlZFNwYWNlKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBBbGxvY2F0
b3JBdHRyaWJ1dGVzJik7CiAgICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwotICAgIHZv
aWQgcmVzZXQoKTsKKyAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBz
dG9wQWxsb2NhdGluZygpOwogICAgIHZvaWQgcmVzdW1lQWxsb2NhdGluZygpOworICAgIHZvaWQg
YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICB2b2lkIGVuZE1hcmtpbmcoKTsK
KyAgICB2b2lkIHNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCk7CisgICAgdm9pZCBz
bmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbigpOworICAgIHZvaWQgc3dlZXAoKTsKKyAg
ICB2b2lkIHNocmluaygpOworICAgIHZvaWQgYXNzZXJ0Tm9VbnN3ZXB0KCk7CiAgICAgc2l6ZV90
IGNlbGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsU2l6ZTsgfQogICAgIGNvbnN0IEFsbG9j
YXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7
IH0KICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0
ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQpAQCAtNzIsMzUgKzIyNCw4OSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAgCiAg
ICAgc3RhdGljIHNpemVfdCBibG9ja1NpemVGb3JCeXRlcyhzaXplX3QpOworICAgIAorI2RlZmlu
ZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0
TmFtZSkgICAgIFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4XTsgfSBcCisgICAgYm9vbCBp
cyAjIyBjYXBpdGFsQml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QgeyBy
ZXR1cm4gaXMgIyMgY2FwaXRhbEJpdE5hbWUoYmxvY2stPmluZGV4KCkpOyB9IFwKKyAgICB2b2lk
IHNldElzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBtXyAj
IyBsb3dlckJpdE5hbWVbaW5kZXhdID0gdmFsdWU7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2Fw
aXRhbEJpdE5hbWUoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0
SXMgIyMgY2FwaXRhbEJpdE5hbWUoYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfSBcCisgICAgYm9v
bCBhdG9taWNTZXRBbmRDaGVja0lzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9v
bCB2YWx1ZSkgeyByZXR1cm4gbV8gIyMgbG93ZXJCaXROYW1lLmF0b21pY1NldEFuZENoZWNrKGlu
ZGV4LCB2YWx1ZSk7IH0gXAorICAgIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2tJcyAjIyBjYXBpdGFs
Qml0TmFtZShNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyByZXR1cm4g
bV8gIyMgbG93ZXJCaXROYW1lLmF0b21pY1NldEFuZENoZWNrKGJsb2NrLT5pbmRleCgpLCB2YWx1
ZSk7IH0KKyAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9S
X0JJVF9BQ0NFU1NPUlMpCisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTCisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihj
b25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyNkZWZpbmUgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FM
TEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAgICBmdW5jKG1fICMj
IGxvd2VyQml0TmFtZSk7CisgICAgICAgIEZPUl9FQUNIX01BUktFRF9BTExPQ0FUT1JfQklUKE1B
UktFRF9BTExPQ0FUT1JfQklUX0NBTExCQUNLKTsKKyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJ
VF9DQUxMQkFDSworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAg
IHZvaWQgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgewor
I2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0
YWxCaXROYW1lKSBcCisgICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJp
dE5hbWUpOworICAgICAgICBGT1JfRUFDSF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxM
T0NBVE9SX0JJVF9DQUxMQkFDSyk7CisjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQ0FMTEJB
Q0sKKyAgICB9CisgICAgCisgICAgTWFya2VkQWxsb2NhdG9yKiBuZXh0QWxsb2NhdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9uZXh0QWxsb2NhdG9yOyB9CisgICAgCisgICAgLy8gTWFya2VkU3BhY2Ug
Y2FsbHMgdGhpcyBkdXJpbmcgaW5pdC4KKyAgICB2b2lkIHNldE5leHRBbGxvY2F0b3IoTWFya2Vk
QWxsb2NhdG9yKiBhbGxvY2F0b3IpIHsgbV9uZXh0QWxsb2NhdG9yID0gYWxsb2NhdG9yOyB9Cisg
ICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCk7Cisg
ICAgCisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEJsb2NrVG9Td2VlcCgpOworICAgIAor
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZHVtcEJpdHMoUHJp
bnRTdHJlYW0mID0gV1RGOjpkYXRhRmlsZSgpKTsKICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgTWFya2VkQmxvY2s7CiAgICAgCisgICAgYm9vbCBzaG91bGRTdGVhbEVtcHR5QmxvY2tz
RnJvbU90aGVyQWxsb2NhdG9ycygpIGNvbnN0OworICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiB0
cnlBbGxvY2F0ZVNsb3dDYXNlKCk7CiAgICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZUltcGwoYm9v
bCBjcmFzaE9uRmFpbHVyZSk7CisgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsKICAgICB2
b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7Ci0gICAgdm9pZCogdHJ5QWxsb2Nh
dGVXaXRob3V0Q29sbGVjdGluZ0ltcGwoKTsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlB
bGxvY2F0ZUJsb2NrKCk7CisgICAgdm9pZCogdHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFu
ZGxlKik7CisgICAgdm9pZCogYWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoKTsKLSAgICB2b2lk
IHJldGlyZShNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgCiAgICAgdm9pZCBzZXRGcmVlTGlz
dChjb25zdCBGcmVlTGlzdCYpOwogICAgIAotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbHRl
ck5leHRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7Ci0gICAgdm9pZCBzZXROZXh0QmxvY2tU
b1N3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKLSAgICAKICAgICBGcmVlTGlzdCBtX2ZyZWVM
aXN0OworICAgIAorICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9ja3M7Cisg
ICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVCbG9ja0luZGljZXM7CisgICAgCisjZGVmaW5lIE1B
UktFRF9BTExPQ0FUT1JfQklUX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5h
bWUpIFwKKyAgICBGYXN0Qml0VmVjdG9yIG1fICMjIGxvd2VyQml0TmFtZTsKKyAgICBGT1JfRUFD
SF9NQVJLRURfQUxMT0NBVE9SX0JJVChNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTikK
KyN1bmRlZiBNQVJLRURfQUxMT0NBVE9SX0JJVF9ERUNMQVJBVElPTgorICAgIAorICAgIC8vIEFm
dGVyIHlvdSBkbyBzb21ldGhpbmcgdG8gYSBibG9jayBiYXNlZCBvbiBvbmUgb2YgdGhlc2UgY3Vy
c29ycywgeW91IGNsZWFyIHRoZSBiaXQgaW4gdGhlCisgICAgLy8gY29ycmVzcG9uZGluZyBiaXR2
ZWN0b3IgYW5kIGxlYXZlIHRoZSBjdXJzb3Igd2hlcmUgaXQgd2FzLgorICAgIHNpemVfdCBtX2Fs
bG9jYXRpb25DdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0IGlz
IGEgY2FuZGlkYXRlIGZvciBhbGxvY2F0aW9uLgorICAgIHNpemVfdCBtX2VtcHR5Q3Vyc29yIHsg
MCB9OyAvLyBQb2ludHMgdG8gdGhlIG5leHQgYmxvY2sgdGhhdCBpcyBhIGNhbmRpZGF0ZSBmb3Ig
ZW1wdHkgYWxsb2NhdGlvbiAoYWxsb2NhdGluZyBpbiBlbXB0eSBibG9ja3MpLgorICAgIHNpemVf
dCBtX3Vuc3dlcHRDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBibG9jayB0aGF0
IGlzIGEgY2FuZGlkYXRlIGZvciBpbmNyZW1lbnRhbCBzd2VlcGluZy4KKyAgICAKICAgICBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBtX2N1cnJlbnRCbG9jazsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHRCbG9j
a1RvU3dlZXA7Ci0gICAgU2VudGluZWxMaW5rZWRMaXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUsIEJh
c2ljUmF3U2VudGluZWxOb2RlPE1hcmtlZEJsb2NrOjpIYW5kbGU+PiBtX2Jsb2NrTGlzdDsKLSAg
ICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkQmxvY2s6OkhhbmRsZSwgQmFzaWNSYXdTZW50aW5l
bE5vZGU8TWFya2VkQmxvY2s6OkhhbmRsZT4+IG1fcmV0aXJlZEJsb2NrczsKKwogICAgIExvY2sg
bV9sb2NrOwogICAgIHVuc2lnbmVkIG1fY2VsbFNpemU7CiAgICAgQWxsb2NhdG9yQXR0cmlidXRl
cyBtX2F0dHJpYnV0ZXM7CiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1hcmtlZFNwYWNlKiBtX21h
cmtlZFNwYWNlOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9uZXh0QWxsb2NhdG9yOwogfTsKIAog
aW5saW5lIHB0cmRpZmZfdCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKQpAQCAt
MTQ5LDIwICszNTUsMTIgQEAgQUxXQVlTX0lOTElORSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFs
bAogICAgIHJldHVybiBoZWFkOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJl
c3VtZUFsbG9jYXRpbmcoKQotewotICAgIGlmICghbV9sYXN0QWN0aXZlQmxvY2spCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fZnJlZUxpc3QgPSBtX2xhc3RBY3RpdmVCbG9jay0+cmVzdW1lQWxs
b2NhdGluZygpOwotICAgIG1fY3VycmVudEJsb2NrID0gbV9sYXN0QWN0aXZlQmxvY2s7Ci0gICAg
bV9sYXN0QWN0aXZlQmxvY2sgPSAwOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4g
aW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKLSAgICBtX2Jsb2NrTGlzdC5mb3JFYWNoKGZ1bmN0b3IpOwotICAgIG1fcmV0
aXJlZEJsb2Nrcy5mb3JFYWNoKGZ1bmN0b3IpOworICAgIG1fbGl2ZS5mb3JFYWNoU2V0Qml0KAor
ICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nr
c1tpbmRleF0pOworICAgICAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMDYx
NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRl
ICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0zNiw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RhdGlj
IGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2UgPSBmYWxzZTsKIHN0YXRpYyBzaXplX3QgYmFsYW5j
ZTsKIAotTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBo
ZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBB
bGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorTWFya2VkQmxvY2s6OkhhbmRsZSogTWFy
a2VkQmxvY2s6OnRyeUNyZWF0ZShIZWFwJiBoZWFwKQogewogICAgIGlmIChjb21wdXRlQmFsYW5j
ZSkgewogICAgICAgICBiYWxhbmNlKys7CkBAIC00OCwyNiArNDksMTcgQEAgTWFya2VkQmxvY2s6
OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBpZiAoc2NyaWJibGVGcmVlQ2VsbHMoKSkKICAgICAgICAgc2NyaWJibGUoYmxvY2tTcGFjZSwg
YmxvY2tTaXplKTsKLSAgICByZXR1cm4gbmV3IEhhbmRsZShoZWFwLCBhbGxvY2F0b3IsIGNlbGxT
aXplLCBhdHRyaWJ1dGVzLCBibG9ja1NwYWNlKTsKKyAgICByZXR1cm4gbmV3IEhhbmRsZShoZWFw
LCBibG9ja1NwYWNlKTsKIH0KIAotTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhl
YXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGNvbnN0IEFs
bG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIHZvaWQqIGJsb2NrU3BhY2UpCi0gICAgOiBt
X2F0b21zUGVyQ2VsbCgoY2VsbFNpemUgKyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemUpCi0gICAg
LCBtX2VuZEF0b20oYXRvbXNQZXJCbG9jayAtIG1fYXRvbXNQZXJDZWxsICsgMSkKLSAgICAsIG1f
YXR0cmlidXRlcyhhdHRyaWJ1dGVzKQotICAgICwgbV9zdGF0ZShOZXcpIC8vIEFsbCBjZWxscyBz
dGFydCBvdXQgdW5tYXJrZWQuCi0gICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBt
X3dlYWtTZXQoYWxsb2NhdG9yLT5oZWFwKCktPnZtKCksIENlbGxDb250YWluZXIoKSkKK01hcmtl
ZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCB2b2lkKiBibG9ja1NwYWNlKQorICAg
IDogbV93ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENvbnRhaW5lcigpKQogewogICAgIG1fYmxvY2sg
PSBuZXcgKE5vdE51bGwsIGJsb2NrU3BhY2UpIE1hcmtlZEJsb2NrKCpoZWFwLnZtKCksICp0aGlz
KTsKICAgICAKICAgICBtX3dlYWtTZXQuc2V0Q29udGFpbmVyKCptX2Jsb2NrKTsKICAgICAKICAg
ICBoZWFwLmRpZEFsbG9jYXRlQmxvY2soYmxvY2tTaXplKTsKLSAgICBIRUFQX0xPR19CTE9DS19T
VEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIEFTU0VSVChhbGxvY2F0b3IpOwotICAgIGlmICht
X2F0dHJpYnV0ZXMuY2VsbEtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rp
b24pOwogfQogCiBNYXJrZWRCbG9jazo6SGFuZGxlOjp+SGFuZGxlKCkKQEAgLTc4LDQ1ICs3MCwz
NSBAQCBNYXJrZWRCbG9jazo6SGFuZGxlOjp+SGFuZGxlKCkKICAgICAgICAgaWYgKCEoYmFsYW5j
ZSAlIDEwKSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJh
bGFuY2UsICJcbiIpOwogICAgIH0KKyAgICByZW1vdmVGcm9tQWxsb2NhdG9yKCk7CiAgICAgbV9i
bG9jay0+fk1hcmtlZEJsb2NrKCk7CiAgICAgZmFzdEFsaWduZWRGcmVlKG1fYmxvY2spOwogICAg
IGhlYXAuZGlkRnJlZUJsb2NrKGJsb2NrU2l6ZSk7CiB9CiAKIE1hcmtlZEJsb2NrOjpNYXJrZWRC
bG9jayhWTSYgdm0sIEhhbmRsZSYgaGFuZGxlKQotICAgIDogbV9uZWVkc0Rlc3RydWN0aW9uKGhh
bmRsZS5uZWVkc0Rlc3RydWN0aW9uKCkpCi0gICAgLCBtX3ZlcnNpb24odm0uaGVhcC5vYmplY3RT
cGFjZSgpLnZlcnNpb24oKSkKKyAgICA6IG1fdmVyc2lvbihNYXJrZWRTcGFjZTo6bnVsbFZlcnNp
b24pCiAgICAgLCBtX2hhbmRsZShoYW5kbGUpCiAgICAgLCBtX3ZtKCZ2bSkKIHsKLSAgICB1bnNp
Z25lZCBjZWxsc1BlckJsb2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGhhbmRsZS5j
ZWxsU2l6ZSgpOwotICAgIGRvdWJsZSBtYXJrQ291bnRCaWFzID0gLShPcHRpb25zOjptaW5NYXJr
ZWRCbG9ja1V0aWxpemF0aW9uKCkgKiBjZWxsc1BlckJsb2NrKTsKLSAgICAKLSAgICAvLyBUaGUg
bWFyayBjb3VudCBiaWFzIHNob3VsZCBiZSBjb21mb3J0YWJseSB3aXRoaW4gdGhpcyByYW5nZS4K
LSAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptaW4oKSkpOwotICAgIFJFTEVBU0VfQVNTRVJU
KG1hcmtDb3VudEJpYXMgPCAwKTsKLSAgICAKLSAgICBtX21hcmtDb3VudEJpYXMgPSBzdGF0aWNf
Y2FzdDxpbnQxNl90PihtYXJrQ291bnRCaWFzKTsKLSAgICAKLSAgICBtX2JpYXNlZE1hcmtDb3Vu
dCA9IG1fbWFya0NvdW50QmlhczsgLy8gVGhpcyBtZWFucyB3ZSBoYXZlbid0IG1hcmtlZCBhbnl0
aGluZyB5ZXQuCiB9CiAKLXRlbXBsYXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3Rh
dGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9u
TW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBz
Y3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXds
eUFsbG9jYXRlZE1vZGU+Cit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUg
ZW1wdHlNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0
cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJs
ZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1v
ZGUgbmV3bHlBbGxvY2F0ZWRNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpGbGlwTW9kZSBmbGlw
TW9kZT4KIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoKQog
ewotICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBB
U1NFUlQoYmxvY2tTdGF0ZSA9PSBOZXcgfHwgYmxvY2tTdGF0ZSA9PSBNYXJrZWQpOwotICAgIEFT
U0VSVCghKGRlc3RydWN0aW9uTW9kZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVw
TW9kZSA9PSBTd2VlcE9ubHkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghKGRlc3RydWN0aW9uTW9k
ZSA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsK
ICAgICAKLSAgICBhc3NlcnRGbGlwcGVkKCk7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOworCiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+Ymxv
Y2soKTsKICAgICAKLSAgICBib29sIGlzTmV3QmxvY2sgPSBibG9ja1N0YXRlID09IE5ldzsKLSAg
ICBib29sIGlzRW1wdHlCbG9jayA9ICFibG9jay5oYXNBbnlNYXJrZWQoKQotICAgICAgICAmJiBu
ZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZAotICAgICAgICAm
JiBkZXN0cnVjdGlvbk1vZGUgPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbjsKLSAgICBpZiAoT3B0
aW9uczo6dXNlQnVtcEFsbG9jYXRvcigpICYmIChpc05ld0Jsb2NrIHx8IGlzRW1wdHlCbG9jaykp
IHsKLSAgICAgICAgQVNTRVJUKGJsb2NrLm1fbWFya3MuaXNFbXB0eSgpKTsKKyAgICBpZiAoZmFs
c2UpCisgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3BlY2lhbGl6ZWRTd2VlcCFcbiIpOworICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VC
dW1wQWxsb2NhdG9yKCkKKyAgICAgICAgJiYgZW1wdHlNb2RlID09IElzRW1wdHkKKyAgICAgICAg
JiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQpIHsKKyAg
ICAgICAgQVNTRVJUKGZsaXBNb2RlID09IE5lZWRzRmxpcCk7CiAgICAgICAgIAogICAgICAgICBj
aGFyKiBzdGFydE9mTGFzdENlbGwgPSBzdGF0aWNfY2FzdDxjaGFyKj4oY2VsbEFsaWduKGJsb2Nr
LmF0b21zKCkgKyBtX2VuZEF0b20gLSAxKSk7CiAgICAgICAgIGNoYXIqIHBheWxvYWRFbmQgPSBz
dGFydE9mTGFzdENlbGwgKyBjZWxsU2l6ZSgpOwpAQCAtMTI0LDcgKzEwNiwxMCBAQCBGcmVlTGlz
dCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgICAgIGNoYXIqIHBheWxvYWRC
ZWdpbiA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oYmxvY2suYXRvbXMoKSArIGZpcnN0QXRvbSgpKTsK
ICAgICAgICAgaWYgKHNjcmliYmxlTW9kZSA9PSBTY3JpYmJsZSkKICAgICAgICAgICAgIHNjcmli
YmxlKHBheWxvYWRCZWdpbiwgcGF5bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7Ci0gICAgICAgIG1f
c3RhdGUgPSAoKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpID8gRnJlZUxpc3RlZCA6IE1h
cmtlZCk7CisgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAg
ICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYWxs
b2NhdG9yLT5zZXRJc0VtcHR5KHRoaXMsIHRydWUpOwogICAgICAgICBGcmVlTGlzdCByZXN1bHQg
PSBGcmVlTGlzdDo6YnVtcChwYXlsb2FkRW5kLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsK
ICAgICAgICAgaWYgKGZhbHNlKQogICAgICAgICAgICAgZGF0YUxvZygiUXVpY2tseSBzd2VwdCBi
bG9jayAiLCBSYXdQb2ludGVyKHRoaXMpLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplKCks
ICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJcbiIpOwpA
QCAtMTM2LDE1ICsxMjEsMTggQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lh
bGl6ZQogICAgIC8vIG9yZGVyIG9mIHRoZSBmcmVlIGxpc3QuCiAgICAgRnJlZUNlbGwqIGhlYWQg
PSAwOwogICAgIHNpemVfdCBjb3VudCA9IDA7CisgICAgYm9vbCBpc0VtcHR5ID0gdHJ1ZTsKICAg
ICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9t
c1BlckNlbGwpIHsKLSAgICAgICAgaWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkCi0gICAgICAgICAg
ICAmJiAoYmxvY2subV9tYXJrcy5nZXQoaSkKLSAgICAgICAgICAgICAgICB8fCAobmV3bHlBbGxv
Y2F0ZWRNb2RlID09IEhhc05ld2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChp
KSkpKQorICAgICAgICBpZiAoZW1wdHlNb2RlID09IE5vdEVtcHR5CisgICAgICAgICAgICAmJiAo
KGZsaXBNb2RlID09IERvZXNOb3ROZWVkRmxpcCAmJiBibG9jay5tX21hcmtzLmdldChpKSkKKyAg
ICAgICAgICAgICAgICB8fCAobmV3bHlBbGxvY2F0ZWRNb2RlID09IEhhc05ld2x5QWxsb2NhdGVk
ICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChpKSkpKSB7CisgICAgICAgICAgICBpc0VtcHR5ID0g
ZmFsc2U7CiAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICB9CisgICAgICAgIAogICAg
ICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmJs
b2NrLmF0b21zKClbaV0pOwogCi0gICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgPT0gTmVlZHNE
ZXN0cnVjdGlvbiAmJiBibG9ja1N0YXRlICE9IE5ldykKKyAgICAgICAgaWYgKGRlc3RydWN0aW9u
TW9kZSA9PSBOZWVkc0Rlc3RydWN0aW9uICYmIGVtcHR5TW9kZSA9PSBOb3RFbXB0eSkKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpLT5jYWxsRGVzdHJ1Y3Rvcigqdm0oKSk7
CiAKICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKQEAgLTE2Myw3
ICsxNTEsMTAgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAg
ICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKIAogICAgIEZyZWVMaXN0IHJlc3VsdCA9
IEZyZWVMaXN0OjpsaXN0KGhlYWQsIGNvdW50ICogY2VsbFNpemUoKSk7Ci0gICAgbV9zdGF0ZSA9
IChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0ID8gRnJlZUxpc3RlZCA6IE1hcmtlZCk7Cisg
ICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgIHNldElzRnJlZUxp
c3RlZCgpOworICAgIGVsc2UgaWYgKGlzRW1wdHkpCisgICAgICAgIG1fYWxsb2NhdG9yLT5zZXRJ
c0VtcHR5KHRoaXMsIHRydWUpOwogICAgIGlmIChmYWxzZSkKICAgICAgICAgZGF0YUxvZygiU2xv
d2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIoJmJsb2NrKSwgIiB3aXRoIGNlbGwgc2l6ZSAi
LCBjZWxsU2l6ZSgpLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcmVz
dWx0LCAiXG4iKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTcxLDE1ICsxNjIsMjAgQEAgRnJl
ZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogCiBGcmVlTGlzdCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpzd2VlcChTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIGZsaXBJZk5l
Y2Vzc2FyeSgpOworICAgIG1fYWxsb2NhdG9yLT5zZXRJc1Vuc3dlcHQodGhpcywgZmFsc2UpOwog
ICAgIAotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7Ci0KICAgICBt
X3dlYWtTZXQuc3dlZXAoKTsKIAogICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmIG1f
YXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKQogICAgICAg
ICByZXR1cm4gRnJlZUxpc3QoKTsKIAorICAgIGlmIChVTkxJS0VMWShtX2lzRnJlZUxpc3RlZCkp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7
CisgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoIW1f
YWxsb2NhdG9yLT5pc0FsbG9jYXRlZCh0aGlzKSk7CisgICAgCiAgICAgaWYgKG1fYXR0cmlidXRl
cy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uKQogICAgICAgICByZXR1cm4gc3dlZXBI
ZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8TmVlZHNEZXN0cnVjdGlvbj4oc3dlZXBNb2RlKTsKICAg
ICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGU8RG9lc05vdE5lZWREZXN0cnVj
dGlvbj4oc3dlZXBNb2RlKTsKQEAgLTE4OSw0NyArMTg1LDU5IEBAIHRlbXBsYXRlPERlc3RydWN0
aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3
ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7CiAgICAg
aWYgKHNjcmliYmxlRnJlZUNlbGxzKCkpCi0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVj
dFN0YXRlQW5kU3dlZXBNb2RlPGRlc3RydWN0aW9uTW9kZSwgU2NyaWJibGU+KHN3ZWVwTW9kZSk7
Ci0gICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3RhdGVBbmRTd2VlcE1vZGU8ZGVzdHJ1Y3Rp
b25Nb2RlLCBEb250U2NyaWJibGU+KHN3ZWVwTW9kZSk7CisgICAgICAgIHJldHVybiBzd2VlcEhl
bHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlPihzd2VlcE1vZGUp
OworICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEVtcHR5TW9kZTxkZXN0cnVjdGlvbk1vZGUs
IERvbnRTY3JpYmJsZT4oc3dlZXBNb2RlKTsKIH0KIAogdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2Rl
IGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmli
YmxlTW9kZT4KLUZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0
U3RhdGVBbmRTd2VlcE1vZGUoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKK0ZyZWVMaXN0IE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVwTW9kZSBzd2VlcE1v
ZGUpCiB7Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBOZXc6Ci0gICAgICAgIEFT
U0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIHNwZWNp
YWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJi
bGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPigpOwotICAgIGNhc2UgRnJlZUxpc3Rl
ZDoKLSAgICAgICAgLy8gSGFwcGVucyB3aGVuIGEgYmxvY2sgdHJhbnNpdGlvbnMgdG8gZnVsbHkg
YWxsb2NhdGVkLgotICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7
Ci0gICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwotICAgIGNhc2UgQWxsb2NhdGVkOgotICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gRnJlZUxpc3Qo
KTsKLSAgICBjYXNlIE1hcmtlZDoKLSAgICAgICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAg
ICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAg
ICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVj
dGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KCkKLSAgICAgICAgICAg
ICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAg
ICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0
cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oKQot
ICAgICAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwgZGVz
dHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gRnJlZUxpc3QoKTsKKyAgICAvLyBJdCdzIG5vdCBvYnZpb3VzLCBidXQgdGhpcyBp
cyB0aGUgb25seSB3YXkgdG8ga25vdyBpZiB0aGUgYmxvY2sgaXMgZW1wdHkuIEl0J3MgdGhlIG9u
bHkKKyAgICAvLyBiaXQgdGhhdCBjYXB0dXJlcyB0aGVzZSBjYXZlYXRzOgorICAgIC8vIC0gSXQn
cyB0cnVlIHdoZW4gdGhlIGJsb2NrIGlzIGZyZXNobHkgYWxsb2NhdGVkLgorICAgIC8vIC0gSXQn
cyB0cnVlIGlmIHRoZSBibG9jayBoYWQgYmVlbiBzd2VwdCBpbiB0aGUgcGFzdCwgYWxsIGRlc3Ry
dWN0b3JzIHdlcmUgY2FsbGVkLCBhbmQgdGhhdAorICAgIC8vICAgc3dlZXAgcHJvdmVkIHRoYXQg
dGhlIGJsb2NrIGlzIGVtcHR5LgorICAgIC8vIC0gSXQncyBmYWxzZSBpZiB0aGVyZSBhcmUgYW55
IGRlc3RydWN0b3JzIHRoYXQgbmVlZCB0byBiZSBjYWxsZWQsIGV2ZW4gaWYgdGhlIGJsb2NrIGhh
cyBubworICAgIC8vICAgbGl2ZSBvYmplY3RzLgorICAgIGlmIChtX2FsbG9jYXRvci0+aXNFbXB0
eSh0aGlzKSkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0
ZWQ8SXNFbXB0eSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGU+KHN3ZWVwTW9kZSk7Cisg
ICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQ8Tm90RW1wdHksIGRl
c3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlPihzd2VlcE1vZGUpOworfQorCit0ZW1wbGF0ZTxN
YXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUg
ZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJi
bGVNb2RlPgorRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RI
YXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgc3dlZXBNb2RlKQoreworICAgIGlmIChtX25ld2x5
QWxsb2NhdGVkKQorICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1w
dHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+
KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5
TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxv
Y2F0ZWQ+KHN3ZWVwTW9kZSk7Cit9CisKK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVt
cHR5TW9kZSBlbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGU+CitGcmVlTGlzdCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZShTd2VlcE1vZGUg
c3dlZXBNb2RlKQoreworICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAg
ICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3ZWVwVG9G
cmVlTGlzdCwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9k
ZT4oKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZTxlbXB0eU1vZGUsIFN3
ZWVwT25seSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9k
ZT4oKTsKK30KKwordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5
TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgRGVzdHJ1Y3Rp
b25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2Rl
IHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5l
d2x5QWxsb2NhdGVkTW9kZT4KK0ZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVs
cGVyU2VsZWN0RmxpcE1vZGUoKQoreworICAgIGlmIChuZWVkc0ZsaXAoKSkKKyAgICAgICAgcmV0
dXJuIHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBzd2VlcE1vZGUsIGRlc3RydWN0aW9uTW9k
ZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGUsIE5lZWRzRmxpcD4oKTsKKyAgICBy
ZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxlbXB0eU1vZGUsIHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25N
b2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZSwgRG9lc05vdE5lZWRGbGlwPigp
OwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnVuc3dlZXBXaXRoTm9OZXdseUFsbG9j
YXRlZCgpCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgCi0gICAgSEVBUF9MT0dfQkxP
Q0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChtX3N0
YXRlID09IEZyZWVMaXN0ZWQpOwotICAgIG1fc3RhdGUgPSBNYXJrZWQ7CisgICAgUkVMRUFTRV9B
U1NFUlQobV9pc0ZyZWVMaXN0ZWQpOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7Cit9CisK
K3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c2V0SXNGcmVlTGlzdGVkKCkKK3sKKyAgICBtX2Fs
bG9jYXRvci0+c2V0SXNFbXB0eSh0aGlzLCBmYWxzZSk7CisgICAgbV9pc0ZyZWVMaXN0ZWQgPSB0
cnVlOwogfQogCiBjbGFzcyBTZXROZXdseUFsbG9jYXRlZEZ1bmN0b3IgOiBwdWJsaWMgTWFya2Vk
QmxvY2s6OlZvaWRGdW5jdG9yIHsKQEAgLTI1MiwyNiArMjYwLDE3IEBAIHByaXZhdGU6CiAKIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRnJlZUxpc3QmIGZy
ZWVMaXN0KQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NU
QVRFX1RSQU5TSVRJT04odGhpcyk7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBkYXRhTG9nKFJh
d1BvaW50ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nIVxu
Iik7CisgICAgQVNTRVJUKCFhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOwogCi0gICAg
aWYgKG1fc3RhdGUgPT0gTWFya2VkKSB7Ci0gICAgICAgIC8vIElmIHRoZSBibG9jayBpcyBpbiB0
aGUgTWFya2VkIHN0YXRlIHRoZW4gd2Uga25vdyB0aGF0IG9uZSBvZiB0aGVzZQotICAgICAgICAv
LyBjb25kaXRpb25zIGhvbGRzOgotICAgICAgICAvLwotICAgICAgICAvLyAtIEl0IHdhcyBub3Qg
dXNlZCBmb3IgYWxsb2NhdGlvbiBkdXJpbmcgdGhlIHByZXZpb3VzIGFsbG9jYXRpb24gY3ljbGUu
Ci0gICAgICAgIC8vICAgSXQgbWF5IGhhdmUgZGVhZCBvYmplY3RzLCBhbmQgd2Ugb25seSBrbm93
IHRoZW0gdG8gYmUgZGVhZCBieSB0aGUKLSAgICAgICAgLy8gICBmYWN0IHRoYXQgdGhlaXIgbWFy
ayBiaXRzIGFyZSB1bnNldC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gLSBTb21lb25lIGhhZCBh
bHJlYWR5IGRvbmUgc3RvcEFsbG9jYXRpbmcoKSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBvZgotICAg
ICAgICAvLyAgIGhlYXAgaXRlcmF0aW9uLCBhbmQgdGhleSBoYWQgYWxyZWFkeSAKLSAgICAgICAg
Ly8gSGVuY2UgaWYgdGhlIGJsb2NrIGlzIE1hcmtlZCB3ZSBuZWVkIHRvIGxlYXZlIGl0IE1hcmtl
ZC4KKyAgICBpZiAoIWlzRnJlZUxpc3RlZCgpKSB7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhh
dCB3ZSBlaXRoZXIgZGlkbid0IHVzZSB0aGlzIGJsb2NrIGF0IGFsbCBmb3IgYWxsb2NhdGlvbiBz
aW5jZSBsYXN0IEdDLAorICAgICAgICAvLyBvciBzb21lb25lIGhhZCBhbHJlYWR5IGRvbmUgc3Rv
cEFsbG9jYXRpbmcoKSBiZWZvcmUuCiAgICAgICAgIEFTU0VSVChmcmVlTGlzdC5hbGxvY2F0aW9u
V2lsbEZhaWwoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgQVNTRVJUKG1f
c3RhdGUgPT0gRnJlZUxpc3RlZCk7Ci0gICAgCiAgICAgLy8gUm9sbCBiYWNrIHRvIGEgY29oZXJl
bnQgc3RhdGUgZm9yIEhlYXAgaW50cm9zcGVjdGlvbi4gQ2VsbHMgbmV3bHkKICAgICAvLyBhbGxv
Y2F0ZWQgZnJvbSBvdXIgZnJlZSBsaXN0IGFyZSBub3QgY3VycmVudGx5IG1hcmtlZCwgc28gd2Ug
bmVlZCBhbm90aGVyCiAgICAgLy8gd2F5IHRvIHRlbGwgd2hhdCdzIGxpdmUgdnMgZGVhZC4gCkBA
IC0yOTAsMTEgKzI4OSwxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0
aW5nCiAgICAgICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVkKGNlbGwpOwogICAgICAgICB9KTsK
ICAgICAKLSAgICBtX3N0YXRlID0gTWFya2VkOworICAgIG1faXNGcmVlTGlzdGVkID0gZmFsc2U7
CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQog
eworICAgIGFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlzLCBmYWxzZSk7CiAgICAgbV9i
bG9jay0+Y2xlYXJNYXJrcygpOwogICAgIG1fd2Vha1NldC5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgp
OwogCkBAIC0zMDQsMTQgKzMwNCwxMSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RD
aGFuY2VUb0ZpCiAKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRp
bmcoKQogewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRF
X1RSQU5TSVRJT04odGhpcyk7Ci0KLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBNYXJrZWQpOworICAg
IEFTU0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKKyAgICBBU1NFUlQoIWlz
RnJlZUxpc3RlZCgpKTsKIAogICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAv
LyBXZSBkaWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAuIFRo
YXQgbWVhbnMgd2Ugd2VyZSBhbHJlYWR5IE1hcmtlZAotICAgICAgICAvLyB3aGVuIHdlIGxhc3Qg
c3RvcHBlZCBhbGxvY2F0aW9uLCBzbyByZXR1cm4gYW4gZW1wdHkgZnJlZSBsaXN0IGFuZCBzdGF5
IGluIHRoZSBNYXJrZWQgc3RhdGUuCisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFscmVh
ZHkgZXhoYXVzdGVkIHRoZSBibG9jayB3aGVuIHdlIHN0b3BwZWQgYWxsb2NhdGlvbi4KICAgICAg
ICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAgICAgfQogCkBAIC0zNDUsNDAgKzM0MiwyOCBAQCB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hGcmVlQ2VsCiAgICAgfQogfQogCi12b2lkIE1h
cmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnkoKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSh2bSgp
LT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnkoKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5
KCk7Ci19Ci0KLXZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeVNsb3coKQotewotICAg
IEFTU0VSVChuZWVkc0ZsaXAoKSk7Ci0gICAgQVNTRVJUKCF2bSgpLT5oZWFwLm9iamVjdFNwYWNl
KCkuaXNNYXJraW5nKCkpOwotICAgIGNsZWFyTWFya3MoKTsKLX0KLQotdm9pZCBNYXJrZWRCbG9j
azo6ZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZ1Nsb3coKQordm9pZCBNYXJrZWRCbG9jazo6
YWJvdXRUb01hcmtTbG93KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIEFTU0VSVCh2
bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOwogICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7Ci0gICAgaWYgKG5lZWRzRmxpcCgpKQotICAgICAgICBjbGVhck1hcmtzKCk7
CisgICAgaWYgKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpIHsKKyAgICAgICAgY2xlYXJNYXJrcyho
ZWFwVmVyc2lvbik7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMg
dG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCisgICAgICAgIGhhbmRsZSgpLmFsbG9j
YXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1
ZSk7CisgICAgfQogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKIHsKKyAgICBj
bGVhck1hcmtzKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpOworfQorCit2b2lk
IE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQorewogICAg
IG1fbWFya3MuY2xlYXJBbGwoKTsKICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIC8vIFRo
aXMgd2lsbCBiZWNvbWUgdHJ1ZSBhdCB0aGUgZW5kIG9mIHRoZSBtYXJrIHBoYXNlLiBXZSBzZXQg
aXQgbm93IHRvCi0gICAgLy8gYXZvaWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4KLSAg
ICBoYW5kbGUoKS5tX3N0YXRlID0gTWFya2VkOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7
Ci0gICAgbV92ZXJzaW9uID0gdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKKyAg
ICBtX3ZlcnNpb24gPSBoZWFwVmVyc2lvbjsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAg
LTM5OCwzMSArMzgzLDM4IEBAIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKCkK
ICAgICByZXR1cm4gbV9ibG9jay0+bmVlZHNGbGlwKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6d2lsbFJlbW92ZUJsb2NrKCkKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKGNv
bnN0IHZvaWQqIHApCiB7Ci0gICAgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgcmV0dXJuIGlzTWFy
a2VkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIHApOwogfQogCi12b2lkIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCgpCitib29sIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkK
IHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFO
U0lUSU9OKHRoaXMpOwotICAgIAotICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOwor
ICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLnZlcnNpb24oKSwgY2VsbCk7Cit9CisKK2Jvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gaXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNl
bGwpOworfQogCi0gICAgbV9zdGF0ZSA9IEFsbG9jYXRlZDsKK3ZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6ZGlkQ29uc3VtZUZyZWVMaXN0KCkKK3sKKyAgICBpZiAoZmFsc2UpCisgICAgICAgIGRh
dGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3Vt
ZUZyZWVMaXN0IVxuIik7CisgICAgQVNTRVJUKGlzRnJlZUxpc3RlZCgpKTsKKyAgICBtX2lzRnJl
ZUxpc3RlZCA9IGZhbHNlOworICAgIGFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlzLCB0
cnVlKTsKIH0KIAogc2l6ZV90IE1hcmtlZEJsb2NrOjptYXJrQ291bnQoKQogewotICAgIGZsaXBJ
Zk5lY2Vzc2FyeSgpOwotICAgIHJldHVybiBtX21hcmtzLmNvdW50KCk7CisgICAgcmV0dXJuIG5l
ZWRzRmxpcCgpID8gMCA6IG1fbWFya3MuY291bnQoKTsKIH0KIAogYm9vbCBNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0VtcHR5KCkKIHsKLSAgICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4g
bV9zdGF0ZSA9PSBNYXJrZWQgJiYgIWJsb2NrKCkuaGFzQW55TWFya2VkKCkgJiYgbV93ZWFrU2V0
LmlzRW1wdHkoKSAmJiAoIW1fbmV3bHlBbGxvY2F0ZWQgfHwgbV9uZXdseUFsbG9jYXRlZC0+aXNF
bXB0eSgpKTsKKyAgICByZXR1cm4gbV9hbGxvY2F0b3ItPmlzRW1wdHkodGhpcyk7CiB9CiAKIHZv
aWQgTWFya2VkQmxvY2s6OmNsZWFySGFzQW55TWFya2VkKCkKQEAgLTQzMiwyOSArNDI0LDc4IEBA
IHZvaWQgTWFya2VkQmxvY2s6OmNsZWFySGFzQW55TWFya2VkKCkKIAogdm9pZCBNYXJrZWRCbG9j
azo6bm90ZU1hcmtlZFNsb3coKQogewotICAgIGhhbmRsZSgpLm1fYWxsb2NhdG9yLT5yZXRpcmUo
JmhhbmRsZSgpKTsKKyAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hlY2tJ
c01hcmtpbmdSZXRpcmVkKCZoYW5kbGUoKSwgdHJ1ZSk7Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG9jYXRvcigpCit7CisgICAgaWYgKCFtX2FsbG9jYXRvcikK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fYWxsb2NhdG9yLT5yZW1vdmVCbG9jayh0aGlz
KTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcihNYXJr
ZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChtX2lu
ZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVCgh
bV9hbGxvY2F0b3IpOworICAgIAorICAgIG1faW5kZXggPSBpbmRleDsKKyAgICBtX2FsbG9jYXRv
ciA9IGFsbG9jYXRvcjsKKyAgICAKKyAgICBzaXplX3QgY2VsbFNpemUgPSBhbGxvY2F0b3ItPmNl
bGxTaXplKCk7CisgICAgbV9hdG9tc1BlckNlbGwgPSAoY2VsbFNpemUgKyBhdG9tU2l6ZSAtIDEp
IC8gYXRvbVNpemU7CisgICAgbV9lbmRBdG9tID0gYXRvbXNQZXJCbG9jayAtIG1fYXRvbXNQZXJD
ZWxsICsgMTsKKyAgICAKKyAgICBtX2F0dHJpYnV0ZXMgPSBhbGxvY2F0b3ItPmF0dHJpYnV0ZXMo
KTsKKworICAgIGlmIChtX2F0dHJpYnV0ZXMuY2VsbEtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24pOworICAgIAorICAgIGJsb2NrKCkubV9uZWVkc0Rlc3RydWN0aW9u
ID0gbmVlZHNEZXN0cnVjdGlvbigpOworICAgIAorICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sg
PSBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gY2VsbFNpemU7CisgICAgZG91YmxlIG1hcmtD
b3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxz
UGVyQmxvY2spOworICAgIAorICAgIC8vIFRoZSBtYXJrIGNvdW50IGJpYXMgc2hvdWxkIGJlIGNv
bWZvcnRhYmx5IHdpdGhpbiB0aGlzIHJhbmdlLgorICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtDb3Vu
dEJpYXMgPiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MTZfdD46
Om1pbigpKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA8IDApOworICAgIAor
ICAgIC8vIFRoaXMgbWVhbnMgd2UgaGF2ZW4ndCBtYXJrZWQgYW55dGhpbmcgeWV0LgorICAgIGJs
b2NrKCkubV9iaWFzZWRNYXJrQ291bnQgPSBibG9jaygpLm1fbWFya0NvdW50QmlhcyA9IHN0YXRp
Y19jYXN0PGludDE2X3Q+KG1hcmtDb3VudEJpYXMpOworfQorCit2b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKQoreworICAgIEFTU0VSVChtX2luZGV4ICE9
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIEFTU0VSVChtX2FsbG9j
YXRvcik7CisgICAgCisgICAgbV9pbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCk7CisgICAgbV9hbGxvY2F0b3IgPSBudWxscHRyOworfQorCitib29sIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gaXNM
aXZlKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOworfQorCitib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKK3sKKyAgICBy
ZXR1cm4gaXNMaXZlQ2VsbCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBwKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewogCi11c2luZyBuYW1l
c3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTWFya2Vk
QmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSkKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBtb2RlKQogewot
ICAgIHN3aXRjaCAoYmxvY2tTdGF0ZSkgewotICAgIGNhc2UgTWFya2VkQmxvY2s6Ok5ldzoKLSAg
ICAgICAgb3V0LnByaW50KCJOZXciKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFya2Vk
QmxvY2s6OkZyZWVMaXN0ZWQ6Ci0gICAgICAgIG91dC5wcmludCgiRnJlZUxpc3RlZCIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXJrZWRCbG9jazo6QWxsb2NhdGVkOgotICAgICAgICBv
dXQucHJpbnQoIkFsbG9jYXRlZCIpOworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgSlND
OjpNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcFRvRnJlZUxpc3Q6CisgICAgICAgIG91dC5wcmlu
dCgiU3dlZXBUb0ZyZWVMaXN0Iik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcmtlZEJs
b2NrOjpNYXJrZWQ6Ci0gICAgICAgIG91dC5wcmludCgiTWFya2VkIik7CisgICAgY2FzZSBKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwT25seToKKyAgICAgICAgb3V0LnByaW50KCJTd2Vl
cE9ubHkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwyMCArNDQsNiBAQCBjbGFzcyBNYXJrZWRBbGxv
Y2F0b3I7CiB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogdHlwZWRlZiB1aW50MzJfdCBIZWFwVmVy
c2lvbjsKIAotLy8gU2V0IHRvIGxvZyBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBibG9ja3MuCi0jZGVm
aW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05TIDAKLQotI2lmIEhFQVBfTE9HX0JM
T0NLX1NUQVRFX1RSQU5TSVRJT05TCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT04oaGFuZGxlKSBkbyB7ICAgICAgICAgICAgXAotICAgICAgICBkYXRhTG9nRiggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICIl
czolZCAlczogYmxvY2sgJXMgPSAlcCwgJWRcbiIsICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXywgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICAgICAgI2hhbmRsZSwgJihoYW5kbGUpLT5ibG9jaygpLCAoaGFuZGxlKS0+
bV9zdGF0ZSk7ICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLSNlbHNlCi0jZGVmaW5lIEhFQVBf
TE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oaGFuZGxlKSAoKHZvaWQpMCkKLSNlbmRpZgotCiAv
LyBBIG1hcmtlZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25lZCBjb250YWluZXIgZm9yIGhlYXAtYWxs
b2NhdGVkIG9iamVjdHMuCiAvLyBPYmplY3RzIGFyZSBhbGxvY2F0ZWQgd2l0aGluIGNlbGxzIG9m
IHRoZSBtYXJrZWQgYmxvY2suIEZvciBhIGdpdmVuCiAvLyBtYXJrZWQgYmxvY2ssIGFsbCBjZWxs
cyBoYXZlIHRoZSBzYW1lIHNpemUuIE9iamVjdHMgc21hbGxlciB0aGFuIHRoZQpAQCAtNzYsOCAr
NjIsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIYW5kbGU7CiBwdWJs
aWM6Ci0gICAgZW51bSBCbG9ja1N0YXRlIDogdWludDhfdCB7IE5ldywgRnJlZUxpc3RlZCwgQWxs
b2NhdGVkLCBNYXJrZWQgfTsKLSAgICAgICAgCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9t
U2l6ZSA9IDE2OyAvLyBieXRlcwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0g
MTYgKiBLQjsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrTWFzayA9IH4oYmxvY2tTaXpl
IC0gMSk7IC8vIGJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgpAQCAtODYsMTIgKzcw
LDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpY19hc3NlcnQoIShNYXJrZWRCbG9jazo6YXRvbVNp
emUgJiAoTWFya2VkQmxvY2s6OmF0b21TaXplIC0gMSkpLCAiTWFya2VkQmxvY2s6OmF0b21TaXpl
IG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7CiAgICAgc3RhdGljX2Fzc2VydCghKE1hcmtlZEJs
b2NrOjpibG9ja1NpemUgJiAoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSAtIDEpKSwgIk1hcmtlZEJs
b2NrOjpibG9ja1NpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4iKTsKLQorICAgIAogICAgIHN0
cnVjdCBWb2lkRnVuY3RvciB7CiAgICAgICAgIHR5cGVkZWYgdm9pZCBSZXR1cm5UeXBlOwogICAg
ICAgICB2b2lkIHJldHVyblZhbHVlKCkgeyB9CiAgICAgfTsKLQorICAgIAogICAgIGNsYXNzIENv
dW50RnVuY3RvciB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIHNpemVfdCBSZXR1cm5U
eXBlOwpAQCAtMTA2LDEwICs5MCw5IEBAIHB1YmxpYzoKICAgICAgICAgbXV0YWJsZSBSZXR1cm5U
eXBlIG1fY291bnQ7CiAgICAgfTsKICAgICAgICAgCi0gICAgY2xhc3MgSGFuZGxlIDogcHVibGlj
IEJhc2ljUmF3U2VudGluZWxOb2RlPEhhbmRsZT4geworICAgIGNsYXNzIEhhbmRsZSB7CiAgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgRG91Ymx5TGlua2VkTGlzdE5vZGU8SGFu
ZGxlPjsKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgc3RydWN0IFZlcmlm
eU1hcmtlZDsKQEAgLTEzMCw2ICsxMTMsMTUgQEAgcHVibGljOgogICAgICAgICBWTSogdm0oKSBj
b25zdDsKICAgICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCisgICAgICAg
IC8vIFN3ZWVwaW5nIGVuc3VyZXMgdGhhdCBkZXN0cnVjdG9ycyBnZXQgY2FsbGVkIGFuZCByZW1v
dmVzIHRoZSBibG9jayBmcm9tIHRoZSB1bnN3ZXB0CisgICAgICAgIC8vIHNldC4gU3dlZXBpbmcg
dG8gZnJlZSBsaXN0IGFsc28gcmVtb3ZlcyB0aGUgYmxvY2sgZnJvbSB0aGUgZW1wdHkgc2V0LCBp
ZiBpdCB3YXMgaW4gdGhhdAorICAgICAgICAvLyBzZXQuIFN3ZWVwaW5nIHdpdGggU3dlZXBPbmx5
IG1heSBhZGQgdGhpcyBibG9jayB0byB0aGUgZW1wdHkgc2V0LCBpZiB0aGUgYmxvY2sgaXMgZm91
bmQKKyAgICAgICAgLy8gdG8gYmUgZW1wdHkuCisgICAgICAgIC8vCisgICAgICAgIC8vIE5vdGUg
dGhhdCB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZW1wdHkgYml0IHJlZmxlY3RzIHJl
YWxpdHkuIElmIGl0J3Mgbm90IHNldAorICAgICAgICAvLyBhbmQgdGhlIGJsb2NrIGlzIGZyZXNo
bHkgY3JlYXRlZCwgdGhlbiB3ZSdsbCBtYWtlIHRoZSBtaXN0YWtlIG9mIHJ1bm5pbmcgZGVzdHJ1
Y3RvcnMgaW4KKyAgICAgICAgLy8gdGhlIGJsb2NrLiBJZiBpdCdzIG5vdCBzZXQgYW5kIHRoZSBi
bG9jayBoYXMgbm90aGluZyBtYXJrZWQsIHRoZW4gd2UnbGwgbWFrZSB0aGUKKyAgICAgICAgLy8g
bWlzdGFrZSBvZiBtYWtpbmcgYSBwb3AgZnJlZWxpc3QgcmF0aGVyIHRoYW4gYSBidW1wIGZyZWVs
aXN0LgogICAgICAgICBlbnVtIFN3ZWVwTW9kZSB7IFN3ZWVwT25seSwgU3dlZXBUb0ZyZWVMaXN0
IH07CiAgICAgICAgIEZyZWVMaXN0IHN3ZWVwKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAg
ICAgIApAQCAtMTUzLDggKzE0NSw2IEBAIHB1YmxpYzoKICAgICAgICAgLy8gYW5kIHdhcyBzdWNj
ZXNzZnVsbHkgY2xlYXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICAgICAgICBib29sIGNsZWFy
TmV3bHlBbGxvY2F0ZWQoKTsKICAgICAgICAgICAgIAotICAgICAgICB2b2lkIGZsaXBGb3JFZGVu
Q29sbGVjdGlvbigpOwotICAgICAgICAgICAgCiAgICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOwog
ICAgICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAg
ICAgICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0OwpAQCAtMTY0LDkgKzE1
NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBtYXJrQ291bnQoKTsKICAgICAgICAgc2l6
ZV90IHNpemUoKTsKICAgICAgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmUoSGVh
cFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CisgICAgICAgIGlubGluZSBib29sIGlzTGl2ZUNl
bGwoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKKwogICAgICAgICBib29sIGlzTGl2ZShjb25z
dCBIZWFwQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCopOworCiAg
ICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKik7Cisg
ICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uLCBjb25zdCBI
ZWFwQ2VsbCopOwogICAgICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNOZXdseUFsbG9jYXRlZChj
b25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgc2V0TmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCop
OwpAQCAtMTc0LDMxICsxNjksMjUgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgYm9vbCBo
YXNBbnlOZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9uZXdseUFsbG9jYXRlZDsg
fQogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBbGxvY2F0ZWQoKSBjb25zdDsKLSAgICAg
ICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0OwotICAgICAgICBib29sIGlzRnJlZUxpc3RlZCgpIGNv
bnN0OwotICAgICAgICBib29sIG5lZWRzU3dlZXBpbmcoKSBjb25zdDsKLSAgICAgICAgdm9pZCB3
aWxsUmVtb3ZlQmxvY2soKTsKLQogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4g
SXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwo
Y29uc3QgRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRl
cmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hM
aXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9y
Jik7CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBuZWVkc0ZsaXAoKTsKLSAgICAgICAgICAg
IAotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24p
OwotICAgICAgICB2b2lkIGZsaXBJZk5lY2Vzc2FyeShIZWFwVmVyc2lvbik7Ci0gICAgICAgIHZv
aWQgZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICAKKyAgICAgICAgCiAgICAgICAgIHZv
aWQgYXNzZXJ0RmxpcHBlZCgpOwogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNPbkJsb2Nr
c1RvU3dlZXAoKSBjb25zdCB7IHJldHVybiBtX2lzT25CbG9ja3NUb1N3ZWVwOyB9Ci0gICAgICAg
IHZvaWQgc2V0SXNPbkJsb2Nrc1RvU3dlZXAoYm9vbCB2YWx1ZSkgeyBtX2lzT25CbG9ja3NUb1N3
ZWVwID0gdmFsdWU7IH0KKyAgICAgICAgYm9vbCBpc0ZyZWVMaXN0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzRnJlZUxpc3RlZDsgfQorICAgICAgICAKKyAgICAgICAgc2l6ZV90IGluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCByZW1vdmVGcm9t
QWxsb2NhdG9yKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGRpZEFkZFRvQWxsb2NhdG9yKE1h
cmtlZEFsbG9jYXRvciosIHNpemVfdCBpbmRleCk7CisgICAgICAgIHZvaWQgZGlkUmVtb3ZlRnJv
bUFsbG9jYXRvcigpOwogICAgICAgICAKLSAgICAgICAgQmxvY2tTdGF0ZSBzdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEhhbmRsZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBjb25zdCBB
bGxvY2F0b3JBdHRyaWJ1dGVzJiwgdm9pZCopOworICAgICAgICBIYW5kbGUoSGVhcCYsIHZvaWQq
KTsKICAgICAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGU+CiAgICAg
ICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSA9IFN3
ZWVwT25seSk7CkBAIC0yMDYsMzUgKzE5NSw1MCBAQCBwdWJsaWM6CiAgICAgICAgIGVudW0gU2Ny
aWJibGVNb2RlIHsgRG9udFNjcmliYmxlLCBTY3JpYmJsZSB9OwogICAgICAgICAgICAgCiAgICAg
ICAgIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlPgotICAgICAgICBGcmVl
TGlzdCBzd2VlcEhlbHBlclNlbGVjdFN0YXRlQW5kU3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVw
T25seSk7CisgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0RW1wdHlNb2RlKFN3ZWVw
TW9kZSA9IFN3ZWVwT25seSk7CiAgICAgICAgICAgICAKKyAgICAgICAgZW51bSBFbXB0eU1vZGUg
eyBJc0VtcHR5LCBOb3RFbXB0eSB9OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8RW1wdHlN
b2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dl
ZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwor
ICAgICAgICAKICAgICAgICAgZW51bSBOZXdseUFsbG9jYXRlZE1vZGUgeyBIYXNOZXdseUFsbG9j
YXRlZCwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCB9OwotICAgICAgICAgICAgCi0gICAgICAg
IHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJs
ZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVt
cHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9k
ZT4KKyAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGUoU3dlZXBNb2Rl
ID0gU3dlZXBPbmx5KTsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgU3dl
ZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2Rl
PgorICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlKCk7CisgICAgICAg
IAorICAgICAgICBlbnVtIEZsaXBNb2RlIHsgTmVlZHNGbGlwLCBEb2VzTm90TmVlZEZsaXAgfTsK
KyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBEZXN0cnVj
dGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0ZWRNb2RlLCBGbGlwTW9kZT4KICAg
ICAgICAgRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAgICAgCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgICAgIHZvaWQgZm9yRWFjaEZyZWVDZWxsKGNv
bnN0IEZyZWVMaXN0JiwgY29uc3QgRnVuYyYpOwotICAgICAgICAgICAgCisgICAgICAgIAorICAg
ICAgICB2b2lkIHNldElzRnJlZUxpc3RlZCgpOworICAgICAgICAKICAgICAgICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogbV9wcmV2OwogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX25leHQ7
CiAgICAgICAgICAgICAKLSAgICAgICAgc2l6ZV90IG1fYXRvbXNQZXJDZWxsOwotICAgICAgICBz
aXplX3QgbV9lbmRBdG9tOyAvLyBUaGlzIGlzIGEgZnV6enkgZW5kLiBBbHdheXMgdGVzdCBmb3Ig
PCBtX2VuZEF0b20uCisgICAgICAgIHNpemVfdCBtX2F0b21zUGVyQ2VsbCB7IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKKyAgICAgICAgc2l6ZV90IG1fZW5kQXRvbSB7IHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsgLy8gVGhpcyBpcyBhIGZ1enp5IGVu
ZC4gQWx3YXlzIHRlc3QgZm9yIDwgbV9lbmRBdG9tLgogICAgICAgICAgICAgCiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4gbV9uZXdseUFsbG9jYXRl
ZDsKICAgICAgICAgICAgIAogICAgICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIG1fYXR0cmlidXRl
czsKLSAgICAgICAgQmxvY2tTdGF0ZSBtX3N0YXRlOwotICAgICAgICBib29sIG1faXNPbkJsb2Nr
c1RvU3dlZXAgeyBmYWxzZSB9OworICAgICAgICBib29sIG1faXNGcmVlTGlzdGVkIHsgZmFsc2Ug
fTsKICAgICAgICAgICAgIAotICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwor
ICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yIHsgbnVsbHB0ciB9OworICAgICAg
ICBzaXplX3QgbV9pbmRleCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsK
ICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CiAgICAgICAgICAgICAKLSAgICAgICAgTWFya2Vk
QmxvY2sqIG1fYmxvY2s7CisgICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrIHsgbnVsbHB0ciB9
OwogICAgIH07CiAgICAgICAgIAotICAgIHN0YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlD
cmVhdGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgY29uc3QgQWxs
b2NhdG9yQXR0cmlidXRlcyYpOworICAgIHN0YXRpYyBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlD
cmVhdGUoSGVhcCYpOwogICAgICAgICAKICAgICBIYW5kbGUmIGhhbmRsZSgpOwogICAgICAgICAK
QEAgLTI0OCwzNCArMjUyLDM1IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbWFya0NvdW50KCk7CiAK
ICAgICBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKKyAgICBib29sIGlzTWFya2VkKEhlYXBW
ZXJzaW9uLCBjb25zdCB2b2lkKik7CisgICAgYm9vbCBpc01hcmtlZENvbmN1cnJlbnRseShIZWFw
VmVyc2lvbiwgY29uc3Qgdm9pZCopOwogICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2
b2lkKik7CiAgICAgICAgIAogICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0
IEhlYXBDZWxsKik7CisgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNp
b24sIGNvbnN0IEhlYXBDZWxsKik7CiAgICAgCi0gICAgYm9vbCBpc01hcmtlZER1cmluZ1dlYWtW
aXNpdGluZyhIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKLQogICAgIGJvb2wgaXNBdG9t
KGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAg
ICAgCisgICAgCiAgICAgc2l6ZV90IGNlbGxTaXplKCk7CiAgICAgY29uc3QgQWxsb2NhdG9yQXR0
cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0OwotCisgICAgCiAgICAgYm9vbCBoYXNBbnlNYXJr
ZWQoKSBjb25zdDsKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKICAgICAgICAgCiAgICAgV2Vha1Nl
dCYgd2Vha1NldCgpOwotCisgICAgCiAgICAgYm9vbCBuZWVkc0ZsaXAoSGVhcFZlcnNpb24pOwog
ICAgIGJvb2wgbmVlZHNGbGlwKCk7Ci0gICAgICAgIAotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5
RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbik7Ci0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnkoSGVh
cFZlcnNpb24pOwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5KCk7CisgICAgCisgICAgdm9pZCBh
Ym91dFRvTWFyayhIZWFwVmVyc2lvbik7CiAgICAgICAgIAogICAgIHZvaWQgYXNzZXJ0RmxpcHBl
ZCgpOwogICAgICAgICAKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX25lZWRzRGVzdHJ1Y3Rpb247IH0KLSAgICAgICAgCisgICAgCisgICAgaW5saW5lIHZvaWQg
cmVzZXRWZXJzaW9uKCk7CisgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
YXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CiAKQEAgLTI4NCw5ICsyODksOSBAQCBw
cml2YXRlOgogICAgIE1hcmtlZEJsb2NrKFZNJiwgSGFuZGxlJik7CiAgICAgQXRvbSogYXRvbXMo
KTsKICAgICAgICAgCi0gICAgdm9pZCBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xvdygp
OwotICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5U2xvdygpOworICAgIHZvaWQgYWJvdXRUb01hcmtT
bG93KEhlYXBWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFyTWFya3MoKTsKKyAgICB2b2lkIGNsZWFy
TWFya3MoSGVhcFZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJIYXNBbnlNYXJrZWQoKTsKICAgICAK
ICAgICB2b2lkIG5vdGVNYXJrZWRTbG93KCk7CkBAIC00NjksNDAgKzQ3NCwxMyBAQCBpbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6bmVlZHNGbGlwKEhlYXBWCiAgICAgcmV0dXJuIGhlYXBWZXJzaW9u
ICE9IG1fdmVyc2lvbjsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vz
c2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjph
Ym91dFRvTWFyayhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKIHsKICAgICBpZiAoVU5MSUtFTFko
bmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkpCi0gICAgICAgIGZsaXBJZk5lY2Vzc2FyeVNsb3coKTsK
LX0KLQotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtp
bmcoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgaWYgKFVOTElLRUxZKG5lZWRzRmxp
cChoZWFwVmVyc2lvbikpKQotICAgICAgICBmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nU2xv
dygpOworICAgICAgICBhYm91dFRvTWFya1Nsb3coaGVhcFZlcnNpb24pOwogICAgIFdURjo6bG9h
ZExvYWRGZW5jZSgpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmbGlw
SWZOZWNlc3NhcnkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCi17Ci0gICAgYmxvY2soKS5mbGlw
SWZOZWNlc3NhcnkoaGVhcFZlcnNpb24pOwotfQotCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpmbGlwSWZOZWNlc3NhcnlEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIGhlYXBWZXJz
aW9uKQotewotICAgIGJsb2NrKCkuZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhoZWFwVmVy
c2lvbik7Ci19Ci0KLWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZsaXBGb3JFZGVu
Q29sbGVjdGlvbigpCi17Ci0gICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgICAgICAKLSAgICBIRUFQ
X0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotICAgIAotICAgIEFTU0VSVChtX3N0
YXRlICE9IE5ldyAmJiBtX3N0YXRlICE9IEZyZWVMaXN0ZWQpOwotICAgIAotICAgIG1fc3RhdGUg
PSBNYXJrZWQ7Ci19Ci0KICNpZiBBU1NFUlRfRElTQUJMRUQKIGlubGluZSB2b2lkIE1hcmtlZEJs
b2NrOjphc3NlcnRGbGlwcGVkKCkKIHsKQEAgLTUxNCw5ICs0OTIsMTYgQEAgaW5saW5lIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6YXNzZXJ0RgogICAgIGJsb2NrKCkuYXNzZXJ0RmxpcHBlZCgp
OwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkK
K2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChIZWFwVmVyc2lvbiBoZWFwVmVyc2lv
biwgY29uc3Qgdm9pZCogcCkKIHsKLSAgICBhc3NlcnRGbGlwcGVkKCk7CisgICAgcmV0dXJuIG5l
ZWRzRmxpcChoZWFwVmVyc2lvbikgPyBmYWxzZSA6IG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkp
OworfQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50bHkoSGVh
cFZlcnNpb24gaGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqIHApCit7CisgICAgaWYgKG5lZWRzRmxp
cChoZWFwVmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBXVEY6OmxvYWRMb2Fk
RmVuY2UoKTsKICAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7CiB9CiAKQEAg
LTU1MCw0MyArNTM1LDE0IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFy
TmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKK2lubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFw
VmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICBBU1NFUlQobV9z
dGF0ZSA9PSBNYXJrZWQpOwotICAgIHJldHVybiBtX2Jsb2NrLT5pc01hcmtlZChjZWxsKSB8fCAo
bV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKKyAgICByZXR1cm4g
bV9ibG9jay0+aXNNYXJrZWQodmVyc2lvbiwgY2VsbCkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYg
aXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNp
b24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIEFTU0VSVChtX2hhbmRsZS5tX3N0YXRl
ID09IE1hcmtlZCk7Ci0gICAgcmV0dXJuIGlzTWFya2VkKGNlbGwpIHx8IChtX2hhbmRsZS5tX25l
d2x5QWxsb2NhdGVkICYmIG1faGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwotfQotCi1p
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWREdXJpbmdXZWFrVmlzaXRpbmcoSGVhcFZl
cnNpb24gaGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQotewotICAgIGlmIChuZWVk
c0ZsaXAoaGVhcFZlcnNpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlz
TWFya2VkKGNlbGwpOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xp
dmUoY29uc3QgSGVhcENlbGwqIGNlbGwpCi17Ci0gICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgIHN3
aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgQWxsb2NhdGVkOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIGNhc2UgTWFya2VkOgotICAgICAgICByZXR1cm4gaXNNYXJrZWRPck5ld2x5QWxs
b2NhdGVkKGNlbGwpOwotCi0gICAgY2FzZSBOZXc6Ci0gICAgY2FzZSBGcmVlTGlzdGVkOgotICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIGlzTWFya2VkKHZlcnNpb24sIGNlbGwpIHx8IChtX2hhbmRsZS5t
X25ld2x5QWxsb2NhdGVkICYmIG1faGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQog
CiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCkBAIC02MDMs
MTMgKzU1OSw2IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm8KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNM
aXZlQ2VsbChjb25zdCB2b2lkKiBwKQotewotICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxjb25z
dCBIZWFwQ2VsbCo+KHApKTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CiBpbmxp
bmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hDZWxsKGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CkBAIC02MjIsNjIgKzU3MSw2IEBAIGlubGluZSBJdGVyYXRp
b25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmQKICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgSXRlcmF0
aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQotewotICAgIGZsaXBJZk5lY2Vzc2FyeSgpOwotICAgIEhlYXBDZWxsOjpL
aW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IGZp
cnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAg
IEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9j
ay0+YXRvbXMoKVtpXSk7Ci0gICAgICAgIGlmICghaXNMaXZlKGNlbGwpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsK
LSAgICB9Ci0gICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdG9yPgotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9j
azo6SGFuZGxlOjpmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAg
ICBmbGlwSWZOZWNlc3NhcnkoKTsKLSAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1
dGVzLmNlbGxLaW5kOwotICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5k
QXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJl
aW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOwotICAg
ICAgICBpZiAoaXNMaXZlKGNlbGwpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
aWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKLSAgICB9Ci0gICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpI
YW5kbGU6Om5lZWRzU3dlZXBpbmcoKSBjb25zdAotewotICAgIGNvbnN0X2Nhc3Q8TWFya2VkQmxv
Y2s6OkhhbmRsZSo+KHRoaXMpLT5mbGlwSWZOZWNlc3NhcnkoKTsKLSAgICByZXR1cm4gbV9zdGF0
ZSA9PSBNYXJrZWQ7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzQWxs
b2NhdGVkKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0
aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gQWxsb2NhdGVk
OwotfQotCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZCgpIGNvbnN0
Ci17Ci0gICAgY29uc3RfY2FzdDxNYXJrZWRCbG9jazo6SGFuZGxlKj4odGhpcyktPmZsaXBJZk5l
Y2Vzc2FyeSgpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZDsKLX0KLQotaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNGcmVlTGlzdGVkKCkgY29uc3QKLXsKLSAgICBjb25z
dF9jYXN0PE1hcmtlZEJsb2NrOjpIYW5kbGUqPih0aGlzKS0+ZmxpcElmTmVjZXNzYXJ5KCk7Ci0g
ICAgcmV0dXJuIG1fc3RhdGUgPT0gRnJlZUxpc3RlZDsKLX0KLQogaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6Omhhc0FueU1hcmtlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmlhc2VkTWFya0Nv
dW50ICE9IG1fbWFya0NvdW50QmlhczsKQEAgLTcxMSw3ICs2MDQsNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxKU0M6Ok1hcmtlCiAgICAgdHlwZWRlZiBNYXJrZWRCbG9ja0hhc2gg
SGFzaDsKIH07CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6Ok1h
cmtlZEJsb2NrOjpCbG9ja1N0YXRlKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSk7CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9ja0lubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTWFya2VkQWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2su
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTGl2ZShIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKK3sKKyAg
ICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoaGFzQW55
TmV3bHlBbGxvY2F0ZWQoKSkpIHsKKyAgICAgICAgaWYgKGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgTWFya2VkQmxvY2sm
IGJsb2NrID0gdGhpcy0+YmxvY2soKTsKKyAgICAKKyAgICBpZiAoYWxsb2NhdG9yKCktPmlzQWxs
b2NhdGVkKHRoaXMpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBpZiAoYmxvY2su
bmVlZHNGbGlwKHZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
YmxvY2suaXNNYXJrZWQoY2VsbCk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTGl2ZUNlbGwoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKK3sKKyAg
ICBpZiAoIW1fYmxvY2stPmlzQXRvbShwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBpc0xpdmUodmVyc2lvbiwgc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBN
YXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKK3sKKyAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOwor
ICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0
b21zUGVyQ2VsbCkgeworICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOworICAgICAgICBpZiAoIWlzTGl2
ZShjZWxsKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChmdW5jdG9yKGNl
bGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkRvbmU7CisgICAgfQorICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KK2lubGluZSBJdGVy
YXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fYXR0cmlidXRl
cy5jZWxsS2luZDsKKyAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0
b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKKyAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWlu
dGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZtX2Jsb2NrLT5hdG9tcygpW2ldKTsKKyAgICAg
ICAgaWYgKGlzTGl2ZShjZWxsKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlm
IChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CisgICAgfQorICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOworfQorCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6cmVz
ZXRWZXJzaW9uKCkKK3sKKyAgICBtX3ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0
LDcgQEAKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGlu
ZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlIDx3dGYvTGlzdER1bXAu
aD4KIApAQCAtMTk1LDYgKzE5NiwxOSBAQCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCog
aGVhcCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CiAgICAgICAgIH0pOworICAgIAorICAgIE1hcmtlZEFsbG9jYXRvciogcHJldmlv
dXMgPSBudWxscHRyOworICAgIGZvckVhY2hTdWJzcGFjZSgKKyAgICAgICAgWyZdIChTdWJzcGFj
ZSYgc3Vic3BhY2UsIEFsbG9jYXRvckF0dHJpYnV0ZXMpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Cisg
ICAgICAgICAgICBmb3IgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yIDogc3Vic3BhY2UuYmFn
T2ZBbGxvY2F0b3JzKSB7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLT5zZXROZXh0QWxsb2Nh
dG9yKHByZXZpb3VzKTsKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGFsbG9jYXRvcjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0
YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAgIG1fZmlyc3RBbGxvY2F0b3IgPSBwcmV2
aW91czsKKyAgICBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IHByZXZpb3VzOwogfQog
CiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKCkKQEAgLTIyMiwxNSArMjM2LDIxIEBAIHZvaWQg
TWFya2VkU3BhY2U6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIAogdm9pZCogTWFya2VkU3BhY2U6
OmFsbG9jYXRlKFN1YnNwYWNlJiBzdWJzcGFjZSwgc2l6ZV90IGJ5dGVzKQogewotICAgIGlmIChN
YXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0ZXMp
KQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOworICAgIGlmIChNYXJrZWRB
bGxvY2F0b3IqIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0ZXMpKSB7Cisg
ICAgICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAgICAgICAgLy9k
YXRhTG9nKCJBbGxvY2F0ZWQgIiwgUmF3UG9pbnRlcihyZXN1bHQpLCAiXG4iKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgcmV0dXJuIGFsbG9jYXRlTGFyZ2Uoc3Vic3BhY2Us
IGJ5dGVzKTsKIH0KIAogdm9pZCogTWFya2VkU3BhY2U6OnRyeUFsbG9jYXRlKFN1YnNwYWNlJiBz
dWJzcGFjZSwgc2l6ZV90IGJ5dGVzKQogewotICAgIGlmIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9j
YXRvciA9IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0ZXMpKQotICAgICAgICByZXR1cm4gYWxs
b2NhdG9yLT50cnlBbGxvY2F0ZSgpOworICAgIGlmIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
ciA9IGFsbG9jYXRvckZvcihzdWJzcGFjZSwgYnl0ZXMpKSB7CisgICAgICAgIHZvaWQqIHJlc3Vs
dCA9IGFsbG9jYXRvci0+dHJ5QWxsb2NhdGUoKTsKKyAgICAgICAgLy9kYXRhTG9nKCJUcnktYWxs
b2NhdGVkICIsIFJhd1BvaW50ZXIocmVzdWx0KSwgIlxuIik7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQogICAgIHJldHVybiB0cnlBbGxvY2F0ZUxhcmdlKHN1YnNwYWNlLCBieXRlcyk7
CiB9CiAKQEAgLTI1OSw5ICsyNzksMTAgQEAgdm9pZCogTWFya2VkU3BhY2U6OnRyeUFsbG9jYXRl
TGFyZ2UoU3Vicwogdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXAoKQogewogICAgIG1faGVhcC0+c3dl
ZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAgICBmb3JFYWNoQmxvY2soCi0gICAgICAg
IFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgIGJsb2NrLT5z
d2VlcCgpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2Nh
dG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxvY2F0
b3Iuc3dlZXAoKTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OwogICAgICAgICB9KTsKIH0KIApAQCAtMjg0LDMzICszMDUsMjMgQEAgdm9pZCBNYXJrZWRTcGFj
ZTo6c3dlZXBMYXJnZUFsbG9jYXRpb25zKAogICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlP
ZmZzZXQgPSBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOwogfQogCi12b2lkIE1hcmtlZFNwYWNl
Ojp6b21iaWZ5U3dlZXAoKQotewotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBk
YXRhTG9nKCJab21iaWZ5aW5nIHN3ZWVwLi4uIik7Ci0gICAgbV9oZWFwLT5zd2VlcGVyKCktPndp
bGxGaW5pc2hTd2VlcGluZygpOwotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZdIChNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVkc1N3
ZWVwaW5nKCkpCi0gICAgICAgICAgICAgICAgYmxvY2stPnN3ZWVwKCk7Ci0gICAgICAgIH0pOwot
fQotCi12b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMoKQordm9pZCBNYXJrZWRTcGFj
ZTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewogICAgIGZvckVhY2hBbGxvY2F0b3IoCiAgICAg
ICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7
Ci0gICAgICAgICAgICBhbGxvY2F0b3IucmVzZXQoKTsKKyAgICAgICAgICAgIGFsbG9jYXRvci5w
cmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1
czo6Q29udGludWU7CiAgICAgICAgIH0pOwogCi0gICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5j
bGVhcigpOwogICAgIG1fYWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9uZXdBY3RpdmVXZWFrU2V0
cyk7CisgICAgCiAgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5D
b2xsZWN0aW9uKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0Rm9yU3dl
ZXAgPSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UKICAgICAgICAg
bV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gMDsKICAgICBtX2xhcmdl
QWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0ID0gbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsKKyAg
ICAKKyAgICBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbiA9IG1fZmlyc3RBbGxvY2F0b3I7
CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OnZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNpdG9yJiBo
ZWFwUm9vdFZpc2l0b3IpCkBAIC00MTAsMTEgKzQyMSwxMSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpm
cmVlT3JTaHJpbmtCbG9jayhNYXJrCiAKIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiB7Ci0g
ICAgZm9yRWFjaEJsb2NrKAotICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KSB7Ci0gICAgICAgICAgICBmcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CisgICAgZm9yRWFjaEFs
bG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRl
cmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5zaHJpbmsoKTsKKyAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKLSAgICAv
LyBGb3IgTGFyZ2VBbGxvY2F0aW9ucywgd2UgZG8gdGhlIG1vcmFsIGVxdWl2YWxlbnQgaW4gc3dl
ZXBMYXJnZUFsbG9jYXRpb25zKCkuCiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlB
bGxvY2F0ZWQoKQpAQCAtNDI5LDU3ICs0NDAsNjEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJO
ZXdseUFsbG9jYXRlZCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sYXJnZUFsbG9jYXRpb25z
T2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFsbG9jYXRlZCgp
OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgWyZd
IChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgQVNTRVJUKCFibG9j
ay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBmb3IgKExhcmdl
QWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKLSAgICAgICAgQVNT
RVJUKCFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwotI2VuZGlmIC8vICFBU1NFUlRf
RElTQUJMRUQKLX0KLQotI2lmbmRlZiBOREVCVUcgCi1zdHJ1Y3QgVmVyaWZ5TWFya2VkIDogTWFy
a2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsgCi0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGJsb2NrLT5uZWVkc0Zs
aXAoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChibG9jay0+bV9zdGF0
ZSkgewotICAgICAgICBjYXNlIE1hcmtlZEJsb2NrOjpNYXJrZWQ6Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICB9CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAg
Zm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykgeworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssICFibG9jay0+Y2xlYXJO
ZXdseUFsbG9jYXRlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgZm9y
IChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCisgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5pc05ld2x5QWxs
b2NhdGVkKCkpOwogICAgIH0KLX07IAotI2VuZGlmIAorfQogCi12b2lkIE1hcmtlZFNwYWNlOjpm
bGlwKCkKK3ZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVh
cC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+ZmxpcEZvckVkZW5Db2xs
ZWN0aW9uKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24g
PSBtX3ZlcnNpb24gKyAxOwotICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24gPT0gaW5p
dGlhbFZlcnNpb24pKSB7Ci0gICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3Vu
ZCEgV2UgaGFuZGxlIHRoaXMgYnkgZmxpcHBpbmcgYWxsIGJsb2Nrcy4gVGhpcyBoYXBwZW5zCi0g
ICAgICAgICAgICAvLyBzdXBlciByYXJlbHksIHByb2JhYmx5IG5ldmVyIGZvciBtb3N0IHVzZXJz
LgorICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlv
bikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChNYXJrZWRB
bGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAg
ICBhbGxvY2F0b3IuYmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgIG1fdmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fdmVyc2lvbik7CisgICAgICAgIAor
ICAgICAgICBpZiAoVU5MSUtFTFkobV92ZXJzaW9uID09IGluaXRpYWxWZXJzaW9uKSkgeworICAg
ICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5
IHNldHRpbmcgYWxsIGJsb2NrIHZlcnNpb25zIHRvIG51bGwuCiAgICAgICAgICAgICBmb3JFYWNo
QmxvY2soCiAgICAgICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5mbGlwSWZOZWNlc3NhcnkoKTsKKyAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0VmVyc2lvbigpOwogICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIG1fdmVyc2lvbiA9IG5leHRWZXJzaW9uOyAv
LyBIZW5jZWZvcnRoLCBmbGlwSWZOZWNlc3NhcnkoKSB3aWxsIHRyaWdnZXIgb24gYWxsIGJsb2Nr
cy4KKyAgICAgICAgCiAgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDog
bV9sYXJnZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAg
IH0KIAotI2lmbmRlZiBOREVCVUcKLSAgICBWZXJpZnlNYXJrZWQgdmVyaWZ5RnVuY3RvcjsKLSAg
ICBmb3JFYWNoQmxvY2sodmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBpZiAoIUFTU0VSVF9E
SVNBQkxFRCkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5uZWVk
c0ZsaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFT
U0VSVCghYmxvY2stPmlzRnJlZUxpc3RlZCgpKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAg
ICAKKyAgICBtX2lzTWFya2luZyA9IHRydWU7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmVuZE1h
cmtpbmcoKQoreworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxs
b2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBhbGxv
Y2F0b3IuZW5kTWFya2luZygpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CisgICAgICAgIH0pOworICAgIAorICAgIG1faXNNYXJraW5nID0gZmFsc2U7CiB9
CiAKIHZvaWQgTWFya2VkU3BhY2U6OndpbGxTdGFydEl0ZXJhdGluZygpCkBAIC01NDAsMTkgKzU1
NSw2NiBAQCB2b2lkIE1hcmtlZFNwYWNlOjphZGRBY3RpdmVXZWFrU2V0KFdlYWtTCiAKIHZvaWQg
TWFya2VkU3BhY2U6OmRpZEFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewor
ICAgIC8vIFdBUk5JTkc6IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBibG9jayBpcyBm
dWxseSBpbml0aWFsaXplZC4gVGhlIGJsb2NrIHdpbGwgbm90IGtub3cKKyAgICAvLyBpdHMgY2Vs
bFNpemUoKSBvciBhdHRyaWJ1dGVzKCkuIFRoZSBsYXR0ZXIgaW1wbGllcyB0aGF0IHlvdSBjYW4n
dCBhc2sgdGhpbmdzIGxpa2UKKyAgICAvLyBuZWVkc0Rlc3RydWN0aW9uKCkuCiAgICAgbV9jYXBh
Y2l0eSArPSBNYXJrZWRCbG9jazo6YmxvY2tTaXplOwogICAgIG1fYmxvY2tzLmFkZCgmYmxvY2st
PmJsb2NrKCkpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFy
a2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiB7Ci0gICAgYmxvY2stPmFzc2VydEZsaXBwZWQoKTsK
LSAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLmFwcGVuZChibG9jayk7Ci0gICAgCiAgICAgaWYg
KGJsb2NrLT53ZWFrU2V0KCkuaXNPbkxpc3QoKSkgewogICAgICAgICBibG9jay0+d2Vha1NldCgp
LnJlbW92ZSgpOwogICAgICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmFwcGVuZCgmYmxvY2stPndl
YWtTZXQoKSk7CiAgICAgfQogfQogCitNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRTcGFjZTo6
ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkKK3sKKyAgICBmb3IgKDsgbV9hbGxvY2F0b3JGb3JFbXB0
eUFsbG9jYXRpb247IG1fYWxsb2NhdG9yRm9yRW1wdHlBbGxvY2F0aW9uID0gbV9hbGxvY2F0b3JG
b3JFbXB0eUFsbG9jYXRpb24tPm5leHRBbGxvY2F0b3IoKSkgeworICAgICAgICBpZiAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2FsbG9jYXRvckZvckVtcHR5QWxsb2NhdGlvbi0+Zmlu
ZEVtcHR5QmxvY2tUb1N0ZWFsKCkpCisgICAgICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQor
ICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1hcmtlZFNwYWNlOjpzbmFwc2hvdFVuc3dl
cHQoKQoreworICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29s
bGVjdGlvbikgeworICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICAgICAgWyZdIChN
YXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAg
ICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAg
ICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAg
ICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMg
eworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVj
dGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OworICAgICAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIE1hcmtlZFNwYWNlOjphc3NlcnRO
b1Vuc3dlcHQoKQoreworICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCisgICAgICAgIHJldHVybjsK
KyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxs
b2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgYWxsb2NhdG9yLmFzc2Vy
dE5vVW5zd2VwdCgpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGlu
dWU7CisgICAgICAgIH0pOworfQorCit2b2lkIE1hcmtlZFNwYWNlOjpkdW1wQml0cyhQcmludFN0
cmVhbSYgb3V0KQoreworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBv
dXQucHJpbnQoIkJpdHMgZm9yICIsIGFsbG9jYXRvciwgIjpcbiIpOworICAgICAgICAgICAgYWxs
b2NhdG9yLmR1bXBCaXRzKG91dCk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKKyAgICAgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDYxNTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw3ICs2NSwxNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IG51bVNpemVDbGFzc2VzID0gbGFyZ2VDdXRvZmYgLyBzaXplU3RlcDsKICAgICAKLSAgICBzdGF0
aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSA0MjsgIC8vIFRoaXMgY2FuIGJl
IGFueSB2YWx1ZSwgaW5jbHVkaW5nIHJhbmRvbSBnYXJiYWdlLCBzbyBsb25nIGFzIGl0J3MgY29u
c2lzdGVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLgorICAgIHN0YXRpYyBjb25z
dCBIZWFwVmVyc2lvbiBudWxsVmVyc2lvbiA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9mIGZyZXNobHkg
YWxsb2NhdGVkIGJsb2Nrcy4KKyAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZl
cnNpb24gPSAxOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4K
KyAgICAKKyAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQor
ICAgIHsKKyAgICAgICAgdmVyc2lvbisrOworICAgICAgICBpZiAodmVyc2lvbiA9PSBudWxsVmVy
c2lvbikKKyAgICAgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgcmV0dXJuIHZlcnNpb247Cisg
ICAgfQogICAgIAogICAgIHN0YXRpYyBzaXplX3Qgc2l6ZUNsYXNzVG9JbmRleChzaXplX3Qgc2l6
ZSkKICAgICB7CkBAIC0xMTQsNyArMTIzLDcgQEAgcHVibGljOgogICAgIFN1YnNwYWNlJiBzdWJz
cGFjZUZvck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbm9ybWFsU3BhY2U7
IH0KICAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCkgeyByZXR1cm4gbV9h
dXhpbGlhcnlTcGFjZTsgfQogICAgIAotICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CisgICAg
dm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogCiAgICAgdm9pZCB2aXNpdFdlYWtTZXRzKEhl
YXBSb290VmlzaXRvciYpOwogICAgIHZvaWQgcmVhcFdlYWtTZXRzKCk7CkBAIC0xNDQsMTEgKzE1
MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFya2VkQmxvY2s6
OkhhbmRsZSopOwogICAgIHZvaWQgZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5k
bGUqKTsKIAotICAgIHZvaWQgZmxpcCgpOworICAgIHZvaWQgYmVnaW5NYXJraW5nKCk7CisgICAg
dm9pZCBlbmRNYXJraW5nKCk7CisgICAgdm9pZCBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICB2b2lk
IGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgICB2b2lkIHN3ZWVwKCk7CiAgICAgdm9pZCBzd2Vl
cExhcmdlQWxsb2NhdGlvbnMoKTsKLSAgICB2b2lkIHpvbWJpZnlTd2VlcCgpOworICAgIHZvaWQg
YXNzZXJ0Tm9VbnN3ZXB0KCk7CiAgICAgc2l6ZV90IG9iamVjdENvdW50KCk7CiAgICAgc2l6ZV90
IHNpemUoKTsKICAgICBzaXplX3QgY2FwYWNpdHkoKTsKQEAgLTE1Nyw4ICsxNjgsNiBAQCBwdWJs
aWM6CiAgICAgCiAgICAgSGVhcFZlcnNpb24gdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVy
c2lvbjsgfQogCi0gICAgY29uc3QgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiYgYmxvY2tz
V2l0aE5ld09iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOyB9
Ci0gICAgCiAgICAgY29uc3QgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQg
bGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxs
b2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc09m
ZnNldEZvclRoaXNDb2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25z
T2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IH0KQEAgLTE2OSwxMyArMTc4LDE2IEBAIHB1YmxpYzoK
ICAgICBMYXJnZUFsbG9jYXRpb24qKiBsYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25F
bmQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVu
ZDsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUo
KSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemU7
IH0KICAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIGZpcnN0QWxsb2NhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdEFsbG9jYXRvcjsgfQorICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
Rm9yRW1wdHlBbGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0b3JGb3JFbXB0eUFs
bG9jYXRpb247IH0KKyAgICAKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kRW1wdHlCbG9j
a1RvU3RlYWwoKTsKKyAgICAKICAgICAvLyBXaGVuIHRoaXMgaXMgdHJ1ZSBpdCBtZWFucyB0aGF0
IHdlIGhhdmUgZmxpcHBlZCBidXQgdGhlIG1hcmsgYml0cyBoYXZlbid0IGNvbnZlcmdlZCB5ZXQu
CiAgICAgYm9vbCBpc01hcmtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzTWFya2luZzsgfQogICAg
IAotICAgIC8vIEZJWE1FOiBBZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYxNTgxLCBNYXJrZWRTcGFjZSB3aWxsIGNvbnRyb2wgdGhpcwotICAgIC8vIGZsYWcg
ZGlyZWN0bHkuCi0gICAgdm9pZCBzZXRJc01hcmtpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzTWFya2lu
ZyA9IHZhbHVlOyB9Ci0KKyAgICB2b2lkIGR1bXBCaXRzKFByaW50U3RyZWFtJiA9IFdURjo6ZGF0
YUZpbGUoKSk7CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTE5MCw4ICsyMDIsOCBAQCBwcml2
YXRlOgogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZVN1YnNwYWNlKFN1YnNwYWNlJik7CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3Qg
RnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaFN1
YnNwYWNlKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdm9pZCBmb3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVu
Y3RvciYpOwogICAgIAogICAgIHZvaWQgYWRkQWN0aXZlV2Vha1NldChXZWFrU2V0Kik7CiAKQEAg
LTIwNSw3ICsyMTcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0l0ZXJhdGluZzsKICAgICBi
b29sIG1faXNNYXJraW5nIHsgZmFsc2UgfTsKICAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsK
LSAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tzV2l0aE5ld09iamVjdHM7
CiAgICAgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+IG1fbGFyZ2VBbGxvY2F0aW9uczsKICAgICB1
bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0IHsgMCB9OwogICAgIHVuc2ln
bmVkIG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uIHsgMCB9OwpAQCAt
MjE1LDQwICsyMjYsMTEgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxsb2NhdGlv
bnNGb3JUaGlzQ29sbGVjdGlvblNpemUgeyAwIH07CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdl
YWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdlYWtTZXQ+PiBtX2FjdGl2ZVdlYWtTZXRzOwog
ICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFr
U2V0Pj4gbV9uZXdBY3RpdmVXZWFrU2V0czsKKyAgICAKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1f
Zmlyc3RBbGxvY2F0b3IgeyBudWxscHRyIH07CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9j
YXRvckZvckVtcHR5QWxsb2NhdGlvbiB7IG51bGxwdHIgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVh
cEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBBU1NFUlQo
aXNJdGVyYXRpbmcoKSk7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5l
bmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNo
TGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1f
bGFyZ2VBbGxvY2F0aW9ucykgewotICAgICAgICBpZiAoYWxsb2NhdGlvbi0+aXNMaXZlKCkpIHsK
LSAgICAgICAgICAgIGlmIChmdW5jdG9yKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+
YXR0cmlidXRlcygpLmNlbGxLaW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJ
dGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgQVNTRVJUKGlz
SXRlcmF0aW5nKCkpOwotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5k
KCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+aGFuZGxlKCkuZm9yRWFjaERl
YWRDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xh
cmdlQWxsb2NhdGlvbnMpIHsKLSAgICAgICAgaWYgKCFhbGxvY2F0aW9uLT5pc0xpdmUoKSkgewot
ICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5h
dHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIGlubGluZSBNYXJrZWRBbGxv
Y2F0b3IqIE1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3IoU3Vic3BhY2UmIHNwYWNlLCBzaXplX3Qg
Ynl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKQEAgLTMwNCwxNSArMjg2LDEwIEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCAKIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPgogdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogewotICAgIGZvckVhY2hTdWJzcGFjZSgKLSAgICAgICAgWyZdIChTdWJzcGFj
ZSYgc3Vic3BhY2UsIEFsbG9jYXRvckF0dHJpYnV0ZXMpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Ci0g
ICAgICAgICAgICBmb3IgKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yIDogc3Vic3BhY2UuYmFn
T2ZBbGxvY2F0b3JzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZ1bmN0b3IoKmFsbG9jYXRvcikg
PT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpEb25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLSAgICAgICAgfSk7CisgICAg
Zm9yIChNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IG1fZmlyc3RBbGxvY2F0b3I7IGFsbG9j
YXRvcjsgYWxsb2NhdG9yID0gYWxsb2NhdG9yLT5uZXh0QWxsb2NhdG9yKCkpIHsKKyAgICAgICAg
aWYgKGZ1bmN0b3IoKmFsbG9jYXRvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorCituYW1l
c3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFy
a2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQoreworICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKKyAgICBCbG9ja0l0
ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRv
ciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAg
ICBpZiAoKCppdCktPmhhbmRsZSgpLmZvckVhY2hMaXZlQ2VsbChmdW5jdG9yKSA9PSBJdGVyYXRp
b25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoTGFy
Z2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKSB7CisgICAgICAg
IGlmIChhbGxvY2F0aW9uLT5pc0xpdmUoKSkgeworICAgICAgICAgICAgaWYgKGZ1bmN0b3IoYWxs
b2NhdGlvbi0+Y2VsbCgpLCBhbGxvY2F0aW9uLT5hdHRyaWJ1dGVzKCkuY2VsbEtpbmQpID09IEl0
ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtl
ZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKK3sKKyAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7CisgICAgQmxvY2tJdGVy
YXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3Ig
aXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
aWYgKCgqaXQpLT5oYW5kbGUoKS5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKExhcmdl
QWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgeworICAgICAgICBp
ZiAoIWFsbG9jYXRpb24tPmlzTGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoZnVuY3RvcihhbGxv
Y2F0aW9uLT5jZWxsKCksIGFsbG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCkgPT0gSXRl
cmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5
LDYgKzE4OSw4IEBAIHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWEKICAg
ICB2YWxpZGF0ZShjZWxsKTsKICNlbmRpZgogICAgIAorICAgIC8vZGF0YUxvZygiICAgIE1hcmtp
bmcgIiwgUmF3UG9pbnRlcihjZWxsKSwgIlxuIik7CisgICAgCiAgICAgaWYgKGNlbGwtPmlzTGFy
Z2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKGNl
bGwtPmxhcmdlQWxsb2NhdGlvbigpLCBjZWxsKTsKICAgICBlbHNlCkBAIC0xOTgsNyArMjAwLDcg
QEAgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29udGFpbmVyVHlwZT4KIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6c2V0
TWFya2VkQW5kQXBwZW5kVG9NYXJrU3RhY2soQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBKU0Nl
bGwqIGNlbGwpCiB7Ci0gICAgY29udGFpbmVyLmZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmco
bV92ZXJzaW9uKTsKKyAgICBjb250YWluZXIuYWJvdXRUb01hcmsobV92ZXJzaW9uKTsKICAgICAK
ICAgICBpZiAoY29udGFpbmVyLnRlc3RBbmRTZXRNYXJrZWQoY2VsbCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI0NiwxMCArMjQ4LDggQEAgdm9pZCBTbG90VmlzaXRvcjo6bWFya0F1eGlsaWFyeShj
b25zdCB2bwogICAgIAogICAgIEFTU0VSVChjZWxsLT5oZWFwKCkgPT0gaGVhcCgpKTsKICAgICAK
LSAgICBpZiAoSGVhcDo6dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwpKTsKKyAg
ICBpZiAoSGVhcDo6dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGNlbGwpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQogICAgIAogICAgIG5vdGVMaXZlQXV4aWxpYXJ5Q2VsbChjZWxsKTsKIH0K
QEAgLTI5NCw2ICsyOTQsOCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OnZpc2l0
Q2hpCiB7CiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNlbGwpKTsKICAg
ICAKKyAgICAvL2RhdGFMb2coIlZpc2l0aW5nICIsIFJhd1BvaW50ZXIoY2VsbCksICJcbiIpOwor
CiAgICAgU2V0Q3VycmVudENlbGxTY29wZSBjdXJyZW50Q2VsbFNjb3BlKCp0aGlzLCBjZWxsKTsK
ICAgICAKICAgICBtX2N1cnJlbnRPYmplY3RDZWxsU3RhdGVCZWZvcmVWaXNpdGluZyA9IGNlbGwt
PmNlbGxTdGF0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkocmV2aXNpb24g
MjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTIsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpbmNsdWRlICJK
U0V4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yVHJhaXRzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01MSwzMyArNTMsMzMgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwg
dm9pZCogY29udGV4dCA9IDApOworICAgIGlubGluZSBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIq
ID0gMCwgdm9pZCogY29udGV4dCA9IDApOwogCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFs
dWVUYWcgeyBIYXNoVGFibGVEZWxldGVkVmFsdWUgfTsKLSAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3Q7Ci0gICAgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwor
ICAgIGlubGluZSBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CisgICAgaW5s
aW5lIFdlYWsoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKIAotICAgIFdlYWsoV2VhayYmKTsK
KyAgICBpbmxpbmUgV2VhayhXZWFrJiYpOwogCiAgICAgfldlYWsoKQogICAgIHsKICAgICAgICAg
Y2xlYXIoKTsKICAgICB9CiAKLSAgICB2b2lkIHN3YXAoV2VhayYpOworICAgIGlubGluZSB2b2lk
IHN3YXAoV2VhayYpOwogCi0gICAgV2VhayYgb3BlcmF0b3I9KFdlYWsmJik7CisgICAgaW5saW5l
IFdlYWsmIG9wZXJhdG9yPShXZWFrJiYpOwogCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsK
LSAgICBUKiBvcGVyYXRvci0+KCkgY29uc3Q7Ci0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0g
ICAgVCogZ2V0KCkgY29uc3Q7CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7Cisg
ICAgaW5saW5lIFQqIG9wZXJhdG9yLT4oKSBjb25zdDsKKyAgICBpbmxpbmUgVCYgb3BlcmF0b3Iq
KCkgY29uc3Q7CisgICAgaW5saW5lIFQqIGdldCgpIGNvbnN0OwogCi0gICAgYm9vbCB3YXMoVCop
IGNvbnN0OworICAgIGlubGluZSBib29sIHdhcyhUKikgY29uc3Q7CiAKLSAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3Q7CisgICAgaW5saW5lIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdDsKIAotICAgIFdlYWtJbXBsKiBsZWFrSW1wbCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
KyAgICBpbmxpbmUgV2Vha0ltcGwqIGxlYWtJbXBsKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogICAg
IHZvaWQgY2xlYXIoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2ltcGwpCkBAIC04NiwxMSArODgs
MzAgQEAgcHVibGljOgogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFdlYWtJbXBs
KiBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICBzdGF0aWMgaW5saW5lIFdlYWtJbXBsKiBo
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsKIAogICAgIFdlYWtJbXBsKiBtX2ltcGw7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzVmVjdG9y
VHJhaXRzIHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZh
bHNlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpX
ZWFrPFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IHsKKyAgICB0eXBl
ZGVmIEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKKworICAgIHR5cGVkZWYgc3RkOjpudWxscHRy
X3QgRW1wdHlWYWx1ZVR5cGU7CisgICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUo
KSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB0eXBlZGVmIFQqIFBlZWtUeXBlOworICAgIHN0
YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUuZ2V0KCk7IH0KKyAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyBy
ZXR1cm4gUGVla1R5cGUoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAv
LyBXZWFrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAko
cmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2Vha0Jsb2NrOjpz
cGVjaWFsaXplZFZpc2l0KENvbnRhaW4KICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IGNvbnN0IEpTVmFsdWUmIGpzVmFsdWUgPSB3ZWFrSW1wbC0+anNWYWx1ZSgpOwotICAgICAgICBp
ZiAoY29udGFpbmVyLmlzTWFya2VkRHVyaW5nV2Vha1Zpc2l0aW5nKHZlcnNpb24sIGpzVmFsdWUu
YXNDZWxsKCkpKQorICAgICAgICBpZiAoY29udGFpbmVyLmlzTWFya2VkQ29uY3VycmVudGx5KHZl
cnNpb24sIGpzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IAogICAgICAgICBpZiAoIXdlYWtIYW5kbGVPd25lci0+aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSGFuZGxlPFVua25vd24+Ojp3cmFwU2xvdCgmY29uc3RfY2FzdDxKU1ZhbHVlJj4oanNWYWx1
ZSkpLCB3ZWFrSW1wbC0+Y29udGV4dCgpLCB2aXNpdG9yKSkKQEAgLTE0NywxNyArMTQ3LDE0IEBA
IHZvaWQgV2Vha0Jsb2NrOjpyZWFwKCkKICAgICAvLyBJZiB0aGlzIFdlYWtCbG9jayBkb2Vzbid0
IGJlbG9uZyB0byBhIENlbGxDb250YWluZXIsIHdlIHdvbid0IGV2ZW4gYmUgaGVyZS4KICAgICBB
U1NFUlQobV9jb250YWluZXIpOwogICAgIAotICAgIG1fY29udGFpbmVyLmZsaXBJZk5lY2Vzc2Fy
eSgpOwotCi0gICAgLy8gV2Ugb25seSByZWFwIGFmdGVyIG1hcmtpbmcuCi0gICAgQVNTRVJUKG1f
Y29udGFpbmVyLmlzTWFya2VkKCkpOworICAgIEhlYXBWZXJzaW9uIHZlcnNpb24gPSBtX2NvbnRh
aW5lci5oZWFwKCktPm9iamVjdFNwYWNlKCkudmVyc2lvbigpOwogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB3ZWFrSW1wbENvdW50KCk7ICsraSkgewogICAgICAgICBXZWFrSW1wbCogd2Vh
a0ltcGwgPSAmd2Vha0ltcGxzKClbaV07CiAgICAgICAgIGlmICh3ZWFrSW1wbC0+c3RhdGUoKSA+
IFdlYWtJbXBsOjpEZWFkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKG1f
Y29udGFpbmVyLmlzTWFya2VkKHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpKSB7CisgICAg
ICAgIGlmIChtX2NvbnRhaW5lci5pc01hcmtlZCh2ZXJzaW9uLCB3ZWFrSW1wbC0+anNWYWx1ZSgp
LmFzQ2VsbCgpKSkgewogICAgICAgICAgICAgQVNTRVJUKHdlYWtJbXBsLT5zdGF0ZSgpID09IFdl
YWtJbXBsOjpMaXZlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHJldmlzaW9uIDIwNjE1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMiwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJXZWFrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTE0OSwyMyArMTQ4LDQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vh
a0NsZQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNs
YXNzVmVjdG9yVHJhaXRzIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1l
bWNtcCA9IGZhbHNlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFp
dHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8VD4+IHsK
LSAgICB0eXBlZGVmIEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKLQotICAgIHR5cGVkZWYgc3Rk
OjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7Ci0gICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVt
cHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICB0eXBlZGVmIFQqIFBlZWtUeXBl
OwotICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVl
VHlwZSkgeyByZXR1cm4gUGVla1R5cGUoKTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0K
ICNlbmRpZiAvLyBXZWFrSW5saW5lc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
VGh1bmtzLmgJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUg
IlRodW5rR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgIldlYWtIYW5k
bGVPd25lci5oIgotI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSA8dHVwbGU+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBA
CiAjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNYXBJdGVyYXRvclByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNl
SW5saW5lcy5oIgogI2luY2x1ZGUgIk1hdGhPYmplY3QuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2su
aCIKICNpbmNsdWRlICJNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCisj
aW5jbHVkZSAiUHJvdG90eXBlTWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0Lmgi
CiAjaW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24g
MjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb3RvdHlwZU1hcElubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4Nyw3IEBAIHR5
cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYodW5zaWduZWQsIGxhcmdlQWxs
b2NhdGlvbkN1dG9mZiwgMTAwMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGR1
bXBTaXplQ2xhc3NlcywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNl
QnVtcEFsbG9jYXRvciwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihib29sLCBzdGVh
bEVtcHR5QmxvY2tzRnJvbU90aGVyQWxsb2NhdG9ycywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBc
CiAgICAgdihib29sLCBlYWdlcmx5VXBkYXRlVG9wQ2FsbEZyYW1lLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwgdXNlT1NSRW50cnlUb0RGRywgdHJ1ZSwgTm9y
bWFsLCBudWxscHRyKSBcCkBAIC0zMDIsNyArMzAzLDYgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBv
cHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgbnVtYmVyT2ZHQ01hcmtlcnMsIGNvbXB1dGVO
dW1iZXJPZkdDTWFya2Vycyg3KSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwg
b3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2
KGRvdWJsZSwgbWluSGVhcFV0aWxpemF0aW9uLCAwLjgsIE5vcm1hbCwgbnVsbHB0cikgXAotICAg
IHYoZG91YmxlLCBtaW5Db3BpZWRCbG9ja1V0aWxpemF0aW9uLCAwLjksIE5vcm1hbCwgbnVsbHB0
cikgXAogICAgIHYoZG91YmxlLCBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uLCAwLjksIE5vcm1h
bCwgbnVsbHB0cikgXAogICAgIHYodW5zaWduZWQsIHNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcywg
MCwgTm9ybWFsLCAiZm9yY2UgYSBHQyBvbiBldmVyeSBOdGggc2xvdyBwYXRoIGFsbG9jLCB3aGVy
ZSBOIGlzIHNwZWNpZmllZCBieSB0aGlzIG9wdGlvbiIpIFwKICAgICB2KGJvb2wsIGRlZmVyR0NT
aG91bGRDb2xsZWN0V2l0aFByb2JhYmlsaXR5LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ug
cGVyZm9ybSBhIGNvbGxlY3Rpb24gYmFzZWQgb24gZmxpcHBpbmcgYSBjb2luIGFjY29yZGluZyB0
aGUgcHJvYmFiaWxpdHkgaW4gdGhlICdkZWZlckdDUHJvYmFiaWxpdHknIG9wdGlvbiB3aGVuIERl
ZmVyR0MgaXMgZGVzdHJ1Y3RlZC4iKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm90b3R5cGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJQcm90b3R5
cGVNYXBJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAkocmV2aXNpb24gMjA2MTUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgUHJvdG90eXBlTWFwX2gKICNkZWZpbmUgUHJv
dG90eXBlTWFwX2gKIAorI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgorI2luY2x1ZGUgIkpTVHlw
ZUluZm8uaCIKICNpbmNsdWRlICJXZWFrR0NNYXAuaCIKICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUu
aD4KIApAQCAtNDgsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3Ry
dWN0dXJlKiBlbXB0eVN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKEpTT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBjbGVhckVtcHR5T2JqZWN0U3RydWN0dXJlRm9y
UHJvdG90eXBlKEpTT2JqZWN0KiwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgYWRkUHJvdG90eXBlKEpTT2JqZWN0Kik7Ci0gICAgVHJpU3RhdGUg
aXNQcm90b3R5cGUoSlNPYmplY3QqKSBjb25zdDsgLy8gUmV0dXJucyBhIGNvbnNlcnZhdGl2ZSBl
c3RpbWF0ZS4KKyAgICBpbmxpbmUgVHJpU3RhdGUgaXNQcm90b3R5cGUoSlNPYmplY3QqKSBjb25z
dDsgLy8gUmV0dXJucyBhIGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZS4KIAogcHJpdmF0ZToKICAgICBT
dHJ1Y3R1cmUqIGNyZWF0ZUVtcHR5U3RydWN0dXJlKEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0
IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxp
bmVDYXBhY2l0eSk7CkBAIC01OCwxOCArNjAsNiBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZU1h
cCBtX3N0cnVjdHVyZXM7CiB9OwogCi1pbmxpbmUgVHJpU3RhdGUgUHJvdG90eXBlTWFwOjppc1By
b3RvdHlwZShKU09iamVjdCogb2JqZWN0KSBjb25zdAotewotICAgIGlmICghbV9wcm90b3R5cGVz
LmNvbnRhaW5zKG9iamVjdCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOwotCi0gICAg
Ly8gV2Uga25vdyB0aGF0ICdvYmplY3QnIHdhcyB1c2VkIGFzIGEgcHJvdG90eXBlIGF0IG9uZSB0
aW1lLCBzbyBiZQotICAgIC8vIGNvbnNlcnZhdGl2ZSBhbmQgc2F5IHRoYXQgaXQgbWlnaHQgc3Rp
bGwgYmUgc28uIChJdCB3b3VsZCBiZSBleHBlbnNpdmUKLSAgICAvLyB0byBmaW5kIG91dCBmb3Ig
c3VyZSwgYW5kIHdlIGRvbid0IGtub3cgb2YgYW55IGNhc2VzIHdoZXJlIGJlaW5nIHByZWNpc2UK
LSAgICAvLyB3b3VsZCBpbXByb3ZlIHBlcmZvcm1hbmNlLikKLSAgICByZXR1cm4gTWl4ZWRUcmlT
dGF0ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBQcm90b3R5cGVNYXBf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlw
ZU1hcElubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm90b3R5cGVNYXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlByb3RvdHlwZU1hcC5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElu
bGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBUcmlTdGF0ZSBQcm90b3R5cGVN
YXA6OmlzUHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX3By
b3RvdHlwZXMuY29udGFpbnMob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7
CisKKyAgICAvLyBXZSBrbm93IHRoYXQgJ29iamVjdCcgd2FzIHVzZWQgYXMgYSBwcm90b3R5cGUg
YXQgb25lIHRpbWUsIHNvIGJlCisgICAgLy8gY29uc2VydmF0aXZlIGFuZCBzYXkgdGhhdCBpdCBt
aWdodCBzdGlsbCBiZSBzby4gKEl0IHdvdWxkIGJlIGV4cGVuc2l2ZQorICAgIC8vIHRvIGZpbmQg
b3V0IGZvciBzdXJlLCBhbmQgd2UgZG9uJ3Qga25vdyBvZiBhbnkgY2FzZXMgd2hlcmUgYmVpbmcg
cHJlY2lzZQorICAgIC8vIHdvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UuKQorICAgIHJldHVybiBN
aXhlZFRyaVN0YXRlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCShyZXZpc2lvbiAyMDYxNTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiUmVnRXhwS2V5LmgiCiAjaW5jbHVkZSAi
U3Ryb25nLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgotI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAj
aW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJl
dmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAi
TExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFy
a2VkQmxvY2tTZXQuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRl
ICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVk
ZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrR0NNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrR0NNYXAuaAkocmV2aXNpb24gMjA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNyAr
MjcsNiBAQAogI2RlZmluZSBXZWFrR0NNYXBfaAogCiAjaW5jbHVkZSAiV2Vhay5oIgotI2luY2x1
ZGUgIldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC04MSwxOSArODAsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkKLSAgICB7Ci0g
ICAgICAgIGl0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOwotICAgICAgICBpdGVyYXRvciBl
bmQgPSBtX21hcC5lbmQoKTsKLSAgICAgICAgaWYgKGl0ICE9IGVuZCAmJiAhaXQtPnZhbHVlKSAv
LyBGb3VuZCBhIHpvbWJpZSB2YWx1ZS4KLSAgICAgICAgICAgIHJldHVybiBlbmQ7Ci0gICAgICAg
IHJldHVybiBpdDsKLSAgICB9CisgICAgaW5saW5lIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlw
ZSYga2V5KTsKIAotICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2Vha0dDTWFwKj4odGhpcykt
PmZpbmQoa2V5KTsKLSAgICB9CisgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3Qg
S2V5VHlwZSYga2V5KSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAg
ICAgdm9pZCBmb3JFYWNoKEZ1bmN0b3IgZnVuY3RvcikKQEAgLTEwNCwxMCArOTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUm
IGtleSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9tYXAuZW5k
KCk7Ci0gICAgfQorICAgIGlubGluZSBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkg
Y29uc3Q7CiAKICAgICB2b2lkIHBydW5lU3RhbGVFbnRyaWVzKCk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXBJbmxpbmVzLmgJKHJldmlzaW9u
IDIwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJIZWFwSW5saW5l
cy5oIgogI2luY2x1ZGUgIldlYWtHQ01hcC5oIgorI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC00Nyw2ICs0OCwyOCBAQCBpbmxpbmUgV2Vha0dDTWFwPEtl
eUFyZywgVmFsdWVBcmcsIEhhc2hBCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlw
ZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4K
K2lubGluZSB0eXBlbmFtZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5
VHJhaXRzQXJnPjo6aXRlcmF0b3IgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcs
IEtleVRyYWl0c0FyZz46OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQoreworICAgIGl0ZXJhdG9y
IGl0ID0gbV9tYXAuZmluZChrZXkpOworICAgIGl0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOwor
ICAgIGlmIChpdCAhPSBlbmQgJiYgIWl0LT52YWx1ZSkgLy8gRm91bmQgYSB6b21iaWUgdmFsdWUu
CisgICAgICAgIHJldHVybiBlbmQ7CisgICAgcmV0dXJuIGl0OworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFt
ZSBLZXlUcmFpdHNBcmc+CitpbmxpbmUgdHlwZW5hbWUgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVB
cmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46OmNvbnN0X2l0ZXJhdG9yIFdlYWtHQ01hcDxLZXlB
cmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjpmaW5kKGNvbnN0IEtleVR5cGUm
IGtleSkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxXZWFrR0NNYXAqPih0aGlzKS0+
ZmluZChrZXkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVl
QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+CitpbmxpbmUgYm9v
bCBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6Y29u
dGFpbnMoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAoreworICAgIHJldHVybiBmaW5kKGtleSkg
IT0gbV9tYXAuZW5kKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUg
VmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KIE5FVkVS
X0lOTElORSB2b2lkIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmc+OjpwcnVuZVN0YWxlRW50cmllcygpCiB7CiAgICAgbV9tYXAucmVtb3ZlSWYoW10odHlw
ZW5hbWUgSGFzaE1hcFR5cGU6OktleVZhbHVlUGFpclR5cGUmIGVudHJ5KSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MTUwKQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAx
Ni0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ug
TWFya2VkQmxvY2sgc3RhdGUgdHJhY2tpbmcgc3VwcG9ydCBvdmVybGFwcGVkIGFsbG9jYXRpb24g
YW5kIG1hcmtpbmcgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTU4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gY2hhbmdlIGhlcmUgaXMgdG8gYnJpbmcgYmFjayBG
YXN0Qml0VmVjdG9yLmNwcCwgc28gdGhhdCBJIGNvdWxkIG91dGxpbmUgc29tZQorICAgICAgICBs
YXJnZSBzbG93IHBhdGggZnVuY3Rpb25zLiBUaGlzIGFsc28gYWRkcyBzb21lIHV0aWxpdGllcywg
bGlrZSBhdG9taWNTZXRBbmRDaGVjaygpIGFuZAorICAgICAgICBpc0VtcHR5KCkuIFRoZSBHQyB1
c2VzIHRoZXNlLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9y
LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnNldEVx
dWFsc1Nsb3cpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpyZXNpemVT
bG93KToKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0
Qml0VmVjdG9yV29yZE93bmVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVj
dG9yV29yZE93bmVyOjpyZXNpemUpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9ySW1wbDo6
aXNFbXB0eSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OmF0b21pY1NldEFuZENoZWNr
KToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6b3BlcmF0b3JbXSk6IERlbGV0ZWQuCisK
IDIwMTYtMDktMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKSBhdXRvbWF0aWMgdGV4dCBzaXplIGFkanVz
dG1lbnQgY29kZQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMDYxNTApCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAJCTBGNDU3MDQzMUJFNUI1
OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5o
ICovOyB9OwogCQkwRjQ1NzA0NTFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwNDQxQkU4MzQ0
MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLzsgfTsKIAkJMEY3MjVDQUMxQzUwNDYxNjAwQUQ5
NDNBIC8qIFJhbmdlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLzsgfTsKKwkJ
MEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVGQjUxRDg4NUNGMjAwNDRG
NUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0
NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi87
IH07CiAJCTBGODI0QTY5MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NTFCNzQ0M0EwMDAy
RTM0NUQgLyogUGFya2luZ0xvdC5oICovOyB9OwogCQkwRjg3MTA1QTE2NjQzRjE5MDA5MEIwQUQg
LyogUmF3UG9pbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY4NzEwNTkxNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAqLzsgfTsKQEAg
LTM2Niw2ICszNjcsNyBAQAogCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9y
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb21pbmF0b3JzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJi
bGVTb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1YmJsZVNvcnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNBIC8q
IFJhbmdlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmdlU2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAv
KiBGYXN0Qml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZhc3RCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2
NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYXJraW5nTG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFya2luZ0xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXdQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04ODAsNiArODgyLDcgQEAKIAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0
MTIzRkYgLyogZHRvYS5oICovLAogCQkJCTFBRUE4OEUxMUQ2QkJDRjQwMEU1QUQ2NCAvKiBFbnVt
VHJhaXRzLmggKi8sCiAJCQkJQThBNDcyOUYxNTFBODI1QTAwNDEyM0ZGIC8qIEV4cG9ydE1hY3Jv
cy5oICovLAorCQkJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNw
cCAqLywKIAkJCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICov
LAogCQkJCUE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLywKIAkJ
CQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovLApAQCAtMTU5NCw2
ICsxNTk3LDcgQEAKIAkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0VDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxs
b2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y0MTUxQTgyNUIwMDQxMjNGRiAv
KiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGN0M1RkI2MUQ4ODVDRjIw
MDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y3
MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNjE1MCkK
KysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODEs
NiArMTgxLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgRGF0YUxvZy5jcHAKICAgICBEYXRlTWF0
aC5jcHAKICAgICBEZWNpbWFsTnVtYmVyLmNwcAorICAgIEZhc3RCaXRWZWN0b3IuY3BwCiAgICAg
RmFzdE1hbGxvYy5jcHAKICAgICBGaWxlUHJpbnRTdHJlYW0uY3BwCiAgICAgRnVuY3Rpb25EaXNw
YXRjaGVyLmNwcApJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmFzdEJpdFZlY3Rvci5oIgorCituYW1l
c3BhY2UgV1RGIHsKKwordm9pZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpzZXRFcXVhbHNTbG93
KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKQoreworICAgIHVpbnQzMl90KiBu
ZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oCisgICAgICAgIGZhc3RDYWxsb2Mob3Ro
ZXIuYXJyYXlMZW5ndGgoKSwgc2l6ZW9mKHVpbnQzMl90KSkpOworICAgIG1lbWNweShuZXdBcnJh
eSwgb3RoZXIubV93b3Jkcywgb3RoZXIuYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkp
OworICAgIGlmIChtX3dvcmRzKQorICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKKyAgICBtX3dv
cmRzID0gbmV3QXJyYXk7CisgICAgbV9udW1CaXRzID0gb3RoZXIubV9udW1CaXRzOworfQorCit2
b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZVNsb3coc2l6ZV90IG51bUJpdHMpCit7
CisgICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRz
KTsKKyAgICAKKyAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RSZWFsbG9jIGJl
Y2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KKyAgICAvLyB1c2UgY2FzZSBmb3IgdGhpcyBtZXRo
b2QgdG8gYmUgaW5pdGlhbGl6aW5nIHRoZSBzaXplIG9mIHRoZSBiaXR2ZWN0b3IuCisgICAgCisg
ICAgdWludDMyX3QqIG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9j
KG5ld0xlbmd0aCwgc2l6ZW9mKHVpbnQzMl90KSkpOworICAgIG1lbWNweShuZXdBcnJheSwgbV93
b3JkcywgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJfdCkpOworICAgIGlmIChtX3dvcmRz
KQorICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKKyAgICBtX3dvcmRzID0gbmV3QXJyYXk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCShyZXZp
c2lvbiAyMDYxNTApCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KQEAgLTkxLDE3ICs5MiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgRmFzdEJpdFZlY3Rv
cldvcmRPd25lciYgb3BlcmF0b3I9KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVy
KQogICAgIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IG90aGVyLmFycmF5TGVuZ3RoKCk7Ci0g
ICAgICAgIGlmIChsZW5ndGggPT0gYXJyYXlMZW5ndGgoKSkgewotICAgICAgICAgICAgbWVtY3B5
KG1fd29yZHMsIG90aGVyLm1fd29yZHMsIGxlbmd0aCAqIHNpemVvZih1aW50MzJfdCkpOwotICAg
ICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICBpZiAoYXJyYXlMZW5ndGgoKSAhPSBvdGhl
ci5hcnJheUxlbmd0aCgpKQorICAgICAgICAgICAgc2V0RXF1YWxzU2xvdyhvdGhlcik7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KG1fd29yZHMsIG90aGVyLm1fd29yZHMsIGFy
cmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICAgICAgICAgIG1fbnVtQml0cyA9
IG90aGVyLm1fbnVtQml0czsKICAgICAgICAgfQotICAgICAgICB1aW50MzJfdCogbmV3QXJyYXkg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGZhc3RDYWxsb2MobGVuZ3RoLCBzaXplb2YodWludDMy
X3QpKSk7Ci0gICAgICAgIG1lbWNweShuZXdBcnJheSwgb3RoZXIubV93b3JkcywgbGVuZ3RoICog
c2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgIGlmIChtX3dvcmRzKQotICAgICAgICAgICAgZmFz
dEZyZWUobV93b3Jkcyk7Ci0gICAgICAgIG1fd29yZHMgPSBuZXdBcnJheTsKLSAgICAgICAgbV9u
dW1CaXRzID0gb3RoZXIubV9udW1CaXRzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQog
ICAgIApAQCAtMTQwLDE4ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXNpemUo
c2l6ZV90IG51bUJpdHMpCiAgICAgewotICAgICAgICBpZiAobnVtQml0cyA9PSBtX251bUJpdHMp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICAvLyBVc2UgZmFzdENhbGxv
YyBpbnN0ZWFkIG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KLSAg
ICAgICAgLy8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUg
c2l6ZSBvZiB0aGUgYml0dmVjdG9yLgotICAgICAgICAKLSAgICAgICAgc2l6ZV90IG5ld0xlbmd0
aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsKLSAgICAgICAgdWludDMyX3Qq
IG5ld0FycmF5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihmYXN0Q2FsbG9jKG5ld0xlbmd0aCwg
c2l6ZW9mKHVpbnQzMl90KSkpOwotICAgICAgICBtZW1jcHkobmV3QXJyYXksIG1fd29yZHMsIGFy
cmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgaWYgKG1fd29yZHMpCi0g
ICAgICAgICAgICBmYXN0RnJlZShtX3dvcmRzKTsKLSAgICAgICAgbV93b3JkcyA9IG5ld0FycmF5
OworICAgICAgICBpZiAoYXJyYXlMZW5ndGgoKSAhPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgo
bnVtQml0cykpCisgICAgICAgICAgICByZXNpemVTbG93KG51bUJpdHMpOwogICAgICAgICBtX251
bUJpdHMgPSBudW1CaXRzOwogICAgIH0KICAgICAKQEAgLTE3MSw2ICsxNTcsOSBAQCBwdWJsaWM6
CiAgICAgdWludDMyX3QqIHdvcmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQogCiBwcml2YXRlOgor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZl
Y3RvcldvcmRPd25lciYgb3RoZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2l6
ZVNsb3coc2l6ZV90IG51bUJpdHMpOworICAgIAogICAgIHVpbnQzMl90KiBtX3dvcmRzIHsgbnVs
bHB0ciB9OwogICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9OwpAQCAtMzIwLDYgKzMwOSwx
NSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IGFy
cmF5TGVuZ3RoKCk7IGluZGV4LS07KSB7CisgICAgICAgICAgICBpZiAobV93b3Jkcy53b3JkKGlu
ZGV4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29y
ZHM+CiAgICAgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3RvckFuZFdvcmRzPHR5cGVuYW1l
IFdvcmRzOjpWaWV3VHlwZSwgdHlwZW5hbWUgT3RoZXJXb3Jkczo6Vmlld1R5cGU+PiBvcGVyYXRv
ciYoY29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKSBjb25zdAogICAg
IHsKQEAgLTM4MCw3ICszNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHdyaXR0ZW4gdGhpcyB3
YXkgc28gdGhhdCBpdCBwZXJmb3JtcyB3ZWxsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB2YWx1ZSBp
cyBhIGNvbnN0YW50LgogICAgICAgICB1aW50MzJfdCBza2lwVmFsdWUgPSAtKHN0YXRpY19jYXN0
PHVpbnQzMl90Pih2YWx1ZSkgXiAxKTsKICAgICAgICAgCi0gICAgICAgIHNpemVfdCBudW1Xb3Jk
cyA9IG1fd29yZHMuYXJyYXlMZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90IG51bVdvcmRzID0gZmFz
dEJpdFZlY3RvckFycmF5TGVuZ3RoKG1fd29yZHMubnVtQml0cygpKTsKICAgICAgICAgCiAgICAg
ICAgIHNpemVfdCB3b3JkSW5kZXggPSBzdGFydEluZGV4IC8gMzI7CiAgICAgICAgIHNpemVfdCBz
dGFydEluZGV4SW5Xb3JkID0gc3RhcnRJbmRleCAtIHdvcmRJbmRleCAqIDMyOwpAQCAtNDcxLDYg
KzQ2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV93b3Jkcy5jbGVhckFsbCgpOwogICAgIH0KIAor
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29udGVudHMgb2YgdGhpcyBiaXR2ZWN0b3IgY2hh
bmdlZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgogICAgIGJvb2wgc2V0QW5k
Q2hlY2soY29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQogICAgIHsK
QEAgLTU1MCw2ICs1NDksMjggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGF0KGlu
ZGV4KTsKICAgICB9CisgICAgCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50cyBj
aGFuZ2VkLgorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdG9taWNTZXRBbmRDaGVjayhzaXplX3Qg
aW5kZXgsIGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICB1aW50MzJfdCogcG9pbnRlciA9ICZt
X3dvcmRzLndvcmQoaW5kZXggPj4gNSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChp
bmRleCAmIDMxKTsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgdWludDMyX3Qgb2xk
VmFsdWUgPSAqcG9pbnRlcjsKKyAgICAgICAgICAgIHVpbnQzMl90IG5ld1ZhbHVlOworICAgICAg
ICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKG9sZFZhbHVlICYgbWFzaykK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG5ld1Zh
bHVlID0gb2xkVmFsdWUgfCBtYXNrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIShvbGRWYWx1ZSAmIG1hc2spKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSAmIH5tYXNrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdlYWtDb21wYXJlQW5kU3dhcChwb2ludGVyLCBv
bGRWYWx1ZSwgbmV3VmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5jcHAJKHJldmlzaW9uIDIwNjE1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJHQ09ic2VydmF0aW9uLmgiCiAKICNpbmNsdWRlIDxoZWFwL0hl
YXBJbmxpbmVzLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwNjE1MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBNYXJrZWRCbG9jayBzdGF0ZSB0cmFja2luZyBzdXBw
b3J0IG92ZXJsYXBwZWQgYWxsb2NhdGlvbiBhbmQgbWFya2luZyBzdGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBSZW1vdmUgdGhlIGFs
d2F5cy10cmlnZ2VyLWNvcHktcGhhc2UgY29uZmlndXJhdGlvbi4KKworICAgICAgICAqIFNjcmlw
dHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTYtMDktMjAgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggb24g
MTAuMTAgYm90cy4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkocmV2aXNpb24g
MjA2MTUwKQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkod29ya2luZyBj
b3B5KQpAQCAtODY5LDEwICs4NjksNiBAQCBkZWYgcnVuRlRMRWFnZXJOb0NKSVRPU1JWYWxpZGF0
aW9uCiAgICAgcnVuKCJmdGwtZWFnZXItbm8tY2ppdC1vc3ItdmFsaWRhdGlvbiIsICItLXZhbGlk
YXRlRlRMT1NSRXhpdExpdmVuZXNzPXRydWUiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJ
T05TICsgRUFHRVJfT1BUSU9OUykpCiBlbmQKIAotZGVmIHJ1bkFsd2F5c1RyaWdnZXJDb3B5UGhh
c2UKLSAgICBydW4oImFsd2F5cy10cmlnZ2VyLWNvcHktcGhhc2UiLCAiLS1taW5IZWFwVXRpbGl6
YXRpb249Mi4wIiwgIi0tbWluQ29waWVkQmxvY2tVdGlsaXphdGlvbj0yLjAiKQotZW5kCi0KIGRl
ZiBydW5Ob0NKSVROb0FTTwogICAgIHJ1bigibm8tY2ppdC1uby1hc28iLCAiLS11c2VBcmNoaXRl
Y3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnM9ZmFsc2UiLCAqTk9fQ0pJVF9PUFRJT05TKQogZW5k
CkBAIC05MTAsNyArOTA2LDYgQEAgZGVmIGRlZmF1bHRSdW4KICAgICAgICAgZGVmYXVsdFF1aWNr
UnVuCiAgICAgZWxzZQogICAgICAgICBydW5EZWZhdWx0Ci0gICAgICAgIHJ1bkFsd2F5c1RyaWdn
ZXJDb3B5UGhhc2UKICAgICAgICAgaWYgJGppdFRlc3RzCiAgICAgICAgICAgICBydW5Ob0xMSW50
CiAgICAgICAgICAgICBydW5Ob0NKSVRWYWxpZGF0ZVBoYXNlcwpAQCAtOTM2LDcgKzkzMSw2IEBA
IGRlZiBkZWZhdWx0Tm9Ob0xMSW50UnVuCiAgICAgICAgIGRlZmF1bHRRdWlja1J1bgogICAgIGVs
c2UKICAgICAgICAgcnVuRGVmYXVsdAotICAgICAgICBydW5BbHdheXNUcmlnZ2VyQ29weVBoYXNl
CiAgICAgICAgIGlmICRqaXRUZXN0cwogICAgICAgICAgICAgcnVuTm9DSklUVmFsaWRhdGVQaGFz
ZXMKICAgICAgICAgICAgIHJ1bkRGR0VhZ2VyCkBAIC05ODgsNyArOTgyLDYgQEAgZW5kCiAjIGJ5
IGNvdW50aW5nIHJlY29tcGlsYXRpb25zLgogZGVmIGRlZmF1bHROb0VhZ2VyUnVuCiAgICAgcnVu
RGVmYXVsdAotICAgIHJ1bkFsd2F5c1RyaWdnZXJDb3B5UGhhc2UKICAgICBpZiAkaml0VGVzdHMK
ICAgICAgICAgcnVuTm9MTEludAogICAgICAgICBydW5Ob0NKSVRWYWxpZGF0ZVBoYXNlcwpAQCAt
MTAwMyw3ICs5OTYsNiBAQCBlbmQKIAogZGVmIGRlZmF1bHROb1NhbXBsaW5nUHJvZmlsZXJSdW4K
ICAgICBydW5EZWZhdWx0Ci0gICAgcnVuQWx3YXlzVHJpZ2dlckNvcHlQaGFzZQogICAgIGlmICRq
aXRUZXN0cwogICAgICAgICBydW5Ob0xMSW50CiAgICAgICAgIHJ1bk5vQ0pJVFZhbGlkYXRlUGhh
c2VzCkBAIC0xMTQxLDcgKzExMzMsNiBAQCBlbmQKIAogZGVmIHJ1bk1vZHVsZXMKICAgICBydW4o
ImRlZmF1bHQtbW9kdWxlcyIsICItbSIpCi0gICAgcnVuKCJhbHdheXMtdHJpZ2dlci1jb3B5LXBo
YXNlLW1vZHVsZXMiLCAiLW0iLCAiLS1taW5IZWFwVXRpbGl6YXRpb249Mi4wIiwgIi0tbWluQ29w
aWVkQmxvY2tVdGlsaXphdGlvbj0yLjAiKQogCiAgICAgaWYgISRqaXRUZXN0cwogICAgICAgICBy
ZXR1cm4K
</data>
<flag name="review"
          id="312598"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>